[ https://issues.apache.org/jira/browse/TINKERPOP-2959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17901256#comment-17901256 ]
ASF GitHub Bot commented on TINKERPOP-2959: ------------------------------------------- vkagamlyk commented on code in PR #2919: URL: https://github.com/apache/tinkerpop/pull/2919#discussion_r1858905958 ########## gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GType.java: ########## @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tinkerpop.gremlin.process.traversal.step; + +import org.apache.tinkerpop.gremlin.process.traversal.Path; +import org.apache.tinkerpop.gremlin.structure.Edge; +import org.apache.tinkerpop.gremlin.structure.Property; +import org.apache.tinkerpop.gremlin.structure.Vertex; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * An enum that describes types that are used in the Gremlin language. + */ +public enum GType { + BIG_DECIMAL(BigDecimal.class), + BIG_INTEGER(BigInteger.class), + BOOLEAN(Boolean.class), + DOUBLE(Double.class), + EDGE(Edge.class), + INTEGER(Integer.class), + LIST(List.class), + LONG(Long.class), + MAP(Map.class), + PATH(Path.class), + PROPERTY(Property.class), + SET(Set.class), + STRING(String.class), + UNKNOWN(null), + VERTEX(Vertex.class); + + private Class<?> javaType; + + GType(final Class<?> javaType) { + this.javaType = javaType; + } + + public Class<?> getJavaType() { + return this.javaType; + } + + /** + * Returns {@code true} if the type is a number. + */ + public boolean isNumeric() { + return this == INTEGER || this == DOUBLE || this == LONG || this == BIG_INTEGER || this == BIG_DECIMAL; + } + + /** + * Returns {@code true} if the type is a collection.v + */ + public boolean isCollection() { + return this == LIST || this == SET; + } + + /** + * Returns {@code true} if the type is an element. + */ + public boolean isElement() { + return this == VERTEX || this == EDGE; + } + + /** + * Convert an object to a matching {@link GType} and if not matched return {@link GType#UNKNOWN}. + */ + public static GType getType(final Object object) { + if (object instanceof String) return STRING; Review Comment: may be better to introduce `Map<Class, GType>` with mapping? > Allow the grammar to support parameters > --------------------------------------- > > Key: TINKERPOP-2959 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2959 > Project: TinkerPop > Issue Type: Improvement > Components: language > Affects Versions: 3.6.4 > Reporter: Stephen Mallette > Assignee: Stephen Mallette > Priority: Major > Fix For: 3.7.0 > > > Allow the grammar to support parameters similar to how the groovy engine does > like, {{g.inject(x,y,z)}}. Doing this will make it easier for a transition > away from the groovy engine as a lot of Gremlin in the world today uses > parameters. The grammar may have to come with some limitations though as > groovy is wide open in terms of what can be treated as a variable. Probably > going to keep parameters tied to primitives, collections and tokens/enums > like {{Order}} and {{Scope}}. Collections themselves will not contain > parameters and things like a {{Traversal}} or {{P}} cannot be treated as one. -- This message was sent by Atlassian Jira (v8.20.10#820010)