You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by kr...@apache.org on 2022/01/07 21:42:02 UTC

[tinkerpop] branch TINKERPOP-2652 updated (ace74cd -> 0141808)

This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a change to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.


 discard ace74cd  Add TextP.regex to the CHANGELOG
 discard 4875795  Add documentation for TextP.regex
 discard 5837a3d  Add dotnet Gherkin test
 discard c8a27ce  More improvements to regex Gherkin tests
 discard 46d1ece  Initial work on regex Gherkin scenarios
 discard 8dfc78b  Add regex to .Net and Javascript GLVs
 discard 5bd866a  Merge branch 'TINKERPOP-2652' of github.com:apache/tinkerpop into TINKERPOP-2652
 discard 754951a  Continue adding regex predicates to Python client
 discard a972308  Add regex predicates to Python client
 discard db7a886  Add simple grammar tests
 discard ba13a94  Additional tests
 discard c6d5228  Initial set of regex tests
 discard da810e2  Add actual mappings for regex when used via Antlr
 discard de489eb  Add base class visitor methods for regex via grammar
 discard a1ec4ad  Add redex predicates to the Antlr grammar
 discard c1dcb22  Initial changes for regex support. More to follow
     add 07004bd  TINKERPOP-2649 use long's to construct dates and timestamps for java
     add 3aecee4  Merge branch 'pr-1501' into 3.5-dev
     add 387c1d5  Updated changelog CTR
     add e98be33  Merge branch '3.5-dev'
     add 26ca3a8  TINKERPOP-2640 Removed deprecated enableAuditLog setting
     add 964f72f  Merge pull request #1490 from apache/TINKERPOP-2640
     add 3812447  TINKERPOP-2639 Remove GryoLiteMessageSerializerV1d0
     add abd8813  Merge pull request #1493 from apache/TINKERPOP-2639
     add c2b4f2f  TINKERPOP-2524 Supported more explicit numeric literals in grammar
     add e3def5c  Merge pull request #1491 from apache/TINKERPOP-2524
     add 4d83e15  TINKERPOP-2611 Prevented null T values to addV() and property()
     add 05ad95a  Merge pull request #1492 from apache/TINKERPOP-2611
     add 57f1fa8  TINKERPOP-2613 Improved behavior of V(null)
     add 849aa95  Merge pull request #1497 from apache/TINKERPOP-2613
     add af271f5  Improved null property removal test semantics
     add f53d077  Merge branch '3.5-dev'
     add a785515  Fixed possible NPE for Property hashcode CTR
     add fb0ac00  Merge branch '3.5-dev'
     add 306f8e0  Minor formatting fix CTR
     add bb1c9a2  Merge branch '3.5-dev'
     add 96ccc21  TINKERPOP-2626 Prevent premature close of traversal
     add 162c171  Merge branch '3.4-dev' into 3.5-dev
     add c43a074  Merge branch '3.5-dev'
     add 79cdfe7  Implemented some gherkin tests that were "unsupported" at one point CTR
     add 237a8f6  Put the main header at the top so it appears as an HTML title
     add 3add7d8  TINKERPOP-2650 Removed deprecated gremlin-python step names
     add f6b9790  Merge pull request #1503 from apache/TINKERPOP-2650
     add f996c8d  Added G.V() to provider/index lists
     add f5ca289  TINKERPOP-2635 Improved consistency of by() behaviors
     add 931b5b4  TINKERPOP-2635 Fixed ProductiveByStrategy application problem with Spark/Gryo
     add 0c43ce0  Merge branch 'TINKERPOP-2635' into 3.5-dev
     add f4f4ffe  Merge branch '3.5-dev'
     add 3baa84f  TINKERPOP-2656 update python translator
     add b138c20  Merge branch 'pr-1506' into 3.5-dev
     add 736d0c9  Merge branch '3.5-dev'
     add 7d6a2b1  TINKERPOP-2657 Removed GroovyTranslator from gremlin-groovy
     add 55e2340  Merge pull request #1505 from apache/TINKERPOP-2657
     add 5d19808  TINKERPOP-2659 Bumped to node v16
     add 1f1c537  Merge pull request #1508 from apache/TINKERPOP-2659
     add 55cef8c  Added ProductiveByStrategy grammar handling
     add 30772d2  Merge branch '3.5-dev'
     add f6fd6a2  Regenerated python Gremlin corpus CTR
     add ddf1a50  Merge branch '3.5-dev'
     add d410ce6  Bumped gremlint nodejs version to match gremlin-javascript at v16 CTR
     add 8c7a1a5  Bump to maven 3.8.x in docker image CTR
     add 65e70e3  Merge branch '3.4-dev' into 3.5-dev
     add 7bd34f3  Merge branch '3.5-dev'
     add 3beea00  Update translator.js
     add 52b0a91  TINKERPOP-2658 Fixed bug in array arg translation for gremlin-javascript
     add 0d074f4  Merge branch 'TINKERPOP-2658' into 3.5-dev
     add 2bf06b0  Merge branch '3.5-dev'
     add b558a09  ProductiveByStrategy is similar to SubgraphStrategy and therefore shouldn't trigger the SparkStarBarrierInteceptor CTR
     add 6beb7a3  Merge branch '3.5-dev'
     add 9341a43  TINKERPOP-2660 Added back close message to drivers
     add cf11a4c  Merge branch '3.5-dev'
     add dd859b8  Handled the close message in UnifiedChannelizer
     add 25a9b14  Merge branch '3.5-dev'
     add 5a2a735  TINKERPOP-2645 Made hasId(null) consistent with V(null)
     add 07baeb6  Merge pull request #1511 from apache/TINKERPOP-2645
     add ebcfdf3  fix: add missing comma in python example
     add d0124f0  Merge branch '3.5-dev'
     add 5db8aad  Bump to Netty 4.1.72 CTR
     add 459067c  Merge branch '3.4-dev' into 3.5-dev
     add 36463d2  Merge branch '3.5-dev'
     add 08fab39  TINKERPOP-2635 Add fail() step
     add cf95caa  TINKERPOP-2635 filtering for unproductive by()
     add 7037b00  Merge pull request #1514 from apache/TINKERPOP-2635
     add 18bdf7d  change aiohttp requirements due to vulnerability issue at 3.7.4
     add 11f2b6e  Merge branch 'pr-1519' into 3.5-dev
     add 6f45069  Source: [1] Added transaction profile to pom.xml [2] Made DriverRemoteConnection latch parameters so they can be reused to create a subsequent session [3] Added logging throughout the driver [4] Added commit and rollback to DriverRemoteConnection [5] Added some logging to receive message [6] Added transaction support to RemoteConnection [7] Added bytecode support to Session processor [8] Fixed bug in aiohttp transport layer that popped up when it was not shutdown properl [...]
     add dd796be  [1] Fixed TEST_TRANSACTION environment variable [2] Enabling transaction tests in GitHub actions
     add 2594cf5  [1] Added session support to string messages. This was unintentionally removed.
     add d1e3abd  Added submitAsync in Client and DriverRemoteConnection with deprecated message Fixed missing session close in Client Switched info to debug log for heavy spam messages Added gremlin-variant remote transaction documentation for gremlin-python Added release documentation for remote transactions in gremlin-python
     add 5a0a835  Changed logic for disabling transactions within tests.
     add fee9056  Merge branch 'pr-1515' into 3.5-dev
     add 0dd3c0b  Merge branch '3.5-dev'
     add 1ec8e76  Added 3.6.0 name/logo CTR
     add 07d22b0  Added python to dependabot CTR
     add a8f59f2  Fixed dependabot path CTR
     add 48986b3  Bumped junit in archetypes to match project version CTR
     add 285a6eb  Bumped maven and plugin versions CTR
     add 86343f2  Bump several python dependencies
     add 61558a7  Added logo to Upgrade docs for 3.6.0 CTR
     add 958a0bb  Added clarifying text to upgrade docs CTR
     add 456bedc  Fixed formatting in asciidoc CTR
     add fa8f255  Handle close message in UnifiedHandler
     add d43dbca  Needed to send back a ack to the driver even though the close message is a no-op to the UnifiedHandler CTR
     add fb56106  Bumped dependabot versions for gremlin-python
     add 4b6713b  Fixed some feature test ignores to prevent random test failures
     add d2835bb  Harden testing around driver integration test CTR
     add cae6a96  Merge branch '3.5-dev'
     add b51c97e  Added transaction testing to Gremlin Server for CI CTR
     add f6f7ddc  Merge branch '3.4-dev' into 3.5-dev
     add 2b932c6  Merge branch '3.5-dev'
     add 9ab9433  Changed seconds to minutes for timeout - oops CTR
     add 5f239f8  Merge branch '3.4-dev' into 3.5-dev
     add 0e4bf4f  Merge branch '3.5-dev'
     add 039fc15  Fixed minor nits in changelog CTR
     add 31d2669  Merge branch '3.5-dev'
     add 34ab339  TINKERPOP-2663 Allowed for Vertex/ReferenceVertex in grammar
     add 64b1b30  Merge pull request #1516 from apache/TINKERPOP-2663
     add a65c01b  Added an `AnonymizingTypeTranslator` for use with `GroovyTranslator` which strips PII (anonymizes any String, Numeric, Date, Timestamp, or UUID data).
     add 070e168  Test case cleanup.
     add 922c6e1  Test case cleanup.
     add e7e2fd2  PR feedback
     add a2d020e  Merge branch '3.5-dev' into TINKERPOP-2666
     add 4bf0a3f  Merge branch '3.5-dev'
     add d8e2794  TINKERPOP-2667 Allowed fold()/addAll to merge Map objects
     add 014ba55  Merge branch 'TINKERPOP-2667' into 3.5-dev
     add db8eb63  Merge branch '3.5-dev'
     add e0412a6  Reduced resources consumed by gremlin server integration tests
     add 84cfe8f  Merge branch '3.4-dev' into 3.5-dev
     add 366d5e4  Merge branch '3.5-dev'
     add c0605b3  Minor fix to session test CTR
     add c683977  Merge branch '3.5-dev'
     add 8b0d2d1  TINKERPOP-2626 Added explicit closed state to DefaultTraversal
     add 579a65e  Merge branch '3.4-dev' into 3.5-dev
     add 539d971  Merge branch '3.5-dev'
     add b773ca3  Quieted the cucumber logging output a bit CTR
     add 5e48db8  TINKERPOP-2670 Fixed javadoc on jdk11.
     add d4bd5cc  Merge branch '3.5-dev'
     add 053132a  Updated Tinkerpop Future Roadmap document for 3.6/3.7
     add c969444  Merge pull request #1537 from bechbd/master
     add 511539b  Added user-friendly console message and fixed possible console remote leak
     add c76df03  Minor fix to test CTR
     add befc7c2  Merge branch '3.4-dev' into 3.5-dev
     add 6e43bdb  Merge branch '3.5-dev'
     add a191930  TINKERPOP-2671 Added tx() support in gremlin-language
     add d263a3b  Merge branch 'TINKERPOP-2671' into 3.5-dev
     add c2b72c8  Merge branch '3.5-dev'
     add e9b4749  Minor fixes to future docs CTR
     add 4859617  After #1534 the exceptions seemed to shift on the merge to 3.5.x
     add 53503bf  Merge branch '3.5-dev'
     add af57b3e  Minor fix to code example to get docs generating CTR
     add f34d8ec  Merge branch '3.5-dev'
     new eeb584a  Initial changes for regex support. More to follow
     new f920fcf  Add redex predicates to the Antlr grammar
     new 6832a6b  Add base class visitor methods for regex via grammar
     new 3790207  Add actual mappings for regex when used via Antlr
     new 01bf2a9  Initial set of regex tests
     new d4f3a44  Additional tests
     new 48d8513  Add simple grammar tests
     new 7ec6bd4  Add regex predicates to Python client
     new 213a291  Continue adding regex predicates to Python client
     new 9020c3b  Add regex to .Net and Javascript GLVs
     new 051e0c7  Initial work on regex Gherkin scenarios
     new b63f44e  More improvements to regex Gherkin tests
     new 70fd97a  Add dotnet Gherkin test
     new a1522a8  Add documentation for TextP.regex
     new 0141808  Add TextP.regex to the CHANGELOG

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (ace74cd)
            \
             N -- N -- N   refs/heads/TINKERPOP-2652 (0141808)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 15 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/dependabot.yml                             |     8 +
 .github/workflows/build-test.yml                   |    26 +-
 CHANGELOG.asciidoc                                 |    40 +-
 bin/generate-home.sh                               |     1 +
 docker/build/Dockerfile.template                   |     2 +-
 .../gremlin-server-integration-krb5.yaml           |     1 -
 .../gremlin-server-integration-secure.yaml         |     1 -
 .../gremlin-server/gremlin-server-integration.yaml |     1 -
 docs/gremlint/package-lock.json                    | 11104 ++++++++++++++-----
 docs/site/home/img/logos/gdotv-logo.png            |   Bin 0 -> 10917 bytes
 .../home/img/logos/ibm-compose-janusgraph-logo.png |   Bin 19024 -> 0 bytes
 docs/site/home/img/logos/titan-logo.png            |   Bin 76305 -> 0 bytes
 docs/site/home/index.html                          |     1 +
 docs/site/home/providers.html                      |    40 +-
 .../dev/developer/development-environment.asciidoc |     4 +-
 docs/src/dev/developer/for-committers.asciidoc     |    28 +-
 docs/src/dev/developer/release.asciidoc            |     1 +
 docs/src/dev/future/index.asciidoc                 |    40 +-
 docs/src/dev/provider/index.asciidoc               |     2 +-
 docs/src/reference/gremlin-applications.asciidoc   |     1 -
 docs/src/reference/gremlin-variants.asciidoc       |    33 +-
 docs/src/reference/the-traversal.asciidoc          |   132 +-
 docs/src/upgrade/release-3.5.x.asciidoc            |    99 +-
 docs/src/upgrade/release-3.6.x.asciidoc            |   451 +-
 docs/static/images/gremlin-victorian.png           |   Bin 0 -> 4188937 bytes
 gremlin-annotations/pom.xml                        |     2 +-
 .../src/main/resources/archetype-resources/pom.xml |     2 +-
 .../src/main/resources/archetype-resources/pom.xml |     2 +-
 .../src/main/resources/archetype-resources/pom.xml |     2 +-
 gremlin-console/pom.xml                            |     8 +-
 .../tinkerpop/gremlin/console/Console.groovy       |   124 +-
 .../gremlin/console/commands/RemoteCommand.groovy  |     3 +-
 .../console/jsr223/DriverGremlinPlugin.java        |     2 -
 .../console/jsr223/DriverRemoteAcceptor.java       |     9 +
 .../console/jsr223/DriverRemoteAcceptorTest.java   |    12 +-
 gremlin-core/pom.xml                               |     2 +-
 .../tinkerpop/gremlin/jsr223/CoreImports.java      |     2 +
 .../tinkerpop/gremlin/jsr223/JavaTranslator.java   |     2 +-
 .../language/grammar/GenericLiteralVisitor.java    |    62 +-
 .../language/grammar/GremlinAntlrToJava.java       |     9 +-
 .../language/grammar/GremlinBaseVisitor.java       |    40 +-
 .../grammar/GremlinStringConstantsVisitor.java     |     9 +-
 .../language/grammar/StructureElementVisitor.java  |    43 +
 .../language/grammar/TraversalFunctionVisitor.java |    10 +-
 .../language/grammar/TraversalMethodVisitor.java   |    81 +-
 .../grammar/TraversalPredicateVisitor.java         |    20 +-
 .../grammar/TraversalSourceSelfMethodVisitor.java  |    16 +-
 .../language/grammar/TraversalSourceTxVisitor.java |    61 +
 .../language/grammar/TraversalStrategyVisitor.java |    11 +
 .../gremlin/process/traversal/Failure.java         |   101 +
 .../gremlin/process/traversal/Operator.java        |     2 +
 .../tinkerpop/gremlin/process/traversal/Path.java  |     6 +-
 .../tinkerpop/gremlin/process/traversal/Step.java  |     2 +-
 .../gremlin/process/traversal/Traversal.java       |    14 +-
 .../gremlin/process/traversal/Traverser.java       |     9 +
 .../traversal/dsl/graph/GraphTraversal.java        |    94 +-
 .../traversal/dsl/graph/GraphTraversalSource.java  |    25 +-
 .../gremlin/process/traversal/dsl/graph/__.java    |    14 +
 .../traversal/lambda/AbstractLambdaTraversal.java  |     9 +
 .../traversal/lambda/ConstantTraversal.java        |     8 +-
 .../process/traversal/lambda/ValueTraversal.java   |    71 +-
 .../process/traversal/step/ByModulating.java       |     7 +-
 .../gremlin/process/traversal/step/Grouping.java   |    13 +-
 .../traversal/step/filter/DedupGlobalStep.java     |    72 +-
 .../traversal/step/filter/PathFilterStep.java      |    17 +-
 .../traversal/step/filter/RangeGlobalStep.java     |     3 -
 .../traversal/step/filter/SampleGlobalStep.java    |    20 +-
 .../traversal/step/filter/WherePredicateStep.java  |    34 +-
 .../process/traversal/step/map/FoldStep.java       |     3 +-
 .../process/traversal/step/map/GroupCountStep.java |     2 +-
 .../process/traversal/step/map/GroupStep.java      |    14 +-
 .../process/traversal/step/map/MathStep.java       |    29 +-
 .../traversal/step/map/OrderGlobalStep.java        |    15 +-
 .../process/traversal/step/map/OrderLocalStep.java |   104 +-
 .../process/traversal/step/map/PathStep.java       |    44 +-
 .../process/traversal/step/map/ProjectStep.java    |     2 +-
 .../traversal/step/map/PropertyMapStep.java        |    13 +-
 .../process/traversal/step/map/SelectOneStep.java  |     7 +-
 .../process/traversal/step/map/SelectStep.java     |    12 +-
 .../process/traversal/step/map/TreeStep.java       |    12 +-
 .../step/sideEffect/AggregateGlobalStep.java       |     8 +-
 .../step/sideEffect/AggregateLocalStep.java        |     2 +-
 .../traversal/step/sideEffect/FailStep.java        |    87 +
 .../traversal/step/sideEffect/SackValueStep.java   |    18 +-
 .../process/traversal/step/util/HasContainer.java  |    51 +-
 .../strategy/decoration/SubgraphStrategy.java      |     3 +-
 .../optimization/PathProcessorStrategy.java        |    28 +-
 .../optimization/ProductiveByStrategy.java         |   192 +
 .../translator/AnonymizingTypeTranslator.java      |   175 +
 .../traversal/translator/GroovyTranslator.java     |    38 +-
 .../traversal/translator/PythonTranslator.java     |    66 +-
 .../traverser/B_LP_NL_O_S_SE_SL_Traverser.java     |     5 +
 .../traverser/B_LP_O_S_SE_SL_Traverser.java        |     1 -
 .../traverser/B_NL_O_S_SE_SL_Traverser.java        |     1 -
 .../traversal/traverser/B_O_S_SE_SL_Traverser.java |     7 +
 .../traverser/LP_NL_O_OB_P_S_SE_SL_Traverser.java  |     6 +
 .../traverser/LP_NL_O_OB_S_SE_SL_Traverser.java    |     6 +
 .../traverser/LP_O_OB_S_SE_SL_Traverser.java       |     1 -
 .../traverser/NL_O_OB_S_SE_SL_Traverser.java       |     6 +
 .../traverser/O_OB_S_SE_SL_Traverser.java          |     9 +-
 .../process/traversal/util/DefaultTraversal.java   |    42 +-
 .../process/traversal/util/TraversalHelper.java    |     5 +-
 .../process/traversal/util/TraversalProduct.java   |    55 +
 .../process/traversal/util/TraversalUtil.java      |   137 +-
 .../structure/io/graphson/GraphSONModule.java      |     4 +
 .../gremlin/structure/io/gryo/GryoVersion.java     |     7 +-
 .../gremlin/structure/util/CloseableIterator.java  |     3 +-
 .../gremlin/structure/util/ElementHelper.java      |     6 +-
 .../gremlin/util/function/ChainedComparator.java   |     2 +
 .../grammar/GeneralLiteralVisitorTest.java         |    88 +-
 .../grammar/StructureElementVisitorTest.java       |    48 +
 .../grammar/TraversalPredicateVisitorTest.java     |     2 +-
 .../grammar/TraversalSourceTxVisitorTest.java      |    64 +
 .../grammar/TraversalStrategyVisitorTest.java      |    10 +-
 .../gremlin/process/traversal/PathTest.java        |    20 +
 .../dsl/graph/GraphTraversalSourceTest.java        |    14 +
 .../traversal/dsl/graph/GraphTraversalTest.java    |    25 +
 .../traversal/lambda/ConstantTraversalTest.java    |    48 +
 .../traversal/lambda/ValueTraversalTest.java       |    59 +-
 .../optimization/PathProcessorStrategyTest.java    |    10 +
 .../optimization/ProductiveByStrategyTest.java     |   236 +
 .../translator/AnonymizingTypeTranslatorTest.java  |   136 +
 .../traversal/translator/GroovyTranslatorTest.java |    17 +-
 .../translator/JavascriptTranslatorTest.java       |     8 +-
 .../traversal/translator/PythonTranslatorTest.java |    18 +-
 .../traversal/util/TraversalExplanationTest.java   |     3 +-
 .../gremlin/structure/util/ElementHelperTest.java  |     6 +
 gremlin-dotnet/build/generate.groovy               |     4 +
 .../src/Gremlin.Net/Driver/Connection.cs           |    13 +
 gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs    |     1 -
 .../Process/Traversal/GraphTraversal.cs            |    38 +-
 .../Process/Traversal/GraphTraversalSource.cs      |    22 +-
 .../Strategy/Optimization/ProductiveByStrategy.cs  |    53 +
 .../src/Gremlin.Net/Process/Traversal/__.cs        |    16 +
 .../Gherkin/CommonSteps.cs                         |    75 +-
 .../Gherkin/GherkinTestRunner.cs                   |     7 +-
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |   122 +-
 .../tinkerpop/gremlin/driver/Connection.java       |    31 +
 .../apache/tinkerpop/gremlin/driver/Tokens.java    |    15 +
 .../gremlin/driver/message/ResponseStatusCode.java |    11 +
 .../driver/ser/GryoLiteMessageSerializerV1d0.java  |   167 -
 .../tinkerpop/gremlin/driver/ser/Serializers.java  |     2 -
 .../ser/GryoLiteMessageSerializerV1d0Test.java     |   151 -
 .../driver/ser/GryoMessageSerializerV1d0Test.java  |   112 +-
 gremlin-groovy/pom.xml                             |     4 +-
 .../ast/VarAsBindingASTTransformation.groovy       |     3 +
 .../gremlin/groovy/loaders/StrategyLoader.groovy   |     2 +
 .../groovy/jsr223/GremlinGroovyScriptEngine.java   |     5 +-
 .../gremlin/groovy/jsr223/GroovyTranslator.java    |   376 -
 .../jsr223/GremlinGroovyScriptEngineTest.java      |     2 +-
 .../groovy/jsr223/GroovyTranslatorTest.java        |   429 -
 .../ParameterizedGroovyTranslatorProvider.java     |     1 +
 .../jsr223/ParameterizedGroovyTranslatorTest.java  |   664 --
 gremlin-javascript/build/generate.groovy           |     7 +-
 gremlin-javascript/pom.xml                         |     6 +-
 .../gremlin-javascript/lib/driver/client.js        |     4 +
 .../lib/process/graph-traversal.js                 |    11 +
 .../gremlin-javascript/lib/process/translator.js   |    73 +-
 .../lib/process/traversal-strategy.js              |    11 +
 .../gremlin-javascript/package-lock.json           |  3240 +++++-
 .../test/cucumber/feature-steps.js                 |    24 +-
 .../gremlin-javascript/test/cucumber/gremlin.js    |   123 +-
 .../test/integration/traversal-test.js             |    17 +-
 .../gremlin-javascript/test/unit/client-test.js    |     6 +-
 .../test/unit/translator-test.js                   |     7 +
 gremlin-language/pom.xml                           |     4 -
 gremlin-language/src/main/antlr4/Gremlin.g4        |    39 +-
 gremlin-python/build/generate.groovy               |     3 +
 gremlin-python/pom.xml                             |   126 +-
 .../gremlin_python/driver/aiohttp/transport.py     |    15 +-
 .../main/python/gremlin_python/driver/client.py    |    63 +-
 .../driver/driver_remote_connection.py             |    70 +-
 .../main/python/gremlin_python/driver/protocol.py  |    18 +-
 .../gremlin_python/driver/remote_connection.py     |    23 +-
 .../python/gremlin_python/driver/serializer.py     |    13 +-
 .../gremlin_python/process/graph_traversal.py      |   199 +-
 .../python/gremlin_python/process/strategies.py    |     5 +
 .../python/gremlin_python/process/traversal.py     |    18 +-
 .../src/main/python/radish/feature_steps.py        |    26 +-
 gremlin-python/src/main/python/radish/gremlin.py   |   297 +-
 gremlin-python/src/main/python/setup.py            |    16 +-
 gremlin-python/src/main/python/tests/conftest.py   |    35 +-
 .../src/main/python/tests/driver/test_client.py    |    10 +-
 .../tests/driver/test_driver_remote_connection.py  |    12 +-
 .../src/main/python/tests/process/test_dsl.py      |     4 +-
 .../main/python/tests/process/test_translator.py   |    16 +-
 .../main/python/tests/process/test_traversal.py    |   237 +-
 gremlin-server/conf/neo4j-empty.properties         |     6 +
 .../tinkerpop/gremlin/server/GremlinServer.java    |    35 +-
 .../apache/tinkerpop/gremlin/server/Settings.java  |    18 +-
 .../gremlin/server/handler/AbstractSession.java    |    39 +-
 .../handler/HttpBasicAuthenticationHandler.java    |     2 +-
 .../server/handler/HttpGremlinEndpointHandler.java |     5 -
 .../server/handler/SaslAuthenticationHandler.java  |     5 +-
 .../gremlin/server/handler/UnifiedHandler.java     |    15 +-
 .../gremlin/server/op/AbstractEvalOpProcessor.java |    30 +-
 .../gremlin/server/op/AbstractOpProcessor.java     |     9 +-
 .../server/op/session/SessionOpProcessor.java      |    78 +-
 .../server/op/traversal/TraversalOpProcessor.java  |    52 +-
 .../driver/ClientConnectionIntegrateTest.java      |     5 +-
 .../driver/remote/AbstractRemoteGraphProvider.java |     8 +-
 ...emoteGraphGroovyTranslatorComputerProvider.java |   156 -
 .../GryoRemoteGraphGroovyTranslatorProvider.java   |    45 -
 ...teGraphGroovyTranslatorProcessComputerTest.java |    33 -
 ...teGraphGroovyTranslatorProcessStandardTest.java |    33 -
 .../AbstractGremlinServerIntegrationTest.java      |    25 +-
 .../gremlin/server/GremlinDriverIntegrateTest.java |    96 +-
 .../server/GremlinResultSetIntegrateTest.java      |     7 -
 ...emlinServerAuditLogDeprecatedIntegrateTest.java |   371 -
 .../server/GremlinServerHttpIntegrateTest.java     |     6 +-
 .../gremlin/server/GremlinServerIntegrateTest.java |    38 +-
 .../server/GremlinServerSessionIntegrateTest.java  |    25 +-
 .../server/GremlinSessionTxIntegrateTest.java      |    44 +
 .../gremlin/server/gremlin-server-integration.yaml |     1 -
 gremlin-test/features/filter/CyclicPath.feature    |    14 +
 gremlin-test/features/filter/Dedup.feature         |    53 +-
 gremlin-test/features/filter/Has.feature           |   275 -
 gremlin-test/features/filter/HasId.feature         |   215 +
 .../{map/Max.feature => filter/HasLabel.feature}   |   149 +-
 gremlin-test/features/filter/Sample.feature        |    15 +
 gremlin-test/features/filter/SimplePath.feature    |    17 +
 gremlin-test/features/filter/Where.feature         |    13 +-
 gremlin-test/features/map/AddVertex.feature        |    10 -
 gremlin-test/features/map/Fold.feature             |    21 +
 gremlin-test/features/map/Match.feature            |     4 +
 gremlin-test/features/map/Math.feature             |    28 +
 gremlin-test/features/map/Max.feature              |    40 +
 gremlin-test/features/map/Mean.feature             |    44 +
 gremlin-test/features/map/Min.feature              |    40 +
 gremlin-test/features/map/Order.feature            |   248 +-
 gremlin-test/features/map/Path.feature             |    14 +
 gremlin-test/features/map/Project.feature          |    18 +
 gremlin-test/features/map/Select.feature           |    36 +
 gremlin-test/features/map/Sum.feature              |    45 +-
 gremlin-test/features/map/ValueMap.feature         |    18 +-
 gremlin-test/features/map/Vertex.feature           |    85 +
 gremlin-test/features/semantics/Equality.feature   |   156 +-
 gremlin-test/features/sideEffect/Aggregate.feature |   105 +-
 .../{map/Fold.feature => sideEffect/Fail.feature}  |    41 +-
 gremlin-test/features/sideEffect/Group.feature     |    24 +-
 .../features/sideEffect/GroupCount.feature         |    24 +-
 gremlin-test/features/sideEffect/Sack.feature      |    14 +
 gremlin-test/pom.xml                               |    10 +-
 .../tinkerpop/gremlin/features/StepDefinition.java |    50 +-
 .../process/traversal/step/filter/DedupTest.java   |     3 +-
 .../process/traversal/step/filter/SampleTest.java  |     3 +-
 .../process/traversal/step/filter/WhereTest.java   |     4 +-
 .../process/traversal/step/map/AddVertexTest.java  |    29 +-
 .../process/traversal/step/map/MaxTest.java        |     2 -
 .../process/traversal/step/map/MeanTest.java       |     2 -
 .../process/traversal/step/map/MinTest.java        |     2 -
 .../process/traversal/step/map/OrderTest.java      |     2 +-
 .../process/traversal/step/map/PathTest.java       |     4 +-
 .../process/traversal/step/map/ProjectTest.java    |    37 +-
 .../process/traversal/step/map/SelectTest.java     |     2 +-
 .../process/traversal/step/map/SumTest.java        |     4 +-
 .../traversal/step/sideEffect/AggregateTest.java   |    37 +
 .../traversal/step/sideEffect/GroupTest.java       |     2 +-
 .../traversal/step/sideEffect/TreeTest.java        |    25 +
 gremlint/package-lock.json                         |  6120 +++++++++-
 gremlint/pom.xml                                   |     4 +-
 .../hadoop/HadoopGraphFeatureIntegrateTest.java    |     2 +-
 .../gremlin/neo4j/structure/Neo4jGraph.java        |    16 +-
 .../gremlin/neo4j/Neo4jGraphFeatureTest.java       |     2 +-
 pom.xml                                            |   391 +-
 .../interceptor/SparkStarBarrierInterceptor.java   |     5 +-
 .../spark/SparkGraphFeatureIntegrateTest.java      |     4 +-
 .../optimization/SparkInterceptorStrategyTest.java |     9 +-
 .../gremlin/tinkergraph/structure/TinkerGraph.java |     2 +
 .../TinkerGraphAllowNullFeatureTest.java           |     2 +-
 .../TinkerGraphComputerFeatureTest.java            |     2 +-
 .../tinkergraph/TinkerGraphFeatureTest.java        |     2 +-
 .../gremlin/tinkergraph/TinkerGraphWorld.java      |     2 +-
 .../TinkerGraphNoStrategyComputerProvider.java     |     2 +
 .../process/TinkerGraphNoStrategyProvider.java     |     2 +
 275 files changed, 25078 insertions(+), 6875 deletions(-)
 create mode 100644 docs/site/home/img/logos/gdotv-logo.png
 delete mode 100644 docs/site/home/img/logos/ibm-compose-janusgraph-logo.png
 delete mode 100644 docs/site/home/img/logos/titan-logo.png
 create mode 100644 docs/static/images/gremlin-victorian.png
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/StructureElementVisitor.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceTxVisitor.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Failure.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/FailStep.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ProductiveByStrategy.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/AnonymizingTypeTranslator.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalProduct.java
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/StructureElementVisitorTest.java
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceTxVisitorTest.java
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ConstantTraversalTest.java
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ProductiveByStrategyTest.java
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/AnonymizingTypeTranslatorTest.java
 create mode 100644 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/ProductiveByStrategy.cs
 delete mode 100644 gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
 delete mode 100644 gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0Test.java
 delete mode 100644 gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
 delete mode 100644 gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java
 delete mode 100644 gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ParameterizedGroovyTranslatorTest.java
 delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GryoRemoteGraphGroovyTranslatorComputerProvider.java
 delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GryoRemoteGraphGroovyTranslatorProvider.java
 delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessComputerTest.java
 delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessStandardTest.java
 delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuditLogDeprecatedIntegrateTest.java
 create mode 100644 gremlin-test/features/filter/HasId.feature
 copy gremlin-test/features/{map/Max.feature => filter/HasLabel.feature} (51%)
 copy gremlin-test/features/{map/Fold.feature => sideEffect/Fail.feature} (61%)

[tinkerpop] 08/15: Add regex predicates to Python client

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 7ec6bd48cc8cffdd85a61967e70441fb56e8d430
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 19:32:40 2021 -0600

    Add regex predicates to Python client
---
 .../src/main/python/gremlin_python/process/traversal.py           | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gremlin-python/src/main/python/gremlin_python/process/traversal.py b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
index f7bd31d..f8bb83c 100644
--- a/gremlin-python/src/main/python/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
@@ -384,6 +384,14 @@ class TextP(P):
     def startingWith(*args):
         return TextP("startingWith", *args)
 
+    @staticmethod
+    def regex(*args):
+        return TextP("regex", *args)
+
+    @staticmethod
+    def notRegex(*args):
+        return TextP("notRegex", *args)
+
     def __eq__(self, other):
         return isinstance(other, self.__class__) and self.operator == other.operator and self.value == other.value and self.other == other.other
 

[tinkerpop] 06/15: Additional tests

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit d4f3a4444b5b89d2a52cca9a1753b456515c3401
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 17:08:12 2021 -0600

    Additional tests
---
 .../test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
index 401c230..d29e666 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
@@ -165,11 +165,13 @@ public class PTest {
                     {TextP.regex("^x"), "Dallas Fort Worth", false},
                     {TextP.regex("Dal[l|x]as"), "Dallas Fort Worth", true},
                     {TextP.regex("Dal[f|x]as"), "Dallas Fort Worth", false},
+                    {TextP.regex("[a-zA-Z]+ Fort"), "Dallas Fort Worth", true},
                     {TextP.regex("[1-9]{3}"), "123-ABC-456", true},
                     {TextP.regex("[1-9]{3}-[A-Z]{3}-[1-9]{3}"), "123-ABC-456", true},
                     {TextP.regex("[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", false},
                     {TextP.regex("(?i)[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", true},
                     {TextP.regex("(?i)abc"), "123-ABC-456", true},
+                    {TextP.regex("(?i)[a-b]{3}-[1-9]{3}-[a-z]{3}"), "123-ABC-456", false},
             }));
         }
 

[tinkerpop] 12/15: More improvements to regex Gherkin tests

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit b63f44e64b4ca6d05c20af75a84771cdc13ae27e
Author: Ubuntu <ub...@ip-172-31-7-87.ec2.internal>
AuthorDate: Fri Dec 10 23:52:22 2021 +0000

    More improvements to regex Gherkin tests
---
 .../src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js   | 4 ++--
 gremlin-python/src/main/python/radish/gremlin.py                      | 4 ++--
 gremlin-test/features/filter/Has.feature                              | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 60f8c1a..3c73a4e 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -203,8 +203,8 @@ const gremlins = {
     g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name",TextP.notContaining("ark")) }], 
     g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.notStartingWith("mar")) }], 
     g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.notEndingWith("as")) }], 
-    g_V_hasXname_regexX^MarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }], 
-    g_V_hasXname_notRegexX^MarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }], 
+    g_V_hasXname_regexXrMarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }], 
+    g_V_hasXname_notRegexXrMarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }], 
     g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }], 
     g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).or(P.gt(35))) }], 
     g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).and(P.lt(35))) }], 
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index 79e08c9..0dcd3e4 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -188,8 +188,8 @@ world.gremlins = {
     'g_V_hasXname_not_containingXarkXX': [(lambda g:g.V().has('name',TextP.notContaining('ark')))], 
     'g_V_hasXname_not_startingWithXmarXX': [(lambda g:g.V().has('name',TextP.notStartingWith('mar')))], 
     'g_V_hasXname_not_endingWithXasXX': [(lambda g:g.V().has('name',TextP.notEndingWith('as')))], 
-    'g_V_hasXname_regexX^MarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))], 
-    'g_V_hasXname_notRegexX^MarXX': [(lambda g:g.V().has('name',TextP.notRegex('^mar')))], 
+    'g_V_hasXname_regexXrMarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))], 
+    'g_V_hasXname_notRegexXrMarXX': [(lambda g:g.V().has('name',TextP.notRegex('^mar')))], 
     'g_V_hasXp_neqXvXX': [(lambda g:g.V().has('p',P.neq('v')))], 
     'g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).or_(P.gt(35))))], 
     'g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).and_(P.lt(35))))], 
diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature
index 85163fb..8739556 100644
--- a/gremlin-test/features/filter/Has.feature
+++ b/gremlin-test/features/filter/Has.feature
@@ -514,7 +514,7 @@ Feature: Step - has()
       | v[ripple] |
       | v[peter] |
 
- Scenario: g_V_hasXname_regexX^MarXX
+ Scenario: g_V_hasXname_regexXrMarXX
     Given the modern graph
     And the traversal of
       """
@@ -525,7 +525,7 @@ Feature: Step - has()
       | result |
       | v[marko] |
 
- Scenario: g_V_hasXname_notRegexX^MarXX
+ Scenario: g_V_hasXname_notRegexXrMarXX
     Given the modern graph
     And the traversal of
       """

[tinkerpop] 10/15: Add regex to .Net and Javascript GLVs

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 9020c3b2989b3f08078efbc8eb787a9cbce763c5
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Fri Nov 19 10:47:54 2021 -0600

    Add regex to .Net and Javascript GLVs
---
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs        | 9 +++++++++
 .../main/javascript/gremlin-javascript/lib/process/traversal.js  | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
index a77f206..a106fb0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
@@ -75,6 +75,15 @@ namespace Gremlin.Net.Process.Traversal
             return new TextP("startingWith", value);
         }
 
+        public static TextP Regex(string value)
+        {
+            return new TextP("regex", value);
+        }
+
+        public static TextP NotRegex(string value)
+        {
+            return new TextP("notRegex", value);
+        }
 
         private static T[] ToGenericArray<T>(ICollection<T> collection)
         {
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
index f72c3f9..a7fb9ac 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
@@ -427,6 +427,15 @@ class TextP {
     return createTextP('startingWith', args);
   }
 
+  /** @param {...Object} args */
+  static regex(...args) {
+    return createTextP('regex', args);
+  }
+
+  /** @param {...Object} args */
+  static notRegex(...args) {
+    return createTextP('notRegex', args);
+  }
 }
 
 function createTextP(operator, args) {

[tinkerpop] 07/15: Add simple grammar tests

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 48d8513becbdfacc7fb725e38a16c150ea355c0d
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 17:35:45 2021 -0600

    Add simple grammar tests
---
 .../gremlin/language/grammar/TraversalPredicateVisitorTest.java        | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java
index 7254388..4bb7f30 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java
@@ -90,6 +90,9 @@ public class TraversalPredicateVisitorTest {
                 {"TextP.endingWith('hakuna')", TextP.endingWith("hakuna")},
                 {"TextP.notEndingWith('hakuna')", TextP.notEndingWith("hakuna")},
                 {"TextP.notStartingWith('hakuna')", TextP.notStartingWith("hakuna")},
+                {"TextP.regex('^h')", TextP.regex("^h")},
+                {"TextP.notRegex('^h')", TextP.notRegex("^h")},
+                {"TextP.regex('^h').negate()", TextP.regex("^h").negate()},
         });
     }
 

[tinkerpop] 04/15: Add actual mappings for regex when used via Antlr

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 3790207febeba0c0a7b50c956d09ca41e6fe3e9e
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 14:48:38 2021 -0600

    Add actual mappings for regex when used via Antlr
---
 .../gremlin/language/grammar/TraversalPredicateVisitor.java    | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java
index 608c20d..d46fc49 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java
@@ -264,4 +264,14 @@ public class TraversalPredicateVisitor extends GremlinBaseVisitor<P> {
     public P visitTraversalPredicate_notStartingWith(final GremlinParser.TraversalPredicate_notStartingWithContext ctx) {
         return TextP.notStartingWith(GenericLiteralVisitor.getStringLiteral(ctx.stringLiteral()));
     }
+
+    @Override
+    public P visitTraversalPredicate_regex(final GremlinParser.TraversalPredicate_regexContext ctx) {
+        return TextP.regex(GenericLiteralVisitor.getStringLiteral(ctx.stringLiteral()));
+    }
+
+    @Override
+    public P visitTraversalPredicate_notRegex(final GremlinParser.TraversalPredicate_notRegexContext ctx) {
+        return TextP.notRegex(GenericLiteralVisitor.getStringLiteral(ctx.stringLiteral()));
+    }
 }

[tinkerpop] 13/15: Add dotnet Gherkin test

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 70fd97ac367f1b71adf368aa9836195c7dcb0ab3
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Mon Dec 13 19:35:47 2021 +0000

    Add dotnet Gherkin test
---
 gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index ea6bf4d..504f786 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -215,6 +215,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_hasXname_not_containingXarkXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotContaining("ark"))}}, 
                {"g_V_hasXname_not_startingWithXmarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotStartingWith("mar"))}}, 
                {"g_V_hasXname_not_endingWithXasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotEndingWith("as"))}}, 
+               {"g_V_hasXname_regexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.Regex("^mar"))}}, 
+               {"g_V_hasXname_notRegexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotRegex("^mar"))}}, 
                {"g_V_hasXp_neqXvXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("p",P.Neq("v"))}}, 
                {"g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(18).And(P.Lt(30)).Or(P.Gt(35)))}}, 
                {"g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(18).And(P.Lt(30)).And(P.Lt(35)))}}, 

[tinkerpop] 05/15: Initial set of regex tests

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 01bf2a937c9a343265468cc88dcaf72cda2564a6
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 16:20:48 2021 -0600

    Initial set of regex tests
---
 .../org/apache/tinkerpop/gremlin/process/traversal/Text.java |  4 ++--
 .../apache/tinkerpop/gremlin/process/traversal/PTest.java    | 12 ++++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
index 5d443ff..91fcd7d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
@@ -39,7 +39,7 @@ public enum Text implements BiPredicate<String, String> {
     regex {
         @Override
         public boolean test(final String value, final String regex) {
-            Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+            Pattern pattern = Pattern.compile(regex);
             Matcher matcher = pattern.matcher(value);
             return matcher.find();   
         }
@@ -60,7 +60,7 @@ public enum Text implements BiPredicate<String, String> {
     notRegex {
         @Override
         public boolean test(final String value, final String regex) {
-	    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+	    Pattern pattern = Pattern.compile(regex);
 	    Matcher matcher = pattern.matcher(value);
 	    return !matcher.find();   
         }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
index e58e8be..401c230 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
@@ -158,6 +158,18 @@ public class PTest {
                     {TextP.containing("o").and(P.gte("j")).and(TextP.endingWith("ko")), "josh", false},
                     {TextP.containing("o").and(P.gte("j").and(TextP.endingWith("ko"))), "marko", true},
                     {TextP.containing("o").and(P.gte("j").and(TextP.endingWith("ko"))), "josh", false},
+                    {TextP.regex("^D"), "Dallas Fort Worth", true},
+                    {TextP.regex("^d"), "Dallas Fort Worth", false},
+                    {TextP.regex("^Da"), "Dallas Forth Worth", true},
+                    {TextP.regex("^da"), "Dallas Forth Worth", false},
+                    {TextP.regex("^x"), "Dallas Fort Worth", false},
+                    {TextP.regex("Dal[l|x]as"), "Dallas Fort Worth", true},
+                    {TextP.regex("Dal[f|x]as"), "Dallas Fort Worth", false},
+                    {TextP.regex("[1-9]{3}"), "123-ABC-456", true},
+                    {TextP.regex("[1-9]{3}-[A-Z]{3}-[1-9]{3}"), "123-ABC-456", true},
+                    {TextP.regex("[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", false},
+                    {TextP.regex("(?i)[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", true},
+                    {TextP.regex("(?i)abc"), "123-ABC-456", true},
             }));
         }
 

[tinkerpop] 14/15: Add documentation for TextP.regex

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit a1522a811db7cb2442a49daab0a9d9e0afc30590
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Wed Dec 15 12:35:20 2021 -0600

    Add documentation for TextP.regex
---
 docs/src/reference/the-traversal.asciidoc | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index 98f2e8d..7dd001b 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -4077,7 +4077,8 @@ A `P` is a predicate of the form `Function<Object,Boolean>`. That is, given some
 the release of TinkerPop 3.4.0, Gremlin also supports simple text predicates, which only work on `String` values. The `TextP`
 text predicates extend the `P` predicates, but are specialized in that they are of the form `Function<String,Boolean>`.
 The provided predicates are outlined in the table below and are used in various steps such as <<has-step,`has()`>>-step,
-<<where-step,`where()`>>-step, <<is-step,`is()`>>-step, etc.
+<<where-step,`where()`>>-step, <<is-step,`is()`>>-step, etc. Two new additional `TextP` predicate members were added in the
+TinkerPop 3.6.0 release that allow working with regular expressions. These are `TextP.regex` and `TextP.notRegex`
 
 [width="100%",cols="3,15",options="header"]
 |=========================================================
@@ -4099,8 +4100,12 @@ The provided predicates are outlined in the table below and are used in various
 | `TextP.notStartingWith(string)` | Does the incoming `String` not start with the provided `String`?
 | `TextP.notEndingWith(string)` | Does the incoming `String` not end with the provided `String`?
 | `TextP.notContaining(string)` | Does the incoming `String` not contain the provided `String`?
+| `TextP.regex(string)` | Does the incoming `String` match the regular expression in the provided `String`?
+| `TextP.notRegex(string)` | Does the incoming `String` fail to match the regular expression in the provided `String`?
 |=========================================================
-
+Note that the TinkerPop reference implementation uses the Java `Pattern` and `Matcher` classes for it regular expression
+engine. Other implementations may decide to use a different regular expression engine. It's a good idea to check
+the documentation for the implementation you are using to verify the allowed regular expression syntax.
 [gremlin-groovy]
 ----
 eq(2)

[tinkerpop] 03/15: Add base class visitor methods for regex via grammar

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 6832a6bf003228b90d9dd5c5001bef51e1b9d3a8
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 14:36:21 2021 -0600

    Add base class visitor methods for regex via grammar
---
 .../tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
index fd48b79..b25418b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
@@ -1050,6 +1050,16 @@ public class GremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> implement
 	public T visitTraversalPredicate_notEndingWith(final GremlinParser.TraversalPredicate_notEndingWithContext ctx) {
 		notImplemented(ctx); return null;
 	}
+
+	@Override
+	public T visitTraversalPredicate_regex(final GremlinParser.TraversalPredicate_regexContext ctx) {
+		notImplemented(ctx); return null;
+	}
+
+	@Override
+	public T visitTraversalPredicate_notRegex(final GremlinParser.TraversalPredicate_notRegexContext ctx) {
+		notImplemented(ctx); return null;
+	}
 	/**
 	 * {@inheritDoc}
 	 */

[tinkerpop] 09/15: Continue adding regex predicates to Python client

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 213a2913e6d3f5bf649fca9fff57223a74dd031e
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 19:47:05 2021 -0600

    Continue adding regex predicates to Python client
---
 .../src/main/python/gremlin_python/process/traversal.py          | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gremlin-python/src/main/python/gremlin_python/process/traversal.py b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
index f8bb83c..67ea377 100644
--- a/gremlin-python/src/main/python/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
@@ -422,6 +422,11 @@ def notStartingWith(*args):
 def startingWith(*args):
     return TextP.startingWith(*args)
 
+def regex(*args):
+    return TextP.regex(*args)
+
+def notRegex(*args):
+    return TextP.notRegex(*args)
 
 statics.add_static('containing', containing)
 
@@ -435,6 +440,10 @@ statics.add_static('notStartingWith', notStartingWith)
 
 statics.add_static('startingWith', startingWith)
 
+statics.add_static('regex', regex)
+
+statics.add_static('notRegex', notRegex)
+
 
 
 

[tinkerpop] 11/15: Initial work on regex Gherkin scenarios

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 051e0c73f97699829a2e824f50653402de7edfdf
Author: Ubuntu <ub...@ip-172-31-7-87.ec2.internal>
AuthorDate: Fri Dec 10 21:46:47 2021 +0000

    Initial work on regex Gherkin scenarios
---
 .../gremlin-javascript/test/cucumber/gremlin.js    |  2 ++
 gremlin-python/src/main/python/radish/gremlin.py   |  2 ++
 gremlin-test/features/filter/Has.feature           | 30 +++++++++++++++++++++-
 3 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 52bb2c7..60f8c1a 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -203,6 +203,8 @@ const gremlins = {
     g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name",TextP.notContaining("ark")) }], 
     g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.notStartingWith("mar")) }], 
     g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.notEndingWith("as")) }], 
+    g_V_hasXname_regexX^MarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }], 
+    g_V_hasXname_notRegexX^MarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }], 
     g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }], 
     g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).or(P.gt(35))) }], 
     g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).and(P.lt(35))) }], 
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index 850ee7e..79e08c9 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -188,6 +188,8 @@ world.gremlins = {
     'g_V_hasXname_not_containingXarkXX': [(lambda g:g.V().has('name',TextP.notContaining('ark')))], 
     'g_V_hasXname_not_startingWithXmarXX': [(lambda g:g.V().has('name',TextP.notStartingWith('mar')))], 
     'g_V_hasXname_not_endingWithXasXX': [(lambda g:g.V().has('name',TextP.notEndingWith('as')))], 
+    'g_V_hasXname_regexX^MarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))], 
+    'g_V_hasXname_notRegexX^MarXX': [(lambda g:g.V().has('name',TextP.notRegex('^mar')))], 
     'g_V_hasXp_neqXvXX': [(lambda g:g.V().has('p',P.neq('v')))], 
     'g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).or_(P.gt(35))))], 
     'g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).and_(P.lt(35))))], 
diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature
index bbb9ed4..85163fb 100644
--- a/gremlin-test/features/filter/Has.feature
+++ b/gremlin-test/features/filter/Has.feature
@@ -514,6 +514,33 @@ Feature: Step - has()
       | v[ripple] |
       | v[peter] |
 
+ Scenario: g_V_hasXname_regexX^MarXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("name", TextP.regex("^mar"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[marko] |
+
+ Scenario: g_V_hasXname_notRegexX^MarXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("name", TextP.notRegex("^mar"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[josh] |
+      | v[vadas] |
+      | v[lop] |
+      | v[ripple] |
+      | v[peter] |  
+
+
   Scenario: g_V_hasXp_neqXvXX
     Given the modern graph
     And the traversal of
@@ -675,4 +702,5 @@ Feature: Step - has()
     When iterated to list
     Then the result should be unordered
       | result |
-      | josh |
\ No newline at end of file
+      | josh |
+

[tinkerpop] 15/15: Add TextP.regex to the CHANGELOG

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 0141808f59f3714c1b632452f469db2cdbf51b75
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Wed Dec 15 12:42:11 2021 -0600

    Add TextP.regex to the CHANGELOG
---
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index d919c0d..9aee9d8 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-6-0]]
 === TinkerPop 3.6.0 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Added `TextP.regex` and `TextP.notRegex`.
 * Changed TinkerGraph to allow identifiers to be heterogeneous when filtering.
 * Prevented values of `T` to `property()` from being `null`.
 * Added `fail()` step.

[tinkerpop] 01/15: Initial changes for regex support. More to follow

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit eeb584a642ae7db7b9e95029890a45ae71dcf5d5
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 13:47:40 2021 -0600

    Initial changes for regex support. More to follow
---
 .../tinkerpop/gremlin/process/traversal/Text.java  | 44 ++++++++++++++++++++++
 .../tinkerpop/gremlin/process/traversal/TextP.java | 18 +++++++++
 2 files changed, 62 insertions(+)

diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
index 9c25825..5d443ff 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
@@ -19,6 +19,8 @@
 package org.apache.tinkerpop.gremlin.process.traversal;
 
 import java.util.function.BiPredicate;
+import java.util.regex.Pattern; 
+import java.util.regex.Matcher; 
 
 /**
  * {@link Text} is a {@link java.util.function.BiPredicate} that determines whether the first string starts with, starts
@@ -30,6 +32,48 @@ import java.util.function.BiPredicate;
 public enum Text implements BiPredicate<String, String> {
 
     /**
+     * Evaluates if the first string has a regex match with the second (pattern).
+     *
+     * @since 3.6.0
+     */
+    regex {
+        @Override
+        public boolean test(final String value, final String regex) {
+            Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+            Matcher matcher = pattern.matcher(value);
+            return matcher.find();   
+        }
+
+        /**
+         * The negative of {@code regex} is {@link #notRegex}.
+         */
+        @Override
+        public Text negate() {
+            return notRegex;
+        }
+    },
+    /**
+     * Evaluates if the first string does not have a regex match with the second (pattern).
+     *
+     * @since 3.6.0
+     */
+    notRegex {
+        @Override
+        public boolean test(final String value, final String regex) {
+	    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+	    Matcher matcher = pattern.matcher(value);
+	    return !matcher.find();   
+        }
+
+        /**
+         * The negative of {@code notRegex} is {@link #regex}.
+         */
+        @Override
+        public Text negate() {
+            return regex;
+        }
+    },
+    /**
      * Evaluates if the first string starts with the second.
      *
      * @since 3.4.0
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java
index 2c28853..5b72521 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java
@@ -106,4 +106,22 @@ public class TextP extends P<String> {
     public static TextP notContaining(final String value) {
         return new TextP(Text.notContaining, value);
     }
+    
+    /**           
+     * Determines if String has a match with the given REGEX pattern. 
+     *
+     * @since 3.6.0
+     */
+    public static TextP regex(final String value) {
+        return new TextP(Text.regex, value);
+    }
+
+    /**           
+     * Determines if String has no match with the given REGEX pattern. 
+     *
+     * @since 3.6.0
+     */
+    public static TextP notRegex(final String value) {
+        return new TextP(Text.notRegex, value);
+    }
 }

[tinkerpop] 02/15: Add redex predicates to the Antlr grammar

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit f920fcf6d508e0929858bec2884a053e31d2e7e0
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 14:02:26 2021 -0600

    Add redex predicates to the Antlr grammar
---
 gremlin-language/src/main/antlr4/Gremlin.g4 | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index e285634..941cdd1 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -905,6 +905,8 @@ traversalPredicate
     | traversalPredicate_notEndingWith
     | traversalPredicate_containing
     | traversalPredicate_notContaining
+    | traversalPredicate_regex
+    | traversalPredicate_notRegex
     | traversalPredicate DOT 'and' LPAREN traversalPredicate RPAREN
     | traversalPredicate DOT 'or' LPAREN traversalPredicate RPAREN
     | traversalPredicate DOT 'negate' LPAREN RPAREN
@@ -1019,6 +1021,14 @@ traversalPredicate_notEndingWith
     : ('TextP.notEndingWith' | 'notEndingWith') LPAREN stringLiteral RPAREN
     ;
 
+traversalPredicate_regex
+    : ('TextP.regex' | 'regex') LPAREN stringLiteral RPAREN
+    ;
+
+traversalPredicate_notRegex
+    : ('TextP.notRegex' | 'notRegex') LPAREN stringLiteral RPAREN
+    ;
+
 traversalTerminalMethod_explain
     : 'explain' LPAREN RPAREN
     ;