1818 */
1919package org .apache .tinkerpop .gremlin .language .grammar ;
2020
21- import org .apache .tinkerpop .gremlin .process .traversal .DT ;
22- import org .apache .tinkerpop .gremlin .process .traversal .Merge ;
23- import org .apache .tinkerpop .gremlin .process .traversal .Operator ;
24- import org .apache .tinkerpop .gremlin .process .traversal .Order ;
25- import org .apache .tinkerpop .gremlin .process .traversal .Pop ;
26- import org .apache .tinkerpop .gremlin .process .traversal .SackFunctions ;
27- import org .apache .tinkerpop .gremlin .process .traversal .Scope ;
28- import org .apache .tinkerpop .gremlin .structure .Column ;
29- import org .apache .tinkerpop .gremlin .structure .Direction ;
30- import org .apache .tinkerpop .gremlin .structure .T ;
3121import org .apache .tinkerpop .gremlin .structure .Vertex ;
32- import org .apache .tinkerpop .gremlin .structure .VertexProperty ;
3322import org .apache .tinkerpop .gremlin .util .iterator .IteratorUtils ;
3423
3524import java .lang .reflect .Array ;
36- import java .util .Comparator ;
3725import java .util .Date ;
3826import java .util .Map ;
39- import java .util .function . Function ;
27+ import java .util .Objects ;
4028
4129public class ArgumentVisitor extends DefaultGremlinBaseVisitor <Object > {
4230
@@ -91,90 +79,13 @@ public Object parseObject(final GremlinParser.GenericLiteralArgumentContext ctx)
9179 return visitGenericLiteralArgument (ctx );
9280 }
9381
94- /**
95- * Wrapper for visit function for {@link Direction} types.
96- */
97- public Direction parseDirection (final GremlinParser .TraversalDirectionArgumentContext ctx ) {
98- return (Direction ) visitTraversalDirectionArgument (ctx );
99- }
100-
10182 /**
10283 * Wrapper for visit function for {@link Vertex} types.
10384 */
10485 public Vertex parseVertex (final GremlinParser .StructureVertexArgumentContext ctx ) {
10586 return (Vertex ) visitStructureVertexArgument (ctx );
10687 }
10788
108- /**
109- * Wrapper for visit function for {@link Order} types.
110- */
111- public Order parseOrder (final GremlinParser .TraversalOrderArgumentContext ctx ) {
112- return (Order ) visitTraversalOrderArgument (ctx );
113- }
114-
115- /**
116- * Wrapper for visit function for {@link Scope} types.
117- */
118- public Scope parseScope (final GremlinParser .TraversalScopeArgumentContext ctx ) {
119- return (Scope ) visitTraversalScopeArgument (ctx );
120- }
121-
122- /**
123- * Wrapper for visit function for {@link T} types.
124- */
125- public T parseT (final GremlinParser .TraversalTokenArgumentContext ctx ) {
126- return (T ) visitTraversalTokenArgument (ctx );
127- }
128-
129- /**
130- * Wrapper for visit function for {@link VertexProperty.Cardinality} types.
131- */
132- public VertexProperty .Cardinality parseCardinality (final GremlinParser .TraversalCardinalityArgumentContext ctx ) {
133- return (VertexProperty .Cardinality ) visitTraversalCardinalityArgument (ctx );
134- }
135-
136- /**
137- * Wrapper for visit function for {@link Merge} types.
138- */
139- public Merge parseMerge (final GremlinParser .TraversalMergeArgumentContext ctx ) {
140- return (Merge ) visitTraversalMergeArgument (ctx );
141- }
142-
143- /**
144- * Wrapper for visit function for {@link Pop} types.
145- */
146- public Pop parsePop (final GremlinParser .TraversalPopArgumentContext ctx ) {
147- return (Pop ) visitTraversalPopArgument (ctx );
148- }
149-
150- /**
151- * Wrapper for visit function for {@link DT} types.
152- */
153- public DT parseDT (final GremlinParser .TraversalDTArgumentContext ctx ) {
154- return (DT ) visitTraversalDTArgument (ctx );
155- }
156-
157- /**
158- * Wrapper for visit function for {@link Pop} types.
159- */
160- public Column parseColumn (final GremlinParser .TraversalColumnArgumentContext ctx ) {
161- return (Column ) visitTraversalColumnArgument (ctx );
162- }
163-
164- /**
165- * Wrapper for visit function for {@code Function} types like {@link T} and {@link Column}.
166- */
167- public Function parseFunction (final GremlinParser .TraversalFunctionArgumentContext ctx ) {
168- return (Function ) visitTraversalFunctionArgument (ctx );
169- }
170-
171- /**
172- * Wrapper for visit function for {@code Comparator} types like {@link Order}.
173- */
174- public Comparator parseComparator (final GremlinParser .TraversalComparatorArgumentContext ctx ) {
175- return (Comparator ) visitTraversalComparatorArgument (ctx );
176- }
177-
17889 /**
17990 * Wrapper for visit function for {@code Map} types.
18091 */
@@ -293,15 +204,6 @@ public Object visitGenericLiteralListArgument(final GremlinParser.GenericLiteral
293204 }
294205 }
295206
296- @ Override
297- public Object visitTraversalDirectionArgument (final GremlinParser .TraversalDirectionArgumentContext ctx ) {
298- if (ctx .traversalDirection () != null ) {
299- return TraversalEnumParser .parseTraversalDirectionFromContext (ctx .traversalDirection ());
300- } else {
301- return visitVariable (ctx .variable ());
302- }
303- }
304-
305207 @ Override
306208 public Object visitStructureVertexArgument (final GremlinParser .StructureVertexArgumentContext ctx ) {
307209 if (ctx .structureVertex () != null ) {
@@ -311,112 +213,6 @@ public Object visitStructureVertexArgument(final GremlinParser.StructureVertexAr
311213 }
312214 }
313215
314- @ Override
315- public Object visitTraversalOrderArgument (final GremlinParser .TraversalOrderArgumentContext ctx ) {
316- if (ctx .traversalOrder () != null ) {
317- return TraversalEnumParser .parseTraversalEnumFromContext (Order .class , ctx .traversalOrder ());
318- } else {
319- return visitVariable (ctx .variable ());
320- }
321- }
322-
323- @ Override
324- public Object visitTraversalScopeArgument (final GremlinParser .TraversalScopeArgumentContext ctx ) {
325- if (ctx .traversalScope () != null ) {
326- return TraversalEnumParser .parseTraversalEnumFromContext (Scope .class , ctx .traversalScope ());
327- } else {
328- return visitVariable (ctx .variable ());
329- }
330- }
331-
332- @ Override
333- public Object visitTraversalTokenArgument (final GremlinParser .TraversalTokenArgumentContext ctx ) {
334- if (ctx .traversalToken () != null ) {
335- return TraversalEnumParser .parseTraversalEnumFromContext (T .class , ctx .traversalToken ());
336- } else {
337- return visitVariable (ctx .variable ());
338- }
339- }
340-
341- @ Override
342- public Object visitTraversalCardinalityArgument (final GremlinParser .TraversalCardinalityArgumentContext ctx ) {
343- if (ctx .traversalCardinality () != null ) {
344- return TraversalEnumParser .parseTraversalEnumFromContext (VertexProperty .Cardinality .class , ctx .traversalCardinality ());
345- } else {
346- return visitVariable (ctx .variable ());
347- }
348- }
349-
350- @ Override
351- public Object visitTraversalMergeArgument (final GremlinParser .TraversalMergeArgumentContext ctx ) {
352- if (ctx .traversalMerge () != null ) {
353- return TraversalEnumParser .parseTraversalEnumFromContext (Merge .class , ctx .traversalMerge ());
354- } else {
355- return visitVariable (ctx .variable ());
356- }
357- }
358-
359- @ Override
360- public Object visitTraversalPopArgument (final GremlinParser .TraversalPopArgumentContext ctx ) {
361- if (ctx .traversalPop () != null ) {
362- return TraversalEnumParser .parseTraversalEnumFromContext (Pop .class , ctx .traversalPop ());
363- } else {
364- return visitVariable (ctx .variable ());
365- }
366- }
367-
368- @ Override
369- public Object visitTraversalDTArgument (final GremlinParser .TraversalDTArgumentContext ctx ) {
370- if (ctx .traversalDT () != null ) {
371- return TraversalEnumParser .parseTraversalEnumFromContext (DT .class , ctx .traversalDT ());
372- } else {
373- return visitVariable (ctx .variable ());
374- }
375- }
376-
377- @ Override
378- public Object visitTraversalColumnArgument (final GremlinParser .TraversalColumnArgumentContext ctx ) {
379- if (ctx .traversalColumn () != null ) {
380- return TraversalEnumParser .parseTraversalEnumFromContext (Column .class , ctx .traversalColumn ());
381- } else {
382- return visitVariable (ctx .variable ());
383- }
384- }
385-
386- @ Override
387- public Object visitTraversalComparatorArgument (final GremlinParser .TraversalComparatorArgumentContext ctx ) {
388- if (ctx .traversalComparator () != null ) {
389- return TraversalEnumParser .parseTraversalEnumFromContext (Order .class , ctx .traversalComparator ().traversalOrder ());
390- } else {
391- return visitVariable (ctx .variable ());
392- }
393- }
394-
395- @ Override
396- public Object visitTraversalFunctionArgument (final GremlinParser .TraversalFunctionArgumentContext ctx ) {
397- if (ctx .traversalFunction () != null ) {
398- final GremlinParser .TraversalFunctionContext tfc = ctx .traversalFunction ();
399- if (tfc .traversalToken () != null ) {
400- return TraversalEnumParser .parseTraversalEnumFromContext (T .class , tfc .traversalToken ());
401- } else if (tfc .traversalColumn () != null )
402- return TraversalEnumParser .parseTraversalEnumFromContext (Column .class , tfc .traversalColumn ());
403- else {
404- throw new GremlinParserException ("Unrecognized enum for traversal function" );
405- }
406- } else {
407- return visitVariable (ctx .variable ());
408- }
409- }
410-
411- @ Override
412- public Object visitTraversalBiFunctionArgument (final GremlinParser .TraversalBiFunctionArgumentContext ctx ) {
413- if (ctx .traversalBiFunction () != null ) {
414- return TraversalEnumParser .parseTraversalEnumFromContext (Operator .class , ctx .traversalBiFunction ().traversalOperator ());
415- } else {
416- return visitVariable (ctx .variable ());
417- }
418- }
419-
420216 @ Override
421217 public Object visitGenericLiteralMapArgument (final GremlinParser .GenericLiteralMapArgumentContext ctx ) {
422218 if (ctx .genericLiteralMap () != null ) {
@@ -437,13 +233,18 @@ public Object visitGenericLiteralMapNullableArgument(final GremlinParser.Generic
437233 }
438234 }
439235
440- @ Override
441- public Object visitTraversalSackMethodArgument ( final GremlinParser . TraversalSackMethodArgumentContext ctx ) {
442- if ( ctx . traversalSackMethod () != null ) {
443- return TraversalEnumParser . parseTraversalEnumFromContext ( SackFunctions . Barrier . class , ctx . traversalSackMethod ());
444- } else {
445- return visitVariable ( ctx . variable ()) ;
236+ /**
237+ * Parse a string literal varargs, and return a string array
238+ */
239+ public String [] parseStringVarargs ( final GremlinParser . StringLiteralVarargsArgumentContext varargsArgumentContext ) {
240+ if ( varargsArgumentContext == null || varargsArgumentContext . stringNullableArgument () == null ) {
241+ return new String [ 0 ] ;
446242 }
243+ return varargsArgumentContext .stringNullableArgument ()
244+ .stream ()
245+ .filter (Objects ::nonNull )
246+ .map (antlr .argumentVisitor ::parseString )
247+ .toArray (String []::new );
447248 }
448249
449250 @ Override
0 commit comments