You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by fl...@apache.org on 2021/05/12 07:46:25 UTC
[tinkerpop] branch TINKERPOP-2348 updated (841cc3b -> 28993a6)
This is an automated email from the ASF dual-hosted git repository.
florianhockmann pushed a change to branch TINKERPOP-2348
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.
discard 841cc3b TINKERPOP-2348 Add nullable annotations
add cc430d1 Document that AIOHTTP replaces Tornado in 3.5.0
add 3187363 Merged all the language runtime upgrade entries to one in upgrade docs CTR
add 36c4244 Excluded groovy from shade driver jar.
add 6f45289 Merged translator sections in 3.5.0 upgrade docs CTR
add eb22adb Merged together major version upgrades and dependency changes in upgrade docs CTR
add 4fd79ac Combined all the serialization related changes in upgrade docs CTR
add 82f5759 Moved some sections around in upgrade docs to fit more logically together CTR
add e13096c Added SeedStrategy to the antlr grammar CTR
add 8b4667f Remove Gremlin Language Variants tutorial
add ac58141 Added link to gremlint/ CTR
add a876bfa TINKERPOP-2245 Added UnifiedChannelizer
add a61b979 TINKERPOP-2245 Refactored the session side of UnifiedChannelizer
add 2141cf0 Ignored shouldEventuallySucceedOnSameServerWithDefault
add 70cdbbc Closing the alias needs to close the underlying client with it
add 13472f0 TINKERPOP-2245 Changed logging for sessions
add 962141b TINKERPOP-2245 gremlinPool needs to be defaulted to a larger value
add 9396dab TINKERPOP-2245 Documentation updates around UnifiedChannelizer
add 8e121f9 TINKERPOP-2245 Added some inline comments
add 6888d78 TINKERPOP-2245 Extracted "graph operation" bytecode to GraphOps
add 51a4bc8 TINKERPOP-2245 Minor code formatting
add bc2d9d5 TINKERPOP-2245 Changed signature of addTask() to return a bool
add 229f07e TINKERPOP-2245 Prefer compareAndSet() for ending task acceptance
add a27f56f TINKERPOP-2245 Added test to validate queue flushing on close
add 921cac6 TINKERPOP-2245 Removed duplicative rollback
add 64a8241 TINKERPOP-2245 Improved test stability in Travis and lower resource environments
add a15aa24 TINKERPOP-2245 Adjusted the CloseReason enum a bit
add cfa3356 TINKERPOP-2245 Major renaming of "Rexster" to "Session"
add f76bced TINKERPOP-2245 Replaced some references to Context with SessionTask
add 286606a TINKERPOP-2245 Migrated SessionExecutor validation to the UnifiedChannelizer so that it's more clear that UnifiedHandler has one
add 86697a0 TINKERPOP-2245 Moved SessionExecutor/SessionFutureTask
add 83123f3 TINKERPOP-2245 Hacked away the SessionExecutor and related code
add 5de3cc8 TINKERPOP-2245 Added some javadoc
add 0905d4f TINKERPOP-2245 Added RequestOptions for maintainStateAfterException
add c9e8591 TINKERPOP-709 Introduce rate limiting to gremlin server
add 5692a0f TINKERPOP-2245 Provide a way to check for open transactions across the GraphManager
add f249216 TINKERPOP-2245 Removed RequestOptions changes that recently added maintainStateAfterException
add 28e4f70 TINKERPOP-2245 Mostly documentation fixes though startTransaction() no longer silently rollsback...it throws an exception if there is an open transaction.
add 2163ba2 TINKERPOP-2245 Reverted the deprecation on createThreadedTransaction()
add d19135a TINKERPOP-2245 Added metrics in for UnifiedChannelizer stuff
add b18b95a TINKERPOP-2245 Setup test more resilient to low resource environments like Travis
add 7fe6359 TINKERPOP-2245 Fixed bad formatting in upgrade docs
add e052ccc Merge branch 'TINKERPOP-2245'
add 97bffb2 Changing branches leaves some gremlint stuff from master that won't cleanup properly in 3.4-dev - adding rat-plugin exclusions CTR
add 8573c0a Merge branch '3.4-dev'
add e7ce3b1 TINKERPOP-2504 Fix intermittent test failures in travis.
add db8b9db Merge branch '3.4-dev'
add 504e056 Missed migrating back some gremlint rat exclusions CTR
add e4b81f7 Merge branch '3.4-dev'
add a7e7dce Ignored leftover files of gremlint in 3.4-dev CTR
add 1a99125 Merge branch '3.4-dev'
add 0cc611e [1] Pushing current state which has working AIOHTTP transport layer.
add f238ab2 [1] Updated transport library for test that was accidentally reverted.
add e9edf7f [1] Missed this file from last commit.
add 92607d1 [1] Removed tornado [2] Added and plumbed in max_content_length
add 5e691d6 [1] Finished removing tornado [2] Added changelog
add 3faa9dc [1] Documentation changes for gremlin-variants Tornado->AIOHTTP [2] Added info in the upgrade about AIOHTTP change
add a42473a [1] Added a couple extra comments to the asciidoc info
add a786364 [1] Added nest_asyncio [2] Made test for functions called in the event loop
add 3180083 [1] Made nest_asyncio usage optional based on init settings [2] Plumbed call_from_event_loop option through client and driver_remote_connection
add a71d4aa [1] Switched argument style to use kwargs so that the arguments passed can be redone without reworking the plumbing.
add c62ae22 [1] Reduced the verbosity of the 403 message as it can sometimes include credentials.
add c091e62 [1] Correcting merge conflict issue
add 847af50 Merge branch 'pr-1416'
add 38b265d Updated link to ChronoGraph CTR
add 66e8268 Add mention (via CTR) that ANY allows String IDs
add 4772c4c Merge branch '3.4-dev'
add d46417d TINKERPOP-2547 Add a way to supply a callback on handshake with java driver
add b226f97 Merge branch 'TINKERPOP-2547' into 3.4-dev
add ea085b1 Merge branch '3.4-dev'
add 2553bda TINKERPOP-2550 Fixed bug in java Client initialization
add 11a963d Merge branch 'TINKERPOP-2550' into 3.4-dev
add a0b82c6 Merge branch '3.4-dev'
add 247d097 Manually backport #1417 which made some improvements to integration test setup CTR
add cd8719c Merge branch '3.4-dev'
add 66bf504 Avoids addContactPoint from gremlin-driver Cluster to avoid failures in docker containers with cpu < 1
add 02d1ee6 Merge branch 'pr-1417'
add 6310691 Somehow this change wasn't included in the previous commit CTR
add efd5cfd Removed some unused imports CTR
add 9cb87b9 Merge branch '3.4-dev'
add f653835 Initialized Client instances in test which might yield more time for the server to full initialize the authenticator.
add ff50136 Merge branch '3.4-dev'
add fa812b8 Removed synchronized from shutdown() in Connection CTR
add 617808b Merge branch '3.4-dev'
add b6edbd4 Improve the SASL readiness error by including stack trace in log CTR
add 9d70e18 Merge branch '3.4-dev'
add 3b5fadc Cleaned up NullPointerException around sasl.
add ca6ba46 Merge branch '3.4-dev'
add 14337ea Better handle a null case when creating the sasl server CTR
add 6721649 Merge branch '3.4-dev'
add 0827e70 Seems like reconnect produced similar problems as those found on TINKERPOP-2550 CTR
add 4174ee6 Merge branch '3.4-dev'
add d639bb1 Improve logging for failed kerberos starts
add d13c9e5 Merge branch '3.4-dev'
add 23a0f36 Improve logging for failed kerberos starts
add 9c9c01d Decided to revert back to having a dedicated thread for host initialization and keeping the scheduler for reconnect.
add 7aeed79 Merge branch '3.4-dev'
add e6bebd4 Turn on start/end logging for individual tests.
add 9acaaed Reverted to older version of surefire for performance reasons
add fdad506 Docs were failing with this escape.
add 8ff5abb Merge branch '3.4-dev'
add f5614be Added some links jira in upgrade docs CTR
add c2f2bc2 Fixed minor nits in the Upgrade docs for 3.5.0 CTR
add b9ece1e Fixed capitalization CTR
add e71a7a9 Replaced blocking calls on the test client with timeouts.
add 32109d8 Ignored travis test that fails with test client
add 4319d16 Removed driver oriented batch by 2 test. CTR
add 34d63da TinkerPop 3.4.11 release
add f6d626e Merge branch '3.4-dev'
add b4cbfc7 Needed to remove gremlint binaries from source release.
add 17b8de1 Merge branch '3.4-dev'
add 2b086a5 TinkerPop 3.5.0 release
add cfb7372 Allowed validation to pass image files in gremlint for the binary files check in the source distribution CTR
add a31e8f4 Added filters to source distribution for some new __pycache__ directories that seem to have only risen out of 3.5.0 CTR
add b72880f Fixed syntax error in deploy script for .NET CTR
add f7729bd Generate git shortlogs CTR
add b2a8dd5 Changed current 3.4.x to 3.4.11 in header of site CTR
add 3f3a7e4 Bump to 3.4.12-SNAPHOT
add 4c0e40b Merge branch '3.4-dev'
add acc283d Bump to 3.5.1-SNAPSHOT
add 3e5285c Added 3.4.12 io test files CTR
add efce915 Merge branch '3.4-dev' into 3.5-dev
add 85b9d51 Generate IO test files for 3.5.1
new 28993a6 TINKERPOP-2348 Add nullable annotations
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 (841cc3b)
\
N -- N -- N refs/heads/TINKERPOP-2348 (28993a6)
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 1 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:
.travis.yml | 4 +
CHANGELOG.asciidoc | 267 ++++++-
bin/validate-distribution.sh | 1 +
.../gremlin-server-integration-krb5.yaml | 1 +
.../gremlin-server-integration-secure.yaml | 1 +
.../gremlin-server/gremlin-server-integration.yaml | 1 +
docker/scripts/build.sh | 1 -
docs/postprocessor/postprocess.sh | 4 +
docs/site/home/downloads.html | 115 ++-
docs/site/home/gremlin.html | 2 +-
docs/site/home/index.html | 12 +-
docs/site/home/providers.html | 2 +-
docs/site/home/template/header-footer.html | 16 +-
.../dev/developer/development-environment.asciidoc | 2 +-
docs/src/dev/provider/index.asciidoc | 4 +-
docs/src/index.asciidoc | 2 -
docs/src/reference/gremlin-applications.asciidoc | 87 ++-
docs/src/reference/gremlin-variants.asciidoc | 47 +-
.../reference/implementations-tinkergraph.asciidoc | 2 +
docs/src/reference/intro.asciidoc | 9 +-
.../gremlin-language-variants/index.asciidoc | 588 +-------------
docs/src/upgrade/release-3.4.x.asciidoc | 2 +-
docs/src/upgrade/release-3.5.x.asciidoc | 640 +++++++++-------
gremlin-archetype/gremlin-archetype-dsl/pom.xml | 2 +-
gremlin-archetype/gremlin-archetype-server/pom.xml | 2 +-
.../gremlin-archetype-tinkergraph/pom.xml | 2 +-
gremlin-archetype/pom.xml | 2 +-
gremlin-console/bin/gremlin.sh | 2 +-
gremlin-console/pom.xml | 2 +-
gremlin-core/pom.xml | 2 +-
.../gremlin/process/traversal/Bytecode.java | 8 +-
.../gremlin/process/traversal/GraphOp.java | 56 ++
.../process/traversal/util/BytecodeHelper.java | 6 +-
.../tinkerpop/gremlin/structure/Transaction.java | 4 -
.../process/traversal/util/BytecodeHelperTest.java | 6 +-
gremlin-dotnet/pom.xml | 2 +-
.../Gremlin.Net.Template.csproj | 2 +-
.../Gremlin.Net.Template.nuspec | 2 +-
gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj | 2 +-
gremlin-dotnet/src/pom.xml | 4 +-
gremlin-dotnet/test/pom.xml | 2 +-
gremlin-driver/pom.xml | 5 +-
.../tinkerpop/gremlin/driver/Channelizer.java | 8 +-
.../apache/tinkerpop/gremlin/driver/Client.java | 56 +-
.../apache/tinkerpop/gremlin/driver/Cluster.java | 32 +-
.../tinkerpop/gremlin/driver/Connection.java | 7 +-
.../tinkerpop/gremlin/driver/ConnectionPool.java | 9 +-
.../apache/tinkerpop/gremlin/driver/Handler.java | 1 -
.../gremlin/driver/HandshakeInterceptor.java | 21 +-
.../org/apache/tinkerpop/gremlin/driver/Host.java | 2 +-
.../tinkerpop/gremlin/driver/RequestOptions.java | 1 +
.../apache/tinkerpop/gremlin/driver/Tokens.java | 7 +
.../driver/handler/WebSocketClientHandler.java | 35 +-
.../gremlin/driver/message/ResponseStatusCode.java | 7 +
.../driver/remote/DriverRemoteTransaction.java | 12 +-
.../gremlin/driver/simple/AbstractClient.java | 10 +-
.../gremlin/driver/simple/WebSocketClient.java | 18 +-
.../tinkerpop/gremlin/driver/ClientTest.java | 4 +
.../gremlin/driver/SimpleSocketServer.java | 2 +-
.../WebSocketClientBehaviorIntegrateTest.java | 56 ++
gremlin-groovy/pom.xml | 2 +-
gremlin-javascript/pom.xml | 2 +-
.../javascript/gremlin-javascript/package.json | 2 +-
gremlin-language/pom.xml | 2 +-
gremlin-language/src/main/antlr4/Gremlin.g4 | 2 +
.../language/grammar/DocumentationReader.java | 2 +-
gremlin-python/pom.xml | 2 +-
.../driver/{tornado => aiohttp}/__init__.py | 4 +-
.../gremlin_python/driver/aiohttp/transport.py | 135 ++++
.../main/python/gremlin_python/driver/client.py | 19 +-
.../driver/driver_remote_connection.py | 5 +-
.../gremlin_python/driver/tornado/transport.py | 61 --
.../main/python/gremlin_python/driver/transport.py | 3 +-
gremlin-python/src/main/python/setup.py | 5 +-
gremlin-python/src/main/python/tests/conftest.py | 8 +-
.../src/main/python/tests/driver/test_client.py | 51 +-
.../test_driver_remote_connection_threaded.py | 22 +
gremlin-server/pom.xml | 2 +-
.../gremlin/server/AbstractChannelizer.java | 29 +-
.../apache/tinkerpop/gremlin/server/Context.java | 79 ++
.../tinkerpop/gremlin/server/GraphManager.java | 10 +
.../tinkerpop/gremlin/server/GremlinServer.java | 14 +-
.../apache/tinkerpop/gremlin/server/Settings.java | 58 ++
.../gremlin/server/auth/Krb5Authenticator.java | 14 +-
.../gremlin/server/channel/HttpChannelizer.java | 4 +-
.../gremlin/server/channel/UnifiedChannelizer.java | 86 +++
.../server/channel/WebSocketChannelizer.java | 12 +-
.../handler/AbstractAuthenticationHandler.java | 12 +-
.../gremlin/server/handler/AbstractSession.java | 847 +++++++++++++++++++++
.../handler/HttpBasicAuthenticationHandler.java | 11 +-
.../gremlin/server/handler/MultiTaskSession.java | 296 +++++++
.../SaslAndHttpBasicAuthenticationHandler.java | 25 +-
.../server/handler/SaslAuthenticationHandler.java | 15 +-
.../tinkerpop/gremlin/server/handler/Session.java | 84 ++
...nticationHandler.java => SessionException.java} | 24 +-
.../gremlin/server/handler/SessionTask.java | 42 +
.../gremlin/server/handler/SingleTaskSession.java | 92 +++
.../gremlin/server/handler/UnifiedHandler.java | 345 +++++++++
.../handler/WsAndHttpChannelizerHandler.java | 19 +-
.../gremlin/server/op/AbstractEvalOpProcessor.java | 104 +--
.../gremlin/server/op/session/Session.java | 8 +-
.../server/op/session/SessionOpProcessor.java | 6 +-
.../server/op/traversal/TraversalOpProcessor.java | 14 +-
.../gremlin/server/util/ServerGremlinExecutor.java | 9 +-
.../AbstractGremlinServerIntegrationTest.java | 38 +-
.../tinkerpop/gremlin/server/ContextTest.java | 3 +-
.../gremlin/server/GremlinDriverIntegrateTest.java | 115 ++-
...emlinServerAuditLogDeprecatedIntegrateTest.java | 40 +-
.../server/GremlinServerAuditLogIntegrateTest.java | 57 +-
.../server/GremlinServerAuthKrb5IntegrateTest.java | 44 +-
.../server/GremlinServerAuthzIntegrateTest.java | 3 +
.../server/GremlinServerHttpIntegrateTest.java | 4 +-
.../gremlin/server/GremlinServerIntegrateTest.java | 101 ++-
.../server/GremlinServerSessionIntegrateTest.java | 266 ++++++-
.../server/GremlinSessionTxIntegrateTest.java | 36 +-
.../gremlin/server/TestClientFactory.java | 6 +-
.../channel/HttpChannelizerIntegrateTest.java | 5 +
...t.java => UnifiedChannelizerIntegrateTest.java} | 42 +-
.../src/test/resources/log4j-test.properties | 4 +
.../gremlin/server/gremlin-server-integration.yaml | 2 +
gremlin-shaded/pom.xml | 2 +-
gremlin-test/pom.xml | 2 +-
gremlin-tools/gremlin-benchmark/pom.xml | 7 +-
gremlin-tools/gremlin-coverage/pom.xml | 2 +-
gremlin-tools/gremlin-io-test/pom.xml | 2 +-
.../scripts/generate-graphson-resources.groovy | 6 +-
.../tinkerpop/gremlin/structure/io/Model.java | 4 +-
.../io/graphbinary/GraphBinaryCompatibility.java | 4 +-
.../io/graphson/GraphSONCompatibility.java | 10 +-
.../structure/io/gryo/GryoCompatibility.java | 6 +-
.../graphbinary/GraphBinaryCompatibilityTest.java | 4 +-
.../graphson/GraphSONTypedCompatibilityTest.java | 6 +-
.../graphson/GraphSONUntypedCompatibilityTest.java | 6 +-
.../structure/io/gryo/GryoCompatibilityTest.java | 6 +-
.../{_3_5_0 => _3_4_12}/barrier-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/bigdecimal-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/biginteger-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/binding-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/bulkset-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/byte-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/bytebuffer-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/bytecode-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/cardinality-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/char-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/class-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/column-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/date-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/direction-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/double-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/duration-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/edge-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/float-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/inetaddress-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/instant-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/integer-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/lambda-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/list-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/localdate-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/localdatetime-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/localtime-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/long-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_4_12}/map-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/metrics-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/monthday-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/offsetdatetime-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/offsettime-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/operator-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/order-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_4_12}/p-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/pand-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/path-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/period-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/pick-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_4_12}/pop-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_4_12}/por-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/property-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/pwithin-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/pwithout-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/scope-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_4_12}/set-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/short-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_4_12}/t-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/textp-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/timestamp-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/tinkergraph-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/traversalmetrics-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/traverser-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/uuid-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/vertex-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/vertexproperty-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_4_12}/year-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/yearmonth-v1.gbin | Bin
.../{_3_5_0 => _3_4_12}/zoneoffset-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/barrier-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/bigdecimal-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/biginteger-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/binding-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/bulkset-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/byte-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/bytebuffer-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/bytecode-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/cardinality-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/char-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/class-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/column-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/date-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/direction-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/double-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/duration-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/edge-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/float-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/inetaddress-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/instant-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/integer-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/lambda-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/list-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/localdate-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/localdatetime-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/localtime-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/long-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/map-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/metrics-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/monthday-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/offsetdatetime-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/offsettime-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/operator-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/order-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/p-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/pand-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/path-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/period-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/pick-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/pop-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/por-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/property-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/pwithin-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/pwithout-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/scope-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/set-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/short-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/t-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/textp-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/timestamp-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/tinkergraph-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/traversalmetrics-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/traverser-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/uuid-v1.gbin | Bin
.../graphbinary/{_3_5_0 => _3_5_1}/vertex-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/vertexproperty-v1.gbin | Bin
.../io/graphbinary/{_3_5_0 => _3_5_1}/year-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/yearmonth-v1.gbin | Bin
.../{_3_5_0 => _3_5_1}/zoneoffset-v1.gbin | Bin
.../authenticationchallenge-v1d0.json | 0
.../authenticationchallenge-v2d0-no-types.json | 0
.../authenticationchallenge-v2d0-partial.json | 0
.../authenticationchallenge-v3d0.json | 0
.../authenticationresponse-v1d0.json | 0
.../authenticationresponse-v2d0-no-types.json | 0
.../authenticationresponse-v2d0-partial.json | 0
.../authenticationresponse-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/barrier-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/barrier-v3d0.json | 0
.../bigdecimal-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/bigdecimal-v3d0.json | 0
.../biginteger-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/biginteger-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/binding-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/binding-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/bulkset-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/bulkset-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/byte-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/byte-v3d0.json | 0
.../bytebuffer-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/bytebuffer-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/bytecode-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/bytecode-v3d0.json | 0
.../cardinality-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/cardinality-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/char-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/char-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/class-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/class-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/column-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/column-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/date-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/date-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/date-v3d0.json | 0
.../direction-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/direction-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/double-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/double-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/double-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/duration-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/duration-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/edge-v1d0.json | 0
.../{_3_5_0 => _3_4_12}/edge-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/edge-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/edge-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/float-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/float-v3d0.json | 0
.../inetaddress-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/inetaddress-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/instant-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/instant-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/integer-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/integer-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/integer-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/lambda-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/lambda-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/list-v3d0.json | 0
.../localdate-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/localdate-v3d0.json | 0
.../localdatetime-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/localdatetime-v3d0.json | 0
.../localtime-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/localtime-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/long-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/long-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/map-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/metrics-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/metrics-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/monthday-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/monthday-v3d0.json | 0
.../offsetdatetime-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/offsetdatetime-v3d0.json | 0
.../offsettime-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/offsettime-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/operator-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/operator-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/order-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/order-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/p-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/p-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/pand-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/pand-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/path-v1d0.json | 0
.../{_3_5_0 => _3_4_12}/path-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/path-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/path-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/period-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/period-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/pick-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/pick-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/pop-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/pop-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/por-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/por-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/property-v1d0.json | 0
.../property-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/property-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/property-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/pwithin-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/pwithin-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/pwithout-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/pwithout-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/scope-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/scope-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/sessionclose-v1d0.json | 0
.../sessionclose-v2d0-no-types.json | 0
.../sessionclose-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/sessionclose-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/sessioneval-v1d0.json | 0
.../sessioneval-v2d0-no-types.json | 0
.../sessioneval-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/sessioneval-v3d0.json | 0
.../sessionevalaliased-v1d0.json | 0
.../sessionevalaliased-v2d0-no-types.json | 0
.../sessionevalaliased-v2d0-partial.json | 0
.../sessionevalaliased-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/sessionlesseval-v1d0.json | 0
.../sessionlesseval-v2d0-no-types.json | 0
.../sessionlesseval-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/sessionlesseval-v3d0.json | 0
.../sessionlessevalaliased-v1d0.json | 0
.../sessionlessevalaliased-v2d0-no-types.json | 0
.../sessionlessevalaliased-v2d0-partial.json | 0
.../sessionlessevalaliased-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/set-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/short-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/short-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/standardresult-v1d0.json | 0
.../standardresult-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/standardresult-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/t-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/t-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/textp-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/textp-v3d0.json | 0
.../timestamp-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/timestamp-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/tinkergraph-v1d0.json | 0
.../tinkergraph-v2d0-no-types.json | 0
.../tinkergraph-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/tinkergraph-v3d0.json | 0
.../traversalmetrics-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/traversalmetrics-v3d0.json | 0
.../traverser-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/traverser-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/uuid-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/uuid-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/uuid-v3d0.json | 0
.../graphson/{_3_5_0 => _3_4_12}/vertex-v1d0.json | 0
.../{_3_5_0 => _3_4_12}/vertex-v2d0-no-types.json | 0
.../{_3_5_0 => _3_4_12}/vertex-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_4_12}/vertex-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/vertexproperty-v1d0.json | 0
.../vertexproperty-v2d0-no-types.json | 0
.../vertexproperty-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/vertexproperty-v3d0.json | 0
.../{_3_5_0 => _3_4_12}/year-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_4_12}/year-v3d0.json | 0
.../yearmonth-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/yearmonth-v3d0.json | 0
.../zoneddatetime-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/zoneddatetime-v3d0.json | 0
.../zoneoffset-v2d0-partial.json | 0
.../{_3_5_0 => _3_4_12}/zoneoffset-v3d0.json | 0
.../authenticationchallenge-v1d0.json | 0
.../authenticationchallenge-v2d0-no-types.json | 0
.../authenticationchallenge-v2d0-partial.json | 0
.../authenticationchallenge-v3d0.json | 0
.../authenticationresponse-v1d0.json | 0
.../authenticationresponse-v2d0-no-types.json | 0
.../authenticationresponse-v2d0-partial.json | 0
.../authenticationresponse-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/barrier-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/barrier-v3d0.json | 0
.../bigdecimal-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/bigdecimal-v3d0.json | 0
.../biginteger-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/biginteger-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/binding-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/binding-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/bulkset-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/bulkset-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/byte-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/byte-v3d0.json | 0
.../bytebuffer-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/bytebuffer-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/bytecode-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/bytecode-v3d0.json | 0
.../cardinality-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/cardinality-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/char-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/char-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/class-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/class-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/column-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/column-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/date-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/date-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/date-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/direction-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/direction-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/double-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/double-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/double-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/duration-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/duration-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/edge-v1d0.json | 0
.../{_3_5_0 => _3_5_1}/edge-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/edge-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/edge-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/float-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/float-v3d0.json | 0
.../inetaddress-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/inetaddress-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/instant-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/instant-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/integer-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/integer-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/integer-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/lambda-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/lambda-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/list-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/localdate-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/localdate-v3d0.json | 0
.../localdatetime-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/localdatetime-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/localtime-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/localtime-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/long-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/long-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/map-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/metrics-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/metrics-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/monthday-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/monthday-v3d0.json | 0
.../offsetdatetime-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/offsetdatetime-v3d0.json | 0
.../offsettime-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/offsettime-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/operator-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/operator-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/order-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/order-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/p-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/p-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/pand-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/pand-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/path-v1d0.json | 0
.../{_3_5_0 => _3_5_1}/path-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/path-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/path-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/period-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/period-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/pick-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/pick-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/pop-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/pop-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/por-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/por-v3d0.json | 0
.../graphson/{_3_5_0 => _3_5_1}/property-v1d0.json | 0
.../{_3_5_0 => _3_5_1}/property-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/property-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/property-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/pwithin-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/pwithin-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/pwithout-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/pwithout-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/scope-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/scope-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/sessionclose-v1d0.json | 0
.../sessionclose-v2d0-no-types.json | 0
.../sessionclose-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/sessionclose-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/sessioneval-v1d0.json | 0
.../sessioneval-v2d0-no-types.json | 0
.../sessioneval-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/sessioneval-v3d0.json | 0
.../sessionevalaliased-v1d0.json | 0
.../sessionevalaliased-v2d0-no-types.json | 0
.../sessionevalaliased-v2d0-partial.json | 0
.../sessionevalaliased-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/sessionlesseval-v1d0.json | 0
.../sessionlesseval-v2d0-no-types.json | 0
.../sessionlesseval-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/sessionlesseval-v3d0.json | 0
.../sessionlessevalaliased-v1d0.json | 0
.../sessionlessevalaliased-v2d0-no-types.json | 0
.../sessionlessevalaliased-v2d0-partial.json | 0
.../sessionlessevalaliased-v3d0.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/set-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/short-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/short-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/standardresult-v1d0.json | 0
.../standardresult-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/standardresult-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/t-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/t-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/textp-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/textp-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/timestamp-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/timestamp-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/tinkergraph-v1d0.json | 0
.../tinkergraph-v2d0-no-types.json | 0
.../tinkergraph-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/tinkergraph-v3d0.json | 0
.../traversalmetrics-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/traversalmetrics-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/traverser-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/traverser-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/uuid-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/uuid-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/uuid-v3d0.json | 0
.../graphson/{_3_5_0 => _3_5_1}/vertex-v1d0.json | 0
.../{_3_5_0 => _3_5_1}/vertex-v2d0-no-types.json | 0
.../{_3_5_0 => _3_5_1}/vertex-v2d0-partial.json | 0
.../graphson/{_3_5_0 => _3_5_1}/vertex-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/vertexproperty-v1d0.json | 0
.../vertexproperty-v2d0-no-types.json | 0
.../vertexproperty-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/vertexproperty-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/year-v2d0-partial.json | 0
.../io/graphson/{_3_5_0 => _3_5_1}/year-v3d0.json | 0
.../{_3_5_0 => _3_5_1}/yearmonth-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/yearmonth-v3d0.json | 0
.../zoneddatetime-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/zoneddatetime-v3d0.json | 0
.../zoneoffset-v2d0-partial.json | 0
.../{_3_5_0 => _3_5_1}/zoneoffset-v3d0.json | 0
.../authenticationchallenge-v3d0.kryo | Bin
.../authenticationresponse-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/barrier-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/barrier-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/bigdecimal-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/bigdecimal-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/biginteger-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/biginteger-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/binding-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/binding-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/bulkset-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/bulkset-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/byte-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/byte-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/bytebuffer-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/bytebuffer-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/bytecode-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/bytecode-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/cardinality-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/cardinality-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/char-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/char-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/class-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/class-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/column-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/column-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/date-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/date-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/direction-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/direction-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/double-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/double-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/duration-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/duration-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/edge-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/edge-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/float-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/float-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/inetaddress-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/inetaddress-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/instant-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/instant-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/integer-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/integer-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/lambda-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/lambda-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/localdate-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/localdate-v3d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/localdatetime-v1d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/localdatetime-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/localtime-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/localtime-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/long-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/long-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/metrics-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/metrics-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/monthday-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/monthday-v3d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/offsetdatetime-v1d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/offsetdatetime-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/offsettime-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/offsettime-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/operator-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/operator-v3d0.kryo | 0
.../io/gryo/{_3_4_9 => _3_4_12}/order-v1d0.kryo | 0
.../io/gryo/{_3_4_9 => _3_4_12}/order-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/p-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/p-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/pand-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/pand-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/path-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/path-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/period-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/period-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/pick-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/pick-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/pop-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/pop-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/por-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/por-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/property-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/property-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/pwithin-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/pwithin-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/pwithout-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/pwithout-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/scope-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/scope-v3d0.kryo | 0
.../{_3_5_0 => _3_4_12}/sessionclose-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/sessioneval-v3d0.kryo | 0
.../sessionevalaliased-v3d0.kryo | 0
.../{_3_5_0 => _3_4_12}/sessionlesseval-v3d0.kryo | 0
.../sessionlessevalaliased-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/short-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/short-v3d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/standardresult-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/stargraph-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/stargraph-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/t-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/t-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/textp-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/textp-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/timestamp-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/timestamp-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/tinkergraph-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/tinkergraph-v3d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/traversalmetrics-v1d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/traversalmetrics-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/traverser-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/traverser-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/tree-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/tree-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/uuid-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/uuid-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_4_12}/vertex-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/vertex-v3d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/vertexproperty-v1d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/vertexproperty-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/year-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_4_12}/year-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/yearmonth-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/yearmonth-v3d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/zoneddatetime-v1d0.kryo | Bin
.../{_3_5_0 => _3_4_12}/zoneddatetime-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_4_12}/zoneoffset-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_4_12}/zoneoffset-v3d0.kryo | 0
.../authenticationchallenge-v3d0.kryo | Bin
.../authenticationresponse-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/barrier-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/barrier-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/bigdecimal-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/bigdecimal-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/biginteger-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/biginteger-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/binding-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/binding-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/bulkset-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/bulkset-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/byte-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/byte-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/bytebuffer-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/bytebuffer-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/bytecode-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/bytecode-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/cardinality-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/cardinality-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/char-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/char-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/class-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/class-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/column-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/column-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/date-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/date-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/direction-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/direction-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/double-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/double-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/duration-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/duration-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/edge-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/edge-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/float-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/float-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/inetaddress-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/inetaddress-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/instant-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/instant-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/integer-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/integer-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/lambda-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/lambda-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/localdate-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/localdate-v3d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/localdatetime-v1d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/localdatetime-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/localtime-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/localtime-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/long-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/long-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/metrics-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/metrics-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/monthday-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/monthday-v3d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/offsetdatetime-v1d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/offsetdatetime-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/offsettime-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/offsettime-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/operator-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/operator-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/order-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/order-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/p-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/p-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/pand-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/pand-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/path-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/path-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/period-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/period-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/pick-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/pick-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/pop-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/pop-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/por-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/por-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/property-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/property-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/pwithin-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/pwithin-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/pwithout-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/pwithout-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/scope-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/scope-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/sessionclose-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/sessioneval-v3d0.kryo | 0
.../sessionevalaliased-v3d0.kryo | 0
.../{_3_5_0 => _3_5_1}/sessionlesseval-v3d0.kryo | 0
.../sessionlessevalaliased-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/short-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/short-v3d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/standardresult-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/stargraph-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/stargraph-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/t-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/t-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/textp-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/textp-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/timestamp-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/timestamp-v3d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/tinkergraph-v1d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/tinkergraph-v3d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/traversalmetrics-v1d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/traversalmetrics-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/traverser-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/traverser-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/tree-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/tree-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/uuid-v1d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/uuid-v3d0.kryo | 0
.../io/gryo/{_3_5_0 => _3_5_1}/vertex-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/vertex-v3d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/vertexproperty-v1d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/vertexproperty-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/year-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/year-v3d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/yearmonth-v1d0.kryo | Bin
.../io/gryo/{_3_5_0 => _3_5_1}/yearmonth-v3d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/zoneddatetime-v1d0.kryo | Bin
.../{_3_5_0 => _3_5_1}/zoneddatetime-v3d0.kryo | Bin
.../gryo/{_3_5_0 => _3_5_1}/zoneoffset-v1d0.kryo | 0
.../gryo/{_3_5_0 => _3_5_1}/zoneoffset-v3d0.kryo | 0
gremlin-tools/pom.xml | 2 +-
hadoop-gremlin/pom.xml | 7 +-
neo4j-gremlin/pom.xml | 2 +-
pom.xml | 10 +-
source-release.xml | 4 +
spark-gremlin/pom.xml | 2 +-
sparql-gremlin/pom.xml | 2 +-
tinkergraph-gremlin/pom.xml | 2 +-
840 files changed, 4187 insertions(+), 1476 deletions(-)
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/GraphOp.java
copy gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/AbstractAuthenticationHandler.java => gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/HandshakeInterceptor.java (53%)
rename gremlin-python/src/main/python/gremlin_python/driver/{tornado => aiohttp}/__init__.py (99%)
create mode 100644 gremlin-python/src/main/python/gremlin_python/driver/aiohttp/transport.py
delete mode 100644 gremlin-python/src/main/python/gremlin_python/driver/tornado/transport.py
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/UnifiedChannelizer.java
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/AbstractSession.java
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/MultiTaskSession.java
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/Session.java
copy gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/{AbstractAuthenticationHandler.java => SessionException.java} (54%)
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SessionTask.java
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SingleTaskSession.java
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/UnifiedHandler.java
copy gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/{HttpChannelizerIntegrateTest.java => UnifiedChannelizerIntegrateTest.java} (58%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/barrier-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/bigdecimal-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/biginteger-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/binding-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/bulkset-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/byte-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/bytebuffer-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/bytecode-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/cardinality-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/char-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/class-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/column-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/date-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/direction-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/double-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/duration-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/edge-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/float-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/inetaddress-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/instant-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/integer-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/lambda-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/list-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/localdate-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/localdatetime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/localtime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/long-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/map-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/metrics-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/monthday-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/offsetdatetime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/offsettime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/operator-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/order-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/p-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/pand-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/path-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/period-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/pick-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/pop-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/por-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/property-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/pwithin-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/pwithout-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/scope-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/set-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/short-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/t-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/textp-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/timestamp-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/tinkergraph-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/traversalmetrics-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/traverser-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/uuid-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/vertex-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/vertexproperty-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/year-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/yearmonth-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_4_12}/zoneoffset-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/barrier-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/bigdecimal-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/biginteger-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/binding-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/bulkset-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/byte-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/bytebuffer-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/bytecode-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/cardinality-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/char-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/class-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/column-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/date-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/direction-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/double-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/duration-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/edge-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/float-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/inetaddress-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/instant-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/integer-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/lambda-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/list-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/localdate-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/localdatetime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/localtime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/long-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/map-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/metrics-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/monthday-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/offsetdatetime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/offsettime-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/operator-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/order-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/p-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/pand-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/path-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/period-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/pick-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/pop-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/por-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/property-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/pwithin-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/pwithout-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/scope-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/set-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/short-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/t-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/textp-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/timestamp-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/tinkergraph-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/traversalmetrics-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/traverser-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/uuid-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/vertex-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/vertexproperty-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/year-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/yearmonth-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/{_3_5_0 => _3_5_1}/zoneoffset-v1.gbin (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationchallenge-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationchallenge-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationchallenge-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationchallenge-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationresponse-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationresponse-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationresponse-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/authenticationresponse-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/barrier-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/barrier-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bigdecimal-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bigdecimal-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/biginteger-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/biginteger-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/binding-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/binding-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bulkset-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bulkset-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/byte-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/byte-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bytebuffer-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bytebuffer-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bytecode-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/bytecode-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/cardinality-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/cardinality-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/char-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/char-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/class-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/class-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/column-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/column-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/date-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/date-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/date-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/direction-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/direction-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/double-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/double-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/double-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/duration-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/duration-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/edge-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/edge-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/edge-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/edge-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/float-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/float-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/inetaddress-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/inetaddress-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/instant-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/instant-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/integer-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/integer-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/integer-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/lambda-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/lambda-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/list-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/localdate-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/localdate-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/localdatetime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/localdatetime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/localtime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/localtime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/long-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/long-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/map-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/metrics-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/metrics-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/monthday-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/monthday-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/offsetdatetime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/offsetdatetime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/offsettime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/offsettime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/operator-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/operator-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/order-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/order-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/p-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/p-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pand-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pand-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/path-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/path-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/path-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/path-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/period-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/period-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pick-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pick-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pop-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pop-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/por-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/por-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/property-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/property-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/property-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/property-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pwithin-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pwithin-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pwithout-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/pwithout-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/scope-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/scope-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionclose-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionclose-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionclose-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionclose-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessioneval-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessioneval-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessioneval-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessioneval-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionevalaliased-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionevalaliased-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionevalaliased-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionevalaliased-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlesseval-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlesseval-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlesseval-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlesseval-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlessevalaliased-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlessevalaliased-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlessevalaliased-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/sessionlessevalaliased-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/set-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/short-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/short-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/standardresult-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/standardresult-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/standardresult-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/t-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/t-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/textp-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/textp-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/timestamp-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/timestamp-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/tinkergraph-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/tinkergraph-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/tinkergraph-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/tinkergraph-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/traversalmetrics-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/traversalmetrics-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/traverser-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/traverser-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/uuid-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/uuid-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/uuid-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertex-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertex-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertex-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertex-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertexproperty-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertexproperty-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertexproperty-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/vertexproperty-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/year-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/year-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/yearmonth-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/yearmonth-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/zoneddatetime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/zoneddatetime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/zoneoffset-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_4_12}/zoneoffset-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationchallenge-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationchallenge-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationchallenge-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationchallenge-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationresponse-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationresponse-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationresponse-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/authenticationresponse-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/barrier-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/barrier-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bigdecimal-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bigdecimal-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/biginteger-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/biginteger-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/binding-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/binding-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bulkset-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bulkset-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/byte-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/byte-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bytebuffer-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bytebuffer-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bytecode-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/bytecode-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/cardinality-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/cardinality-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/char-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/char-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/class-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/class-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/column-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/column-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/date-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/date-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/date-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/direction-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/direction-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/double-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/double-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/double-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/duration-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/duration-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/edge-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/edge-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/edge-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/edge-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/float-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/float-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/inetaddress-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/inetaddress-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/instant-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/instant-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/integer-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/integer-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/integer-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/lambda-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/lambda-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/list-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/localdate-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/localdate-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/localdatetime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/localdatetime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/localtime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/localtime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/long-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/long-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/map-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/metrics-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/metrics-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/monthday-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/monthday-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/offsetdatetime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/offsetdatetime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/offsettime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/offsettime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/operator-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/operator-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/order-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/order-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/p-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/p-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pand-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pand-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/path-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/path-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/path-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/path-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/period-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/period-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pick-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pick-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pop-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pop-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/por-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/por-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/property-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/property-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/property-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/property-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pwithin-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pwithin-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pwithout-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/pwithout-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/scope-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/scope-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionclose-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionclose-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionclose-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionclose-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessioneval-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessioneval-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessioneval-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessioneval-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionevalaliased-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionevalaliased-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionevalaliased-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionevalaliased-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlesseval-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlesseval-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlesseval-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlesseval-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlessevalaliased-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlessevalaliased-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlessevalaliased-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/sessionlessevalaliased-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/set-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/short-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/short-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/standardresult-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/standardresult-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/standardresult-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/t-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/t-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/textp-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/textp-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/timestamp-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/timestamp-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/tinkergraph-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/tinkergraph-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/tinkergraph-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/tinkergraph-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/traversalmetrics-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/traversalmetrics-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/traverser-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/traverser-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/uuid-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/uuid-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/uuid-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertex-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertex-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertex-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertex-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertexproperty-v1d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertexproperty-v2d0-no-types.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertexproperty-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/vertexproperty-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/year-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/year-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/yearmonth-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/yearmonth-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/zoneddatetime-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/zoneddatetime-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/zoneoffset-v2d0-partial.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/{_3_5_0 => _3_5_1}/zoneoffset-v3d0.json (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/authenticationchallenge-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/authenticationresponse-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/barrier-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/barrier-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bigdecimal-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bigdecimal-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/biginteger-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/biginteger-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/binding-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/binding-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bulkset-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bulkset-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/byte-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/byte-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bytebuffer-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bytebuffer-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bytecode-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/bytecode-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/cardinality-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/cardinality-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/char-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/char-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/class-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/class-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/column-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/column-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/date-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/date-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/direction-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/direction-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/double-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/double-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/duration-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/duration-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/edge-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/edge-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/float-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/float-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/inetaddress-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/inetaddress-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/instant-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/instant-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/integer-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/integer-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/lambda-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/lambda-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/localdate-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/localdate-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/localdatetime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/localdatetime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/localtime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/localtime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/long-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/long-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/metrics-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/metrics-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/monthday-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/monthday-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/offsetdatetime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/offsetdatetime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/offsettime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/offsettime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/operator-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/operator-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_4_9 => _3_4_12}/order-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_4_9 => _3_4_12}/order-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/p-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/p-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pand-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pand-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/path-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/path-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/period-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/period-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pick-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pick-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pop-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pop-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/por-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/por-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/property-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/property-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pwithin-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pwithin-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pwithout-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/pwithout-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/scope-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/scope-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/sessionclose-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/sessioneval-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/sessionevalaliased-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/sessionlesseval-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/sessionlessevalaliased-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/short-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/short-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/standardresult-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/stargraph-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/stargraph-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/t-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/t-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/textp-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/textp-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/timestamp-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/timestamp-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/tinkergraph-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/tinkergraph-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/traversalmetrics-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/traversalmetrics-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/traverser-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/traverser-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/tree-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/tree-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/uuid-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/uuid-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/vertex-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/vertex-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/vertexproperty-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/vertexproperty-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/year-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/year-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/yearmonth-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/yearmonth-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/zoneddatetime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/zoneddatetime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/zoneoffset-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_4_12}/zoneoffset-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/authenticationchallenge-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/authenticationresponse-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/barrier-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/barrier-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bigdecimal-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bigdecimal-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/biginteger-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/biginteger-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/binding-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/binding-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bulkset-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bulkset-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/byte-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/byte-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bytebuffer-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bytebuffer-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bytecode-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/bytecode-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/cardinality-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/cardinality-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/char-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/char-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/class-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/class-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/column-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/column-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/date-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/date-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/direction-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/direction-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/double-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/double-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/duration-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/duration-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/edge-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/edge-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/float-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/float-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/inetaddress-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/inetaddress-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/instant-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/instant-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/integer-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/integer-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/lambda-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/lambda-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/localdate-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/localdate-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/localdatetime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/localdatetime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/localtime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/localtime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/long-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/long-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/metrics-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/metrics-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/monthday-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/monthday-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/offsetdatetime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/offsetdatetime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/offsettime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/offsettime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/operator-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/operator-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/order-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/order-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/p-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/p-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pand-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pand-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/path-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/path-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/period-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/period-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pick-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pick-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pop-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pop-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/por-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/por-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/property-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/property-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pwithin-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pwithin-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pwithout-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/pwithout-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/scope-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/scope-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/sessionclose-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/sessioneval-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/sessionevalaliased-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/sessionlesseval-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/sessionlessevalaliased-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/short-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/short-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/standardresult-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/stargraph-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/stargraph-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/t-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/t-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/textp-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/textp-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/timestamp-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/timestamp-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/tinkergraph-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/tinkergraph-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/traversalmetrics-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/traversalmetrics-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/traverser-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/traverser-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/tree-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/tree-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/uuid-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/uuid-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/vertex-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/vertex-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/vertexproperty-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/vertexproperty-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/year-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/year-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/yearmonth-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/yearmonth-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/zoneddatetime-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/zoneddatetime-v3d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/zoneoffset-v1d0.kryo (100%)
copy gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/{_3_5_0 => _3_5_1}/zoneoffset-v3d0.kryo (100%)
[tinkerpop] 01/01: TINKERPOP-2348 Add nullable annotations
Posted by fl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
florianhockmann pushed a commit to branch TINKERPOP-2348
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 28993a6394df05057d859a53e58f7d39f7cb1ab5
Author: Florian Hockmann <fh...@florian-hockmann.de>
AuthorDate: Wed May 5 12:21:19 2021 +0200
TINKERPOP-2348 Add nullable annotations
This also updates from .NET Core 3.1 to .NET 5 and uses new C# language
features.
This unfortunately includes a few breaking changes (not necessarily
complete):
- Message types:
* class -> record
* Some set property accessors removed
- Static strings now const strings
- DefaultTraversal.Bytecode now abstract
- Structure types:
* Some set property accessors removed
- GraphBinaryReader/Writer
* ReadValueAsync / WriteValueAsync were split into two methods,
for nullable and non-nullable values
- Changed exceptions: Instead of NullReferenceExceptions,
IOExceptions should be thrown during serialization
- Empty JSON messages now throw during deserialization
instead of having null returned
---
.travis.yml | 2 +-
docker/Dockerfile | 2 +-
.../dev/developer/development-environment.asciidoc | 4 +-
.../Gremlin.Net.Template.csproj | 3 +-
gremlin-dotnet/src/Gremlin.Net.Template/Program.cs | 14 +-
gremlin-dotnet/src/Gremlin.Net.Template/Service.cs | 2 +-
.../src/Gremlin.Net/Driver/Connection.cs | 25 ++-
.../src/Gremlin.Net/Driver/ConnectionFactory.cs | 10 +-
.../src/Gremlin.Net/Driver/ConnectionPool.cs | 5 +-
.../Gremlin.Net/Driver/CopyOnWriteCollection.cs | 2 +-
.../src/Gremlin.Net/Driver/GremlinClient.cs | 37 ++--
.../Gremlin.Net/Driver/GremlinClientExtensions.cs | 14 +-
.../src/Gremlin.Net/Driver/GremlinServer.cs | 8 +-
.../Gremlin.Net/Driver/Messages/RequestMessage.cs | 8 +-
.../Gremlin.Net/Driver/Messages/ResponseMessage.cs | 27 ++-
.../Gremlin.Net/Driver/Messages/ResponseResult.cs | 21 ++-
.../Gremlin.Net/Driver/Messages/ResponseStatus.cs | 27 ++-
.../Driver/Remote/DriverRemoteConnection.cs | 24 +--
.../Driver/Remote/DriverRemoteTraversal.cs | 5 +-
.../ResponseHandlerForSingleRequestMessage.cs | 6 +-
gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs | 33 ++--
.../src/Gremlin.Net/Driver/WebSocketConnection.cs | 25 ++-
gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj | 12 +-
.../src/Gremlin.Net/Process/Traversal/Barrier.cs | 2 +-
.../src/Gremlin.Net/Process/Traversal/Binding.cs | 34 +---
.../src/Gremlin.Net/Process/Traversal/Bindings.cs | 9 +-
.../src/Gremlin.Net/Process/Traversal/Bytecode.cs | 29 +--
.../Gremlin.Net/Process/Traversal/Cardinality.cs | 6 +-
.../src/Gremlin.Net/Process/Traversal/Column.cs | 4 +-
.../Process/Traversal/ConnectedComponent.cs | 12 +-
.../Process/Traversal/DefaultTraversal.cs | 54 ++++--
.../src/Gremlin.Net/Process/Traversal/Direction.cs | 6 +-
.../Gremlin.Net/Process/Traversal/EnumWrapper.cs | 7 +-
.../Process/Traversal/GraphSONVersion.cs | 6 +-
.../Process/Traversal/GraphTraversal.cs | 77 ++++----
.../Process/Traversal/GraphTraversalSource.cs | 43 +++--
.../Gremlin.Net/Process/Traversal/GryoVersion.cs | 4 +-
.../src/Gremlin.Net/Process/Traversal/IO.cs | 12 +-
.../Gremlin.Net/Process/Traversal/ITraversal.cs | 12 +-
.../Gremlin.Net/Process/Traversal/Instruction.cs | 21 +--
.../Process/Traversal/NamingConversions.cs | 91 ---------
.../src/Gremlin.Net/Process/Traversal/Operator.cs | 22 +--
.../src/Gremlin.Net/Process/Traversal/Order.cs | 6 +-
.../src/Gremlin.Net/Process/Traversal/P.cs | 6 +-
.../src/Gremlin.Net/Process/Traversal/PageRank.cs | 12 +-
.../Gremlin.Net/Process/Traversal/PeerPressure.cs | 12 +-
.../src/Gremlin.Net/Process/Traversal/Pick.cs | 4 +-
.../src/Gremlin.Net/Process/Traversal/Pop.cs | 8 +-
.../src/Gremlin.Net/Process/Traversal/Scope.cs | 4 +-
.../Gremlin.Net/Process/Traversal/ShortestPath.cs | 16 +-
.../Strategy/AbstractTraversalStrategy.cs | 6 +-
.../Strategy/Decoration/HaltedTraverserStrategy.cs | 2 +-
.../Strategy/Decoration/PartitionStrategy.cs | 4 +-
.../Strategy/Decoration/SubgraphStrategy.cs | 4 +-
.../Strategy/Decoration/VertexProgramStrategy.cs | 6 +-
.../Finalization/MatchAlgorithmStrategy.cs | 2 +-
.../ReservedKeysVerificationStrategy.cs | 2 +-
.../src/Gremlin.Net/Process/Traversal/T.cs | 8 +-
.../src/Gremlin.Net/Process/Traversal/TextP.cs | 23 +--
.../src/Gremlin.Net/Process/Traversal/Traverser.cs | 8 +-
.../Gremlin.Net/Process/Traversal/WithOptions.cs | 8 -
.../src/Gremlin.Net/Process/Traversal/__.cs | 23 +--
gremlin-dotnet/src/Gremlin.Net/Process/Utils.cs | 2 +-
gremlin-dotnet/src/Gremlin.Net/Structure/Edge.cs | 6 +-
.../src/Gremlin.Net/Structure/Element.cs | 14 +-
gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs | 2 +-
.../Structure/IO/GraphBinary/DataType.cs | 149 +++++----------
.../IO/GraphBinary/GraphBinaryMessageSerializer.cs | 6 +-
.../Structure/IO/GraphBinary/GraphBinaryReader.cs | 23 ++-
.../Structure/IO/GraphBinary/GraphBinaryWriter.cs | 29 +--
.../Structure/IO/GraphBinary/ITypeSerializer.cs | 27 ++-
.../IO/GraphBinary/RequestMessageSerializer.cs | 8 +-
.../IO/GraphBinary/ResponseMessageSerializer.cs | 37 ++--
.../IO/GraphBinary/TypeSerializerRegistry.cs | 206 +++++++++++----------
.../IO/GraphBinary/Types/ArraySerializer.cs | 2 +-
.../IO/GraphBinary/Types/BigDecimalSerializer.cs | 8 +-
.../IO/GraphBinary/Types/BigIntegerSerializer.cs | 4 +-
.../IO/GraphBinary/Types/BindingSerializer.cs | 4 +-
.../IO/GraphBinary/Types/BulkSetSerializer.cs | 4 +-
.../IO/GraphBinary/Types/ByteBufferSerializer.cs | 4 +-
.../IO/GraphBinary/Types/ByteCodeSerializer.cs | 20 +-
.../IO/GraphBinary/Types/ClassSerializer.cs | 2 +-
.../GraphBinary/Types/DateTimeOffsetSerializer.cs | 5 +-
.../IO/GraphBinary/Types/EdgeSerializer.cs | 12 +-
.../IO/GraphBinary/Types/EnumSerializer.cs | 34 ++--
.../Structure/IO/GraphBinary/Types/GremlinType.cs | 2 +-
.../IO/GraphBinary/Types/LambdaSerializer.cs | 12 +-
.../IO/GraphBinary/Types/ListSerializer.cs | 14 +-
.../IO/GraphBinary/Types/MapSerializer.cs | 16 +-
.../Structure/IO/GraphBinary/Types/PSerializer.cs | 23 ++-
.../IO/GraphBinary/Types/PathSerializer.cs | 7 +-
.../IO/GraphBinary/Types/PropertySerializer.cs | 4 +-
.../IO/GraphBinary/Types/SetSerializer.cs | 8 +-
.../IO/GraphBinary/Types/SimpleTypeSerializer.cs | 44 ++---
.../IO/GraphBinary/Types/SingleTypeSerializer.cs | 26 ++-
.../IO/GraphBinary/Types/StringSerializer.cs | 4 +-
.../IO/GraphBinary/Types/TraversalSerializer.cs | 2 +-
.../Types/TraversalStrategySerializer.cs | 4 +-
.../IO/GraphBinary/Types/TraverserSerializer.cs | 4 +-
.../IO/GraphBinary/Types/TypeSerializer.cs | 6 +-
.../GraphBinary/Types/VertexPropertySerializer.cs | 4 +-
.../IO/GraphBinary/Types/VertexSerializer.cs | 4 +-
.../IO/GraphSON/BigIntegerDeserializer.cs | 2 +
.../Structure/IO/GraphSON/BindingSerializer.cs | 2 +-
.../Structure/IO/GraphSON/BulkSetSerializer.cs | 2 +-
.../IO/GraphSON/ByteBufferDeserializer.cs | 4 +-
.../Structure/IO/GraphSON/CharConverter.cs | 3 +-
.../Structure/IO/GraphSON/ClassSerializer.cs | 10 +-
.../Structure/IO/GraphSON/DateDeserializer.cs | 2 +-
.../Structure/IO/GraphSON/DecimalConverter.cs | 6 +-
.../Structure/IO/GraphSON/DirectionDeserializer.cs | 5 +-
.../Structure/IO/GraphSON/DurationDeserializer.cs | 4 +-
.../IO/GraphSON/GraphSON2MessageSerializer.cs | 2 +-
.../IO/GraphSON/GraphSON3MessageSerializer.cs | 2 +-
.../IO/GraphSON/GraphSONMessageSerializer.cs | 17 +-
.../Structure/IO/GraphSON/GraphSONReader.cs | 14 +-
.../Structure/IO/GraphSON/GraphSONTokens.cs | 6 +-
.../Structure/IO/GraphSON/GraphSONUtil.cs | 7 +-
.../Structure/IO/GraphSON/GraphSONWriter.cs | 13 +-
.../Structure/IO/GraphSON/IGraphSONDeserializer.cs | 2 +-
.../Structure/IO/GraphSON/ListSerializer.cs | 2 +-
.../Structure/IO/GraphSON/MapSerializer.cs | 6 +-
.../Structure/IO/GraphSON/NumberConverter.cs | 1 +
.../Structure/IO/GraphSON/Path3Deserializer.cs | 9 +-
.../Structure/IO/GraphSON/PathDeserializer.cs | 4 +-
.../Structure/IO/GraphSON/PropertySerializer.cs | 8 +-
.../Structure/IO/GraphSON/SetSerializer.cs | 2 +-
.../Structure/IO/GraphSON/TDeserializer.cs | 4 +-
.../Structure/IO/GraphSON/TraversalSerializer.cs | 9 +-
.../Structure/IO/GraphSON/UuidDeserializer.cs | 4 +-
.../IO/GraphSON/VertexPropertySerializer.cs | 7 +-
gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs | 60 +++---
.../src/Gremlin.Net/Structure/Property.cs | 10 +-
gremlin-dotnet/src/Gremlin.Net/Structure/Vertex.cs | 2 +-
.../src/Gremlin.Net/Structure/VertexProperty.cs | 6 +-
gremlin-dotnet/src/pom.xml | 2 +-
.../Gremlin.Net.Benchmarks.csproj | 2 +-
.../Gherkin/ScenarioData.cs | 2 +-
.../Gremlin.Net.IntegrationTest.csproj | 2 +-
.../Process/Remote/RemoteStrategyTests.cs | 2 +
.../Gremlin.Net.Template.IntegrationTest.csproj | 2 +-
.../Driver/GraphSONMessageSerializerTests.cs | 15 +-
.../Gremlin.Net.UnitTest.csproj | 2 +-
.../Process/Traversal/GraphTraversalTests.cs} | 14 +-
.../Process/Traversal/TestTraversal.cs | 2 +
.../Structure/IO/GraphBinary/GraphBinaryTests.cs | 22 +--
.../IO/GraphSON/BytecodeGraphSONSerializerTests.cs | 2 +
.../Structure/IO/GraphSON/GraphSONWriterTests.cs | 13 ++
.../Gremlin.Net.UnitTest/Structure/PathTests.cs | 2 +-
gremlin-dotnet/test/pom.xml | 2 +-
150 files changed, 983 insertions(+), 1063 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index b8b02a7..b465791 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,7 +32,7 @@ before_install:
- sudo apt update
- sudo apt install apt-transport-https
- sudo apt update
- - sudo apt install dotnet-sdk-3.1
+ - sudo apt install dotnet-sdk-5.0
- sudo apt install python3.6
- sudo rm /usr/bin/python3
- sudo ln -s python3.6 /usr/bin/python3
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 6fa1f9f..40b4ef1 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -32,7 +32,7 @@ RUN apt-get update
# include both java 8/11 so that we can use the same docker image for future builds on that version of the jdk as we do
# for the older release branches. the java version to use is just controlled by JAVA_HOME hardcoded below
RUN apt-get install -y openjdk-8-jdk openjdk-11-jdk gawk git maven openssh-server subversion zip
-RUN apt-get install -y --force-yes dotnet-sdk-3.1 mono-devel
+RUN apt-get install -y --force-yes dotnet-sdk-5.0 mono-devel
# python3 on xenial install 3.5.2 which is insufficient for newer versions of python/typing#259 so
# custom build and install 3.6.9 and upgrade pip along the way. this could be resolved by using bionic
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index 58764a1..18ebf28 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -196,8 +196,8 @@ See the <<release-environment,Release Environment>> section for more information
[[dotnet-environment]]
=== DotNet Environment
-The build optionally requires link:https://www.microsoft.com/net/core[.NET Core SDK] (>=3.1) to work with the
-`gremlin-dotnet` module. If .NET Core SDK is not installed, TinkerPop will still build with Maven, but .NET projects
+The build optionally requires link:https://dotnet.microsoft.com/download/dotnet/[.NET SDK] (>=5.0) to work with the
+`gremlin-dotnet` module. If .NET SDK is not installed, TinkerPop will still build with Maven, but .NET projects
will be skipped.
`gremlin-dotnet` can be built and tested from the command line with:
diff --git a/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj b/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj
index dacce3f..6dc772a 100644
--- a/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj
@@ -19,7 +19,8 @@ limitations under the License.
<PropertyGroup>
<OutputType>Exe</OutputType>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
+ <Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
diff --git a/gremlin-dotnet/src/Gremlin.Net.Template/Program.cs b/gremlin-dotnet/src/Gremlin.Net.Template/Program.cs
index 93018e7..4e61f36 100644
--- a/gremlin-dotnet/src/Gremlin.Net.Template/Program.cs
+++ b/gremlin-dotnet/src/Gremlin.Net.Template/Program.cs
@@ -37,15 +37,13 @@ namespace Gremlin.Net.Template
private static void Main()
{
- using (var client = new GremlinClient(new GremlinServer(GremlinServerHostname, GremlinServerPort)))
+ using var client = new GremlinClient(new GremlinServer(GremlinServerHostname, GremlinServerPort));
+ var g = Traversal().WithRemote(new DriverRemoteConnection(client));
+ var service = new Service(g);
+ var creators = service.FindCreatorsOfSoftware("lop");
+ foreach (var c in creators)
{
- var g = Traversal().WithRemote(new DriverRemoteConnection(client));
- var service = new Service(g);
- var creators = service.FindCreatorsOfSoftware("lop");
- foreach (var c in creators)
- {
- Console.WriteLine(c);
- }
+ Console.WriteLine(c);
}
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net.Template/Service.cs b/gremlin-dotnet/src/Gremlin.Net.Template/Service.cs
index 4ded6d3..d4ba4eb 100644
--- a/gremlin-dotnet/src/Gremlin.Net.Template/Service.cs
+++ b/gremlin-dotnet/src/Gremlin.Net.Template/Service.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Template
_g = g;
}
- public IList<string> FindCreatorsOfSoftware(string softwareName)
+ public IList<string?> FindCreatorsOfSoftware(string softwareName)
{
return _g.V().HasLabel("software").Has("name", softwareName).In("created").Values<string>("name").ToList();
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
index 491a62a..fae8352 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
@@ -45,20 +45,20 @@ namespace Gremlin.Net.Driver
private readonly IMessageSerializer _messageSerializer;
private readonly Uri _uri;
private readonly WebSocketConnection _webSocketConnection;
- private readonly string _username;
- private readonly string _password;
- private readonly string _sessionId;
+ private readonly string? _username;
+ private readonly string? _password;
+ private readonly string? _sessionId;
private readonly bool _sessionEnabled;
- private readonly ConcurrentQueue<RequestMessage> _writeQueue = new ConcurrentQueue<RequestMessage>();
+ private readonly ConcurrentQueue<RequestMessage> _writeQueue = new();
private readonly ConcurrentDictionary<Guid, IResponseHandlerForSingleRequestMessage> _callbackByRequestId =
- new ConcurrentDictionary<Guid, IResponseHandlerForSingleRequestMessage>();
+ new();
private int _connectionState = 0;
private int _writeInProgress = 0;
private const int Closed = 1;
- public Connection(Uri uri, string username, string password, IMessageSerializer messageSerializer,
- Action<ClientWebSocketOptions> webSocketConfiguration, string sessionId)
+ public Connection(Uri uri, string? username, string? password, IMessageSerializer messageSerializer,
+ Action<ClientWebSocketOptions>? webSocketConfiguration, string? sessionId)
{
_uri = uri;
_username = username;
@@ -120,7 +120,7 @@ namespace Gremlin.Net.Driver
var receivedMsg = await _messageSerializer.DeserializeMessageAsync(received).ConfigureAwait(false);
if (receivedMsg == null)
{
- ThrowMessageDeserializedNull();
+ throw new InvalidOperationException("Received data deserialized into null object message. Cannot operate on it.");
}
try
@@ -132,14 +132,11 @@ namespace Gremlin.Net.Driver
if (receivedMsg.RequestId != null &&
_callbackByRequestId.TryRemove(receivedMsg.RequestId.Value, out var responseHandler))
{
- responseHandler?.HandleFailure(e);
+ responseHandler.HandleFailure(e);
}
}
}
- private static void ThrowMessageDeserializedNull() =>
- throw new InvalidOperationException("Received data deserialized into null object message. Cannot operate on it.");
-
private void HandleReceivedMessage(ResponseMessage<List<object>> receivedMsg)
{
var status = receivedMsg.Status;
@@ -156,7 +153,7 @@ namespace Gremlin.Net.Driver
if (status.Code != ResponseStatusCode.NoContent)
_callbackByRequestId[receivedMsg.RequestId.Value].HandleReceived(receivedMsg);
- if (status.Code == ResponseStatusCode.Success || status.Code == ResponseStatusCode.NoContent)
+ if (status.Code is ResponseStatusCode.Success or ResponseStatusCode.NoContent)
{
_callbackByRequestId[receivedMsg.RequestId.Value].Finalize(status.Attributes);
_callbackByRequestId.TryRemove(receivedMsg.RequestId.Value, out _);
@@ -260,7 +257,7 @@ namespace Gremlin.Net.Driver
{
msgBuilder.AddArgument(kv.Key, kv.Value);
}
- msgBuilder.AddArgument(Tokens.ArgsSession, _sessionId);
+ msgBuilder.AddArgument(Tokens.ArgsSession, _sessionId!);
return msgBuilder.Create();
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
index 59807a1..81fa10b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -28,13 +28,13 @@ namespace Gremlin.Net.Driver
{
internal class ConnectionFactory : IConnectionFactory
{
- private readonly Action<ClientWebSocketOptions> _webSocketConfiguration;
+ private readonly Action<ClientWebSocketOptions>? _webSocketConfiguration;
private readonly GremlinServer _gremlinServer;
- private readonly string _sessionId;
- private IMessageSerializer _messageSerializer;
+ private readonly string? _sessionId;
+ private readonly IMessageSerializer _messageSerializer;
public ConnectionFactory(GremlinServer gremlinServer, IMessageSerializer messageSerializer,
- Action<ClientWebSocketOptions> webSocketConfiguration, string sessionId)
+ Action<ClientWebSocketOptions>? webSocketConfiguration, string? sessionId)
{
_gremlinServer = gremlinServer;
_messageSerializer = messageSerializer;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs
index 261504a..902190d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs
@@ -37,10 +37,9 @@ namespace Gremlin.Net.Driver
private const int ConnectionIndexOverflowLimit = int.MaxValue - 1000000;
private readonly IConnectionFactory _connectionFactory;
- private readonly CopyOnWriteCollection<IConnection> _connections = new CopyOnWriteCollection<IConnection>();
+ private readonly CopyOnWriteCollection<IConnection> _connections = new();
- private readonly ConcurrentDictionary<IConnection, byte> _deadConnections =
- new ConcurrentDictionary<IConnection, byte>();
+ private readonly ConcurrentDictionary<IConnection, byte> _deadConnections = new();
private readonly ConnectionPoolSettings _settings;
private int _connectionIndex;
private int _poolState;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/CopyOnWriteCollection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/CopyOnWriteCollection.cs
index d00927e..3d892fc 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/CopyOnWriteCollection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/CopyOnWriteCollection.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Driver
public void AddRange(T[] items)
{
- if (items == null || items.Length == 0)
+ if (items.Length == 0)
return;
lock (_writeLock)
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index 745a3cc..7af9a3e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -51,8 +51,8 @@ namespace Gremlin.Net.Driver
/// <param name="sessionId">The session Id if Gremlin Client in session mode, defaults to null as session-less Client.</param>
[Obsolete("This constructor is obsolete. Use the constructor that takes a IMessageSerializer instead.")]
public GremlinClient(GremlinServer gremlinServer, GraphSONReader graphSONReader, GraphSONWriter graphSONWriter,
- ConnectionPoolSettings connectionPoolSettings = null,
- Action<ClientWebSocketOptions> webSocketConfiguration = null, string sessionId = null)
+ ConnectionPoolSettings? connectionPoolSettings = null,
+ Action<ClientWebSocketOptions>? webSocketConfiguration = null, string? sessionId = null)
: this(gremlinServer, graphSONReader, graphSONWriter, SerializationTokens.GraphSON3MimeType,
connectionPoolSettings, webSocketConfiguration, sessionId)
{
@@ -72,9 +72,9 @@ namespace Gremlin.Net.Driver
/// </param>
/// <param name="sessionId">The session Id if Gremlin Client in session mode, defaults to null as session-less Client.</param>
[Obsolete("This constructor is obsolete. Use the constructor that takes a IMessageSerializer instead.")]
- public GremlinClient(GremlinServer gremlinServer, GraphSONReader graphSONReader, GraphSONWriter graphSONWriter,
- string mimeType, ConnectionPoolSettings connectionPoolSettings = null,
- Action<ClientWebSocketOptions> webSocketConfiguration = null, string sessionId = null)
+ public GremlinClient(GremlinServer gremlinServer, GraphSONReader? graphSONReader, GraphSONWriter? graphSONWriter,
+ string mimeType, ConnectionPoolSettings? connectionPoolSettings = null,
+ Action<ClientWebSocketOptions>? webSocketConfiguration = null, string? sessionId = null)
{
IMessageSerializer messageSerializer;
switch (mimeType)
@@ -84,9 +84,8 @@ namespace Gremlin.Net.Driver
mimeType);
VerifyGraphSONArgumentTypeForMimeType<GraphSON3Writer>(graphSONWriter, nameof(graphSONWriter),
mimeType);
- messageSerializer = new GraphSON3MessageSerializer(
- (GraphSON3Reader) graphSONReader ?? new GraphSON3Reader(),
- (GraphSON3Writer) graphSONWriter ?? new GraphSON3Writer());
+ messageSerializer = new GraphSON3MessageSerializer((GraphSON3Reader?) graphSONReader,
+ (GraphSON3Writer?) graphSONWriter);
break;
case SerializationTokens.GraphSON2MimeType:
VerifyGraphSONArgumentTypeForMimeType<GraphSON2Reader>(graphSONReader, nameof(graphSONReader),
@@ -94,8 +93,8 @@ namespace Gremlin.Net.Driver
VerifyGraphSONArgumentTypeForMimeType<GraphSON2Writer>(graphSONWriter, nameof(graphSONWriter),
mimeType);
messageSerializer = new GraphSON2MessageSerializer(
- (GraphSON2Reader) graphSONReader ?? new GraphSON2Reader(),
- (GraphSON2Writer) graphSONWriter ?? new GraphSON2Writer());
+ (GraphSON2Reader?) graphSONReader ?? new GraphSON2Reader(),
+ (GraphSON2Writer?) graphSONWriter ?? new GraphSON2Writer());
break;
default:
throw new ArgumentException(nameof(mimeType), $"{mimeType} not supported");
@@ -121,10 +120,10 @@ namespace Gremlin.Net.Driver
new ConnectionPool(connectionFactory, connectionPoolSettings ?? new ConnectionPoolSettings());
}
- private static void VerifyGraphSONArgumentTypeForMimeType<T>(object argument, string argumentName,
+ private static void VerifyGraphSONArgumentTypeForMimeType<T>(object? argument, string argumentName,
string mimeType)
{
- if (argument != null && !(argument is T))
+ if (argument != null && argument is not T)
{
throw new ArgumentException(
$"{argumentName} is not a {typeof(T).Name} but the mime type is: {mimeType}", argumentName);
@@ -145,11 +144,11 @@ namespace Gremlin.Net.Driver
/// object used to configure WebSocket connections.
/// </param>
/// <param name="sessionId">The session Id if Gremlin Client in session mode, defaults to null as session-less Client.</param>
- public GremlinClient(GremlinServer gremlinServer, IMessageSerializer messageSerializer = null,
- ConnectionPoolSettings connectionPoolSettings = null,
- Action<ClientWebSocketOptions> webSocketConfiguration = null, string sessionId = null)
+ public GremlinClient(GremlinServer gremlinServer, IMessageSerializer? messageSerializer = null,
+ ConnectionPoolSettings? connectionPoolSettings = null,
+ Action<ClientWebSocketOptions>? webSocketConfiguration = null, string? sessionId = null)
{
- messageSerializer = messageSerializer ?? new GraphSON3MessageSerializer();
+ messageSerializer ??= new GraphSON3MessageSerializer();
var connectionFactory =
new ConnectionFactory(gremlinServer, messageSerializer, webSocketConfiguration, sessionId);
@@ -178,10 +177,8 @@ namespace Gremlin.Net.Driver
/// <inheritdoc />
public async Task<ResultSet<T>> SubmitAsync<T>(RequestMessage requestMessage)
{
- using (var connection = _connectionPool.GetAvailableConnection())
- {
- return await connection.SubmitAsync<T>(requestMessage).ConfigureAwait(false);
- }
+ using var connection = _connectionPool.GetAvailableConnection();
+ return await connection.SubmitAsync<T>(requestMessage).ConfigureAwait(false);
}
#region IDisposable Support
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClientExtensions.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClientExtensions.cs
index 1b18241..fae1fd0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClientExtensions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClientExtensions.cs
@@ -45,14 +45,14 @@ namespace Gremlin.Net.Driver
/// <param name="gremlinClient">The <see cref="IGremlinClient" /> that submits the request.</param>
/// <param name="requestScript">The Gremlin request script to send.</param>
/// <param name="bindings">Bindings for parameters used in the requestScript.</param>
- /// <returns>A single result received from the Gremlin Server.</returns>
+ /// <returns>A single result received from the Gremlin Server or default(T) if no result was received..</returns>
/// <exception cref="Exceptions.ResponseException">
/// Thrown when a response is received from Gremlin Server that indicates
/// that an error occurred.
/// </exception>
- public static async Task<T> SubmitWithSingleResultAsync<T>(this IGremlinClient gremlinClient,
+ public static async Task<T?> SubmitWithSingleResultAsync<T>(this IGremlinClient gremlinClient,
string requestScript,
- Dictionary<string, object> bindings = null)
+ Dictionary<string, object>? bindings = null)
{
var resultCollection = await gremlinClient.SubmitAsync<T>(requestScript, bindings).ConfigureAwait(false);
return resultCollection.FirstOrDefault();
@@ -68,12 +68,12 @@ namespace Gremlin.Net.Driver
/// <typeparam name="T">The type of the expected result.</typeparam>
/// <param name="gremlinClient">The <see cref="IGremlinClient" /> that submits the request.</param>
/// <param name="requestMessage">The <see cref="RequestMessage" /> to send.</param>
- /// <returns>A single result received from the Gremlin Server.</returns>
+ /// <returns>A single result received from the Gremlin Server or default(T) if no result was received.</returns>
/// <exception cref="Exceptions.ResponseException">
/// Thrown when a response is received from Gremlin Server that indicates
/// that an error occurred.
/// </exception>
- public static async Task<T> SubmitWithSingleResultAsync<T>(this IGremlinClient gremlinClient,
+ public static async Task<T?> SubmitWithSingleResultAsync<T>(this IGremlinClient gremlinClient,
RequestMessage requestMessage)
{
var resultCollection = await gremlinClient.SubmitAsync<T>(requestMessage).ConfigureAwait(false);
@@ -93,7 +93,7 @@ namespace Gremlin.Net.Driver
/// that an error occurred.
/// </exception>
public static async Task SubmitAsync(this IGremlinClient gremlinClient, string requestScript,
- Dictionary<string, object> bindings = null)
+ Dictionary<string, object>? bindings = null)
{
await gremlinClient.SubmitAsync<object>(requestScript, bindings).ConfigureAwait(false);
}
@@ -128,7 +128,7 @@ namespace Gremlin.Net.Driver
/// </exception>
public static async Task<ResultSet<T>> SubmitAsync<T>(this IGremlinClient gremlinClient,
string requestScript,
- Dictionary<string, object> bindings = null)
+ Dictionary<string, object>? bindings = null)
{
var msgBuilder = RequestMessage.Build(Tokens.OpsEval).AddArgument(Tokens.ArgsGremlin, requestScript);
if (bindings != null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
index 43ef159..bf57399 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
@@ -39,7 +39,7 @@ namespace Gremlin.Net.Driver
/// <param name="username">The username to submit on requests that require authentication.</param>
/// <param name="password">The password to submit on requests that require authentication.</param>
public GremlinServer(string hostname = "localhost", int port = 8182, bool enableSsl = false,
- string username = null, string password = null)
+ string? username = null, string? password = null)
{
Uri = CreateUri(hostname, port, enableSsl);
Username = username;
@@ -55,14 +55,14 @@ namespace Gremlin.Net.Driver
/// <summary>
/// Gets the username to submit on requests that require authentication.
/// </summary>
- public string Username { get; }
+ public string? Username { get; }
/// <summary>
/// Gets the password to submit on requests that require authentication.
/// </summary>
- public string Password { get; }
+ public string? Password { get; }
- private Uri CreateUri(string hostname, int port, bool enableSsl)
+ private static Uri CreateUri(string hostname, int port, bool enableSsl)
{
var scheme = enableSsl ? "wss" : "ws";
return new Uri($"{scheme}://{hostname}:{port}/gremlin");
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/RequestMessage.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/RequestMessage.cs
index 550d9c0..96ca63f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/RequestMessage.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/RequestMessage.cs
@@ -29,7 +29,7 @@ namespace Gremlin.Net.Driver.Messages
/// <summary>
/// The model for a request message sent to the server.
/// </summary>
- public class RequestMessage
+ public record RequestMessage
{
private RequestMessage(Guid requestId, string operation, string processor, Dictionary<string, object> arguments)
{
@@ -75,7 +75,7 @@ namespace Gremlin.Net.Driver.Messages
/// <returns>A <see cref="Builder" /> to build a <see cref="RequestMessage" />.</returns>
public static Builder Build(string operation)
{
- return new Builder(operation);
+ return new(operation);
}
/// <summary>
@@ -84,7 +84,7 @@ namespace Gremlin.Net.Driver.Messages
public class Builder
{
private const string DefaultProcessor = "";
- private readonly Dictionary<string, object> _arguments = new Dictionary<string, object>();
+ private readonly Dictionary<string, object> _arguments = new();
private readonly string _operation;
private string _processor = DefaultProcessor;
private Guid _requestId = Guid.NewGuid();
@@ -136,7 +136,7 @@ namespace Gremlin.Net.Driver.Messages
/// <returns>The built <see cref="RequestMessage" />.</returns>
public RequestMessage Create()
{
- return new RequestMessage(_requestId, _operation, _processor, _arguments);
+ return new(_requestId, _operation, _processor, _arguments);
}
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseMessage.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseMessage.cs
index a273cc0..4424b97 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseMessage.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseMessage.cs
@@ -29,21 +29,34 @@ namespace Gremlin.Net.Driver.Messages
/// The message returned from the server.
/// </summary>
/// <typeparam name="T">The type of the data returned.</typeparam>
- public class ResponseMessage<T>
+ public record ResponseMessage<T>
{
/// <summary>
- /// Gets or sets the identifier of the <see cref="RequestMessage"/> that generated this <see cref="ResponseMessage{T}"/>.
+ /// Initializes a new instance of the <see cref="ResponseMessage{T}" /> class.
/// </summary>
- public Guid? RequestId { get; set; }
+ /// <param name="requestId">The identifier of the <see cref="RequestMessage"/> that generated this <see cref="ResponseMessage{T}"/>.</param>
+ /// <param name="status">Status information about this <see cref="ResponseMessage{T}"/>.</param>
+ /// <param name="result">The result with its data and optional meta information.</param>
+ public ResponseMessage(Guid? requestId, ResponseStatus status, ResponseResult<T> result)
+ {
+ RequestId = requestId;
+ Status = status;
+ Result = result;
+ }
/// <summary>
- /// Gets or sets status information about this <see cref="ResponseMessage{T}"/>.
+ /// Gets the identifier of the <see cref="RequestMessage"/> that generated this <see cref="ResponseMessage{T}"/>.
/// </summary>
- public ResponseStatus Status { get; set; }
+ public Guid? RequestId { get; }
/// <summary>
- /// Gets or sets the result with its data and optional meta information.
+ /// Gets status information about this <see cref="ResponseMessage{T}"/>.
/// </summary>
- public ResponseResult<T> Result { get; set; }
+ public ResponseStatus Status { get; }
+
+ /// <summary>
+ /// Gets the result with its data and optional meta information.
+ /// </summary>
+ public ResponseResult<T> Result { get; }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseResult.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseResult.cs
index abc2907..6a8ffc7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseResult.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseResult.cs
@@ -30,16 +30,27 @@ namespace Gremlin.Net.Driver.Messages
/// <see cref="ResponseMessage{T}"/> by the server.
/// </summary>
/// <typeparam name="T">The type of the <see cref="Data"/>.</typeparam>
- public class ResponseResult<T>
+ public record ResponseResult<T>
{
/// <summary>
- /// Gets or sets the data of this result.
+ /// Initializes a new instance of the <see cref="ResponseResult{T}" /> class.
/// </summary>
- public T Data { get; set; }
+ /// <param name="data">The data of this result.</param>
+ /// <param name="meta">The meta data of this result.</param>
+ public ResponseResult(T? data, Dictionary<string, object> meta)
+ {
+ Data = data;
+ Meta = meta;
+ }
+
+ /// <summary>
+ /// Gets the data of this result.
+ /// </summary>
+ public T? Data { get; }
/// <summary>
- /// Gets or sets meta data of this result.
+ /// Gets the meta data of this result.
/// </summary>
- public Dictionary<string, object> Meta { get; set; }
+ public Dictionary<string, object> Meta { get; }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatus.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatus.cs
index 63530a3..9746926 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatus.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatus.cs
@@ -29,22 +29,35 @@ namespace Gremlin.Net.Driver.Messages
/// <summary>
/// Represents status information of a <see cref="ResponseMessage{T}"/>.
/// </summary>
- public class ResponseStatus
+ public record ResponseStatus
{
/// <summary>
- /// Gets or sets the <see cref="ResponseStatusCode"/>.
+ /// Initializes a new instance of the <see cref="ResponseStatus" /> class.
/// </summary>
- public ResponseStatusCode Code { get; set; }
+ /// <param name="code">The <see cref="ResponseStatusCode" />.</param>
+ /// <param name="attributes">The attributes with protocol-level information.</param>
+ /// <param name="message">The (optional) message which is just a human-readable string usually associated with errors.</param>
+ public ResponseStatus(ResponseStatusCode code, Dictionary<string, object> attributes, string? message)
+ {
+ Code = code;
+ Attributes = attributes;
+ Message = message;
+ }
+
+ /// <summary>
+ /// Gets the <see cref="ResponseStatusCode"/>.
+ /// </summary>
+ public ResponseStatusCode Code { get; }
/// <summary>
- /// Gets or sets the attributes <see cref="Dictionary{TKey,TValue}"/> with protocol-level information.
+ /// Gets the attributes with protocol-level information.
/// </summary>
- public Dictionary<string, object> Attributes { get; set; }
+ public Dictionary<string, object> Attributes { get; }
/// <summary>
- /// Gets or sets the message which is just a human-readable string usually associated with errors.
+ /// Gets the message which is just a human-readable string usually associated with errors.
/// </summary>
- public string Message { get; set; }
+ public string? Message { get; }
}
internal static class ResponseStatusExtensions
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
index 510a2f4..5c1a773 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
@@ -38,15 +38,17 @@ namespace Gremlin.Net.Driver.Remote
{
private readonly IGremlinClient _client;
private readonly string _traversalSource;
-
+
/// <summary>
/// Filter on these keys provided to OptionsStrategy and apply them to the request. Note that
/// "scriptEvaluationTimeout" was deprecated in 3.3.9 but still supported in server implementations and will
/// be removed in later versions.
/// </summary>
- private readonly List<String> _allowedKeys = new List<string>
- {Tokens.ArgsEvalTimeout, "scriptEvaluationTimeout", Tokens.ArgsBatchSize,
- Tokens.RequestId, Tokens.ArgsUserAgent};
+ private readonly List<string> _allowedKeys = new()
+ {
+ Tokens.ArgsEvalTimeout, "scriptEvaluationTimeout", Tokens.ArgsBatchSize,
+ Tokens.RequestId, Tokens.ArgsUserAgent
+ };
/// <summary>
/// Initializes a new <see cref="IRemoteConnection" /> using "g" as the default remote TraversalSource name.
@@ -78,15 +80,15 @@ namespace Gremlin.Net.Driver.Remote
{
var requestId = Guid.NewGuid();
var resultSet = await SubmitBytecodeAsync(requestId, bytecode).ConfigureAwait(false);
- return new DriverRemoteTraversal<S, E>(_client, requestId, resultSet);
+ return new DriverRemoteTraversal<S, E>(resultSet);
}
- private async Task<IEnumerable<Traverser>> SubmitBytecodeAsync(Guid requestid, Bytecode bytecode)
+ private async Task<IEnumerable<Traverser>> SubmitBytecodeAsync(Guid requestId, Bytecode bytecode)
{
var requestMsg =
RequestMessage.Build(Tokens.OpsBytecode)
.Processor(Tokens.ProcessorTraversal)
- .OverrideRequestId(requestid)
+ .OverrideRequestId(requestId)
.AddArgument(Tokens.ArgsGremlin, bytecode)
.AddArgument(Tokens.ArgsAliases, new Dictionary<string, string> {{"g", _traversalSource}});
@@ -94,8 +96,8 @@ namespace Gremlin.Net.Driver.Remote
s => s.OperatorName == "withStrategies" && s.Arguments[0] is OptionsStrategy);
if (optionsStrategyInst != null)
{
- OptionsStrategy optionsStrategy = optionsStrategyInst.Arguments[0];
- foreach (KeyValuePair<string,dynamic> pair in optionsStrategy.Configuration)
+ OptionsStrategy optionsStrategy = optionsStrategyInst.Arguments[0]!;
+ foreach (var pair in optionsStrategy.Configuration)
{
if (_allowedKeys.Contains(pair.Key))
{
@@ -103,14 +105,14 @@ namespace Gremlin.Net.Driver.Remote
}
}
}
-
+
return await _client.SubmitAsync<Traverser>(requestMsg.Create()).ConfigureAwait(false);
}
/// <inheritdoc />
public void Dispose()
{
- _client?.Dispose();
+ _client.Dispose();
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
index cf50646..c3954d8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
@@ -29,10 +29,11 @@ namespace Gremlin.Net.Driver.Remote
{
internal class DriverRemoteTraversal<S, E> : DefaultTraversal<S, E>
{
- public DriverRemoteTraversal(IGremlinClient gremlinClient, Guid requestId,
- IEnumerable<Traverser> traversers)
+ public DriverRemoteTraversal(IEnumerable<Traverser> traversers)
{
Traversers = traversers;
}
+
+ public override Bytecode Bytecode => throw new NotSupportedException("Remote traversals do not have Bytecode");
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ResponseHandlerForSingleRequestMessage.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/ResponseHandlerForSingleRequestMessage.cs
index fafa7d9..c7031a7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ResponseHandlerForSingleRequestMessage.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ResponseHandlerForSingleRequestMessage.cs
@@ -33,13 +33,13 @@ namespace Gremlin.Net.Driver
public Task<ResultSet<T>> Result => _tcs.Task;
private readonly TaskCompletionSource<ResultSet<T>> _tcs =
- new TaskCompletionSource<ResultSet<T>>(TaskCreationOptions.RunContinuationsAsynchronously);
+ new(TaskCreationOptions.RunContinuationsAsynchronously);
- private readonly List<T> _result = new List<T>();
+ private readonly List<T> _result = new();
public void HandleReceived(ResponseMessage<List<object>> received)
{
- foreach (var d in received.Result.Data)
+ foreach (var d in received.Result.Data!)
{
_result.Add((T) d);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
index f35b128..c22a3f9 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
@@ -21,7 +21,6 @@
#endregion
-using System;
using Gremlin.Net.Driver.Messages;
namespace Gremlin.Net.Driver
@@ -34,87 +33,87 @@ namespace Gremlin.Net.Driver
/// <summary>
/// The key for the unique identifier of the request.
/// </summary>
- public static string RequestId = "requestId";
+ public const string RequestId = "requestId";
/// <summary>
/// Operation used by the client to authenticate itself.
/// </summary>
- public static string OpsAuthentication = "authentication";
+ public const string OpsAuthentication = "authentication";
/// <summary>
/// Operation used for a request that contains the Bytecode representation of a Traversal.
/// </summary>
- public static string OpsBytecode = "bytecode";
+ public const string OpsBytecode = "bytecode";
/// <summary>
/// Operation used to evaluate a Gremlin script provided as a string.
/// </summary>
- public static string OpsEval = "eval";
+ public const string OpsEval = "eval";
/// <summary>
/// Operation used to get all the keys of all side-effects as produced by a previously executed Traversal.
/// </summary>
- public static string OpsClose = "close";
+ public const string OpsClose = "close";
/// <summary>
/// Default OpProcessor.
/// </summary>
- public static string ProcessorTraversal = "traversal";
+ public const string ProcessorTraversal = "traversal";
/// <summary>
/// Session OpProcessor.
/// </summary>
- public static string ProcessorSession = "session";
+ public const string ProcessorSession = "session";
/// <summary>
/// Argument name that allows the definition of the number of items each ResponseMessage should
/// contain from a particular result - overrides the resultIterationBatchSize server setting.
/// </summary>
- public static string ArgsBatchSize = "batchSize";
+ public const string ArgsBatchSize = "batchSize";
/// <summary>
/// Argument name that allows definition of a map of key/value pairs to apply as variables in the
/// context of the Gremlin request sent to the server.
/// </summary>
- public static string ArgsBindings = "bindings";
+ public const string ArgsBindings = "bindings";
/// <summary>
/// Argument name that allows definition of alias names for Graph and TraversalSource objects on the
/// remote system.
/// </summary>
- public static string ArgsAliases = "aliases";
+ public const string ArgsAliases = "aliases";
/// <summary>
/// Argument name that corresponds to the Gremlin to evaluate.
/// </summary>
- public static string ArgsGremlin = "gremlin";
+ public const string ArgsGremlin = "gremlin";
/// <summary>
/// Argument name that allows to define the id of session.
/// </summary>
- public static string ArgsSession = "session";
+ public const string ArgsSession = "session";
/// <summary>
/// Argument name that allows a value that is a custom string that the user can pass to a server that
/// might accept it for purpose of identifying the kind of client it came from.
/// </summary>
- public static string ArgsUserAgent = "userAgent";
+ public const string ArgsUserAgent = "userAgent";
/// <summary>
/// Argument name that allows definition of the flavor of Gremlin used (e.g. gremlin-groovy) to process the request.
/// </summary>
- public static string ArgsLanguage = "language";
+ public const string ArgsLanguage = "language";
/// <summary>
/// Argument name that allows the override of the server setting that determines the maximum time to wait for a
/// request to execute on the server.
/// </summary>
- public static string ArgsEvalTimeout = "evaluationTimeout";
+ public const string ArgsEvalTimeout = "evaluationTimeout";
/// <summary>
/// Argument name for the response to the server authentication challenge. This value is dependent on the SASL
/// authentication mechanism required by the server.
/// </summary>
- public static string ArgsSasl = "sasl";
+ public const string ArgsSasl = "sasl";
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/WebSocketConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/WebSocketConnection.cs
index 1ea02dd..d01f554 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/WebSocketConnection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/WebSocketConnection.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Driver
private const WebSocketMessageType MessageType = WebSocketMessageType.Binary;
private readonly ClientWebSocket _client;
- public WebSocketConnection(Action<ClientWebSocketOptions> webSocketConfiguration)
+ public WebSocketConnection(Action<ClientWebSocketOptions>? webSocketConfiguration)
{
_client = new ClientWebSocket();
webSocketConfiguration?.Invoke(_client.Options);
@@ -75,20 +75,19 @@ namespace Gremlin.Net.Driver
public async Task<byte[]> ReceiveMessageAsync()
{
- using (var ms = new MemoryStream())
- {
- WebSocketReceiveResult received;
- var buffer = new byte[ReceiveBufferSize];
+ using var ms = new MemoryStream();
+ WebSocketReceiveResult received;
+ var buffer = new byte[ReceiveBufferSize];
- do
- {
- var receiveBuffer = new ArraySegment<byte>(buffer);
- received = await _client.ReceiveAsync(receiveBuffer, CancellationToken.None).ConfigureAwait(false);
- ms.Write(receiveBuffer.Array, receiveBuffer.Offset, received.Count);
- } while (!received.EndOfMessage);
+ do
+ {
+ var receiveBuffer = new ArraySegment<byte>(buffer);
+ received = await _client.ReceiveAsync(receiveBuffer, CancellationToken.None).ConfigureAwait(false);
+ if (receiveBuffer.Array == null) break;
+ ms.Write(receiveBuffer.Array, receiveBuffer.Offset, received.Count);
+ } while (!received.EndOfMessage);
- return ms.ToArray();
- }
+ return ms.ToArray();
}
public bool IsOpen => _client.State == WebSocketState.Open;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 5e82079..ff27e1a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -18,9 +18,11 @@ limitations under the License.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Build">
- <TargetFramework>netstandard2.0</TargetFramework>
+ <TargetFrameworks>netstandard2.0;net5.0</TargetFrameworks>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <Nullable>enable</Nullable>
+ <LangVersion>9.0</LangVersion>
</PropertyGroup>
<PropertyGroup Label="Package">
@@ -69,10 +71,14 @@ NOTE that versions suffixed with "-rc" are considered release candidates (i.e. p
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
- <PackageReference Include="System.Text.Json" Version="4.7.1" />
+ <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
+ <PackageReference Include="System.Text.Json" Version="5.0.2" />
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
<PackageReference Include="Polly" Version="7.2.0" />
+
+ <!-- These are only needed to get support for newer C# features in .NET Standard 2.0 -->
+ <PackageReference Include="IsExternalInit" Version="1.0.0" PrivateAssets="all" />
+ <PackageReference Include="Nullable" Version="1.3.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
index c65994b..503709c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Barrier NormSack => new Barrier("normSack");
+ public static Barrier NormSack => new("normSack");
private static readonly IDictionary<string, Barrier> Properties = new Dictionary<string, Barrier>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs
index 80c8269..51c9f7e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs
@@ -21,21 +21,19 @@
#endregion
-using System;
-
namespace Gremlin.Net.Process.Traversal
{
/// <summary>
/// Associates a variable with a value.
/// </summary>
- public class Binding : IEquatable<Binding>
+ public record Binding
{
/// <summary>
/// Initializes a new instance of the <see cref="Binding" /> class.
/// </summary>
/// <param name="key">The key that identifies the <see cref="Binding" />.</param>
/// <param name="value">The value of the <see cref="Binding" />.</param>
- public Binding(string key, object value)
+ public Binding(string key, object? value)
{
Key = key;
Value = value;
@@ -49,32 +47,6 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets the value of the <see cref="Binding" />.
/// </summary>
- public object Value { get; }
-
- /// <inheritdoc />
- public bool Equals(Binding other)
- {
- if (other == null)
- return false;
- return Key == other.Key && Value.Equals(other.Value);
- }
-
- /// <inheritdoc />
- public override bool Equals(object other)
- {
- if (ReferenceEquals(null, other)) return false;
- if (ReferenceEquals(this, other)) return true;
- if (other.GetType() != GetType()) return false;
- return Equals(other as Binding);
- }
-
- /// <inheritdoc />
- public override int GetHashCode()
- {
- unchecked
- {
- return ((Key?.GetHashCode() ?? 0) * 397) ^ (Value?.GetHashCode() ?? 0);
- }
- }
+ public object? Value { get; }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs
index a6e13b9..d013158 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs
@@ -34,10 +34,9 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets an instance of the <see cref="Bindings" /> class.
/// </summary>
- public static Bindings Instance { get; } = new Bindings();
+ public static Bindings Instance { get; } = new();
- private static readonly ThreadLocal<Dictionary<object, string>> BoundVariableByValue =
- new ThreadLocal<Dictionary<object, string>>();
+ private static readonly ThreadLocal<Dictionary<object, string>> BoundVariableByValue = new();
/// <summary>
/// Binds the variable to the specified value.
@@ -46,6 +45,7 @@ namespace Gremlin.Net.Process.Traversal
/// <param name="value">The value to which the variable should be bound.</param>
/// <returns>The bound value.</returns>
public TV Of<TV>(string variable, TV value)
+ where TV : notnull
{
var dict = BoundVariableByValue.Value;
if (dict == null)
@@ -57,7 +57,8 @@ namespace Gremlin.Net.Process.Traversal
return value;
}
- internal static string GetBoundVariable<TV>(TV value)
+ internal static string? GetBoundVariable<TV>(TV value)
+ where TV : notnull
{
var dict = BoundVariableByValue.Value;
if (dict == null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
index 7149e8b..adfee9d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
@@ -24,6 +24,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
namespace Gremlin.Net.Process.Traversal
@@ -60,19 +61,19 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets the traversal source instructions.
/// </summary>
- public List<Instruction> SourceInstructions { get; } = new List<Instruction>();
+ public List<Instruction> SourceInstructions { get; } = new();
/// <summary>
/// Gets the <see cref="ITraversal" /> instructions.
/// </summary>
- public List<Instruction> StepInstructions { get; } = new List<Instruction>();
+ public List<Instruction> StepInstructions { get; } = new();
/// <summary>
/// Add a traversal source instruction to the bytecode.
/// </summary>
/// <param name="sourceName">The traversal source method name (e.g. withSack()).</param>
/// <param name="args">The traversal source method arguments.</param>
- public void AddSource(string sourceName, params object[] args)
+ public void AddSource(string sourceName, params object?[] args)
{
SourceInstructions.Add(new Instruction(sourceName, FlattenArguments(args)));
Bindings.Clear();
@@ -83,20 +84,20 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
/// <param name="stepName">The traversal method name (e.g. out()).</param>
/// <param name="args">The traversal method arguments.</param>
- public void AddStep(string stepName, params object[] args)
+ public void AddStep(string stepName, params object?[] args)
{
StepInstructions.Add(new Instruction(stepName, FlattenArguments(args)));
Bindings.Clear();
}
- private object[] FlattenArguments(object[] arguments)
+ private object?[] FlattenArguments(object?[] arguments)
{
if (arguments.Length == 0)
return EmptyArray;
- var flatArguments = new List<object>();
+ var flatArguments = new List<object?>();
foreach (var arg in arguments)
{
- if (arg is object[] objects)
+ if (arg is object?[] objects)
{
flatArguments.AddRange(objects.Select(nestObject => ConvertArgument(nestObject, true)));
}
@@ -108,7 +109,8 @@ namespace Gremlin.Net.Process.Traversal
return flatArguments.ToArray();
}
- private object ConvertArgument(object argument, bool searchBindings)
+ [return: NotNullIfNotNull("argument")]
+ private object? ConvertArgument(object? argument, bool searchBindings)
{
if (null == argument)
{
@@ -122,29 +124,30 @@ namespace Gremlin.Net.Process.Traversal
return new Binding(variable, ConvertArgument(argument, false));
}
- if (argument is ITraversal traversal && !traversal.IsAnonymous)
+ if (argument is ITraversal {IsAnonymous: false} traversal)
throw new ArgumentException(
$"The child traversal of {traversal.Bytecode} was not spawned anonymously - use the __ class rather than a TraversalSource to construct the child traversal");
if (IsDictionaryType(argument.GetType()))
{
- var dict = new Dictionary<object, object>();
+ var dict = new Dictionary<object, object?>();
foreach (DictionaryEntry item in (IDictionary)argument)
{
- dict[ConvertArgument(item.Key, true)] = ConvertArgument(item.Value, true);
+ var key = ConvertArgument(item.Key, true);
+ dict[key] = ConvertArgument(item.Value, true);
}
return dict;
}
if (IsListType(argument.GetType()))
{
- var list = new List<object>(((IList) argument).Count);
+ var list = new List<object?>(((IList) argument).Count);
list.AddRange(from object item in (IList) argument select ConvertArgument(item, true));
return list;
}
if (IsHashSetType(argument.GetType()))
{
- var set = new HashSet<object>();
+ var set = new HashSet<object?>();
foreach (var item in (IEnumerable)argument)
{
set.Add(ConvertArgument(item, true));
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
index 65663d6..e191d82 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -35,11 +35,11 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Cardinality List => new Cardinality("list");
+ public static Cardinality List => new("list");
- public static Cardinality Set => new Cardinality("set");
+ public static Cardinality Set => new("set");
- public static Cardinality Single => new Cardinality("single");
+ public static Cardinality Single => new("single");
private static readonly IDictionary<string, Cardinality> Properties = new Dictionary<string, Cardinality>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
index 66a6edd..6029d1d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -35,9 +35,9 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Column Keys => new Column("keys");
+ public static Column Keys => new("keys");
- public static Column Values => new Column("values");
+ public static Column Values => new("values");
private static readonly IDictionary<string, Column> Properties = new Dictionary<string, Column>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ConnectedComponent.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ConnectedComponent.cs
index 860e87a..991df10 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ConnectedComponent.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ConnectedComponent.cs
@@ -21,12 +21,6 @@
#endregion
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
namespace Gremlin.Net.Process.Traversal
{
#pragma warning disable 1591
@@ -34,11 +28,11 @@ namespace Gremlin.Net.Process.Traversal
public class ConnectedComponent
{
- public const String component = "gremlin.connectedComponentVertexProgram.component";
+ public const string component = "gremlin.connectedComponentVertexProgram.component";
- public const String edges = "~tinkerpop.connectedComponent.edges";
+ public const string edges = "~tinkerpop.connectedComponent.edges";
- public const String propertyName = "~tinkerpop.connectedComponent.propertyName";
+ public const string propertyName = "~tinkerpop.connectedComponent.propertyName";
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
index 38e031c..0b0114f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
@@ -24,6 +24,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Threading.Tasks;
@@ -34,12 +35,12 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public abstract class DefaultTraversal<S, E> : ITraversal<S, E>
{
- private IEnumerator<Traverser> _traverserEnumerator;
+ private IEnumerator<Traverser>? _traverserEnumerator;
/// <summary>
/// Gets the <see cref="Traversal.Bytecode" /> representation of this traversal.
/// </summary>
- public Bytecode Bytecode { get; protected set; }
+ public abstract Bytecode Bytecode { get; }
/// <summary>
/// Determines if this traversal was spawned anonymously or not.
@@ -49,7 +50,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
/// </summary>
- public IEnumerable<Traverser> Traversers { get; set; }
+ public IEnumerable<Traverser>? Traversers { get; set; }
ITraversal ITraversal.Iterate()
{
@@ -61,8 +62,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
protected ICollection<ITraversalStrategy> TraversalStrategies { get; set; } = new List<ITraversalStrategy>();
- private IEnumerator<Traverser> TraverserEnumerator
- => _traverserEnumerator ?? (_traverserEnumerator = GetTraverserEnumerator());
+ private IEnumerator<Traverser> TraverserEnumerator => _traverserEnumerator ??= GetTraverserEnumerator();
private bool _nextAvailable;
private bool _fetchedNext;
@@ -108,23 +108,23 @@ namespace Gremlin.Net.Process.Traversal
}
/// <inheritdoc />
- public E Current => GetCurrent<E>();
+ public E? Current => GetCurrent<E>();
- object IEnumerator.Current => GetCurrent();
+ object? IEnumerator.Current => GetCurrent();
- private TReturn GetCurrent<TReturn>()
+ private TReturn? GetCurrent<TReturn>()
{
var value = GetCurrent();
var returnType = typeof(TReturn);
if (value == null || value.GetType() == returnType)
{
// Avoid evaluating type comparisons
- return (TReturn) value;
+ return (TReturn?) value;
}
- return (TReturn) GetValue(returnType, value);
+ return (TReturn?) GetValue(returnType, value);
}
- private object GetCurrent()
+ private object? GetCurrent()
{
// Use dynamic to object to prevent runtime dynamic conversion evaluation
return TraverserEnumerator.Current?.Object;
@@ -133,7 +133,8 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets the value, converting to the expected type when necessary and supported.
/// </summary>
- private static object GetValue(Type type, object value)
+ [return: NotNullIfNotNull("value")]
+ private static object? GetValue(Type type, object? value)
{
var genericType = type.GetTypeInfo().IsGenericType
? type.GetTypeInfo().GetGenericTypeDefinition()
@@ -143,7 +144,11 @@ namespace Gremlin.Net.Process.Traversal
var keyType = type.GenericTypeArguments[0];
var valueType = type.GenericTypeArguments[1];
var mapType = typeof(Dictionary<,>).MakeGenericType(keyType, valueType);
- var result = (IDictionary) Activator.CreateInstance(mapType);
+ var result = (IDictionary?) Activator.CreateInstance(mapType);
+ if (result == null)
+ {
+ throw new InvalidOperationException($"Cannot convert value {value} to a Dictionary.");
+ }
foreach (DictionaryEntry kv in dictValue)
{
result.Add(GetValue(keyType, kv.Key), GetValue(valueType, kv.Value));
@@ -154,7 +159,11 @@ namespace Gremlin.Net.Process.Traversal
{
var childType = type.GenericTypeArguments[0];
var listType = typeof(List<>).MakeGenericType(childType);
- var result = (IList) Activator.CreateInstance(listType);
+ var result = (IList?) Activator.CreateInstance(listType);
+ if (result == null)
+ {
+ throw new InvalidOperationException($"Cannot convert value {value} to a list.");
+ }
foreach (var itemValue in enumerableValue)
{
result.Add(itemValue);
@@ -168,6 +177,11 @@ namespace Gremlin.Net.Process.Traversal
{
if (Traversers == null)
ApplyStrategies();
+ if (Traversers == null)
+ {
+ throw new InvalidOperationException(
+ $"Cannot enumerate the traversal as there are no {nameof(Traversers)}. Maybe a strategy needs to be added.");
+ }
return Traversers.GetEnumerator();
}
@@ -195,7 +209,7 @@ namespace Gremlin.Net.Process.Traversal
/// Gets the next result from the traversal.
/// </summary>
/// <returns>The result.</returns>
- public E Next()
+ public E? Next()
{
MoveNext();
return Current;
@@ -206,7 +220,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
/// <param name="amount">The number of results to get.</param>
/// <returns>The n-results.</returns>
- public IEnumerable<E> Next(int amount)
+ public IEnumerable<E?> Next(int amount)
{
for (var i = 0; i < amount; i++)
yield return Next();
@@ -239,9 +253,9 @@ namespace Gremlin.Net.Process.Traversal
/// Puts all the results into a <see cref="List{T}" />.
/// </summary>
/// <returns>The results in a list.</returns>
- public IList<E> ToList()
+ public IList<E?> ToList()
{
- var objs = new List<E>();
+ var objs = new List<E?>();
while (MoveNext())
objs.Add(Current);
return objs;
@@ -251,9 +265,9 @@ namespace Gremlin.Net.Process.Traversal
/// Puts all the results into a <see cref="HashSet{T}" />.
/// </summary>
/// <returns>The results in a set.</returns>
- public ISet<E> ToSet()
+ public ISet<E?> ToSet()
{
- var objs = new HashSet<E>();
+ var objs = new HashSet<E?>();
while (MoveNext())
objs.Add(Current);
return objs;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
index 8c3ed4a..0ce8695 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -35,11 +35,11 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Direction Both => new Direction("BOTH");
+ public static Direction Both => new("BOTH");
- public static Direction In => new Direction("IN");
+ public static Direction In => new("IN");
- public static Direction Out => new Direction("OUT");
+ public static Direction Out => new("OUT");
private static readonly IDictionary<string, Direction> Properties = new Dictionary<string, Direction>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/EnumWrapper.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/EnumWrapper.cs
index 20a0348..c586b31 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/EnumWrapper.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/EnumWrapper.cs
@@ -52,7 +52,7 @@ namespace Gremlin.Net.Process.Traversal
}
/// <inheritdoc />
- public bool Equals(EnumWrapper other)
+ public bool Equals(EnumWrapper? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -60,7 +60,7 @@ namespace Gremlin.Net.Process.Traversal
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
@@ -73,8 +73,7 @@ namespace Gremlin.Net.Process.Traversal
{
unchecked
{
- return ((EnumName != null ? EnumName.GetHashCode() : 0) * 397) ^
- (EnumValue != null ? EnumValue.GetHashCode() : 0);
+ return (EnumName.GetHashCode() * 397) ^ EnumValue.GetHashCode();
}
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
index e79c86e..5e2d004 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
@@ -35,11 +35,11 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static GraphSONVersion V1_0 => new GraphSONVersion("V1_0");
+ public static GraphSONVersion V1_0 => new("V1_0");
- public static GraphSONVersion V2_0 => new GraphSONVersion("V2_0");
+ public static GraphSONVersion V2_0 => new("V2_0");
- public static GraphSONVersion V3_0 => new GraphSONVersion("V3_0");
+ public static GraphSONVersion V3_0 => new("V3_0");
private static readonly IDictionary<string, GraphSONVersion> Properties = new Dictionary<string, GraphSONVersion>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index 8f6df56..3ab34d0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -62,12 +62,15 @@ namespace Gremlin.Net.Process.Traversal
Bytecode = bytecode;
IsAnonymous = anonymous;
}
+
+ /// <inheritdoc />
+ public override Bytecode Bytecode { get; }
private static GraphTraversal<S2, E2> Wrap<S2, E2>(GraphTraversal<S, E> traversal)
{
if (typeof(S2) == typeof(S) && typeof(E2) == typeof(E))
{
- return traversal as GraphTraversal<S2, E2>;
+ return (traversal as GraphTraversal<S2, E2>)!;
}
// New wrapper
return new GraphTraversal<S2, E2>(traversal.TraversalStrategies, traversal.Bytecode, traversal.IsAnonymous);
@@ -77,9 +80,9 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the V step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, Vertex> V (params object[] vertexIdsOrElements)
+ public GraphTraversal<S, Vertex> V (params object?[] vertexIdsOrElements)
{
- var args = new List<object>(0 + vertexIdsOrElements.Length) {};
+ var args = new List<object?>(0 + vertexIdsOrElements.Length);
args.AddRange(vertexIdsOrElements);
Bytecode.AddStep("V", args.ToArray());
return Wrap<S, Vertex>(this);
@@ -115,7 +118,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the addV step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, Vertex> AddV (string vertexLabel)
+ public GraphTraversal<S, Vertex> AddV (string? vertexLabel)
{
Bytecode.AddStep("addV", vertexLabel);
return Wrap<S, Vertex>(this);
@@ -502,7 +505,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, IDictionary<object, E2>> ElementMap<E2> (params string[] propertyKeys)
{
- var args = new List<object>(0 + propertyKeys.Length) {};
+ var args = new List<object>(0 + propertyKeys.Length);
args.AddRange(propertyKeys);
Bytecode.AddStep("elementMap", args.ToArray());
return Wrap<S, IDictionary<object, E2>>(this);
@@ -664,7 +667,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the has step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> Has (string propertyKey, object value)
+ public GraphTraversal<S, E> Has (string propertyKey, object? value)
{
Bytecode.AddStep("has", propertyKey, value);
return Wrap<S, E>(this);
@@ -682,7 +685,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the has step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> Has (string label, string propertyKey, object value)
+ public GraphTraversal<S, E> Has (string label, string propertyKey, object? value)
{
Bytecode.AddStep("has", label, propertyKey, value);
return Wrap<S, E>(this);
@@ -709,7 +712,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the has step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> Has (T accessor, object value)
+ public GraphTraversal<S, E> Has (T accessor, object? value)
{
Bytecode.AddStep("has", accessor, value);
return Wrap<S, E>(this);
@@ -736,9 +739,9 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the hasId step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> HasId (object id, params object[] otherIds)
+ public GraphTraversal<S, E> HasId (object? id, params object?[] otherIds)
{
- var args = new List<object>(1 + otherIds.Length) {id};
+ var args = new List<object?>(1 + otherIds.Length) {id};
args.AddRange(otherIds);
Bytecode.AddStep("hasId", args.ToArray());
return Wrap<S, E>(this);
@@ -805,9 +808,9 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the hasValue step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> HasValue (object value, params object[] otherValues)
+ public GraphTraversal<S, E> HasValue (object? value, params object?[] otherValues)
{
- var args = new List<object>(1 + otherValues.Length) {value};
+ var args = new List<object?>(1 + otherValues.Length) {value};
args.AddRange(otherValues);
Bytecode.AddStep("hasValue", args.ToArray());
return Wrap<S, E>(this);
@@ -825,10 +828,10 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the id step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, object> Id ()
+ public GraphTraversal<S, object?> Id ()
{
Bytecode.AddStep("id");
- return Wrap<S, object>(this);
+ return Wrap<S, object?>(this);
}
/// <summary>
@@ -845,7 +848,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, Vertex> In (params string[] edgeLabels)
{
- var args = new List<object>(0 + edgeLabels.Length) {};
+ var args = new List<object>(0 + edgeLabels.Length);
args.AddRange(edgeLabels);
Bytecode.AddStep("in", args.ToArray());
return Wrap<S, Vertex>(this);
@@ -856,7 +859,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, Edge> InE (params string[] edgeLabels)
{
- var args = new List<object>(0 + edgeLabels.Length) {};
+ var args = new List<object>(0 + edgeLabels.Length);
args.AddRange(edgeLabels);
Bytecode.AddStep("inE", args.ToArray());
return Wrap<S, Edge>(this);
@@ -885,7 +888,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, E> Inject (params E[] injections)
{
- var args = new List<object>(0 + injections.Length) {};
+ var args = new List<object>(0 + injections.Length);
args.AddRange(injections.Cast<object>());
Bytecode.AddStep("inject", args.ToArray());
return Wrap<S, E>(this);
@@ -894,7 +897,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the is step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> Is (object value)
+ public GraphTraversal<S, E> Is (object? value)
{
Bytecode.AddStep("is", value);
return Wrap<S, E>(this);
@@ -995,7 +998,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, IDictionary<string, E2>> Match<E2> (params ITraversal[] matchTraversals)
{
- var args = new List<object>(0 + matchTraversals.Length) {};
+ var args = new List<object>(0 + matchTraversals.Length);
args.AddRange(matchTraversals);
Bytecode.AddStep("match", args.ToArray());
return Wrap<S, IDictionary<string, E2>>(this);
@@ -1114,7 +1117,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, E> Or (params ITraversal[] orTraversals)
{
- var args = new List<object>(0 + orTraversals.Length) {};
+ var args = new List<object>(0 + orTraversals.Length);
args.AddRange(orTraversals);
Bytecode.AddStep("or", args.ToArray());
return Wrap<S, E>(this);
@@ -1152,7 +1155,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, Vertex> Out (params string[] edgeLabels)
{
- var args = new List<object>(0 + edgeLabels.Length) {};
+ var args = new List<object>(0 + edgeLabels.Length);
args.AddRange(edgeLabels);
Bytecode.AddStep("out", args.ToArray());
return Wrap<S, Vertex>(this);
@@ -1163,7 +1166,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, Edge> OutE (params string[] edgeLabels)
{
- var args = new List<object>(0 + edgeLabels.Length) {};
+ var args = new List<object>(0 + edgeLabels.Length);
args.AddRange(edgeLabels);
Bytecode.AddStep("outE", args.ToArray());
return Wrap<S, Edge>(this);
@@ -1257,7 +1260,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, E2> Properties<E2> (params string[] propertyKeys)
{
- var args = new List<object>(0 + propertyKeys.Length) {};
+ var args = new List<object>(0 + propertyKeys.Length);
args.AddRange(propertyKeys);
Bytecode.AddStep("properties", args.ToArray());
return Wrap<S, E2>(this);
@@ -1266,9 +1269,10 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the property step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> Property (Cardinality cardinality, object key, object value, params object[] keyValues)
+ public GraphTraversal<S, E> Property(Cardinality cardinality, object key, object? value,
+ params object?[] keyValues)
{
- var args = new List<object>(3 + keyValues.Length) {cardinality, key, value};
+ var args = new List<object?>(3 + keyValues.Length) {cardinality, key, value};
args.AddRange(keyValues);
Bytecode.AddStep("property", args.ToArray());
return Wrap<S, E>(this);
@@ -1277,9 +1281,9 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the property step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, E> Property (object key, object value, params object[] keyValues)
+ public GraphTraversal<S, E> Property (object key, object? value, params object?[] keyValues)
{
- var args = new List<object>(2 + keyValues.Length) {key, value};
+ var args = new List<object?>(2 + keyValues.Length) {key, value};
args.AddRange(keyValues);
Bytecode.AddStep("property", args.ToArray());
return Wrap<S, E>(this);
@@ -1290,7 +1294,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, IDictionary<string, E2>> PropertyMap<E2> (params string[] propertyKeys)
{
- var args = new List<object>(0 + propertyKeys.Length) {};
+ var args = new List<object>(0 + propertyKeys.Length);
args.AddRange(propertyKeys);
Bytecode.AddStep("propertyMap", args.ToArray());
return Wrap<S, IDictionary<string, E2>>(this);
@@ -1398,7 +1402,8 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the select step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, IDictionary<string, E2>> Select<E2> (Pop pop, string selectKey1, string selectKey2, params string[] otherSelectKeys)
+ public GraphTraversal<S, IDictionary<string, E2>> Select<E2>(Pop pop, string selectKey1, string selectKey2,
+ params string[] otherSelectKeys)
{
var args = new List<object>(3 + otherSelectKeys.Length) {pop, selectKey1, selectKey2};
args.AddRange(otherSelectKeys);
@@ -1427,7 +1432,8 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the select step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, IDictionary<string, E2>> Select<E2> (string selectKey1, string selectKey2, params string[] otherSelectKeys)
+ public GraphTraversal<S, IDictionary<string, E2>> Select<E2>(string selectKey1, string selectKey2,
+ params string[] otherSelectKeys)
{
var args = new List<object>(2 + otherSelectKeys.Length) {selectKey1, selectKey2};
args.AddRange(otherSelectKeys);
@@ -1678,7 +1684,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, E2> Union<E2> (params ITraversal[] unionTraversals)
{
- var args = new List<object>(0 + unionTraversals.Length) {};
+ var args = new List<object>(0 + unionTraversals.Length);
args.AddRange(unionTraversals);
Bytecode.AddStep("union", args.ToArray());
return Wrap<S, E2>(this);
@@ -1716,7 +1722,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, IDictionary<TKey, TValue>> ValueMap<TKey, TValue> (params string[] propertyKeys)
{
- var args = new List<object>(0 + propertyKeys.Length) {};
+ var args = new List<object>(0 + propertyKeys.Length);
args.AddRange(propertyKeys);
Bytecode.AddStep("valueMap", args.ToArray());
return Wrap<S, IDictionary<TKey, TValue>>(this);
@@ -1725,7 +1731,8 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Adds the valueMap step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
- public GraphTraversal<S, IDictionary<TKey, TValue>> ValueMap<TKey, TValue> (bool includeTokens, params string[] propertyKeys)
+ public GraphTraversal<S, IDictionary<TKey, TValue>> ValueMap<TKey, TValue>(bool includeTokens,
+ params string[] propertyKeys)
{
var args = new List<object>(1 + propertyKeys.Length) {includeTokens};
args.AddRange(propertyKeys);
@@ -1738,7 +1745,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, E2> Values<E2> (params string[] propertyKeys)
{
- var args = new List<object>(0 + propertyKeys.Length) {};
+ var args = new List<object>(0 + propertyKeys.Length);
args.AddRange(propertyKeys);
Bytecode.AddStep("values", args.ToArray());
return Wrap<S, E2>(this);
@@ -1804,7 +1811,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public GraphTraversal<S, E> Clone()
{
- return new GraphTraversal<S, E>(TraversalStrategies, new Bytecode(Bytecode));
+ return new(TraversalStrategies, new Bytecode(Bytecode));
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
index db4c521..ee35a72 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -89,7 +89,7 @@ namespace Gremlin.Net.Process.Traversal
return WithStrategies(optionsStrategy);
}
- optionsStrategy = optionsStrategyInst.Arguments[0];
+ optionsStrategy = optionsStrategyInst.Arguments[0]!;
optionsStrategy.Configuration[key] = value;
return new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -112,7 +112,7 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSack(object initialValue)
+ public GraphTraversalSource WithSack(object? initialValue)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -120,7 +120,7 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSack(object initialValue, IBinaryOperator mergeOperator)
+ public GraphTraversalSource WithSack(object? initialValue, IBinaryOperator mergeOperator)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -128,7 +128,7 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSack(object initialValue, IUnaryOperator splitOperator)
+ public GraphTraversalSource WithSack(object? initialValue, IUnaryOperator splitOperator)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -136,7 +136,8 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSack(object initialValue, IUnaryOperator splitOperator, IBinaryOperator mergeOperator)
+ public GraphTraversalSource WithSack(object? initialValue, IUnaryOperator splitOperator,
+ IBinaryOperator mergeOperator)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -168,7 +169,8 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSack(ISupplier initialValue, IUnaryOperator splitOperator, IBinaryOperator mergeOperator)
+ public GraphTraversalSource WithSack(ISupplier initialValue, IUnaryOperator splitOperator,
+ IBinaryOperator mergeOperator)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -176,7 +178,7 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSideEffect(string key, object initialValue)
+ public GraphTraversalSource WithSideEffect(string key, object? initialValue)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -184,7 +186,7 @@ namespace Gremlin.Net.Process.Traversal
return source;
}
- public GraphTraversalSource WithSideEffect(string key, object initialValue, IBinaryOperator reducer)
+ public GraphTraversalSource WithSideEffect(string key, object? initialValue, IBinaryOperator reducer)
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
@@ -212,7 +214,7 @@ namespace Gremlin.Net.Process.Traversal
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
- var args = new List<object>(0 + traversalStrategies.Length) {};
+ var args = new List<object>(0 + traversalStrategies.Length);
args.AddRange(traversalStrategies);
source.Bytecode.AddSource("withStrategies", args.ToArray());
return source;
@@ -222,7 +224,7 @@ namespace Gremlin.Net.Process.Traversal
{
var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
new Bytecode(Bytecode));
- var args = new List<object>(0 + traversalStrategyClasses.Length) {};
+ var args = new List<object>(0 + traversalStrategyClasses.Length);
args.AddRange(traversalStrategyClasses);
source.Bytecode.AddSource("withoutStrategies", args.ToArray());
return source;
@@ -255,11 +257,12 @@ namespace Gremlin.Net.Process.Traversal
/// Add a GraphComputer class used to execute the traversal.
/// This adds a <see cref="VertexProgramStrategy" /> to the strategies.
/// </summary>
- public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
- string result = null, ITraversal vertices = null, ITraversal edges = null,
- Dictionary<string, dynamic> configuration = null)
+ public GraphTraversalSource WithComputer(string? graphComputer = null, int? workers = null,
+ string? persist = null, string? result = null, ITraversal? vertices = null, ITraversal? edges = null,
+ Dictionary<string, dynamic>? configuration = null)
{
- return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
+ return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges,
+ configuration));
}
@@ -267,10 +270,10 @@ namespace Gremlin.Net.Process.Traversal
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the E step to that
/// traversal.
/// </summary>
- public GraphTraversal<Edge, Edge> E(params object[] edgesIds)
+ public GraphTraversal<Edge, Edge> E(params object?[] edgesIds)
{
var traversal = new GraphTraversal<Edge, Edge>(TraversalStrategies, new Bytecode(Bytecode));
- var args = new List<object>(0 + edgesIds.Length) {};
+ var args = new List<object?>(0 + edgesIds.Length);
args.AddRange(edgesIds);
traversal.Bytecode.AddStep("E", args.ToArray());
return traversal;
@@ -280,10 +283,10 @@ namespace Gremlin.Net.Process.Traversal
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the V step to that
/// traversal.
/// </summary>
- public GraphTraversal<Vertex, Vertex> V(params object[] vertexIds)
+ public GraphTraversal<Vertex, Vertex> V(params object?[] vertexIds)
{
var traversal = new GraphTraversal<Vertex, Vertex>(TraversalStrategies, new Bytecode(Bytecode));
- var args = new List<object>(0 + vertexIds.Length) {};
+ var args = new List<object?>(0 + vertexIds.Length) {};
args.AddRange(vertexIds);
traversal.Bytecode.AddStep("V", args.ToArray());
return traversal;
@@ -326,7 +329,7 @@ namespace Gremlin.Net.Process.Traversal
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the addV step to that
/// traversal.
/// </summary>
- public GraphTraversal<Vertex, Vertex> AddV(string label)
+ public GraphTraversal<Vertex, Vertex> AddV(string? label)
{
var traversal = new GraphTraversal<Vertex, Vertex>(TraversalStrategies, new Bytecode(Bytecode));
traversal.Bytecode.AddStep("addV", label);
@@ -351,7 +354,7 @@ namespace Gremlin.Net.Process.Traversal
public GraphTraversal<S, S> Inject<S>(params S[] starts)
{
var traversal = new GraphTraversal<S, S>(TraversalStrategies, new Bytecode(Bytecode));
- var args = new List<object>(0 + starts.Length) {};
+ var args = new List<object>(0 + starts.Length);
args.AddRange(starts.Cast<object>());
traversal.Bytecode.AddStep("inject", args.ToArray());
return traversal;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
index e34c7b3..3325686 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
@@ -35,9 +35,9 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static GryoVersion V1_0 => new GryoVersion("V1_0");
+ public static GryoVersion V1_0 => new("V1_0");
- public static GryoVersion V3_0 => new GryoVersion("V3_0");
+ public static GryoVersion V3_0 => new("V3_0");
private static readonly IDictionary<string, GryoVersion> Properties = new Dictionary<string, GryoVersion>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/IO.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/IO.cs
index b9e0fdd..c09c7c3 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/IO.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/IO.cs
@@ -34,17 +34,17 @@ namespace Gremlin.Net.Process.Traversal
public class IO
{
- public const String graphml = "graphml";
+ public const string graphml = "graphml";
- public const String graphson = "graphson";
+ public const string graphson = "graphson";
- public const String gryo = "gryo";
+ public const string gryo = "gryo";
- public const String reader = "~tinkerpop.io.reader";
+ public const string reader = "~tinkerpop.io.reader";
- public const String registry = "~tinkerpop.io.registry";
+ public const string registry = "~tinkerpop.io.registry";
- public const String writer = "~tinkerpop.io.writer";
+ public const string writer = "~tinkerpop.io.writer";
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
index 95cbb74..37c6009 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
@@ -47,7 +47,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
/// </summary>
- IEnumerable<Traverser> Traversers { get; set; }
+ IEnumerable<Traverser>? Traversers { get; set; }
/// <summary>
/// Iterates all <see cref="Traverser" /> instances in the traversal.
@@ -59,13 +59,13 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// A traversal represents a directed walk over a graph.
/// </summary>
- public interface ITraversal<S, E> : ITraversal, IEnumerator<E>
+ public interface ITraversal<S, E> : ITraversal, IEnumerator<E?>
{
/// <summary>
/// Gets the next result from the traversal.
/// </summary>
/// <returns>The result.</returns>
- E Next();
+ E? Next();
/// <summary>
/// Determines if the traversal contains any additional results for iteration.
@@ -78,7 +78,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
/// <param name="amount">The number of results to get.</param>
/// <returns>The n-results.</returns>
- IEnumerable<E> Next(int amount);
+ IEnumerable<E?> Next(int amount);
/// <summary>
/// Iterates all <see cref="Traverser" /> instances in the traversal.
@@ -96,13 +96,13 @@ namespace Gremlin.Net.Process.Traversal
/// Puts all the results into a <see cref="IList{T}" />.
/// </summary>
/// <returns>The results in a list.</returns>
- IList<E> ToList();
+ IList<E?> ToList();
/// <summary>
/// Puts all the results into a <see cref="ISet{T}" />.
/// </summary>
/// <returns>The results in a set.</returns>
- ISet<E> ToSet();
+ ISet<E?> ToSet();
/// <summary>
/// Starts a promise to execute a function on the current traversal that will be completed in the future.
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs
index 1063b33..b3894c8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
/// <param name="operatorName">The name of the operator.</param>
/// <param name="arguments">The arguments.</param>
- public Instruction(string operatorName, params dynamic[] arguments)
+ public Instruction(string operatorName, params dynamic?[] arguments)
{
OperatorName = operatorName;
Arguments = arguments;
@@ -50,18 +50,18 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets the arguments.
/// </summary>
- public dynamic[] Arguments { get; }
+ public dynamic?[] Arguments { get; }
/// <summary>
/// String representation of the <see cref="Instruction"/>.
/// </summary>
public override string ToString()
{
- return OperatorName + " [" + String.Join(",", Arguments) + "]";
+ return OperatorName + " [" + string.Join(",", Arguments) + "]";
}
/// <inheritdoc />
- public bool Equals(Instruction other)
+ public bool Equals(Instruction? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -69,7 +69,7 @@ namespace Gremlin.Net.Process.Traversal
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
@@ -83,15 +83,10 @@ namespace Gremlin.Net.Process.Traversal
unchecked
{
var hash = 19;
- if (OperatorName != null)
- {
- hash = hash * 397 + OperatorName.GetHashCode();
- }
+ hash = hash * 397 + OperatorName.GetHashCode();
- if (Arguments != null)
- {
- hash = Arguments.Aggregate(hash, (current, value) => current * 31 + value.GetHashCode());
- }
+ hash = Arguments.Aggregate(hash,
+ (current, value) => current * 31 + (value == null ? 0 : value.GetHashCode()));
return hash;
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
deleted file mode 100644
index a650dc5..0000000
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Process.Traversal
-{
- internal static class NamingConversions
- {
- /// <summary>
- /// Gets the Java name equivalent for a given enum value
- /// </summary>
- internal static string GetEnumJavaName(string typeName, string value)
- {
- var key = $"{typeName}.{value}";
- string javaName;
- if (!CSharpToJavaEnums.TryGetValue(key, out javaName))
- {
- throw new KeyNotFoundException($"Java name for {key} not found");
- }
- return javaName;
- }
-
- internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
- {
- {"Barrier.NormSack", "normSack"},
- {"Cardinality.List", "list"},
- {"Cardinality.Set", "set"},
- {"Cardinality.Single", "single"},
- {"Column.Keys", "keys"},
- {"Column.Values", "values"},
- {"Direction.Both", "BOTH"},
- {"Direction.In", "IN"},
- {"Direction.Out", "OUT"},
- {"GraphSONVersion.V1_0", "V1_0"},
- {"GraphSONVersion.V2_0", "V2_0"},
- {"GraphSONVersion.V3_0", "V3_0"},
- {"GryoVersion.V1_0", "V1_0"},
- {"GryoVersion.V3_0", "V3_0"},
- {"Operator.AddAll", "addAll"},
- {"Operator.And", "and"},
- {"Operator.Assign", "assign"},
- {"Operator.Div", "div"},
- {"Operator.Max", "max"},
- {"Operator.Min", "min"},
- {"Operator.Minus", "minus"},
- {"Operator.Mult", "mult"},
- {"Operator.Or", "or"},
- {"Operator.Sum", "sum"},
- {"Operator.SumLong", "sumLong"},
- {"Order.Decr", "decr"},
- {"Order.Incr", "incr"},
- {"Order.Shuffle", "shuffle"},
- {"Order.Asc", "asc"},
- {"Order.Desc", "desc"},
- {"Pick.Any", "any"},
- {"Pick.None", "none"},
- {"Pop.All", "all"},
- {"Pop.First", "first"},
- {"Pop.Last", "last"},
- {"Pop.Mixed", "mixed"},
- {"Scope.Global", "global"},
- {"Scope.Local", "local"},
- {"T.Id", "id"},
- {"T.Key", "key"},
- {"T.Label", "label"},
- {"T.Value", "value"}
-
- };
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
index ce33569..ee283e6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -35,27 +35,27 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Operator AddAll => new Operator("addAll");
+ public static Operator AddAll => new("addAll");
- public static Operator And => new Operator("and");
+ public static Operator And => new("and");
- public static Operator Assign => new Operator("assign");
+ public static Operator Assign => new("assign");
- public static Operator Div => new Operator("div");
+ public static Operator Div => new("div");
- public static Operator Max => new Operator("max");
+ public static Operator Max => new("max");
- public static Operator Min => new Operator("min");
+ public static Operator Min => new("min");
- public static Operator Minus => new Operator("minus");
+ public static Operator Minus => new("minus");
- public static Operator Mult => new Operator("mult");
+ public static Operator Mult => new("mult");
- public static Operator Or => new Operator("or");
+ public static Operator Or => new("or");
- public static Operator Sum => new Operator("sum");
+ public static Operator Sum => new("sum");
- public static Operator SumLong => new Operator("sumLong");
+ public static Operator SumLong => new("sumLong");
private static readonly IDictionary<string, Operator> Properties = new Dictionary<string, Operator>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
index fca67ab..6165b3e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -35,11 +35,11 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Order Asc => new Order("asc");
+ public static Order Asc => new("asc");
- public static Order Desc => new Order("desc");
+ public static Order Desc => new("desc");
- public static Order Shuffle => new Order("shuffle");
+ public static Order Shuffle => new("shuffle");
private static readonly IDictionary<string, Order> Properties = new Dictionary<string, Order>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
index d37a614..76efb94 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
@@ -41,7 +41,7 @@ namespace Gremlin.Net.Process.Traversal
/// <param name="operatorName">The name of the predicate.</param>
/// <param name="value">The value of the predicate.</param>
/// <param name="other">An optional other predicate that is used as an argument for this predicate.</param>
- public P(string operatorName, dynamic value, P other = null)
+ public P(string operatorName, dynamic? value, P? other = null)
{
OperatorName = operatorName;
Value = value;
@@ -56,12 +56,12 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets the value of the predicate.
/// </summary>
- public dynamic Value { get; }
+ public dynamic? Value { get; }
/// <summary>
/// Gets an optional other predicate that is used as an argument for this predicate.
/// </summary>
- public P Other { get; }
+ public P? Other { get; }
/// <summary>
/// Returns a composed predicate that represents a logical AND of this predicate and another.
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PageRank.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PageRank.cs
index 5c2ade9..61485fa 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PageRank.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PageRank.cs
@@ -21,12 +21,6 @@
#endregion
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
namespace Gremlin.Net.Process.Traversal
{
#pragma warning disable 1591
@@ -34,11 +28,11 @@ namespace Gremlin.Net.Process.Traversal
public class PageRank
{
- public const String edges = "~tinkerpop.pageRank.edges";
+ public const string edges = "~tinkerpop.pageRank.edges";
- public const String propertyName = "~tinkerpop.pageRank.propertyName";
+ public const string propertyName = "~tinkerpop.pageRank.propertyName";
- public const String times = "~tinkerpop.pageRank.times";
+ public const string times = "~tinkerpop.pageRank.times";
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PeerPressure.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PeerPressure.cs
index fde3b41..672ac34 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PeerPressure.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/PeerPressure.cs
@@ -21,12 +21,6 @@
#endregion
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
namespace Gremlin.Net.Process.Traversal
{
#pragma warning disable 1591
@@ -34,11 +28,11 @@ namespace Gremlin.Net.Process.Traversal
public class PeerPressure
{
- public const String edges = "~tinkerpop.peerPressure.edges";
+ public const string edges = "~tinkerpop.peerPressure.edges";
- public const String propertyName = "~tinkerpop.peerPressure.propertyName";
+ public const string propertyName = "~tinkerpop.peerPressure.propertyName";
- public const String times = "~tinkerpop.peerPressure.times";
+ public const string times = "~tinkerpop.peerPressure.times";
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
index f0312a3..39f9e77 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -35,9 +35,9 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Pick Any => new Pick("any");
+ public static Pick Any => new("any");
- public static Pick None => new Pick("none");
+ public static Pick None => new("none");
private static readonly IDictionary<string, Pick> Properties = new Dictionary<string, Pick>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
index 196ce01..fe86b07 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -35,13 +35,13 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Pop All => new Pop("all");
+ public static Pop All => new("all");
- public static Pop First => new Pop("first");
+ public static Pop First => new("first");
- public static Pop Last => new Pop("last");
+ public static Pop Last => new("last");
- public static Pop Mixed => new Pop("mixed");
+ public static Pop Mixed => new("mixed");
private static readonly IDictionary<string, Pop> Properties = new Dictionary<string, Pop>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
index ff70069..ac78400 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -35,9 +35,9 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static Scope Global => new Scope("global");
+ public static Scope Global => new("global");
- public static Scope Local => new Scope("local");
+ public static Scope Local => new("local");
private static readonly IDictionary<string, Scope> Properties = new Dictionary<string, Scope>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ShortestPath.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ShortestPath.cs
index 238a5e7..9ab1992 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ShortestPath.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ShortestPath.cs
@@ -21,12 +21,6 @@
#endregion
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
namespace Gremlin.Net.Process.Traversal
{
#pragma warning disable 1591
@@ -34,15 +28,15 @@ namespace Gremlin.Net.Process.Traversal
public class ShortestPath
{
- public const String distance = "~tinkerpop.shortestPath.distance";
+ public const string distance = "~tinkerpop.shortestPath.distance";
- public const String edges = "~tinkerpop.shortestPath.edges";
+ public const string edges = "~tinkerpop.shortestPath.edges";
- public const String includeEdges = "~tinkerpop.shortestPath.includeEdges";
+ public const string includeEdges = "~tinkerpop.shortestPath.includeEdges";
- public const String maxDistance = "~tinkerpop.shortestPath.maxDistance";
+ public const string maxDistance = "~tinkerpop.shortestPath.maxDistance";
- public const String target = "~tinkerpop.shortestPath.target";
+ public const string target = "~tinkerpop.shortestPath.target";
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
index 418ac7e..e760b4a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
@@ -83,10 +83,10 @@ namespace Gremlin.Net.Process.Traversal.Strategy
/// <summary>
/// Gets the configuration of the strategy.
/// </summary>
- public Dictionary<string, dynamic> Configuration { get; } = new Dictionary<string, dynamic>();
+ public Dictionary<string, dynamic> Configuration { get; } = new();
/// <inheritdoc />
- public bool Equals(AbstractTraversalStrategy other)
+ public bool Equals(AbstractTraversalStrategy? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -105,7 +105,7 @@ namespace Gremlin.Net.Process.Traversal.Strategy
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
index 6ae8876..ffa38fc 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
@@ -32,7 +32,7 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
{
}
- public HaltedTraverserStrategy(string haltedTraverserFactoryName = null)
+ public HaltedTraverserStrategy(string? haltedTraverserFactoryName = null)
: this()
{
if (haltedTraverserFactoryName != null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
index 8c59ad4..34f7b55 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
@@ -49,8 +49,8 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
/// </param>
/// <param name="readPartitions">Specifies the partition of the graph to read from.</param>
/// <param name="includeMetaProperties">Set to true if vertex properties should get assigned to partitions.</param>
- public PartitionStrategy(string partitionKey = null, string writePartition = null,
- IEnumerable<string> readPartitions = null, bool? includeMetaProperties = null)
+ public PartitionStrategy(string? partitionKey = null, string? writePartition = null,
+ IEnumerable<string>? readPartitions = null, bool? includeMetaProperties = null)
: this()
{
if (partitionKey != null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
index 6e7f333..988cd0b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
@@ -43,8 +43,8 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
/// <param name="vertices">Constrains vertices for the <see cref="ITraversal" />.</param>
/// <param name="edges">Constrains edges for the <see cref="ITraversal" />.</param>
/// <param name="vertexProperties">Constrains vertex properties for the <see cref="ITraversal" />.</param>
- public SubgraphStrategy(ITraversal vertices = null, ITraversal edges = null,
- ITraversal vertexProperties = null)
+ public SubgraphStrategy(ITraversal? vertices = null, ITraversal? edges = null,
+ ITraversal? vertexProperties = null)
: this()
{
if (vertices != null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
index 17bfbaa..149dfe7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
@@ -35,9 +35,9 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
{
}
- public VertexProgramStrategy(string graphComputer = null, int? workers = null, string persist = null,
- string result = null, ITraversal vertices = null, ITraversal edges = null,
- Dictionary<string, dynamic> configuration = null)
+ public VertexProgramStrategy(string? graphComputer = null, int? workers = null, string? persist = null,
+ string? result = null, ITraversal? vertices = null, ITraversal? edges = null,
+ Dictionary<string, dynamic>? configuration = null)
: this()
{
if (graphComputer != null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
index 3434e27..65fd568 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
@@ -32,7 +32,7 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Finalization
{
}
- public MatchAlgorithmStrategy(string matchAlgorithm)
+ public MatchAlgorithmStrategy(string? matchAlgorithm)
: this()
{
if (matchAlgorithm != null)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReservedKeysVerificationStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReservedKeysVerificationStrategy.cs
index eccae0d..204f9d8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReservedKeysVerificationStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReservedKeysVerificationStrategy.cs
@@ -47,7 +47,7 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Verification
/// <param name="throwException">Throw an exception if a reserved key is used.</param>
/// <param name="keys">List of keys to define as reserved. If not set then the defaults are used.</param>
public ReservedKeysVerificationStrategy(bool logWarning = false, bool throwException = false,
- List<string> keys = null)
+ List<string>? keys = null)
: this()
{
Configuration["logWarning"] = logWarning;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
index e688e8d..bef7b60 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -35,13 +35,13 @@ namespace Gremlin.Net.Process.Traversal
{
}
- public static T Id => new T("id");
+ public static T Id => new("id");
- public static T Key => new T("key");
+ public static T Key => new("key");
- public static T Label => new T("label");
+ public static T Label => new("label");
- public static T Value => new T("value");
+ public static T Value => new("value");
private static readonly IDictionary<string, T> Properties = new Dictionary<string, T>
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
index a77f206..3e7c9b2 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
@@ -21,9 +21,6 @@
#endregion
-using System.Collections.Generic;
-using System.Linq;
-
namespace Gremlin.Net.Process.Traversal
{
#pragma warning disable 1591
@@ -40,45 +37,39 @@ namespace Gremlin.Net.Process.Traversal
/// <param name="operatorName">The name of the predicate.</param>
/// <param name="value">The value of the predicate.</param>
/// <param name="other">An optional other predicate that is used as an argument for this predicate.</param>
- public TextP(string operatorName, string value, P other = null) : base(operatorName, value, other)
+ public TextP(string operatorName, string value, P? other = null) : base(operatorName, value, other)
{
}
public static TextP Containing(string value)
{
- return new TextP("containing", value);
+ return new("containing", value);
}
public static TextP EndingWith(string value)
{
- return new TextP("endingWith", value);
+ return new("endingWith", value);
}
public static TextP NotContaining(string value)
{
- return new TextP("notContaining", value);
+ return new("notContaining", value);
}
public static TextP NotEndingWith(string value)
{
- return new TextP("notEndingWith", value);
+ return new("notEndingWith", value);
}
public static TextP NotStartingWith(string value)
{
- return new TextP("notStartingWith", value);
+ return new("notStartingWith", value);
}
public static TextP StartingWith(string value)
{
- return new TextP("startingWith", value);
- }
-
-
- private static T[] ToGenericArray<T>(ICollection<T> collection)
- {
- return collection?.ToArray() ?? new T[0];
+ return new("startingWith", value);
}
/// <inheritdoc />
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs
index 573e57f..6c241ef 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs
@@ -33,7 +33,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
/// <param name="obj">The object of the traverser.</param>
/// <param name="bulk">The number of traversers represented in this traverser.</param>
- public Traverser(dynamic obj, long bulk = 1)
+ public Traverser(dynamic? obj, long bulk = 1)
{
Object = obj;
Bulk = bulk;
@@ -42,7 +42,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Gets the object of this traverser.
/// </summary>
- public dynamic Object { get; }
+ public dynamic? Object { get; }
/// <summary>
/// Gets the number of traversers represented in this traverser.
@@ -50,7 +50,7 @@ namespace Gremlin.Net.Process.Traversal
public long Bulk { get; internal set; }
/// <inheritdoc />
- public bool Equals(Traverser other)
+ public bool Equals(Traverser? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -58,7 +58,7 @@ namespace Gremlin.Net.Process.Traversal
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/WithOptions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/WithOptions.cs
index 0229d4c..e7e0bfd 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/WithOptions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/WithOptions.cs
@@ -21,12 +21,6 @@
#endregion
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
namespace Gremlin.Net.Process.Traversal.Step.Util
{
#pragma warning disable 1591
@@ -36,8 +30,6 @@ namespace Gremlin.Net.Process.Traversal.Step.Util
/// </summary>
public class WithOptions
{
-
-
public static readonly string Tokens = "~tinkerpop.valueMap.tokens";
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index fa1c027..4a19368 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Process.Traversal
/// </summary>
public static GraphTraversal<object, object> Start()
{
- return new GraphTraversal<object, object>();
+ return new();
}
/// <summary>
@@ -76,7 +76,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addV step to that traversal.
/// </summary>
- public static GraphTraversal<object, Vertex> AddV(string vertexLabel)
+ public static GraphTraversal<object, Vertex> AddV(string? vertexLabel)
{
return new GraphTraversal<object, Vertex>().AddV(vertexLabel);
}
@@ -454,7 +454,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the has step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Has(string propertyKey, object value)
+ public static GraphTraversal<object, object> Has(string propertyKey, object? value)
{
return new GraphTraversal<object, object>().Has(propertyKey, value);
}
@@ -470,7 +470,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the has step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Has(string label, string propertyKey, object value)
+ public static GraphTraversal<object, object> Has(string label, string propertyKey, object? value)
{
return new GraphTraversal<object, object>().Has(label, propertyKey, value);
}
@@ -494,7 +494,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the has step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Has(T accessor, object value)
+ public static GraphTraversal<object, object> Has(T accessor, object? value)
{
return new GraphTraversal<object, object>().Has(accessor, value);
}
@@ -518,7 +518,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasId step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> HasId(object id, params object[] otherIds)
+ public static GraphTraversal<object, object> HasId(object? id, params object?[] otherIds)
{
return otherIds.Length == 0
? new GraphTraversal<object, object>().HasId(id)
@@ -580,7 +580,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasValue step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> HasValue(object value, params object[] values)
+ public static GraphTraversal<object, object> HasValue(object? value, params object?[] values)
{
return values.Length == 0
? new GraphTraversal<object, object>().HasValue(value)
@@ -598,7 +598,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the id step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Id()
+ public static GraphTraversal<object, object?> Id()
{
return new GraphTraversal<object, object>().Id();
}
@@ -660,7 +660,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the is step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Is(object value)
+ public static GraphTraversal<object, object> Is(object? value)
{
return new GraphTraversal<object, object>().Is(value);
}
@@ -920,7 +920,8 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the property step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Property(Cardinality cardinality, object key, object value, params object[] keyValues)
+ public static GraphTraversal<object, object> Property(Cardinality cardinality, object key, object? value,
+ params object?[] keyValues)
{
return keyValues.Length == 0
? new GraphTraversal<object, object>().Property(cardinality, key, value)
@@ -930,7 +931,7 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the property step to that traversal.
/// </summary>
- public static GraphTraversal<object, object> Property(object key, object value, params object[] keyValues)
+ public static GraphTraversal<object, object> Property(object key, object? value, params object?[] keyValues)
{
return keyValues.Length == 0
? new GraphTraversal<object, object>().Property(key, value)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Utils.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Utils.cs
index 27d5de1..01cace8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Utils.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Utils.cs
@@ -44,7 +44,7 @@ namespace Gremlin.Net.Process
}
catch (AggregateException ex)
{
- if (ex.InnerExceptions.Count == 1)
+ if (ex.InnerException != null)
{
ExceptionDispatchInfo.Capture(ex.InnerException).Throw();
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Edge.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Edge.cs
index fddbd69..8da0c9a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Edge.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Edge.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Structure
/// <param name="outV">The outgoing/tail vertex of the edge.</param>
/// <param name="label">The label of the edge.</param>
/// <param name="inV">The incoming/head vertex of the edge.</param>
- public Edge(object id, Vertex outV, string label, Vertex inV)
+ public Edge(object? id, Vertex outV, string label, Vertex inV)
: base(id, label)
{
OutV = outV;
@@ -45,12 +45,12 @@ namespace Gremlin.Net.Structure
/// <summary>
/// Gets or sets the incoming/head vertex of this edge.
/// </summary>
- public Vertex InV { get; set; }
+ public Vertex InV { get; }
/// <summary>
/// Gets or sets the outgoing/tail vertex of this edge.
/// </summary>
- public Vertex OutV { get; set; }
+ public Vertex OutV { get; }
/// <inheritdoc />
public override string ToString()
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Element.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Element.cs
index f4fc847..6deada4 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Element.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Element.cs
@@ -21,21 +21,19 @@
#endregion
-using System;
-
namespace Gremlin.Net.Structure
{
/// <summary>
/// A common base class for Graph elements.
/// </summary>
- public abstract class Element : IEquatable<Element>
+ public abstract class Element
{
/// <summary>
/// Initializes a new instance of the <see cref="Element" /> class.
/// </summary>
/// <param name="id">The id of the element.</param>
/// <param name="label">The label of the element.</param>
- protected Element(object id, string label)
+ protected Element(object? id, string label)
{
Id = id;
Label = label;
@@ -44,7 +42,7 @@ namespace Gremlin.Net.Structure
/// <summary>
/// Gets the id of this <see cref="Element" />.
/// </summary>
- public object Id { get; }
+ public object? Id { get; }
/// <summary>
/// Gets the label of this <see cref="Element" />.
@@ -52,7 +50,7 @@ namespace Gremlin.Net.Structure
public string Label { get; }
/// <inheritdoc />
- public bool Equals(Element other)
+ public bool Equals(Element? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -60,7 +58,7 @@ namespace Gremlin.Net.Structure
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
@@ -71,7 +69,7 @@ namespace Gremlin.Net.Structure
/// <inheritdoc />
public override int GetHashCode()
{
- return Id.GetHashCode();
+ return Id != null ? Id.GetHashCode() : 0;
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
index 4d49689..ccfa086 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
@@ -39,7 +39,7 @@ namespace Gremlin.Net.Structure
[Obsolete("As of release 3.3.5, replaced by AnonymousTraversalSource.Traversal() called statically.", false)]
public GraphTraversalSource Traversal()
{
- return new GraphTraversalSource();
+ return new();
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/DataType.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/DataType.cs
index cb309c2..7cea9c4 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/DataType.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/DataType.cs
@@ -21,67 +21,65 @@
#endregion
-using System;
-
namespace Gremlin.Net.Structure.IO.GraphBinary
{
/// <summary>
/// Represents a GraphBinary data type.
/// </summary>
- public class DataType : IEquatable<DataType>
+ public record DataType
{
#pragma warning disable 1591
- public static readonly DataType Int = new DataType(0x01);
- public static readonly DataType Long = new DataType(0x02);
- public static readonly DataType String = new DataType(0x03);
- public static readonly DataType Date = new DataType(0x04);
- public static readonly DataType Timestamp = new DataType(0x05);
- public static readonly DataType Class = new DataType(0x06);
- public static readonly DataType Double = new DataType(0x07);
- public static readonly DataType Float = new DataType(0x08);
- public static readonly DataType List = new DataType(0x09);
- public static readonly DataType Map = new DataType(0X0A);
- public static readonly DataType Set = new DataType(0X0B);
- public static readonly DataType Uuid = new DataType(0X0C);
- public static readonly DataType Edge = new DataType(0x0D);
- public static readonly DataType Path = new DataType(0x0E);
- public static readonly DataType Property = new DataType(0x0F);
+ public static readonly DataType Int = new(0x01);
+ public static readonly DataType Long = new(0x02);
+ public static readonly DataType String = new(0x03);
+ public static readonly DataType Date = new(0x04);
+ public static readonly DataType Timestamp = new(0x05);
+ public static readonly DataType Class = new(0x06);
+ public static readonly DataType Double = new(0x07);
+ public static readonly DataType Float = new(0x08);
+ public static readonly DataType List = new(0x09);
+ public static readonly DataType Map = new(0X0A);
+ public static readonly DataType Set = new(0X0B);
+ public static readonly DataType Uuid = new(0X0C);
+ public static readonly DataType Edge = new(0x0D);
+ public static readonly DataType Path = new(0x0E);
+ public static readonly DataType Property = new(0x0F);
- public static readonly DataType Vertex = new DataType(0x11);
- public static readonly DataType VertexProperty = new DataType(0x12);
- public static readonly DataType Barrier = new DataType(0x13);
- public static readonly DataType Binding = new DataType(0x14);
- public static readonly DataType Bytecode = new DataType(0x15);
- public static readonly DataType Cardinality = new DataType(0x16);
- public static readonly DataType Column = new DataType(0x17);
- public static readonly DataType Direction = new DataType(0x18);
- public static readonly DataType Operator = new DataType(0x19);
- public static readonly DataType Order = new DataType(0x1A);
- public static readonly DataType Pick = new DataType(0x1B);
- public static readonly DataType Pop = new DataType(0x1C);
- public static readonly DataType Lambda = new DataType(0x1D);
- public static readonly DataType P = new DataType(0x1E);
- public static readonly DataType Scope = new DataType(0x1F);
- public static readonly DataType T = new DataType(0x20);
- public static readonly DataType Traverser = new DataType(0x21);
- public static readonly DataType BigDecimal = new DataType(0x22);
- public static readonly DataType BigInteger = new DataType(0x23);
- public static readonly DataType Byte = new DataType(0x24);
- public static readonly DataType ByteBuffer = new DataType(0x25);
- public static readonly DataType Short = new DataType(0x26);
- public static readonly DataType Boolean = new DataType(0x27);
- public static readonly DataType TextP = new DataType(0x28);
- public static readonly DataType TraversalStrategy = new DataType(0x29);
- public static readonly DataType BulkSet = new DataType(0x2A);
+ public static readonly DataType Vertex = new(0x11);
+ public static readonly DataType VertexProperty = new(0x12);
+ public static readonly DataType Barrier = new(0x13);
+ public static readonly DataType Binding = new(0x14);
+ public static readonly DataType Bytecode = new(0x15);
+ public static readonly DataType Cardinality = new(0x16);
+ public static readonly DataType Column = new(0x17);
+ public static readonly DataType Direction = new(0x18);
+ public static readonly DataType Operator = new(0x19);
+ public static readonly DataType Order = new(0x1A);
+ public static readonly DataType Pick = new(0x1B);
+ public static readonly DataType Pop = new(0x1C);
+ public static readonly DataType Lambda = new(0x1D);
+ public static readonly DataType P = new(0x1E);
+ public static readonly DataType Scope = new(0x1F);
+ public static readonly DataType T = new(0x20);
+ public static readonly DataType Traverser = new(0x21);
+ public static readonly DataType BigDecimal = new(0x22);
+ public static readonly DataType BigInteger = new(0x23);
+ public static readonly DataType Byte = new(0x24);
+ public static readonly DataType ByteBuffer = new(0x25);
+ public static readonly DataType Short = new(0x26);
+ public static readonly DataType Boolean = new(0x27);
+ public static readonly DataType TextP = new(0x28);
+ public static readonly DataType TraversalStrategy = new(0x29);
+ public static readonly DataType BulkSet = new(0x2A);
// TODO: Support metrics and traversal metrics
- public static readonly DataType Char = new DataType(0x80);
- public static readonly DataType Duration = new DataType(0x81);
+ public static readonly DataType Char = new(0x80);
+ public static readonly DataType Duration = new(0x81);
#pragma warning restore 1591
/// <summary>
/// A null value for an unspecified Object value.
/// </summary>
- public static readonly DataType UnspecifiedNull = new DataType(0xFE);
+ public static readonly DataType UnspecifiedNull = new(0xFE);
private DataType(int code)
{
@@ -98,62 +96,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
/// </summary>
public static DataType FromTypeCode(int code)
{
- return new DataType(code);
- }
-
- /// <inheritdoc />
- public bool Equals(DataType other)
- {
- if (ReferenceEquals(null, other)) return false;
- if (ReferenceEquals(this, other)) return true;
- return TypeCode == other.TypeCode;
- }
-
- /// <inheritdoc />
- public override bool Equals(object obj)
- {
- if (ReferenceEquals(null, obj)) return false;
- if (ReferenceEquals(this, obj)) return true;
- if (obj.GetType() != GetType()) return false;
- return Equals((DataType) obj);
- }
-
- /// <inheritdoc />
- public override int GetHashCode()
- {
- return TypeCode.GetHashCode();
- }
-
- /// <summary>
- /// Determines whether two specified <see cref="DataType"/> have the same values.
- /// </summary>
- public static bool operator ==(DataType first, DataType second)
- {
- if (ReferenceEquals(null, first))
- {
- if (ReferenceEquals(null, second))
- {
- return true;
- }
-
- return false;
- }
-
- return first.Equals(second);
- }
-
- /// <summary>
- /// Determines whether two specified <see cref="DataType"/> have different values.
- /// </summary>
- public static bool operator !=(DataType first, DataType second)
- {
- return !(first == second);
- }
-
- /// <inheritdoc />
- public override string ToString()
- {
- return $"DataType{{ TypeCode = {TypeCode} }}";
+ return new(code);
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryMessageSerializer.cs
index 2b56935..8d5f745 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryMessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryMessageSerializer.cs
@@ -40,15 +40,15 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
private readonly GraphBinaryReader _reader;
private readonly GraphBinaryWriter _writer;
- private readonly RequestMessageSerializer _requestSerializer = new RequestMessageSerializer();
- private readonly ResponseMessageSerializer _responseSerializer = new ResponseMessageSerializer();
+ private readonly RequestMessageSerializer _requestSerializer = new();
+ private readonly ResponseMessageSerializer _responseSerializer = new();
/// <summary>
/// Initializes a new instance of the <see cref="GraphBinaryMessageSerializer" /> class.
/// </summary>
/// <param name="reader">The <see cref="GraphBinaryReader"/> used to deserialize from GraphBinary.</param>
/// <param name="writer">The <see cref="GraphBinaryWriter"/> used to serialize to GraphBinary.</param>
- public GraphBinaryMessageSerializer(GraphBinaryReader reader = null, GraphBinaryWriter writer = null)
+ public GraphBinaryMessageSerializer(GraphBinaryReader? reader = null, GraphBinaryWriter? writer = null)
{
_reader = reader ?? new GraphBinaryReader();
_writer = writer ?? new GraphBinaryWriter();
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryReader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryReader.cs
index deaf31a..f3b89e7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryReader.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryReader.cs
@@ -31,19 +31,30 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
/// </summary>
public class GraphBinaryReader
{
- private readonly TypeSerializerRegistry _registry = new TypeSerializerRegistry();
+ private readonly TypeSerializerRegistry _registry = new();
/// <summary>
/// Reads only the value for a specific type <typeparamref name="T"/>.
/// </summary>
/// <param name="stream">The GraphBinary data to parse.</param>
- /// <param name="nullable">Whether or not the value can be null.</param>
/// <typeparam name="T">The type of the object to read.</typeparam>
/// <returns>The read value.</returns>
- public async Task<object> ReadValueAsync<T>(Stream stream, bool nullable)
+ public async Task<object?> ReadNullableValueAsync<T>(Stream stream)
{
var typedSerializer = _registry.GetSerializerFor(typeof(T));
- return await typedSerializer.ReadValueAsync(stream, this, nullable).ConfigureAwait(false);
+ return await typedSerializer.ReadNullableValueAsync(stream, this).ConfigureAwait(false);
+ }
+
+ /// <summary>
+ /// Reads only the value for a specific type <typeparamref name="T"/>.
+ /// </summary>
+ /// <param name="stream">The GraphBinary data to parse.</param>
+ /// <typeparam name="T">The type of the object to read.</typeparam>
+ /// <returns>The read value.</returns>
+ public async Task<object> ReadNonNullableValueAsync<T>(Stream stream)
+ {
+ var typedSerializer = _registry.GetSerializerFor(typeof(T));
+ return await typedSerializer.ReadNonNullableValueAsync(stream, this).ConfigureAwait(false);
}
/// <summary>
@@ -51,14 +62,14 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
/// </summary>
/// <param name="stream">The GraphBinary data to parse.</param>
/// <returns>The read value.</returns>
- public async Task<object> ReadAsync(Stream stream)
+ public async Task<object?> ReadAsync(Stream stream)
{
var type = DataType.FromTypeCode(await stream.ReadByteAsync().ConfigureAwait(false));
if (type == DataType.UnspecifiedNull)
{
await stream.ReadByteAsync().ConfigureAwait(false); // read value byte to advance the index
- return default; // should be null (TODO?)
+ return null;
}
var typedSerializer = _registry.GetSerializerFor(type);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryWriter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryWriter.cs
index e1eec8f..637b51e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryWriter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/GraphBinaryWriter.cs
@@ -41,31 +41,38 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
private static readonly byte[] UnspecifiedNullBytes = {DataType.UnspecifiedNull.TypeCode, 0x01};
- private readonly TypeSerializerRegistry _registry = new TypeSerializerRegistry();
+ private readonly TypeSerializerRegistry _registry = new();
/// <summary>
- /// Writes a value without including type information.
+ /// Writes a nullable value without including type information.
/// </summary>
/// <param name="value">The value to write.</param>
/// <param name="stream">The stream to write to.</param>
- /// <param name="nullable">Whether or not the value can be null.</param>
/// <returns>A task that represents the asynchronous write operation.</returns>
- public async Task WriteValueAsync(object value, Stream stream, bool nullable)
+ public async Task WriteNullableValueAsync(object? value, Stream stream)
{
if (value == null)
{
- if (!nullable)
- {
- throw new IOException("Unexpected null value when nullable is false");
- }
-
await WriteValueFlagNullAsync(stream).ConfigureAwait(false);
return;
}
var valueType = value.GetType();
var serializer = _registry.GetSerializerFor(valueType);
- await serializer.WriteValueAsync(value, stream, this, nullable).ConfigureAwait(false);
+ await serializer.WriteNullableValueAsync(value, stream, this).ConfigureAwait(false);
+ }
+
+ /// <summary>
+ /// Writes a non-nullable value without including type information.
+ /// </summary>
+ /// <param name="value">The value to write.</param>
+ /// <param name="stream">The stream to write to.</param>
+ /// <returns>A task that represents the asynchronous write operation.</returns>
+ public async Task WriteNonNullableValueAsync(object value, Stream stream)
+ {
+ var valueType = value.GetType();
+ var serializer = _registry.GetSerializerFor(valueType);
+ await serializer.WriteNonNullableValueAsync(value, stream, this).ConfigureAwait(false);
}
/// <summary>
@@ -74,7 +81,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
/// <param name="value">The value to write.</param>
/// <param name="stream">The stream to write to.</param>
/// <returns>A task that represents the asynchronous write operation.</returns>
- public async Task WriteAsync(object value, Stream stream)
+ public async Task WriteAsync(object? value, Stream stream)
{
if (value == null)
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ITypeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ITypeSerializer.cs
index fd21f52..8b176c8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ITypeSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ITypeSerializer.cs
@@ -46,14 +46,22 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
Task WriteAsync(object value, Stream stream, GraphBinaryWriter writer);
/// <summary>
- /// Writes the value to a stream, composed by the value flag and the sequence of bytes.
+ /// Writes the nullable value to a stream, composed by the value flag and the sequence of bytes.
/// </summary>
/// <param name="value">The value to write.</param>
/// <param name="stream">The stream to write to.</param>
/// <param name="writer">A <see cref="GraphBinaryWriter"/> that can be used to write nested values.</param>
- /// <param name="nullable">Whether or not the value can be null.</param>
/// <returns>A task that represents the asynchronous write operation.</returns>
- Task WriteValueAsync(object value, Stream stream, GraphBinaryWriter writer, bool nullable);
+ Task WriteNullableValueAsync(object? value, Stream stream, GraphBinaryWriter writer);
+
+ /// <summary>
+ /// Writes the non-nullable value to a stream, composed by the value flag and the sequence of bytes.
+ /// </summary>
+ /// <param name="value">The value to write.</param>
+ /// <param name="stream">The stream to write to.</param>
+ /// <param name="writer">A <see cref="GraphBinaryWriter"/> that can be used to write nested values.</param>
+ /// <returns>A task that represents the asynchronous write operation.</returns>
+ Task WriteNonNullableValueAsync(object value, Stream stream, GraphBinaryWriter writer);
/// <summary>
/// Reads the type information and value from the stream.
@@ -61,15 +69,22 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
/// <param name="stream">The GraphBinary data to parse.</param>
/// <param name="reader">A <see cref="GraphBinaryReader"/> that can be used to read nested values.</param>
/// <returns>The read value.</returns>
- Task<object> ReadAsync(Stream stream, GraphBinaryReader reader);
+ Task<object?> ReadAsync(Stream stream, GraphBinaryReader reader);
/// <summary>
/// Reads the value from the stream (not the type information).
/// </summary>
/// <param name="stream">The GraphBinary data to parse.</param>
/// <param name="reader">A <see cref="GraphBinaryReader"/> that can be used to read nested values.</param>
- /// <param name="nullable">Whether or not the value can be null.</param>
/// <returns>The read value.</returns>
- Task<object> ReadValueAsync(Stream stream, GraphBinaryReader reader, bool nullable);
+ Task<object?> ReadNullableValueAsync(Stream stream, GraphBinaryReader reader);
+
+ /// <summary>
+ /// Reads the value from the stream (not the type information).
+ /// </summary>
+ /// <param name="stream">The GraphBinary data to parse.</param>
+ /// <param name="reader">A <see cref="GraphBinaryReader"/> that can be used to read nested values.</param>
+ /// <returns>The read value.</returns>
+ Task<object> ReadNonNullableValueAsync(Stream stream, GraphBinaryReader reader);
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/RequestMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/RequestMessageSerializer.cs
index e9e22f3..47d7e73 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/RequestMessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/RequestMessageSerializer.cs
@@ -42,10 +42,10 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
public async Task WriteValueAsync(RequestMessage requestMessage, MemoryStream stream, GraphBinaryWriter writer)
{
await stream.WriteByteAsync(GraphBinaryWriter.VersionByte).ConfigureAwait(false);
- await writer.WriteValueAsync(requestMessage.RequestId, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(requestMessage.Operation, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(requestMessage.Processor, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(requestMessage.Arguments, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(requestMessage.RequestId, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(requestMessage.Operation, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(requestMessage.Processor, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(requestMessage.Arguments, stream).ConfigureAwait(false);
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ResponseMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ResponseMessageSerializer.cs
index c31ab5f..b9fc9bd 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ResponseMessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/ResponseMessageSerializer.cs
@@ -51,32 +51,21 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
throw new IOException("The most significant bit should be set according to the format");
}
- var requestId = (Guid?) await reader.ReadValueAsync<Guid>(stream, true).ConfigureAwait(false);
- var code = (ResponseStatusCode) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
- var message = (string) await reader.ReadValueAsync<string>(stream, true).ConfigureAwait(false);
- var dictObj = await reader
- .ReadValueAsync<Dictionary<string, object>>(stream, false).ConfigureAwait(false);
- var attributes = (Dictionary<string, object>) dictObj;
+ var requestId = (Guid?) await reader.ReadNullableValueAsync<Guid>(stream).ConfigureAwait(false);
+ var code = (ResponseStatusCode) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
+ var message = (string?) await reader.ReadNullableValueAsync<string>(stream).ConfigureAwait(false);
+ var attributes = (Dictionary<string, object>) await reader
+ .ReadNonNullableValueAsync<Dictionary<string, object>>(stream).ConfigureAwait(false);
- var status = new ResponseStatus
- {
- Code = code,
- Message = message,
- Attributes = attributes
- };
- var result = new ResponseResult<List<object>>
- {
- Meta = (Dictionary<string, object>) await reader
- .ReadValueAsync<Dictionary<string, object>>(stream, false).ConfigureAwait(false),
- Data = (List<object>) await reader.ReadAsync(stream).ConfigureAwait(false)
- };
+ var status = new ResponseStatus(code, attributes, message);
- return new ResponseMessage<List<object>>
- {
- RequestId = requestId,
- Status = status,
- Result = result
- };
+ var meta = (Dictionary<string, object>) await reader
+ .ReadNonNullableValueAsync<Dictionary<string, object>>(stream)
+ .ConfigureAwait(false);
+ var data = (List<object>?) (await reader.ReadAsync(stream).ConfigureAwait(false));
+ var result = new ResponseResult<List<object>>(data, meta);
+
+ return new ResponseMessage<List<object>>(requestId, status, result);
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/TypeSerializerRegistry.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/TypeSerializerRegistry.cs
index efa1699..f3d7a41 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/TypeSerializerRegistry.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/TypeSerializerRegistry.cs
@@ -36,98 +36,96 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
/// </summary>
public class TypeSerializerRegistry
{
- private static readonly Dictionary<Type, ITypeSerializer> SerializerByType =
- new Dictionary<Type, ITypeSerializer>
- {
- {typeof(int), SingleTypeSerializers.IntSerializer},
- {typeof(long), SingleTypeSerializers.LongSerializer},
- {typeof(string), new StringSerializer()},
- {typeof(DateTimeOffset), DateTimeOffsetSerializer.DateSerializer},
- {typeof(GremlinType), new ClassSerializer()},
- {typeof(Type), new TypeSerializer()},
- {typeof(double), SingleTypeSerializers.DoubleSerializer},
- {typeof(float), SingleTypeSerializers.FloatSerializer},
- {typeof(Guid), new UuidSerializer()},
- {typeof(Edge), new EdgeSerializer()},
- {typeof(Path), new PathSerializer()},
- {typeof(Property), new PropertySerializer()},
- {typeof(Vertex), new VertexSerializer()},
- {typeof(VertexProperty), new VertexPropertySerializer()},
- {typeof(Barrier), EnumSerializers.BarrierSerializer},
- {typeof(Binding), new BindingSerializer()},
- {typeof(Bytecode), new BytecodeSerializer()},
- {typeof(ITraversal), new TraversalSerializer()},
- {typeof(Cardinality), EnumSerializers.CardinalitySerializer},
- {typeof(Column), EnumSerializers.ColumnSerializer},
- {typeof(Direction), EnumSerializers.DirectionSerializer},
- {typeof(Operator), EnumSerializers.OperatorSerializer},
- {typeof(Order), EnumSerializers.OrderSerializer},
- {typeof(Pick), EnumSerializers.PickSerializer},
- {typeof(Pop), EnumSerializers.PopSerializer},
- {typeof(ILambda), new LambdaSerializer()},
- {typeof(P), new PSerializer(DataType.P)},
- {typeof(Scope), EnumSerializers.ScopeSerializer},
- {typeof(T), EnumSerializers.TSerializer},
- {typeof(Traverser), new TraverserSerializer()},
- {typeof(decimal), new BigDecimalSerializer()},
- {typeof(BigInteger), new BigIntegerSerializer()},
- {typeof(byte), SingleTypeSerializers.ByteSerializer},
- {typeof(byte[]), new ByteBufferSerializer()},
- {typeof(short), SingleTypeSerializers.ShortSerializer},
- {typeof(bool), SingleTypeSerializers.BooleanSerializer},
- {typeof(TextP), new PSerializer(DataType.TextP)},
- {typeof(AbstractTraversalStrategy), new TraversalStrategySerializer()},
- {typeof(char), new CharSerializer()},
- {typeof(TimeSpan), new DurationSerializer()},
- };
+ private static readonly Dictionary<Type, ITypeSerializer> SerializerByType = new()
+ {
+ {typeof(int), SingleTypeSerializers.IntSerializer},
+ {typeof(long), SingleTypeSerializers.LongSerializer},
+ {typeof(string), new StringSerializer()},
+ {typeof(DateTimeOffset), DateTimeOffsetSerializer.DateSerializer},
+ {typeof(GremlinType), new ClassSerializer()},
+ {typeof(Type), new TypeSerializer()},
+ {typeof(double), SingleTypeSerializers.DoubleSerializer},
+ {typeof(float), SingleTypeSerializers.FloatSerializer},
+ {typeof(Guid), new UuidSerializer()},
+ {typeof(Edge), new EdgeSerializer()},
+ {typeof(Path), new PathSerializer()},
+ {typeof(Property), new PropertySerializer()},
+ {typeof(Vertex), new VertexSerializer()},
+ {typeof(VertexProperty), new VertexPropertySerializer()},
+ {typeof(Barrier), EnumSerializers.BarrierSerializer},
+ {typeof(Binding), new BindingSerializer()},
+ {typeof(Bytecode), new BytecodeSerializer()},
+ {typeof(ITraversal), new TraversalSerializer()},
+ {typeof(Cardinality), EnumSerializers.CardinalitySerializer},
+ {typeof(Column), EnumSerializers.ColumnSerializer},
+ {typeof(Direction), EnumSerializers.DirectionSerializer},
+ {typeof(Operator), EnumSerializers.OperatorSerializer},
+ {typeof(Order), EnumSerializers.OrderSerializer},
+ {typeof(Pick), EnumSerializers.PickSerializer},
+ {typeof(Pop), EnumSerializers.PopSerializer},
+ {typeof(ILambda), new LambdaSerializer()},
+ {typeof(P), new PSerializer(DataType.P)},
+ {typeof(Scope), EnumSerializers.ScopeSerializer},
+ {typeof(T), EnumSerializers.TSerializer},
+ {typeof(Traverser), new TraverserSerializer()},
+ {typeof(decimal), new BigDecimalSerializer()},
+ {typeof(BigInteger), new BigIntegerSerializer()},
+ {typeof(byte), SingleTypeSerializers.ByteSerializer},
+ {typeof(byte[]), new ByteBufferSerializer()},
+ {typeof(short), SingleTypeSerializers.ShortSerializer},
+ {typeof(bool), SingleTypeSerializers.BooleanSerializer},
+ {typeof(TextP), new PSerializer(DataType.TextP)},
+ {typeof(AbstractTraversalStrategy), new TraversalStrategySerializer()},
+ {typeof(char), new CharSerializer()},
+ {typeof(TimeSpan), new DurationSerializer()}
+ };
- private static readonly Dictionary<DataType, ITypeSerializer> SerializerByDataType =
- new Dictionary<DataType, ITypeSerializer>
- {
- {DataType.Int, SingleTypeSerializers.IntSerializer},
- {DataType.Long, SingleTypeSerializers.LongSerializer},
- {DataType.String, new StringSerializer()},
- {DataType.Date, DateTimeOffsetSerializer.DateSerializer},
- {DataType.Timestamp, DateTimeOffsetSerializer.TimestampSerializer},
- {DataType.Class, new ClassSerializer()},
- {DataType.Double, SingleTypeSerializers.DoubleSerializer},
- {DataType.Float, SingleTypeSerializers.FloatSerializer},
- {DataType.List, new ListSerializer<object>()},
- {DataType.Map, new MapSerializer<object, object>()},
- {DataType.Set, new SetSerializer<HashSet<object>, object>()},
- {DataType.Uuid, new UuidSerializer()},
- {DataType.Edge, new EdgeSerializer()},
- {DataType.Path, new PathSerializer()},
- {DataType.Property, new PropertySerializer()},
- {DataType.Vertex, new VertexSerializer()},
- {DataType.VertexProperty, new VertexPropertySerializer()},
- {DataType.Barrier, EnumSerializers.BarrierSerializer},
- {DataType.Binding, new BindingSerializer()},
- {DataType.Bytecode, new BytecodeSerializer()},
- {DataType.Cardinality, EnumSerializers.CardinalitySerializer},
- {DataType.Column, EnumSerializers.ColumnSerializer},
- {DataType.Direction, EnumSerializers.DirectionSerializer},
- {DataType.Operator, EnumSerializers.OperatorSerializer},
- {DataType.Order, EnumSerializers.OrderSerializer},
- {DataType.Pick, EnumSerializers.PickSerializer},
- {DataType.Pop, EnumSerializers.PopSerializer},
- {DataType.Lambda, new LambdaSerializer()},
- {DataType.P, new PSerializer(DataType.P)},
- {DataType.Scope, EnumSerializers.ScopeSerializer},
- {DataType.T, EnumSerializers.TSerializer},
- {DataType.Traverser, new TraverserSerializer()},
- {DataType.BigDecimal, new BigDecimalSerializer()},
- {DataType.BigInteger, new BigIntegerSerializer()},
- {DataType.Byte, SingleTypeSerializers.ByteSerializer},
- {DataType.ByteBuffer, new ByteBufferSerializer()},
- {DataType.Short, SingleTypeSerializers.ShortSerializer},
- {DataType.Boolean, SingleTypeSerializers.BooleanSerializer},
- {DataType.TextP, new PSerializer(DataType.TextP)},
- {DataType.TraversalStrategy, new TraversalStrategySerializer()},
- {DataType.BulkSet, new BulkSetSerializer<List<object>>()},
- {DataType.Char, new CharSerializer()},
- {DataType.Duration, new DurationSerializer()},
- };
+ private static readonly Dictionary<DataType, ITypeSerializer> SerializerByDataType = new()
+ {
+ {DataType.Int, SingleTypeSerializers.IntSerializer},
+ {DataType.Long, SingleTypeSerializers.LongSerializer},
+ {DataType.String, new StringSerializer()},
+ {DataType.Date, DateTimeOffsetSerializer.DateSerializer},
+ {DataType.Timestamp, DateTimeOffsetSerializer.TimestampSerializer},
+ {DataType.Class, new ClassSerializer()},
+ {DataType.Double, SingleTypeSerializers.DoubleSerializer},
+ {DataType.Float, SingleTypeSerializers.FloatSerializer},
+ {DataType.List, new ListSerializer<object>()},
+ {DataType.Map, new MapSerializer<object, object>()},
+ {DataType.Set, new SetSerializer<HashSet<object?>, object>()},
+ {DataType.Uuid, new UuidSerializer()},
+ {DataType.Edge, new EdgeSerializer()},
+ {DataType.Path, new PathSerializer()},
+ {DataType.Property, new PropertySerializer()},
+ {DataType.Vertex, new VertexSerializer()},
+ {DataType.VertexProperty, new VertexPropertySerializer()},
+ {DataType.Barrier, EnumSerializers.BarrierSerializer},
+ {DataType.Binding, new BindingSerializer()},
+ {DataType.Bytecode, new BytecodeSerializer()},
+ {DataType.Cardinality, EnumSerializers.CardinalitySerializer},
+ {DataType.Column, EnumSerializers.ColumnSerializer},
+ {DataType.Direction, EnumSerializers.DirectionSerializer},
+ {DataType.Operator, EnumSerializers.OperatorSerializer},
+ {DataType.Order, EnumSerializers.OrderSerializer},
+ {DataType.Pick, EnumSerializers.PickSerializer},
+ {DataType.Pop, EnumSerializers.PopSerializer},
+ {DataType.Lambda, new LambdaSerializer()},
+ {DataType.P, new PSerializer(DataType.P)},
+ {DataType.Scope, EnumSerializers.ScopeSerializer},
+ {DataType.T, EnumSerializers.TSerializer},
+ {DataType.Traverser, new TraverserSerializer()},
+ {DataType.BigDecimal, new BigDecimalSerializer()},
+ {DataType.BigInteger, new BigIntegerSerializer()},
+ {DataType.Byte, SingleTypeSerializers.ByteSerializer},
+ {DataType.ByteBuffer, new ByteBufferSerializer()},
+ {DataType.Short, SingleTypeSerializers.ShortSerializer},
+ {DataType.Boolean, SingleTypeSerializers.BooleanSerializer},
+ {DataType.TextP, new PSerializer(DataType.TextP)},
+ {DataType.TraversalStrategy, new TraversalStrategySerializer()},
+ {DataType.BulkSet, new BulkSetSerializer<List<object>>()},
+ {DataType.Char, new CharSerializer()},
+ {DataType.Duration, new DurationSerializer()}
+ };
/// <summary>
/// Gets a serializer for the given type of the value to be serialized.
@@ -147,8 +145,10 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
var dictKeyType = valueType.GetGenericArguments()[0];
var dictValueType = valueType.GetGenericArguments()[1];
var serializerType = typeof(MapSerializer<,>).MakeGenericType(dictKeyType, dictValueType);
- var serializer = (ITypeSerializer) Activator.CreateInstance(serializerType);
- SerializerByType[valueType] = serializer;
+ var serializer = (ITypeSerializer?) Activator.CreateInstance(serializerType);
+ SerializerByType[valueType] = serializer ??
+ throw new InvalidOperationException(
+ $"Cannot create a serializer for the dictionary type {valueType}.");
return serializer;
}
@@ -156,17 +156,21 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
{
var memberType = valueType.GetGenericArguments()[0];
var serializerType = typeof(SetSerializer<,>).MakeGenericType(valueType, memberType);
- var serializer = (ITypeSerializer) Activator.CreateInstance(serializerType);
- SerializerByType[valueType] = serializer;
+ var serializer = (ITypeSerializer?) Activator.CreateInstance(serializerType);
+ SerializerByType[valueType] = serializer ??
+ throw new InvalidOperationException(
+ $"Cannot create a serializer for the set type {valueType}.");
return serializer;
}
if (valueType.IsArray)
{
var memberType = valueType.GetElementType();
- var serializerType = typeof(ArraySerializer<>).MakeGenericType(memberType);
- var serializer = (ITypeSerializer) Activator.CreateInstance(serializerType);
- SerializerByType[valueType] = serializer;
+ var serializerType = typeof(ArraySerializer<>).MakeGenericType(memberType!);
+ var serializer = (ITypeSerializer?) Activator.CreateInstance(serializerType);
+ SerializerByType[valueType] = serializer ??
+ throw new InvalidOperationException(
+ $"Cannot create a serializer for the array type {valueType}.");
return serializer;
}
@@ -174,8 +178,10 @@ namespace Gremlin.Net.Structure.IO.GraphBinary
{
var memberType = valueType.GetGenericArguments()[0];
var serializerType = typeof(ListSerializer<>).MakeGenericType(memberType);
- var serializer = (ITypeSerializer) Activator.CreateInstance(serializerType);
- SerializerByType[valueType] = serializer;
+ var serializer = (ITypeSerializer?) Activator.CreateInstance(serializerType);
+ SerializerByType[valueType] = serializer ??
+ throw new InvalidOperationException(
+ $"Cannot create a serializer for the list type {valueType}.");
return serializer;
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ArraySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ArraySerializer.cs
index fecac6d..4a51e40 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ArraySerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ArraySerializer.cs
@@ -43,7 +43,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(TMember[] value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Length, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Length, stream).ConfigureAwait(false);
foreach (var item in value)
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigDecimalSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigDecimalSerializer.cs
index 3aebd85..b220b45 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigDecimalSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigDecimalSerializer.cs
@@ -44,8 +44,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(decimal value, Stream stream, GraphBinaryWriter writer)
{
var (unscaledValue, scale) = GetUnscaledValueAndScale(value);
- await writer.WriteValueAsync(scale, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(unscaledValue, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(scale, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(unscaledValue, stream).ConfigureAwait(false);
}
private static (BigInteger, int) GetUnscaledValueAndScale(decimal input)
@@ -76,8 +76,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<decimal> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var scale = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
- var unscaled = (BigInteger) await reader.ReadValueAsync<BigInteger>(stream, false).ConfigureAwait(false);
+ var scale = (int) (await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false))!;
+ var unscaled = (BigInteger) (await reader.ReadNonNullableValueAsync<BigInteger>(stream).ConfigureAwait(false))!;
return ConvertScaleAndUnscaledValue(scale, unscaled);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigIntegerSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigIntegerSerializer.cs
index e781504..d8bd61e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigIntegerSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BigIntegerSerializer.cs
@@ -44,14 +44,14 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(BigInteger value, Stream stream, GraphBinaryWriter writer)
{
var bytes = value.ToByteArray().Reverse().ToArray();
- await writer.WriteValueAsync(bytes.Length, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(bytes.Length, stream).ConfigureAwait(false);
await stream.WriteAsync(bytes).ConfigureAwait(false);
}
/// <inheritdoc />
protected override async Task<BigInteger> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var length = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var length = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
var bytes = new byte[length];
await stream.ReadAsync(bytes).ConfigureAwait(false);
return new BigInteger(bytes.Reverse().ToArray());
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BindingSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BindingSerializer.cs
index 1cb5d9a..302963f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BindingSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BindingSerializer.cs
@@ -42,14 +42,14 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(Binding value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Key, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Key, stream).ConfigureAwait(false);
await writer.WriteAsync(value.Value, stream).ConfigureAwait(false);
}
/// <inheritdoc />
protected override async Task<Binding> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var key = (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false);
+ var key = (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false);
var value = await reader.ReadAsync(stream).ConfigureAwait(false);
return new Binding(key, value);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BulkSetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BulkSetSerializer.cs
index 862c2c7..66f5627 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BulkSetSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/BulkSetSerializer.cs
@@ -53,13 +53,13 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<TList> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var length = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var length = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
var result = new TList();
for (var i = 0; i < length; i++)
{
var value = await reader.ReadAsync(stream).ConfigureAwait(false);
- var bulk = (long) await reader.ReadValueAsync<long>(stream, false).ConfigureAwait(false);
+ var bulk = (long) await reader.ReadNonNullableValueAsync<long>(stream).ConfigureAwait(false);
for (var j = 0; j < bulk; j++)
{
result.Add(value);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteBufferSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteBufferSerializer.cs
index 0e3bf1d..cdc803c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteBufferSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteBufferSerializer.cs
@@ -42,14 +42,14 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(byte[] value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Length, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Length, stream).ConfigureAwait(false);
await stream.WriteAsync(value, 0, value.Length).ConfigureAwait(false);
}
/// <inheritdoc />
protected override async Task<byte[]> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var length = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var length = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
var buffer = new byte[length];
await stream.ReadAsync(buffer, 0, length).ConfigureAwait(false);
return buffer;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteCodeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteCodeSerializer.cs
index bc59b4b..56b973c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteCodeSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ByteCodeSerializer.cs
@@ -50,18 +50,18 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
private static async Task WriteInstructionsAsync(IReadOnlyCollection<Instruction> instructions, Stream stream,
GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(instructions.Count, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(instructions.Count, stream).ConfigureAwait(false);
foreach (var instruction in instructions)
{
- await writer.WriteValueAsync(instruction.OperatorName, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(instruction.OperatorName, stream).ConfigureAwait(false);
await WriteArgumentsAsync(instruction.Arguments, stream, writer).ConfigureAwait(false);
}
}
- private static async Task WriteArgumentsAsync(object[] arguments, Stream stream, GraphBinaryWriter writer)
+ private static async Task WriteArgumentsAsync(object?[] arguments, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(arguments.Length, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(arguments.Length, stream).ConfigureAwait(false);
foreach (var value in arguments)
{
@@ -74,27 +74,27 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
{
var result = new Bytecode();
- var stepsLength = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var stepsLength = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
for (var i = 0; i < stepsLength; i++)
{
- result.AddStep((string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false),
+ result.AddStep((string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false),
await ReadArgumentsAsync(stream, reader).ConfigureAwait(false));
}
var sourcesLength = await stream.ReadIntAsync().ConfigureAwait(false);
for (var i = 0; i < sourcesLength; i++)
{
- result.AddSource((string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false),
+ result.AddSource((string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false),
await ReadArgumentsAsync(stream, reader).ConfigureAwait(false));
}
return result;
}
- private static async Task<object[]> ReadArgumentsAsync(Stream stream, GraphBinaryReader reader)
+ private static async Task<object?[]> ReadArgumentsAsync(Stream stream, GraphBinaryReader reader)
{
- var valuesLength = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
- var values = new object[valuesLength];
+ var valuesLength = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
+ var values = new object?[valuesLength];
for (var i = 0; i < valuesLength; i++)
{
values[i] = await reader.ReadAsync(stream).ConfigureAwait(false);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ClassSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ClassSerializer.cs
index 721c7fe..b11d9bb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ClassSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ClassSerializer.cs
@@ -43,7 +43,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(GremlinType value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Fqcn, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Fqcn, stream).ConfigureAwait(false);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/DateTimeOffsetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/DateTimeOffsetSerializer.cs
index 52ffae3..ddbbe64 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/DateTimeOffsetSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/DateTimeOffsetSerializer.cs
@@ -36,13 +36,12 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <summary>
/// A serializer for the GraphBinary type Date, represented as <see cref="DateTimeOffset"/> in .NET.
/// </summary>
- public static readonly DateTimeOffsetSerializer DateSerializer = new DateTimeOffsetSerializer(DataType.Date);
+ public static readonly DateTimeOffsetSerializer DateSerializer = new(DataType.Date);
/// <summary>
/// A serializer for the GraphBinary type Timestamp, represented as <see cref="DateTimeOffset"/> in .NET.
/// </summary>
- public static readonly DateTimeOffsetSerializer TimestampSerializer =
- new DateTimeOffsetSerializer(DataType.Timestamp);
+ public static readonly DateTimeOffsetSerializer TimestampSerializer = new(DataType.Timestamp);
private DateTimeOffsetSerializer(DataType dataType) : base(dataType)
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EdgeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EdgeSerializer.cs
index 81e925c..548883e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EdgeSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EdgeSerializer.cs
@@ -42,12 +42,12 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(Edge value, Stream stream, GraphBinaryWriter writer)
{
await writer.WriteAsync(value.Id, stream).ConfigureAwait(false);
- await writer.WriteValueAsync(value.Label, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Label, stream).ConfigureAwait(false);
await writer.WriteAsync(value.InV.Id, stream).ConfigureAwait(false);
- await writer.WriteValueAsync(value.InV.Label, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.InV.Label, stream).ConfigureAwait(false);
await writer.WriteAsync(value.OutV.Id, stream).ConfigureAwait(false);
- await writer.WriteValueAsync(value.OutV.Label, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.OutV.Label, stream).ConfigureAwait(false);
// Placeholder for the parent vertex
await writer.WriteAsync(null, stream).ConfigureAwait(false);
@@ -60,12 +60,12 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task<Edge> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
var id = await reader.ReadAsync(stream).ConfigureAwait(false);
- var label = (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false);
+ var label = (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false);
var inV = new Vertex(await reader.ReadAsync(stream).ConfigureAwait(false),
- (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false));
+ (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false));
var outV = new Vertex(await reader.ReadAsync(stream).ConfigureAwait(false),
- (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false));
+ (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false));
// discard possible parent vertex
await reader.ReadAsync(stream).ConfigureAwait(false);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EnumSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EnumSerializer.cs
index d561c2a..ce1b6b8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EnumSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/EnumSerializer.cs
@@ -36,62 +36,55 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <summary>
/// A serializer for <see cref="Barrier"/> values.
/// </summary>
- public static readonly EnumSerializer<Barrier> BarrierSerializer =
- new EnumSerializer<Barrier>(DataType.Barrier, Barrier.GetByValue);
+ public static readonly EnumSerializer<Barrier> BarrierSerializer = new(DataType.Barrier, Barrier.GetByValue);
/// <summary>
/// A serializer for <see cref="Cardinality"/> values.
/// </summary>
public static readonly EnumSerializer<Cardinality> CardinalitySerializer =
- new EnumSerializer<Cardinality>(DataType.Cardinality, Cardinality.GetByValue);
+ new(DataType.Cardinality, Cardinality.GetByValue);
/// <summary>
/// A serializer for <see cref="Column"/> values.
/// </summary>
- public static readonly EnumSerializer<Column> ColumnSerializer =
- new EnumSerializer<Column>(DataType.Column, Column.GetByValue);
+ public static readonly EnumSerializer<Column> ColumnSerializer = new(DataType.Column, Column.GetByValue);
/// <summary>
/// A serializer for <see cref="Direction"/> values.
/// </summary>
public static readonly EnumSerializer<Direction> DirectionSerializer =
- new EnumSerializer<Direction>(DataType.Direction, Direction.GetByValue);
+ new(DataType.Direction, Direction.GetByValue);
/// <summary>
/// A serializer for <see cref="Operator"/> values.
/// </summary>
- public static readonly EnumSerializer<Operator> OperatorSerializer =
- new EnumSerializer<Operator>(DataType.Operator, Operator.GetByValue);
+ public static readonly EnumSerializer<Operator>
+ OperatorSerializer = new(DataType.Operator, Operator.GetByValue);
/// <summary>
/// A serializer for <see cref="Order"/> values.
/// </summary>
- public static readonly EnumSerializer<Order> OrderSerializer =
- new EnumSerializer<Order>(DataType.Order, Order.GetByValue);
+ public static readonly EnumSerializer<Order> OrderSerializer = new(DataType.Order, Order.GetByValue);
/// <summary>
/// A serializer for <see cref="Pick"/> values.
/// </summary>
- public static readonly EnumSerializer<Pick> PickSerializer =
- new EnumSerializer<Pick>(DataType.Pick, Pick.GetByValue);
+ public static readonly EnumSerializer<Pick> PickSerializer = new(DataType.Pick, Pick.GetByValue);
/// <summary>
/// A serializer for <see cref="Pop"/> values.
/// </summary>
- public static readonly EnumSerializer<Pop> PopSerializer =
- new EnumSerializer<Pop>(DataType.Pop, Pop.GetByValue);
+ public static readonly EnumSerializer<Pop> PopSerializer = new(DataType.Pop, Pop.GetByValue);
/// <summary>
/// A serializer for <see cref="Scope"/> values.
/// </summary>
- public static readonly EnumSerializer<Scope> ScopeSerializer =
- new EnumSerializer<Scope>(DataType.Scope, Scope.GetByValue);
+ public static readonly EnumSerializer<Scope> ScopeSerializer = new(DataType.Scope, Scope.GetByValue);
/// <summary>
/// A serializer for <see cref="T"/> values.
/// </summary>
- public static readonly EnumSerializer<T> TSerializer =
- new EnumSerializer<T>(DataType.T, T.GetByValue);
+ public static readonly EnumSerializer<T> TSerializer = new(DataType.T, T.GetByValue);
}
/// <summary>
@@ -117,7 +110,10 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<TEnum> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var enumValue = (string) await reader.ReadAsync(stream).ConfigureAwait(false);
+ // This should probably be `reader.ReadNonNullableValueAsync<string>(stream)` instead, but it's
+ // the same in other GLVs and changing this would be a breaking change for the GraphBinary format.
+ var enumValue = (string?) await reader.ReadAsync(stream).ConfigureAwait(false);
+ if (enumValue == null) throw new IOException($"Read null as a value for {DataType}");
return _readFunc.Invoke(enumValue);
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/GremlinType.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/GremlinType.cs
index 4484454..972a94e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/GremlinType.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/GremlinType.cs
@@ -43,7 +43,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// </summary>
public static GremlinType FromFqcn(string fqcn)
{
- return new GremlinType(fqcn);
+ return new(fqcn);
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/LambdaSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/LambdaSerializer.cs
index b7f0683..33bfd4d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/LambdaSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/LambdaSerializer.cs
@@ -42,19 +42,19 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(ILambda value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Language, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(value.LambdaExpression, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(value.Arguments, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Language, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.LambdaExpression, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Arguments, stream).ConfigureAwait(false);
}
/// <inheritdoc />
protected override async Task<ILambda> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var language = (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false);
- var expression = (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false);
+ var language = (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false);
+ var expression = (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false);
// discard the arguments
- await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
return new StringBasedLambda(expression, language);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ListSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ListSerializer.cs
index ad374e9..4bc69ce 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ListSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/ListSerializer.cs
@@ -31,7 +31,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// A generic list serializer.
/// </summary>
/// <typeparam name="TMember">The type of elements in the list.</typeparam>
- public class ListSerializer<TMember> : SimpleTypeSerializer<IList<TMember>>
+ public class ListSerializer<TMember> : SimpleTypeSerializer<IList<TMember?>>
{
/// <summary>
/// Initializes a new instance of the <see cref="ListSerializer{TList}" /> class.
@@ -41,9 +41,9 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
}
/// <inheritdoc />
- protected override async Task WriteValueAsync(IList<TMember> value, Stream stream, GraphBinaryWriter writer)
+ protected override async Task WriteValueAsync(IList<TMember?> value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Count, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Count, stream).ConfigureAwait(false);
foreach (var item in value)
{
@@ -52,13 +52,13 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
}
/// <inheritdoc />
- protected override async Task<IList<TMember>> ReadValueAsync(Stream stream, GraphBinaryReader reader)
+ protected override async Task<IList<TMember?>> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var length = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
- var result = new List<TMember>(length);
+ var length = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
+ var result = new List<TMember?>(length);
for (var i = 0; i < length; i++)
{
- result.Add((TMember) await reader.ReadAsync(stream).ConfigureAwait(false));
+ result.Add((TMember?) await reader.ReadAsync(stream).ConfigureAwait(false));
}
return result;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/MapSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/MapSerializer.cs
index 60c7e4a..6e594df 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/MapSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/MapSerializer.cs
@@ -32,7 +32,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// </summary>
/// <typeparam name="TKey">The type of keys in the dictionary.</typeparam>
/// <typeparam name="TValue">The type of values in the dictionary.</typeparam>
- public class MapSerializer<TKey, TValue> : SimpleTypeSerializer<IDictionary<TKey, TValue>>
+ public class MapSerializer<TKey, TValue> : SimpleTypeSerializer<IDictionary<TKey, TValue?>>
+ where TKey : notnull
{
/// <summary>
/// Initializes a new instance of the <see cref="MapSerializer{TKey, TValue}" /> class.
@@ -42,9 +43,9 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
}
/// <inheritdoc />
- protected override async Task WriteValueAsync(IDictionary<TKey, TValue> value, Stream stream, GraphBinaryWriter writer)
+ protected override async Task WriteValueAsync(IDictionary<TKey, TValue?> value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Count, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Count, stream).ConfigureAwait(false);
foreach (var key in value.Keys)
{
@@ -54,15 +55,16 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
}
/// <inheritdoc />
- protected override async Task<IDictionary<TKey, TValue>> ReadValueAsync(Stream stream, GraphBinaryReader reader)
+ protected override async Task<IDictionary<TKey, TValue?>> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
var length = await stream.ReadIntAsync().ConfigureAwait(false);
- var result = new Dictionary<TKey, TValue>(length);
+ var result = new Dictionary<TKey, TValue?>(length);
for (var i = 0; i < length; i++)
{
- var key = (TKey) await reader.ReadAsync(stream).ConfigureAwait(false);
- var value = (TValue) await reader.ReadAsync(stream).ConfigureAwait(false);
+ var key = (TKey?) await reader.ReadAsync(stream).ConfigureAwait(false);
+ if (key == null) throw new IOException("Read null as the key for a dictionary.");
+ var value = (TValue?) await reader.ReadAsync(stream).ConfigureAwait(false);
result.Add(key, value);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PSerializer.cs
index 194d3f7..fa379b7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PSerializer.cs
@@ -48,8 +48,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
var argsLength = value.Other == null ? args.Count : args.Count + 1;
- await writer.WriteValueAsync(value.OperatorName, stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(argsLength, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.OperatorName, stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(argsLength, stream).ConfigureAwait(false);
foreach (var arg in args)
{
@@ -65,10 +65,10 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<P> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var operatorName = (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false);
- var argsLength = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var operatorName = (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false);
+ var argsLength = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
- var args = new object[argsLength];
+ var args = new object?[argsLength];
for (var i = 0; i < argsLength; i++)
{
args[i] = await reader.ReadAsync(stream).ConfigureAwait(false);
@@ -77,23 +77,30 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
if (operatorName == "and" || operatorName == "or")
{
- return new P(operatorName, (P) args[0], (P) args[1]);
+ return new P(operatorName, SafelyConvertToP(args[0]), SafelyConvertToP(args[1]));
}
if (operatorName == "not")
{
- return new P(operatorName, (P) args[0]);
+ return new P(operatorName, SafelyConvertToP(args[0]));
}
if (argsLength == 1)
{
if (DataType == DataType.TextP)
{
- return new TextP(operatorName, (string) args[0]);
+ return new TextP(operatorName,
+ (string?) args[0] ?? throw new IOException("Read null but expected a string"));
}
return new P(operatorName, args[0]);
}
return new P(operatorName, args);
}
+
+ private static P SafelyConvertToP(object? pObject)
+ {
+ if (pObject == null) throw new IOException("Read null but expected P");
+ return (P) pObject;
+ }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PathSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PathSerializer.cs
index 70e3891..22c7e72 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PathSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PathSerializer.cs
@@ -49,7 +49,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<Path> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var readLabelObjects = (List<object>) await reader.ReadAsync(stream).ConfigureAwait(false);
+ var readLabelObjects = (List<object>?) await reader.ReadAsync(stream).ConfigureAwait(false);
+ if (readLabelObjects == null) throw new IOException("Read null, but expected a list of labels");
var labels = new List<ISet<string>>();
foreach (var labelObjectList in readLabelObjects)
{
@@ -61,8 +62,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
labels.Add(labelSet);
}
- var objects = (List<object>) await reader.ReadAsync(stream).ConfigureAwait(false);
-
+ var objects = (List<object?>?) await reader.ReadAsync(stream).ConfigureAwait(false);
+ if (objects == null) throw new IOException("Read null, but expected a list of objects");
return new Path(labels, objects);
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PropertySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PropertySerializer.cs
index cb7f5ed..89bac10 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PropertySerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/PropertySerializer.cs
@@ -41,7 +41,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(Property value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Key, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Key, stream).ConfigureAwait(false);
await writer.WriteAsync(value.Value, stream).ConfigureAwait(false);
// placeholder for the parent element
@@ -51,7 +51,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<Property> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var p = new Property((string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false),
+ var p = new Property((string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false),
await reader.ReadAsync(stream).ConfigureAwait(false));
// discard parent element
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SetSerializer.cs
index ae4a366..9347725 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SetSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SetSerializer.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <typeparam name="TSet">The type of the set to serialize.</typeparam>
/// <typeparam name="TMember">The type of elements in the set.</typeparam>
public class SetSerializer<TSet, TMember> : SimpleTypeSerializer<TSet>
- where TSet : ISet<TMember>, new()
+ where TSet : ISet<TMember?>, new()
{
/// <summary>
/// Initializes a new instance of the <see cref="SetSerializer{TSet,TMember}" /> class.
@@ -50,7 +50,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
var enumerable = (IEnumerable) value;
var list = enumerable.Cast<object>().ToList();
- await writer.WriteValueAsync(list.Count, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(list.Count, stream).ConfigureAwait(false);
foreach (var item in list)
{
@@ -61,11 +61,11 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task<TSet> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var length = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var length = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
var result = new TSet();
for (var i = 0; i < length; i++)
{
- result.Add((TMember) await reader.ReadAsync(stream).ConfigureAwait(false));
+ result.Add((TMember?) await reader.ReadAsync(stream).ConfigureAwait(false));
}
return result;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SimpleTypeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SimpleTypeSerializer.cs
index 498566b..62df4fb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SimpleTypeSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SimpleTypeSerializer.cs
@@ -45,30 +45,27 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
public DataType DataType { get; }
/// <inheritdoc />
- public async Task WriteAsync(object value, Stream stream, GraphBinaryWriter writer)
+ public async Task WriteAsync(object? value, Stream stream, GraphBinaryWriter writer)
{
- await WriteValueAsync((T) value, stream, writer, true).ConfigureAwait(false);
+ await WriteNullableValueAsync((T?) value, stream, writer).ConfigureAwait(false);
}
/// <inheritdoc />
- public async Task WriteValueAsync(object value, Stream stream, GraphBinaryWriter writer, bool nullable)
+ public async Task WriteNullableValueAsync(object? value, Stream stream, GraphBinaryWriter writer)
{
if (value == null)
{
- if (!nullable)
- {
- throw new IOException("Unexpected null value when nullable is false");
- }
-
await writer.WriteValueFlagNullAsync(stream).ConfigureAwait(false);
return;
}
- if (nullable)
- {
- await writer.WriteValueFlagNoneAsync(stream).ConfigureAwait(false);
- }
-
+ await writer.WriteValueFlagNoneAsync(stream).ConfigureAwait(false);
+ await WriteValueAsync((T) value, stream, writer).ConfigureAwait(false);
+ }
+
+ /// <inheritdoc />
+ public async Task WriteNonNullableValueAsync(object value, Stream stream, GraphBinaryWriter writer)
+ {
await WriteValueAsync((T) value, stream, writer).ConfigureAwait(false);
}
@@ -82,25 +79,28 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected abstract Task WriteValueAsync(T value, Stream stream, GraphBinaryWriter writer);
/// <inheritdoc />
- public async Task<object> ReadAsync(Stream stream, GraphBinaryReader reader)
+ public async Task<object?> ReadAsync(Stream stream, GraphBinaryReader reader)
{
- return await ReadValueAsync(stream, reader, true).ConfigureAwait(false);
+ return await ReadNullableValueAsync(stream, reader).ConfigureAwait(false);
}
/// <inheritdoc />
- public async Task<object> ReadValueAsync(Stream stream, GraphBinaryReader reader, bool nullable)
+ public async Task<object?> ReadNullableValueAsync(Stream stream, GraphBinaryReader reader)
{
- if (nullable)
+ var valueFlag = await stream.ReadByteAsync().ConfigureAwait(false);
+ if ((valueFlag & 1) == 1)
{
- var valueFlag = await stream.ReadByteAsync().ConfigureAwait(false);
- if ((valueFlag & 1) == 1)
- {
- return null;
- }
+ return null;
}
return await ReadValueAsync(stream, reader).ConfigureAwait(false);
}
+
+ /// <inheritdoc />
+ public async Task<object> ReadNonNullableValueAsync(Stream stream, GraphBinaryReader reader)
+ {
+ return (await ReadValueAsync(stream, reader).ConfigureAwait(false))!;
+ }
/// <summary>
/// Reads a non-nullable value according to the type format.
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SingleTypeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SingleTypeSerializer.cs
index c2c9f58..0a368c6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SingleTypeSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/SingleTypeSerializer.cs
@@ -36,48 +36,44 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <summary>
/// A serializer for <see cref="int"/> values.
/// </summary>
- public static readonly SingleTypeSerializer<int> IntSerializer = new SingleTypeSerializer<int>(DataType.Int,
- (value, stream) => stream.WriteIntAsync(value), stream => stream.ReadIntAsync());
-
+ public static readonly SingleTypeSerializer<int> IntSerializer =
+ new(DataType.Int, (value, stream) => stream.WriteIntAsync(value), stream => stream.ReadIntAsync());
+
/// <summary>
/// A serializer for <see cref="long"/> values.
/// </summary>
- public static readonly SingleTypeSerializer<long> LongSerializer = new SingleTypeSerializer<long>(DataType.Long,
- (value, stream) => stream.WriteLongAsync(value), stream => stream.ReadLongAsync());
+ public static readonly SingleTypeSerializer<long> LongSerializer =
+ new(DataType.Long, (value, stream) => stream.WriteLongAsync(value), stream => stream.ReadLongAsync());
/// <summary>
/// A serializer for <see cref="double"/> values.
/// </summary>
public static readonly SingleTypeSerializer<double> DoubleSerializer =
- new SingleTypeSerializer<double>(DataType.Double, (value, stream) => stream.WriteDoubleAsync(value),
- stream => stream.ReadDoubleAsync());
+ new(DataType.Double, (value, stream) => stream.WriteDoubleAsync(value), stream => stream.ReadDoubleAsync());
/// <summary>
/// A serializer for <see cref="float"/> values.
/// </summary>
public static readonly SingleTypeSerializer<float> FloatSerializer =
- new SingleTypeSerializer<float>(DataType.Float, (value, stream) => stream.WriteFloatAsync(value),
- stream => stream.ReadFloatAsync());
+ new(DataType.Float, (value, stream) => stream.WriteFloatAsync(value), stream => stream.ReadFloatAsync());
/// <summary>
/// A serializer for <see cref="short"/> values.
/// </summary>
public static readonly SingleTypeSerializer<short> ShortSerializer =
- new SingleTypeSerializer<short>(DataType.Short, (value, stream) => stream.WriteShortAsync(value),
- stream => stream.ReadShortAsync());
+ new(DataType.Short, (value, stream) => stream.WriteShortAsync(value), stream => stream.ReadShortAsync());
/// <summary>
/// A serializer for <see cref="bool"/> values.
/// </summary>
public static readonly SingleTypeSerializer<bool> BooleanSerializer =
- new SingleTypeSerializer<bool>(DataType.Boolean, (value, stream) => stream.WriteBoolAsync(value),
- stream => stream.ReadBoolAsync());
+ new(DataType.Boolean, (value, stream) => stream.WriteBoolAsync(value), stream => stream.ReadBoolAsync());
/// <summary>
/// A serializer for <see cref="byte"/> values.
/// </summary>
- public static readonly SingleTypeSerializer<byte> ByteSerializer = new SingleTypeSerializer<byte>(DataType.Byte,
- (value, stream) => stream.WriteByteAsync(value), stream => stream.ReadByteAsync());
+ public static readonly SingleTypeSerializer<byte> ByteSerializer =
+ new(DataType.Byte, (value, stream) => stream.WriteByteAsync(value), stream => stream.ReadByteAsync());
}
/// <summary>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/StringSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/StringSerializer.cs
index c8d8dca..072ffa1 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/StringSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/StringSerializer.cs
@@ -43,14 +43,14 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(string value, Stream stream, GraphBinaryWriter writer)
{
var bytes = Encoding.UTF8.GetBytes(value);
- await writer.WriteValueAsync(bytes.Length, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(bytes.Length, stream).ConfigureAwait(false);
await stream.WriteAsync(bytes).ConfigureAwait(false);
}
/// <inheritdoc />
protected override async Task<string> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var length = (int) await reader.ReadValueAsync<int>(stream, false).ConfigureAwait(false);
+ var length = (int) await reader.ReadNonNullableValueAsync<int>(stream).ConfigureAwait(false);
var bytes = new byte[length];
await stream.ReadAsync(bytes, 0, length).ConfigureAwait(false);
return Encoding.UTF8.GetString(bytes);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalSerializer.cs
index d6fe159..dadc7b0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalSerializer.cs
@@ -43,7 +43,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(ITraversal value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Bytecode, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Bytecode, stream).ConfigureAwait(false);
}
/// <summary>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalStrategySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalStrategySerializer.cs
index af6e792..6d66136 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalStrategySerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraversalStrategySerializer.cs
@@ -44,8 +44,8 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(AbstractTraversalStrategy value, Stream stream,
GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(GremlinType.FromFqcn(value.Fqcn), stream, false).ConfigureAwait(false);
- await writer.WriteValueAsync(value.Configuration, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(GremlinType.FromFqcn(value.Fqcn), stream).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Configuration, stream).ConfigureAwait(false);
}
/// <summary>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraverserSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraverserSerializer.cs
index 8318813..2d24d4c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraverserSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TraverserSerializer.cs
@@ -42,14 +42,14 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
/// <inheritdoc />
protected override async Task WriteValueAsync(Traverser value, Stream stream, GraphBinaryWriter writer)
{
- await writer.WriteValueAsync(value.Bulk, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Bulk, stream).ConfigureAwait(false);
await writer.WriteAsync(value.Object, stream).ConfigureAwait(false);
}
/// <inheritdoc />
protected override async Task<Traverser> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
- var bulk = (long) await reader.ReadValueAsync<long>(stream, false).ConfigureAwait(false);
+ var bulk = (long) await reader.ReadNonNullableValueAsync<long>(stream).ConfigureAwait(false);
var v = await reader.ReadAsync(stream).ConfigureAwait(false);
return new Traverser(v, bulk);
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TypeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TypeSerializer.cs
index 7723942..e499dfb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TypeSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/TypeSerializer.cs
@@ -46,8 +46,10 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
{
if (typeof(AbstractTraversalStrategy).IsAssignableFrom(value))
{
- var strategyInstance = (AbstractTraversalStrategy) Activator.CreateInstance(value);
- await writer.WriteValueAsync(strategyInstance.Fqcn, stream, false).ConfigureAwait(false);
+ var strategyInstance = (AbstractTraversalStrategy?) Activator.CreateInstance(value) ??
+ throw new IOException(
+ $"Cannot write the strategy {value} because an instance of that strategy could not be created");
+ await writer.WriteNonNullableValueAsync(strategyInstance.Fqcn, stream).ConfigureAwait(false);
}
else
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexPropertySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexPropertySerializer.cs
index f14cfd8..27ab4b2 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexPropertySerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexPropertySerializer.cs
@@ -42,7 +42,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(VertexProperty value, Stream stream, GraphBinaryWriter writer)
{
await writer.WriteAsync(value.Id, stream).ConfigureAwait(false);
- await writer.WriteValueAsync(value.Label, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Label, stream).ConfigureAwait(false);
await writer.WriteAsync(value.Value, stream).ConfigureAwait(false);
// placeholder for the parent vertex
@@ -57,7 +57,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task<VertexProperty> ReadValueAsync(Stream stream, GraphBinaryReader reader)
{
var vp = new VertexProperty(await reader.ReadAsync(stream).ConfigureAwait(false),
- (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false),
+ (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false),
await reader.ReadAsync(stream).ConfigureAwait(false));
// discard the parent vertex
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexSerializer.cs
index f4fc704..3a745ab 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphBinary/Types/VertexSerializer.cs
@@ -42,7 +42,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
protected override async Task WriteValueAsync(Vertex value, Stream stream, GraphBinaryWriter writer)
{
await writer.WriteAsync(value.Id, stream).ConfigureAwait(false);
- await writer.WriteValueAsync(value.Label, stream, false).ConfigureAwait(false);
+ await writer.WriteNonNullableValueAsync(value.Label, stream).ConfigureAwait(false);
await writer.WriteAsync(null, stream).ConfigureAwait(false);
}
@@ -51,7 +51,7 @@ namespace Gremlin.Net.Structure.IO.GraphBinary.Types
{
var v = new Vertex(await reader.ReadAsync(stream).ConfigureAwait(false),
- (string) await reader.ReadValueAsync<string>(stream, false).ConfigureAwait(false));
+ (string) await reader.ReadNonNullableValueAsync<string>(stream).ConfigureAwait(false));
// discard properties
await reader.ReadAsync(stream).ConfigureAwait(false);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs
index a3f1ff6..36ea1fd 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs
@@ -21,6 +21,7 @@
#endregion
+using System.IO;
using System.Numerics;
using System.Text.Json;
@@ -31,6 +32,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
public dynamic Objectify(JsonElement graphson, GraphSONReader reader)
{
var bigInteger = graphson.ValueKind == JsonValueKind.String ? graphson.GetString() : graphson.GetRawText();
+ if (bigInteger == null) throw new IOException("Read null, but expected a BigInteger string representation");
return BigInteger.Parse(bigInteger);
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BindingSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BindingSerializer.cs
index d183447..a430c82 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BindingSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BindingSerializer.cs
@@ -30,7 +30,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
{
- var binding = (Binding) objectData;
+ Binding binding = objectData;
var valueDict = new Dictionary<string, object>
{
{"value", writer.ToDict(binding.Value)},
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs
index 539224a..8f876b6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs
@@ -42,7 +42,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
// previous versions.
return Enumerable.Range(0, graphsonObject.GetArrayLength() / 2).SelectMany<int, object>(i =>
Enumerable.Repeat<object>(reader.ToObject(graphsonObject[i * 2]),
- (int) reader.ToObject(graphsonObject[i * 2 + 1]))).ToList();
+ (int) reader.ToObject(graphsonObject[i * 2 + 1])!)).ToList();
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferDeserializer.cs
index 0feb3a2..adb4efa 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferDeserializer.cs
@@ -21,6 +21,7 @@
#endregion
using System;
+using System.IO;
using System.Text.Json;
namespace Gremlin.Net.Structure.IO.GraphSON
@@ -30,7 +31,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
{
var base64String = graphsonObject.GetString();
- return Convert.FromBase64String(base64String);
+ return Convert.FromBase64String(base64String ??
+ throw new IOException("Read null but expected a base64 byte string"));
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/CharConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/CharConverter.cs
index 0c3e539..b86cf15 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/CharConverter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/CharConverter.cs
@@ -20,6 +20,7 @@
*/
#endregion
+using System.IO;
using System.Text.Json;
namespace Gremlin.Net.Structure.IO.GraphSON
@@ -31,7 +32,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
protected override bool StringifyValue => true;
protected override dynamic FromJsonElement(JsonElement graphson)
{
- var deserializedByte = graphson.GetString();
+ var deserializedByte = graphson.GetString() ?? throw new IOException("Read null but expected a string");
return deserializedByte[0];
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs
index 39d1abe..1233211 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs
@@ -23,6 +23,7 @@
using System;
using System.Collections.Generic;
+using System.IO;
namespace Gremlin.Net.Structure.IO.GraphSON
{
@@ -30,8 +31,13 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
{
- var type = (Type) objectData;
- return writer.ToDict(Activator.CreateInstance(type));
+ Type type = objectData;
+ var dictifiedObject = writer.ToDict(Activator.CreateInstance(type));
+ if (dictifiedObject == null)
+ {
+ throw new IOException($"Could not write type {objectData}, maybe it is not a supported type");
+ }
+ return dictifiedObject;
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DateDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DateDeserializer.cs
index bc5bf61..0c6e5bc 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DateDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DateDeserializer.cs
@@ -27,7 +27,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
internal class DateDeserializer : IGraphSONDeserializer
{
- private static readonly DateTimeOffset UnixStart = new DateTimeOffset(1970, 1, 1, 0, 0, 0, 0, TimeSpan.Zero);
+ private static readonly DateTimeOffset UnixStart = new(1970, 1, 1, 0, 0, 0, 0, TimeSpan.Zero);
public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs
index f195522..1e540cf 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs
@@ -21,7 +21,9 @@
#endregion
+using System;
using System.Globalization;
+using System.IO;
using System.Text.Json;
namespace Gremlin.Net.Structure.IO.GraphSON
@@ -35,7 +37,9 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
if (graphson.ValueKind == JsonValueKind.String)
{
- return decimal.Parse(graphson.GetString(), CultureInfo.InvariantCulture);
+ return decimal.Parse(
+ graphson.GetString() ?? throw new IOException("Read null but expected a decimal string"),
+ CultureInfo.InvariantCulture);
}
return graphson.GetDecimal();
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs
index 34d4f61..6835169 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs
@@ -21,6 +21,7 @@
#endregion
+using System.IO;
using System.Text.Json;
using Gremlin.Net.Process.Traversal;
@@ -30,7 +31,9 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
{
- return Direction.GetByValue(graphsonObject.GetString());
+ return Direction.GetByValue(graphsonObject.GetString() ??
+ throw new IOException(
+ $"Read null but expected a {nameof(Direction)} string representation"));
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationDeserializer.cs
index 2c1d17f..5121093 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationDeserializer.cs
@@ -21,6 +21,7 @@
#endregion
+using System.IO;
using System.Text.Json;
using System.Xml;
@@ -30,7 +31,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
{
- var duration = graphsonObject.GetString();
+ var duration = graphsonObject.GetString() ??
+ throw new IOException("Read null but expected a Duration string representation");
return XmlConvert.ToTimeSpan(duration);
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs
index c0c36b1..7f9d7bd 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// </summary>
/// <param name="graphSONReader">The <see cref="GraphSON2Reader"/> used to deserialize from GraphSON.</param>
/// <param name="graphSONWriter">The <see cref="GraphSON2Writer"/> used to serialize to GraphSON.</param>
- public GraphSON2MessageSerializer(GraphSON2Reader graphSONReader = null, GraphSON2Writer graphSONWriter = null)
+ public GraphSON2MessageSerializer(GraphSON2Reader? graphSONReader = null, GraphSON2Writer? graphSONWriter = null)
: base(MimeType, graphSONReader ?? new GraphSON2Reader(), graphSONWriter ?? new GraphSON2Writer())
{
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs
index abb6a75..bc434c7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// </summary>
/// <param name="graphSONReader">The <see cref="GraphSON3Reader"/> used to deserialize from GraphSON.</param>
/// <param name="graphSONWriter">The <see cref="GraphSON3Writer"/> used to serialize to GraphSON.</param>
- public GraphSON3MessageSerializer(GraphSON3Reader graphSONReader = null, GraphSON3Writer graphSONWriter = null)
+ public GraphSON3MessageSerializer(GraphSON3Reader? graphSONReader = null, GraphSON3Writer? graphSONWriter = null)
: base(MimeType, graphSONReader ?? new GraphSON3Reader(), graphSONWriter ?? new GraphSON3Writer())
{
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs
index 817cdee..3a158e2 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs
@@ -23,6 +23,7 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
@@ -72,12 +73,12 @@ namespace Gremlin.Net.Structure.IO.GraphSON
public virtual Task<ResponseMessage<List<object>>> DeserializeMessageAsync(byte[] message)
{
if (message == null) throw new ArgumentNullException(nameof(message));
- if (message.Length == 0) return Task.FromResult<ResponseMessage<List<object>>>(null);
+ if (message.Length == 0) throw new IOException("Cannot deserialize an empty response message");
var reader = new Utf8JsonReader(message);
var responseMessage =
JsonSerializer.Deserialize<ResponseMessage<JsonElement>>(ref reader, JsonDeserializingOptions);
- if (responseMessage == null) return Task.FromResult<ResponseMessage<List<object>>>(null);;
+ if (responseMessage == null) throw new IOException("Message could not be deserialized / is empty");
var data = _graphSONReader.ToObject(responseMessage.Result.Data);
return Task.FromResult(CopyMessageWithNewData(responseMessage, data));
@@ -86,16 +87,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
private static ResponseMessage<List<object>> CopyMessageWithNewData(ResponseMessage<JsonElement> origMsg,
dynamic data)
{
- return new ResponseMessage<List<object>>
- {
- RequestId = origMsg.RequestId,
- Status = origMsg.Status,
- Result = new ResponseResult<List<object>>
- {
- Data = data == null ? null : new List<object>(data),
- Meta = origMsg.Result.Meta
- }
- };
+ return new(origMsg.RequestId, origMsg.Status, new ResponseResult<List<object>>(
+ data == null ? null : new List<object>(data), origMsg.Result.Meta));
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
index 16901bd..e76a574 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
@@ -23,6 +23,7 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text.Json;
@@ -36,9 +37,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// <summary>
/// Contains the <see cref="IGraphSONDeserializer" /> instances by their type identifier.
/// </summary>
- protected readonly Dictionary<string, IGraphSONDeserializer> Deserializers = new Dictionary
- <string, IGraphSONDeserializer>
- {
+ protected readonly Dictionary<string, IGraphSONDeserializer> Deserializers = new()
+ {
{"g:Traverser", new TraverserReader()},
{"g:Int32", new Int32Converter()},
{"g:Int64", new Int64Converter()},
@@ -100,7 +100,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// </summary>
/// <param name="graphSon">The GraphSON to deserialize.</param>
/// <returns>The deserialized object.</returns>
- public virtual dynamic ToObject(JsonElement graphSon)
+ public virtual dynamic? ToObject(JsonElement graphSon)
{
switch (graphSon.ValueKind)
{
@@ -123,13 +123,15 @@ namespace Gremlin.Net.Structure.IO.GraphSON
if (graphSon.TryGetProperty(GraphSONTokens.TypeKey, out var graphSonTypeProperty))
{
- return ReadValueOfType(graphSon, graphSonTypeProperty.GetString());
+ return ReadValueOfType(graphSon,
+ graphSonTypeProperty.GetString() ??
+ throw new IOException("Read GraphSON type key is not a string"));
}
return ReadDictionary(graphSon);
}
- private dynamic ReadValueOfType(JsonElement typedValue, string graphSONType)
+ private dynamic? ReadValueOfType(JsonElement typedValue, string graphSONType)
{
if (!Deserializers.TryGetValue(graphSONType, out var deserializer))
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs
index 8beb850..a8ed3d8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs
@@ -25,8 +25,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
internal class GraphSONTokens
{
- public static string TypeKey = "@type";
- public static string ValueKey = "@value";
- public static string GremlinTypeNamespace = "g";
+ public const string TypeKey = "@type";
+ public const string ValueKey = "@value";
+ public const string GremlinTypeNamespace = "g";
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
index ccdd47a..bb08ec1 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
@@ -24,6 +24,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using Gremlin.Net.Driver;
namespace Gremlin.Net.Structure.IO.GraphSON
{
@@ -39,7 +40,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// <param name="value">The value to transform.</param>
/// <param name="prefix">A namespace prefix for the typename.</param>
/// <returns>The GraphSON representation including type information.</returns>
- public static Dictionary<string, dynamic> ToTypedValue(string typename, dynamic value, string prefix = "g")
+ public static Dictionary<string, dynamic> ToTypedValue(string typename, dynamic? value,
+ string prefix = GraphSONTokens.GremlinTypeNamespace)
{
var typedValue = new Dictionary<string, dynamic>
{
@@ -67,8 +69,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
internal static Dictionary<string, dynamic> ToCollection(dynamic objectData, GraphSONWriter writer,
string typename)
{
- var collection = objectData as IEnumerable;
- if (collection == null)
+ if (objectData is not IEnumerable collection)
{
throw new InvalidOperationException("Object must implement IEnumerable");
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
index dd4fa27..9b853b0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
@@ -39,15 +39,14 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// </summary>
public abstract class GraphSONWriter
{
- private static readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions
+ private static readonly JsonSerializerOptions JsonOptions = new()
{Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping};
/// <summary>
/// Contains the information of serializers by type.
/// </summary>
- protected readonly Dictionary<Type, IGraphSONSerializer> Serializers = new Dictionary
- <Type, IGraphSONSerializer>
- {
+ protected readonly Dictionary<Type, IGraphSONSerializer> Serializers = new()
+ {
{typeof(ITraversal), new TraversalSerializer()},
{typeof(Bytecode), new BytecodeSerializer()},
{typeof(Binding), new BindingSerializer()},
@@ -106,7 +105,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// <returns>The serialized GraphSON.</returns>
public virtual string WriteObject(dynamic objectData)
{
- return JsonSerializer.Serialize(ToDict(objectData), _jsonOptions);
+ return JsonSerializer.Serialize(ToDict(objectData), JsonOptions);
}
/// <summary>
@@ -114,7 +113,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// </summary>
/// <param name="objectData">The object to transform.</param>
/// <returns>A GraphSON representation of the object ready to be serialized.</returns>
- public dynamic ToDict(dynamic objectData)
+ public dynamic? ToDict(dynamic? objectData)
{
if (objectData != null)
{
@@ -132,7 +131,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
return objectData;
}
- private IGraphSONSerializer TryGetSerializerFor(Type type)
+ private IGraphSONSerializer? TryGetSerializerFor(Type type)
{
if (Serializers.ContainsKey(type))
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs
index e0c4993..dc9589b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs
@@ -36,6 +36,6 @@ namespace Gremlin.Net.Structure.IO.GraphSON
/// <param name="graphsonObject">The GraphSON object to objectify.</param>
/// <param name="reader">A <see cref="GraphSONReader" /> that can be used to objectify properties of the GraphSON object.</param>
/// <returns>The deserialized object.</returns>
- dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader);
+ dynamic? Objectify(JsonElement graphsonObject, GraphSONReader reader);
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
index add8eb5..1f22856 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
return EmptyList;
}
- var result = new object[graphsonObject.GetArrayLength()];
+ var result = new object?[graphsonObject.GetArrayLength()];
for (var i = 0; i < result.Length; i++)
{
result[i] = reader.ToObject(graphsonObject[i]);
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
index 99165a7..611fc21 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
return new Dictionary<object, object>(0);
}
- var result = new Dictionary<object, object>(graphsonObject.GetArrayLength() / 2);
+ var result = new Dictionary<object, object?>(graphsonObject.GetArrayLength() / 2);
for (var i = 0; i < graphsonObject.GetArrayLength(); i += 2)
{
result[reader.ToObject(graphsonObject[i])] = reader.ToObject(graphsonObject[i + 1]);
@@ -47,11 +47,11 @@ namespace Gremlin.Net.Structure.IO.GraphSON
public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
{
- if (!(objectData is IDictionary map))
+ if (objectData is not IDictionary map)
{
throw new InvalidOperationException("Object must implement IDictionary");
}
- var result = new object[map.Count * 2];
+ var result = new object?[map.Count * 2];
var index = 0;
foreach (var key in map.Keys)
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs
index 4492685..af1951d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs
@@ -28,6 +28,7 @@ using System.Text.Json;
namespace Gremlin.Net.Structure.IO.GraphSON
{
internal abstract class NumberConverter<T> : IGraphSONDeserializer, IGraphSONSerializer
+ where T : notnull
{
protected abstract string GraphSONTypeName { get; }
protected virtual string Prefix => "g";
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs
index d05663b..d0f3c14 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs
@@ -22,6 +22,7 @@
#endregion
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text.Json;
@@ -32,12 +33,14 @@ namespace Gremlin.Net.Structure.IO.GraphSON
public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
{
// "labels" is a object[] where each item is ISet<object>
- var labelProperty = (object[])reader.ToObject(graphsonObject.GetProperty("labels"));
+ var labelProperty = (object[]?) reader.ToObject(graphsonObject.GetProperty("labels"));
+ if (labelProperty == null) throw new IOException($"Could not read the labels for the {nameof(Path)}");
var labels = labelProperty
.Select(x => new HashSet<string>(((ISet<object>)x).Cast<string>()))
.ToList<ISet<string>>();
- // "objects" is an object[]
- object[] objects = reader.ToObject(graphsonObject.GetProperty("objects"));
+ // "objects" is an object?[]
+ object?[] objects = reader.ToObject(graphsonObject.GetProperty("objects")) ??
+ throw new IOException($"Could not read the objects for the {nameof(Path)}");
return new Path(labels, objects);
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs
index 3a37f66..baa9722 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs
@@ -22,6 +22,7 @@
#endregion
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text.Json;
@@ -34,7 +35,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
var labels =
graphsonObject.GetProperty("labels").EnumerateArray()
.Select(readObjLabels =>
- new HashSet<string>(readObjLabels.EnumerateArray().Select(l => l.GetString())))
+ new HashSet<string>(readObjLabels.EnumerateArray().Select(l =>
+ l.GetString() ?? throw new IOException("Read null but expected a Path label"))))
.ToList<ISet<string>>();
var objects = graphsonObject.GetProperty("objects").EnumerateArray().Select(o => reader.ToObject(o))
.ToList();
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs
index 0a7e6f8..bfe7a7a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs
@@ -22,6 +22,7 @@
#endregion
using System.Collections.Generic;
+using System.IO;
namespace Gremlin.Net.Structure.IO.GraphSON
{
@@ -40,11 +41,16 @@ namespace Gremlin.Net.Structure.IO.GraphSON
return GraphSONUtil.ToTypedValue(nameof(Property), valueDict);
}
- private dynamic CreateElementDict(Element element, GraphSONWriter writer)
+ private dynamic? CreateElementDict(Element? element, GraphSONWriter writer)
{
if (element == null)
return null;
var serializedElement = writer.ToDict(element);
+ if (serializedElement == null)
+ {
+ throw new IOException(
+ $"Could not write the {nameof(Property.Element)} of this {nameof(Property)}, {nameof(Property.Element)}: {element}");
+ }
Dictionary<string, dynamic> elementDict = serializedElement;
if (elementDict.ContainsKey(GraphSONTokens.ValueKey))
{
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
index 590392e..fce7465 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
return new HashSet<object>();
}
// ISet<object>
- return new HashSet<object>(graphsonObject.EnumerateArray().Select(reader.ToObject));
+ return new HashSet<object?>(graphsonObject.EnumerateArray().Select(reader.ToObject));
}
public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs
index efbc542..6884083 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs
@@ -21,6 +21,7 @@
#endregion
+using System.IO;
using System.Text.Json;
using Gremlin.Net.Process.Traversal;
@@ -30,7 +31,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
{
- return T.GetByValue(graphsonObject.GetString());
+ return T.GetByValue(graphsonObject.GetString() ??
+ throw new IOException($"Read null but expected a {nameof(T)} string representation"));
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs
index cc809aa..24ab676 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs
@@ -22,6 +22,7 @@
#endregion
using System.Collections.Generic;
+using System.IO;
using Gremlin.Net.Process.Traversal;
namespace Gremlin.Net.Structure.IO.GraphSON
@@ -32,7 +33,13 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
ITraversal traversal = objectData;
var bytecode = traversal.Bytecode;
- return writer.ToDict(bytecode);
+ var dictifiedObject = writer.ToDict(bytecode);
+ if (dictifiedObject == null)
+ {
+ throw new IOException(
+ $"Could not write the traversal as its {nameof(ITraversal.Bytecode)} was written as null");
+ }
+ return dictifiedObject;
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidDeserializer.cs
index 58caac7..a3de518 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidDeserializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidDeserializer.cs
@@ -22,6 +22,7 @@
#endregion
using System;
+using System.IO;
using System.Text.Json;
namespace Gremlin.Net.Structure.IO.GraphSON
@@ -32,7 +33,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
var uuidString = graphsonObject.GetString();
- return Guid.Parse(uuidString);
+ return Guid.Parse(
+ uuidString ?? throw new IOException("Read null but expected a GUID string representation"));
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertySerializer.cs
index 12cc7ac..6000d35 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertySerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertySerializer.cs
@@ -34,9 +34,12 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{
{"id", writer.ToDict(vertexProperty.Id)},
{"label", vertexProperty.Label},
- {"value", writer.ToDict(vertexProperty.Value)},
- {"vertex", writer.ToDict(vertexProperty.Vertex.Id)}
+ {"value", writer.ToDict(vertexProperty.Value)}
};
+ if (vertexProperty.Vertex != null)
+ {
+ valueDict.Add("vertex", writer.ToDict(vertexProperty.Vertex.Id));
+ }
return GraphSONUtil.ToTypedValue(nameof(VertexProperty), valueDict);
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
index d205a88..ea71ef2 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
@@ -24,6 +24,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Gremlin.Net.Process.Traversal;
@@ -36,14 +37,14 @@ namespace Gremlin.Net.Structure
/// In abstraction, any Path implementation maintains two lists: a list of sets of labels and a list of objects.
/// The list of labels are the labels of the steps traversed. The list of objects are the objects traversed.
/// </remarks>
- public class Path : IReadOnlyList<object>, IEquatable<Path>
+ public class Path : IReadOnlyList<object?>, IEquatable<Path>
{
/// <summary>
/// Initializes a new instance of the <see cref="Path" /> class.
/// </summary>
/// <param name="labels">The labels associated with the path</param>
/// <param name="objects">The objects in the <see cref="Path" />.</param>
- public Path(IList<ISet<string>> labels, IList<object> objects)
+ public Path(IList<ISet<string>> labels, IList<object?> objects)
{
Labels = labels;
Objects = objects;
@@ -57,7 +58,7 @@ namespace Gremlin.Net.Structure
/// <summary>
/// Gets an ordered list of the objects in the <see cref="Path" />.
/// </summary>
- public IList<object> Objects { get; }
+ public IList<object?> Objects { get; }
/// <summary>
/// Gets the object associated with the particular label of the path.
@@ -70,15 +71,15 @@ namespace Gremlin.Net.Structure
{
get
{
- var objFound = TryGetValue(label, out object obj);
+ var objFound = TryGetValue(label, out var obj);
if (!objFound)
throw new KeyNotFoundException($"The step with label {label} does not exist");
- return obj;
+ return obj!;
}
}
/// <inheritdoc />
- public bool Equals(Path other)
+ public bool Equals(Path? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -90,7 +91,7 @@ namespace Gremlin.Net.Structure
/// </summary>
/// <param name="index">The index of the path</param>
/// <returns>The object associated with the index of the path</returns>
- public dynamic this[int index] => Objects[index];
+ public dynamic? this[int index] => Objects[index];
/// <summary>
/// Gets the number of steps in the path.
@@ -131,7 +132,7 @@ namespace Gremlin.Net.Structure
/// <param name="label">The label of the path.</param>
/// <param name="value">The object associated with the label of the path.</param>
/// <returns>True, if an object was found for the label.</returns>
- public bool TryGetValue(string label, out object value)
+ public bool TryGetValue(string label, [NotNullWhen(true)] out object? value)
{
value = null;
for (var i = 0; i < Labels.Count; i++)
@@ -139,43 +140,42 @@ namespace Gremlin.Net.Structure
if (!Labels[i].Contains(label)) continue;
if (value == null)
value = Objects[i];
- else if (value.GetType() == typeof(List<object>))
- ((List<object>) value).Add(Objects[i]);
+ else if (value.GetType() == typeof(List<object?>))
+ ((List<object?>) value).Add(Objects[i]);
else
- value = new List<object> {value, Objects[i]};
+ value = new List<object?> {value, Objects[i]};
}
return value != null;
}
- private bool ObjectsEqual(ICollection<object> otherObjects)
+ private bool ObjectsEqual(ICollection<object?> otherObjects)
{
- if (Objects == null)
- return otherObjects == null;
return Objects.SequenceEqual(otherObjects);
}
private bool LabelsEqual(ICollection<ISet<string>> otherLabels)
{
- if (Labels == null)
- return otherLabels == null;
if (Labels.Count != otherLabels.Count)
return false;
- using (var enumOther = otherLabels.GetEnumerator())
- using (var enumThis = Labels.GetEnumerator())
+ using var enumOther = otherLabels.GetEnumerator();
+ using var enumThis = Labels.GetEnumerator();
+ while (enumOther.MoveNext() && enumThis.MoveNext())
{
- while (enumOther.MoveNext() && enumThis.MoveNext())
+ if (enumOther.Current == null || enumThis.Current == null)
{
- if (!enumOther.Current.SequenceEqual(enumThis.Current))
- {
- return false;
- }
+ return enumOther.Current != enumThis.Current;
+ }
+ if (!enumOther.Current.SequenceEqual(enumThis.Current))
+ {
+ return false;
}
}
+
return true;
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
@@ -189,13 +189,11 @@ namespace Gremlin.Net.Structure
unchecked
{
var hashCode = 19;
- if (Labels != null)
- hashCode = Labels.Where(objLabels => objLabels != null)
- .Aggregate(hashCode,
- (current1, objLabels) => objLabels.Aggregate(current1,
- (current, label) => current * 31 + label.GetHashCode()));
- if (Objects != null)
- hashCode = Objects.Aggregate(hashCode, (current, obj) => current * 31 + obj.GetHashCode());
+ hashCode = Labels.Aggregate(hashCode,
+ (current1, objLabels) => objLabels.Aggregate(current1,
+ (current, label) => current * 31 + label.GetHashCode()));
+ hashCode = Objects.Aggregate(hashCode,
+ (current, obj) => current * 31 + (obj == null ? 0 : obj.GetHashCode()));
return hashCode;
}
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Property.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Property.cs
index b2adee7..291287d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Property.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Property.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Structure
/// <param name="key">The key of the property.</param>
/// <param name="value">The value of the property.</param>
/// <param name="element">The (optional) element that the property is associated with.</param>
- public Property(string key, dynamic value, Element element = null)
+ public Property(string key, dynamic? value, Element? element = null)
{
Key = key;
Value = value;
@@ -51,15 +51,15 @@ namespace Gremlin.Net.Structure
/// <summary>
/// Gets the value of the property.
/// </summary>
- public dynamic Value { get; }
+ public dynamic? Value { get; }
/// <summary>
/// Gets the element that this property is associated with.
/// </summary>
- public Element Element { get; }
+ public Element? Element { get; }
/// <inheritdoc />
- public bool Equals(Property other)
+ public bool Equals(Property? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
@@ -73,7 +73,7 @@ namespace Gremlin.Net.Structure
}
/// <inheritdoc />
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Vertex.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Vertex.cs
index f667d26..b48fe15 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Vertex.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Vertex.cs
@@ -38,7 +38,7 @@ namespace Gremlin.Net.Structure
/// </summary>
/// <param name="id">The id of the vertex.</param>
/// <param name="label">The label of the vertex.</param>
- public Vertex(object id, string label = DefaultLabel)
+ public Vertex(object? id, string label = DefaultLabel)
: base(id, label)
{
}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/VertexProperty.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/VertexProperty.cs
index a8dd943..a01aaa9 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/VertexProperty.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/VertexProperty.cs
@@ -35,7 +35,7 @@ namespace Gremlin.Net.Structure
/// <param name="label">The label of the vertex property.</param>
/// <param name="value">The id of the vertex property.</param>
/// <param name="vertex">The (optional) <see cref="Vertex" /> that owns this <see cref="VertexProperty" />.</param>
- public VertexProperty(object id, string label, dynamic value, Vertex vertex = null)
+ public VertexProperty(object? id, string label, dynamic? value, Vertex? vertex = null)
: base(id, label)
{
Value = value;
@@ -45,12 +45,12 @@ namespace Gremlin.Net.Structure
/// <summary>
/// The value of this <see cref="VertexProperty" />.
/// </summary>
- public dynamic Value { get; }
+ public dynamic? Value { get; }
/// <summary>
/// The <see cref="Vertex" /> that owns this <see cref="VertexProperty" />.
/// </summary>
- public Vertex Vertex { get; }
+ public Vertex? Vertex { get; }
/// <summary>
/// The key of this <see cref="VertexProperty" />.
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 2c89923..6c47d2b 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -93,7 +93,7 @@ file.write(file.getText("UTF-8").replaceFirst(/<version>(.*)<\/version&
<packaging.type>pom</packaging.type>
</properties>
</profile>
- <!-- activates the building of .NET components and requires that the .NET Core SDK be installed on the system -->
+ <!-- activates the building of .NET components and requires that the .NET SDK be installed on the system -->
<profile>
<id>gremlin-dotnet</id>
<activation>
diff --git a/gremlin-dotnet/test/Gremlin.Net.Benchmarks/Gremlin.Net.Benchmarks.csproj b/gremlin-dotnet/test/Gremlin.Net.Benchmarks/Gremlin.Net.Benchmarks.csproj
index 53f21d0..db59b7e 100644
--- a/gremlin-dotnet/test/Gremlin.Net.Benchmarks/Gremlin.Net.Benchmarks.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.Benchmarks/Gremlin.Net.Benchmarks.csproj
@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/ScenarioData.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/ScenarioData.cs
index e669e60..e6c441b 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/ScenarioData.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/ScenarioData.cs
@@ -104,7 +104,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
// Property name might not exist and C# doesn't support "null" keys in Dictionary
if (g.V().Count().Next() == g.V().Has("name").Count().Next())
{
- return g.V().Group<string, object>().By("name").By(__.Tail<Vertex>()).Next()
+ return g.V().Group<string, object>().By("name").By(__.Tail<Vertex>()).Next()!
.ToDictionary(kv => kv.Key, kv => (Vertex) kv.Value);
}
else
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
index afbaf8e..1a13d96 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Update="appsettings.json">
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
index 5c24346..2e8839a 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
@@ -93,5 +93,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Remote
TraversalStrategies.Add(traversalStrategy);
Bytecode = bytecode;
}
+
+ public override Bytecode Bytecode { get; }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.Template.IntegrationTest/Gremlin.Net.Template.IntegrationTest.csproj b/gremlin-dotnet/test/Gremlin.Net.Template.IntegrationTest/Gremlin.Net.Template.IntegrationTest.csproj
index ceb3c97..60085d8 100644
--- a/gremlin-dotnet/test/Gremlin.Net.Template.IntegrationTest/Gremlin.Net.Template.IntegrationTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.Template.IntegrationTest/Gremlin.Net.Template.IntegrationTest.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs
index 6b7951f..39e393e 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs
@@ -22,6 +22,7 @@
#endregion
using System;
+using System.IO;
using System.Text;
using System.Threading.Tasks;
using Gremlin.Net.Structure.IO.GraphSON;
@@ -40,31 +41,29 @@ namespace Gremlin.Net.UnitTest.Driver
}
[Fact]
- public async Task EmptyArrayDeserializedIntoNull()
+ public async Task DeserializingEmptyArrayThrows()
{
var sut = CreateMessageSerializer();
-
- var result = await sut.DeserializeMessageAsync(new byte[0]);
- Assert.Null(result);
+ await Assert.ThrowsAsync<IOException>(()=> sut.DeserializeMessageAsync(new byte[0]));
}
[Fact]
- public async Task EmptyStringDeserializedIntoNull()
+ public async Task DeserializingEmptyStringThrows()
{
var sut = CreateMessageSerializer();
var ofEmpty = Encoding.UTF8.GetBytes("");
- Assert.Null(await sut.DeserializeMessageAsync(ofEmpty));
+ await Assert.ThrowsAsync<IOException>(()=> sut.DeserializeMessageAsync(ofEmpty));
}
[Fact]
- public async Task JsonNullDeserializedIntoNull()
+ public async Task DeserializingJsonNullThrows()
{
var sut = CreateMessageSerializer();
var ofNull = Encoding.UTF8.GetBytes("null");
- Assert.Null(await sut.DeserializeMessageAsync(ofNull));
+ await Assert.ThrowsAsync<IOException>(()=> sut.DeserializeMessageAsync(ofNull));
}
private static GraphSONMessageSerializer CreateMessageSerializer()
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
index 90296be..f8fada8 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
<AssemblyOriginatorKeyFile>../../build/tinkerpop.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalTests.cs
similarity index 74%
copy from gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
copy to gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalTests.cs
index cf50646..52df33c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalTests.cs
@@ -22,17 +22,19 @@
#endregion
using System;
-using System.Collections.Generic;
using Gremlin.Net.Process.Traversal;
+using Xunit;
-namespace Gremlin.Net.Driver.Remote
+namespace Gremlin.Net.UnitTest.Process.Traversal
{
- internal class DriverRemoteTraversal<S, E> : DefaultTraversal<S, E>
+ public class GraphTraversalTests
{
- public DriverRemoteTraversal(IGremlinClient gremlinClient, Guid requestId,
- IEnumerable<Traverser> traversers)
+ [Fact]
+ public void ShouldThrowOnIterationIfNoStrategiesConfigured()
{
- Traversers = traversers;
+ var g = AnonymousTraversalSource.Traversal();
+
+ Assert.Throws<InvalidOperationException>(() => g.V().Next());
}
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
index c1b87a0..e7cfa3d 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
@@ -49,5 +49,7 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
{
TraversalStrategies = traversalStrategies;
}
+
+ public override Bytecode Bytecode { get; }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphBinary/GraphBinaryTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphBinary/GraphBinaryTests.cs
index 7978005..2001fd7 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphBinary/GraphBinaryTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphBinary/GraphBinaryTests.cs
@@ -77,7 +77,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphBinary
var writer = CreateGraphBinaryWriter();
var serializationStream = new MemoryStream();
- await writer.WriteValueAsync(value, serializationStream, false);
+ await writer.WriteNonNullableValueAsync(value, serializationStream);
var serBytes = serializationStream.ToArray();
Assert.Equal(expected, serBytes);
@@ -271,9 +271,9 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphBinary
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
- await writer.WriteValueAsync(expected, serializationStream, false);
+ await writer.WriteNonNullableValueAsync(expected, serializationStream);
serializationStream.Position = 0;
- var actual = await reader.ReadValueAsync<HashSet<string>>(serializationStream, false);
+ var actual = await reader.ReadNonNullableValueAsync<HashSet<string>>(serializationStream);
Assert.Equal(expected, actual);
Assert.Equal(expected.GetType(), actual.GetType());
@@ -350,9 +350,9 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphBinary
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
- await writer.WriteValueAsync(expected, serializationStream, false);
+ await writer.WriteNonNullableValueAsync(expected, serializationStream);
serializationStream.Position = 0;
- var actual = await reader.ReadValueAsync<Dictionary<string, int>>(serializationStream, false);
+ var actual = await reader.ReadNonNullableValueAsync<Dictionary<string, int>>(serializationStream);
Assert.Equal(expected, actual);
Assert.Equal(expected.GetType(), actual.GetType());
@@ -380,7 +380,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphBinary
var writer = CreateGraphBinaryWriter();
var serializationStream = new MemoryStream();
- await writer.WriteValueAsync(toSerialize, serializationStream, false);
+ await writer.WriteNonNullableValueAsync(toSerialize, serializationStream);
var expected = new byte[]
{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};
@@ -403,16 +403,6 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphBinary
}
[Fact]
- public async Task TestVertexWithNullLabel()
- {
- var expected = new Vertex(123, null);
- var writer = CreateGraphBinaryWriter();
- var serializationStream = new MemoryStream();
-
- await Assert.ThrowsAsync<IOException>(() => writer.WriteAsync(expected, serializationStream));
- }
-
- [Fact]
public async Task TestEdge()
{
var expected = new Edge(123, new Vertex(1, "person"), "developed", new Vertex(10, "software"));
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
index ad78334..da6a6a7 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
@@ -163,5 +163,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
Bytecode = bytecode;
IsAnonymous = true;
}
+
+ public override Bytecode Bytecode { get; }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
index ce593f7..31bc733 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
@@ -410,6 +410,19 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
"{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":\"blah\",\"label\":\"keyA\",\"value\":true,\"vertex\":\"stephen\"}}";
Assert.Equal(expected, graphSON);
}
+
+ [Theory, MemberData(nameof(Versions))]
+ public void ShouldSerializeVertexPropertyWithoutVertex(int version)
+ {
+ var writer = CreateGraphSONWriter(version);
+ var vertexProperty = new VertexProperty("blah", "keyA", true);
+
+ var graphSON = writer.WriteObject(vertexProperty);
+
+ const string expected =
+ "{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":\"blah\",\"label\":\"keyA\",\"value\":true}}";
+ Assert.Equal(expected, graphSON);
+ }
[Theory, MemberData(nameof(Versions))]
public void ShouldSerializeGuid(int version)
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
index 6df92ba..72b4c90 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
@@ -408,7 +408,7 @@ namespace Gremlin.Net.UnitTest.Structure
{
var path = new Path(new List<ISet<string>>(), new List<object>());
- var success = path.TryGetValue("unknownKey", out object _);
+ var success = path.TryGetValue("unknownKey", out _);
Assert.False(success);
}
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 74687ad..d710b4f 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -70,7 +70,7 @@ limitations under the License.
<packaging.type>pom</packaging.type>
</properties>
</profile>
- <!-- activates the building of .NET components and requires that the .NET Core SDK be installed on the system -->
+ <!-- activates the building of .NET components and requires that the .NET SDK be installed on the system -->
<profile>
<id>gremlin-dotnet</id>
<activation>