You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by xi...@apache.org on 2026/03/27 01:16:15 UTC
(tinkerpop) 01/01: Remove Lambda classes and GraphSON from .Net as only GraphBinary is kept in 4.0
This is an automated email from the ASF dual-hosted git repository.
xiazcy pushed a commit to branch remove-graphson-dnet
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit f1e6ce71f526aac396504b1dfb25373a864f1da2
Author: Yang Xia <xi...@gmail.com>
AuthorDate: Thu Mar 26 18:16:01 2026 -0700
Remove Lambda classes and GraphSON from .Net as only GraphBinary is kept in 4.0
---
.../src/Gremlin.Net/Process/Traversal/Lambda.cs | 84 ---
.../Process/Traversal/StringBasedLambda.cs | 61 --
.../IO/GraphSON/BigIntegerDeserializer.cs | 39 --
.../Structure/IO/GraphSON/BigIntegerSerializer.cs | 37 --
.../Structure/IO/GraphSON/BulkSetSerializer.cs | 48 --
.../IO/GraphSON/ByteBufferDeserializer.cs | 38 --
.../Structure/IO/GraphSON/ByteBufferSerializer.cs | 36 --
.../Structure/IO/GraphSON/CharConverter.cs | 39 --
.../Structure/IO/GraphSON/ClassSerializer.cs | 47 --
.../Structure/IO/GraphSON/DTDeserializer.cs | 38 --
.../Structure/IO/GraphSON/DateDeserializer.cs | 38 --
.../Structure/IO/GraphSON/DecimalConverter.cs | 46 --
.../Structure/IO/GraphSON/DirectionDeserializer.cs | 39 --
.../Structure/IO/GraphSON/DoubleConverter.cs | 72 ---
.../Structure/IO/GraphSON/DurationDeserializer.cs | 40 --
.../Structure/IO/GraphSON/DurationSerializer.cs | 38 --
.../Structure/IO/GraphSON/EdgeDeserializer.cs | 60 --
.../Structure/IO/GraphSON/EdgeSerializer.cs | 45 --
.../Structure/IO/GraphSON/EnumSerializer.cs | 37 --
.../Structure/IO/GraphSON/FloatConverter.cs | 33 -
.../Structure/IO/GraphSON/GTypeDeserializer.cs | 38 --
.../IO/GraphSON/GraphSON2MessageSerializer.cs | 41 --
.../Structure/IO/GraphSON/GraphSON2Reader.cs | 50 --
.../Structure/IO/GraphSON/GraphSON2Writer.cs | 51 --
.../IO/GraphSON/GraphSON3MessageSerializer.cs | 41 --
.../Structure/IO/GraphSON/GraphSON3Reader.cs | 68 --
.../Structure/IO/GraphSON/GraphSON3Writer.cs | 68 --
.../IO/GraphSON/GraphSONMessageSerializer.cs | 88 ---
.../Structure/IO/GraphSON/GraphSONReader.cs | 153 -----
.../Structure/IO/GraphSON/GraphSONTokens.cs | 32 -
.../Structure/IO/GraphSON/GraphSONUtil.cs | 83 ---
.../Structure/IO/GraphSON/GraphSONWriter.cs | 177 ------
.../Structure/IO/GraphSON/IGraphSONDeserializer.cs | 41 --
.../Structure/IO/GraphSON/IGraphSONSerializer.cs | 41 --
.../Structure/IO/GraphSON/Int16Converter.cs | 35 -
.../Structure/IO/GraphSON/Int32Converter.cs | 34 -
.../Structure/IO/GraphSON/Int64Converter.cs | 34 -
.../Structure/IO/GraphSON/LambdaSerializer.cs | 43 --
.../Structure/IO/GraphSON/ListSerializer.cs | 54 --
.../Structure/IO/GraphSON/MapSerializer.cs | 64 --
.../Structure/IO/GraphSON/MergeDeserializer.cs | 38 --
.../Structure/IO/GraphSON/NumberConverter.cs | 56 --
.../IO/GraphSON/OffsetDateTimeDeserializer.cs | 37 --
.../IO/GraphSON/OffsetDateTimeSerializer.cs | 37 --
.../Structure/IO/GraphSON/PSerializer.cs | 45 --
.../Structure/IO/GraphSON/Path3Deserializer.cs | 47 --
.../Structure/IO/GraphSON/PathDeserializer.cs | 46 --
.../Structure/IO/GraphSON/PropertyDeserializer.cs | 40 --
.../Structure/IO/GraphSON/PropertySerializer.cs | 67 --
.../IO/GraphSON/RequestMessageSerializer.cs | 41 --
.../Structure/IO/GraphSON/SByteConverter.cs | 33 -
.../Structure/IO/GraphSON/SetSerializer.cs | 47 --
.../Structure/IO/GraphSON/TDeserializer.cs | 38 --
.../Structure/IO/GraphSON/TextPSerializer.cs | 45 --
.../Structure/IO/GraphSON/TraversalSerializer.cs | 37 --
.../IO/GraphSON/TraversalStrategySerializer.cs | 42 --
.../Structure/IO/GraphSON/TraverserReader.cs | 38 --
.../Structure/IO/GraphSON/UuidDeserializer.cs | 39 --
.../Structure/IO/GraphSON/UuidSerializer.cs | 37 --
.../Structure/IO/GraphSON/VertexDeserializer.cs | 51 --
.../IO/GraphSON/VertexPropertyDeserializer.cs | 50 --
.../IO/GraphSON/VertexPropertySerializer.cs | 46 --
.../Structure/IO/GraphSON/VertexSerializer.cs | 41 --
.../Structure/IO/SerializationTokens.cs | 18 +-
.../Docs/Dev/Provider/IndexTests.cs | 91 ---
.../Docs/Reference/GremlinVariantsTests.cs | 17 -
.../Driver/PropertyDeserializationTests.cs | 13 -
.../GraphTraversalSourceTests.cs | 11 -
.../Process/Traversal/GraphSONWriterTests.cs | 64 --
.../Driver/GraphSONMessageSerializerTests.cs | 83 ---
.../IO/GraphSON/GraphSON3MessageSerializerTests.cs | 58 --
.../Structure/IO/GraphSON/GraphSONReaderTests.cs | 708 ---------------------
.../Structure/IO/GraphSON/GraphSONWriterTests.cs | 641 -------------------
.../Structure/IO/GraphSON/TestClass.cs | 30 -
.../Structure/IO/GraphSON/TestUtils.cs | 36 --
75 files changed, 2 insertions(+), 4917 deletions(-)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs
deleted file mode 100644
index a441ea240c..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs
+++ /dev/null
@@ -1,84 +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
-
-namespace Gremlin.Net.Process.Traversal
-{
- /// <summary>
- /// Represents a lambda.
- /// </summary>
- public interface ILambda : IFunction, IBiFunction, IPredicate, IUnaryOperator, IBinaryOperator, IComparator,
- IConsumer, ISupplier
- {
- /// <summary>
- /// Gets the lambda expression.
- /// </summary>
- string LambdaExpression { get; }
-
- /// <summary>
- /// Gets the language of this lambda.
- /// </summary>
- string Language { get; }
-
- /// <summary>
- /// Gets the arguments of this lambda.
- /// </summary>
- int Arguments { get; }
- }
-
- /// <summary>
- /// Provides methods to create lambdas.
- /// </summary>
- public static class Lambda
- {
- /// <summary>
- /// Creates a new Groovy lambda.
- /// </summary>
- /// <param name="expression">The lambda expression.</param>
- /// <returns>The created lambda.</returns>
- public static ILambda Groovy(string expression)
- {
- return new GroovyStringBasedLambda(expression);
- }
-
- /// <summary>
- /// Creates a new Groovy lambda with the specified number of lambda arguments.
- /// </summary>
- /// <param name="expression">The lambda expression.</param>
- /// <param name="arguments">The number of lambda arguments.</param>
- /// <returns>The created lambda.</returns>
- public static ILambda Groovy(string expression, int arguments)
- {
- return new GroovyStringBasedLambda(expression, arguments);
- }
-
- /// <summary>
- /// Creates a new Python lambda.
- /// </summary>
- /// <param name="expression">The lambda expression.</param>
- /// <returns>The created lambda.</returns>
- public static ILambda Python(string expression)
- {
- return new StringBasedLambda(expression, "gremlin-python");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs
deleted file mode 100644
index 72e76f41f1..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs
+++ /dev/null
@@ -1,61 +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;
-
-namespace Gremlin.Net.Process.Traversal
-{
- internal class StringBasedLambda : ILambda
- {
- private const int DefaultArgument = -1;
-
- public StringBasedLambda(string expression, string language)
- {
- LambdaExpression = expression;
- Language = language;
- }
-
- public string LambdaExpression { get; }
-
- public string Language { get; }
-
- public int Arguments { get; protected set; } = DefaultArgument;
- }
-
- internal class GroovyStringBasedLambda : StringBasedLambda
- {
- public GroovyStringBasedLambda(string expression) : base(expression, "gremlin-groovy")
- {
- // try to detect 1 or 2 argument lambda if possible otherwise go with unknown which is the default
- if (!expression.Contains("->")) return;
- var args = expression.Substring(0, expression.IndexOf("->", StringComparison.Ordinal));
- Arguments = args.Contains(",") ? 2 : 1;
- }
-
- public GroovyStringBasedLambda(string expression, int arguments) : base(expression, "gremlin-groovy")
- {
- Arguments = arguments;
- }
-
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs
deleted file mode 100644
index a34aed9d53..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerDeserializer.cs
+++ /dev/null
@@ -1,39 +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.IO;
-using System.Numerics;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class BigIntegerDeserializer : IGraphSONDeserializer
- {
- 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);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerSerializer.cs
deleted file mode 100644
index e0b3f409b9..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BigIntegerSerializer.cs
+++ /dev/null
@@ -1,37 +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;
-using System.Numerics;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class BigIntegerSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- BigInteger value = objectData;
- return GraphSONUtil.ToTypedValue("BigInteger", value.ToString(), "gx");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs
deleted file mode 100644
index a5108212f9..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/BulkSetSerializer.cs
+++ /dev/null
@@ -1,48 +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;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class BulkSetSerializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- if (graphsonObject.ValueKind != JsonValueKind.Array)
- {
- return new List<object>(0);
- }
-
- // coerce the BulkSet to List. if the bulk exceeds the int space then we can't coerce to List anyway,
- // so this query will be trouble. we'd need a legit BulkSet implementation here in C#. this current
- // implementation is here to replicate the previous functionality that existed on the server side in
- // 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();
- }
- }
-}
\ 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
deleted file mode 100644
index c01b17a010..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferDeserializer.cs
+++ /dev/null
@@ -1,38 +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;
-using System.IO;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class ByteBufferDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var base64String = graphsonObject.GetString();
- 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/ByteBufferSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferSerializer.cs
deleted file mode 100644
index b9f7e98e53..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ByteBufferSerializer.cs
+++ /dev/null
@@ -1,36 +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;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class ByteBufferSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- byte[] value = objectData;
- return GraphSONUtil.ToTypedValue("ByteBuffer", Convert.ToBase64String(value), "gx");
- }
- }
-}
\ 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
deleted file mode 100644
index ada050fa1f..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/CharConverter.cs
+++ /dev/null
@@ -1,39 +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.IO;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class CharConverter : NumberConverter<char>
- {
- protected override string GraphSONTypeName => "Char";
- protected override string Prefix => "gx";
- protected override bool StringifyValue => true;
- protected override dynamic FromJsonElement(JsonElement graphson)
- {
- var deserializedByte = graphson.GetString() ?? throw new IOException("Read null but expected a string");
- return deserializedByte[0];
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs
deleted file mode 100644
index d5df386f42..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ClassSerializer.cs
+++ /dev/null
@@ -1,47 +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;
-using System.Collections.Generic;
-using System.IO;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class ClassSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- var type = (Type) objectData;
-
- // try to create the Type and then access the Fqcn property. if that's not there then
- // throw an exception
- var instance = Activator.CreateInstance(type)
- ?? throw new IOException($"Cannot create an instance of {type.FullName}");
- var fqcnProperty = type.GetProperty("Fqcn")
- ?? throw new IOException($"The type {type.FullName} does not have a 'Fqcn' property");
- var fqcnValue = fqcnProperty.GetValue(instance)
- ?? throw new IOException($"The 'Fqcn' property of {type.FullName} is null");
- return GraphSONUtil.ToTypedValue("Class", fqcnValue);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DTDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DTDeserializer.cs
deleted file mode 100644
index 9c69ffef22..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DTDeserializer.cs
+++ /dev/null
@@ -1,38 +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.IO;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class DTDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- return DT.GetByValue(graphsonObject.GetString() ??
- throw new IOException($"Read null but expected a {nameof(DT)} string representation"));
- }
- }
-}
\ 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
deleted file mode 100644
index b432713701..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DateDeserializer.cs
+++ /dev/null
@@ -1,38 +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;
-using System.Text.Json;
-
-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);
-
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var milliseconds = graphsonObject.GetInt64();
- return UnixStart.AddTicks(TimeSpan.TicksPerMillisecond * milliseconds);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs
deleted file mode 100644
index 7736b385c6..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DecimalConverter.cs
+++ /dev/null
@@ -1,46 +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.Globalization;
-using System.IO;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class DecimalConverter : NumberConverter<decimal>
- {
- protected override string GraphSONTypeName => "BigDecimal";
- protected override string Prefix => "gx";
- protected override bool StringifyValue => true;
- protected override dynamic FromJsonElement(JsonElement graphson)
- {
- if (graphson.ValueKind == JsonValueKind.String)
- {
- return decimal.Parse(
- graphson.GetString() ?? throw new IOException("Read null but expected a decimal string"),
- CultureInfo.InvariantCulture);
- }
- return graphson.GetDecimal();
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs
deleted file mode 100644
index 056b29993d..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DirectionDeserializer.cs
+++ /dev/null
@@ -1,39 +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.IO;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class DirectionDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- 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/DoubleConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DoubleConverter.cs
deleted file mode 100644
index 476bbc8166..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DoubleConverter.cs
+++ /dev/null
@@ -1,72 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class DoubleConverter : NumberConverter<double>
- {
- protected override string GraphSONTypeName => "Double";
- private const string NaN = "NaN";
- private const string PositiveInfinity = "Infinity";
- private const string NegativeInfinity = "-Infinity";
-
- protected override dynamic FromJsonElement(JsonElement graphson)
- {
- if (graphson.ValueKind == JsonValueKind.String)
- {
- switch (graphson.GetString())
- {
- case NaN:
- return double.NaN;
- case PositiveInfinity:
- return double.PositiveInfinity;
- case NegativeInfinity:
- return double.NegativeInfinity;
- }
- }
- return graphson.GetDouble();
- }
-
- protected override object ConvertInvalidNumber(double number)
- {
- if (double.IsNaN(number))
- {
- return NaN;
- }
-
- if (double.IsPositiveInfinity(number))
- {
- return PositiveInfinity;
- }
-
- if (double.IsNegativeInfinity(number))
- {
- return NegativeInfinity;
- }
-
- return number;
- }
- }
-}
\ 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
deleted file mode 100644
index 8cc83dbbc5..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationDeserializer.cs
+++ /dev/null
@@ -1,40 +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.IO;
-using System.Text.Json;
-using System.Xml;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class DurationDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var duration = graphsonObject.GetString();
- return XmlConvert.ToTimeSpan(duration ??
- throw new IOException(
- "Read null but expected a Duration string representation"));
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationSerializer.cs
deleted file mode 100644
index fdd549bb0c..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/DurationSerializer.cs
+++ /dev/null
@@ -1,38 +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;
-using System.Collections.Generic;
-using System.Xml;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class DurationSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- TimeSpan value = objectData;
- return GraphSONUtil.ToTypedValue("Duration", XmlConvert.ToString(value), "gx");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EdgeDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EdgeDeserializer.cs
deleted file mode 100644
index 65dda439d0..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EdgeDeserializer.cs
+++ /dev/null
@@ -1,60 +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;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class EdgeDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var outVId = reader.ToObject(graphsonObject.GetProperty("outV"));
- string outVLabel = graphsonObject.TryGetProperty("outVLabel", out var outVLabelProperty)
- ? outVLabelProperty.GetString()!
- : Vertex.DefaultLabel;
- var outV = new Vertex(outVId, outVLabel);
- var inVId = reader.ToObject(graphsonObject.GetProperty("inV"));
- string inVLabel = graphsonObject.TryGetProperty("inVLabel", out var inVLabelProperty)
- ? inVLabelProperty.GetString()!
- : Vertex.DefaultLabel;
- var inV = new Vertex(inVId, inVLabel);
- var edgeId = reader.ToObject(graphsonObject.GetProperty("id"));
- string edgeLabel = graphsonObject.TryGetProperty("label", out var labelProperty)
- ? labelProperty.GetString()!
- : "edge";
-
- dynamic[] properties = Array.Empty<dynamic>();
- if (graphsonObject.TryGetProperty("properties", out var propertiesObject)
- && propertiesObject.ValueKind == JsonValueKind.Object)
- {
- properties = propertiesObject.EnumerateObject()
- .Select(p => reader.ToObject(p.Value)!).ToArray();
- }
-
- return new Edge(edgeId, outV, edgeLabel, inV, properties);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EdgeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EdgeSerializer.cs
deleted file mode 100644
index c4ff138d1d..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EdgeSerializer.cs
+++ /dev/null
@@ -1,45 +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.Structure.IO.GraphSON
-{
- internal class EdgeSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- Edge edge = objectData;
- var edgeDict = new Dictionary<string, dynamic>
- {
- {"id", writer.ToDict(edge.Id)},
- {"outV", writer.ToDict(edge.OutV.Id)},
- {"outVLabel", edge.OutV.Label},
- {"label", edge.Label},
- {"inV", writer.ToDict(edge.InV.Id)},
- {"inVLabel", edge.InV.Label}
- };
- return GraphSONUtil.ToTypedValue(nameof(Edge), edgeDict);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs
deleted file mode 100644
index 2c77aca43c..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs
+++ /dev/null
@@ -1,37 +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;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class EnumSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- EnumWrapper enumToSerialize = objectData;
- return GraphSONUtil.ToTypedValue(enumToSerialize.EnumName, enumToSerialize.EnumValue);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/FloatConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/FloatConverter.cs
deleted file mode 100644
index 2c880f033a..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/FloatConverter.cs
+++ /dev/null
@@ -1,33 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class FloatConverter : NumberConverter<float>
- {
- protected override string GraphSONTypeName => "Float";
- protected override dynamic FromJsonElement(JsonElement graphson) => graphson.GetSingle();
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GTypeDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GTypeDeserializer.cs
deleted file mode 100644
index a4cbaec7cc..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GTypeDeserializer.cs
+++ /dev/null
@@ -1,38 +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.IO;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class GTypeDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- return GType.GetByValue(graphsonObject.GetString() ??
- throw new IOException($"Read null but expected a {nameof(GType)} string representation"));
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs
deleted file mode 100644
index 2ed32e5ef9..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2MessageSerializer.cs
+++ /dev/null
@@ -1,41 +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
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Serializes data to and from Gremlin Server in GraphSON2 format.
- /// </summary>
- public class GraphSON2MessageSerializer : GraphSONMessageSerializer
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSON2MessageSerializer" /> class with custom serializers.
- /// </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)
- : base(SerializationTokens.GraphSON2MimeType, graphSONReader ?? new GraphSON2Reader(), graphSONWriter ?? new GraphSON2Writer())
- {
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs
deleted file mode 100644
index f0e46d4a5c..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs
+++ /dev/null
@@ -1,50 +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.Structure.IO.GraphSON
-{
- /// <summary>
- /// Handles deserialization of GraphSON3 data.
- /// </summary>
- public class GraphSON2Reader : GraphSONReader
- {
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON2Reader"/>.
- /// </summary>
- public GraphSON2Reader()
- {
-
- }
-
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON2Reader"/>.
- /// </summary>
- public GraphSON2Reader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType) :
- base(deserializerByGraphSONType)
- {
-
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs
deleted file mode 100644
index 9440020aa2..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs
+++ /dev/null
@@ -1,51 +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;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Handles serialization of GraphSON2 data.
- /// </summary>
- public class GraphSON2Writer : GraphSONWriter
- {
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON2Writer"/>.
- /// </summary>
- public GraphSON2Writer()
- {
-
- }
-
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON2Writer"/>.
- /// </summary>
- public GraphSON2Writer(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType) :
- base(customSerializerByType)
- {
-
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs
deleted file mode 100644
index a9cd69c2ec..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3MessageSerializer.cs
+++ /dev/null
@@ -1,41 +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
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Serializes data to and from Gremlin Server in GraphSON3 format.
- /// </summary>
- public class GraphSON3MessageSerializer : GraphSONMessageSerializer
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSON3MessageSerializer" /> class with custom serializers.
- /// </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)
- : base(SerializationTokens.GraphSON3MimeType, graphSONReader ?? new GraphSON3Reader(), graphSONWriter ?? new GraphSON3Writer())
- {
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs
deleted file mode 100644
index 690703f741..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs
+++ /dev/null
@@ -1,68 +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.Structure.IO.GraphSON
-{
- /// <summary>
- /// Handles deserialization of GraphSON3 data.
- /// </summary>
- public class GraphSON3Reader : GraphSONReader
- {
- private static readonly IDictionary<string, IGraphSONDeserializer> GraphSON3SpecificDeserializers =
- new Dictionary<string, IGraphSONDeserializer>
- {
- { "g:List", new ListSerializer() },
- { "g:Set", new SetSerializer() },
- { "g:Map", new MapSerializer() },
- { "g:BulkSet", new BulkSetSerializer() },
- { "g:Path", new Path3Deserializer() }
- };
-
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON3Reader"/>.
- /// </summary>
- public GraphSON3Reader()
- {
- foreach (var kv in GraphSON3SpecificDeserializers)
- {
- Deserializers[kv.Key] = kv.Value;
- }
- }
-
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON3Reader"/>.
- /// </summary>
- /// <param name="deserializerByGraphSONType">
- /// Overrides <see cref="IGraphSONDeserializer" /> instances by their type identifier.
- /// </param>
- public GraphSON3Reader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType) : this()
- {
- foreach (var deserializerAndGraphSONType in deserializerByGraphSONType)
- {
- Deserializers[deserializerAndGraphSONType.Key] = deserializerAndGraphSONType.Value;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
deleted file mode 100644
index 5ac75820f6..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
+++ /dev/null
@@ -1,68 +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;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Handles serialization of GraphSON3 data.
- /// </summary>
- public class GraphSON3Writer : GraphSONWriter
- {
- private static readonly IDictionary<Type, IGraphSONSerializer> GraphSON3SpecificSerializers =
- new Dictionary<Type, IGraphSONSerializer>
- {
- { typeof(IList<object>), new ListSerializer() },
- { typeof(ISet<object>), new SetSerializer() },
- { typeof(IDictionary<object, object>), new MapSerializer() }
- };
-
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON3Writer"/>.
- /// </summary>
- public GraphSON3Writer()
- {
- foreach (var kv in GraphSON3SpecificSerializers)
- {
- Serializers[kv.Key] = kv.Value;
- }
- }
-
- /// <summary>
- /// Creates a new instance of <see cref="GraphSON3Writer"/>.
- /// </summary>
- /// <param name="customSerializerByType">
- /// <see cref="IGraphSONSerializer" /> serializers identified by their
- /// <see cref="Type" />.
- /// </param>
- public GraphSON3Writer(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType) : this()
- {
- foreach (var serializerAndType in customSerializerByType)
- {
- Serializers[serializerAndType.Key] = serializerAndType.Value;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs
deleted file mode 100644
index 1dc16215ec..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONMessageSerializer.cs
+++ /dev/null
@@ -1,88 +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;
-using System.Collections.Generic;
-using System.Text;
-using System.Text.Json;
-using System.Threading;
-using System.Threading.Tasks;
-using Gremlin.Net.Driver;
-using Gremlin.Net.Driver.Messages;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Serializes data to and from Gremlin Server in GraphSON format.
- /// Retained for backward compatibility; will be removed in Phase 2.
- /// </summary>
- public abstract class GraphSONMessageSerializer : IMessageSerializer
- {
- private readonly string _mimeType;
- private readonly GraphSONReader _graphSONReader;
- private readonly GraphSONWriter _graphSONWriter;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSONMessageSerializer" /> class.
- /// </summary>
- /// <param name="mimeType">The MIME type supported by this serializer.</param>
- /// <param name="graphSONReader">The <see cref="GraphSONReader"/> used to deserialize from GraphSON.</param>
- /// <param name="graphSonWriter">The <see cref="GraphSONWriter"/> used to serialize to GraphSON.</param>
- protected GraphSONMessageSerializer(string mimeType, GraphSONReader graphSONReader,
- GraphSONWriter graphSonWriter)
- {
- _mimeType = mimeType;
- _graphSONReader = graphSONReader;
- _graphSONWriter = graphSonWriter;
- }
-
- /// <inheritdoc />
- public string MimeType => _mimeType;
-
- /// <inheritdoc />
- public virtual Task<byte[]> SerializeMessageAsync(RequestMessage requestMessage,
- CancellationToken cancellationToken = default)
- {
- if (cancellationToken.CanBeCanceled) cancellationToken.ThrowIfCancellationRequested();
- var graphSONMessage = _graphSONWriter.WriteObject(requestMessage);
- return Task.FromResult(Encoding.UTF8.GetBytes(MessageWithHeader(graphSONMessage)));
- }
-
- private string MessageWithHeader(string messageContent)
- {
- return $"{(char) _mimeType.Length}{_mimeType}{messageContent}";
- }
-
- /// <inheritdoc />
- public virtual Task<ResponseMessage<List<object>>> DeserializeMessageAsync(byte[] message,
- CancellationToken cancellationToken = default)
- {
- if (message == null) throw new ArgumentNullException(nameof(message));
- if (cancellationToken.CanBeCanceled) cancellationToken.ThrowIfCancellationRequested();
-
- // GraphSON deserialization is a legacy path — return empty result
- return Task.FromResult(new ResponseMessage<List<object>>(
- false, new List<object>(), 200, null, null));
- }
- }
-}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
deleted file mode 100644
index 92f2ec0078..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
+++ /dev/null
@@ -1,153 +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;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Allows to deserialize GraphSON to objects.
- /// </summary>
- public abstract class GraphSONReader
- {
- /// <summary>
- /// Contains the <see cref="IGraphSONDeserializer" /> instances by their type identifier.
- /// </summary>
- protected readonly Dictionary<string, IGraphSONDeserializer> Deserializers = new()
- {
- { "g:Traverser", new TraverserReader() },
- { "g:Int32", new Int32Converter() },
- { "g:Int64", new Int64Converter() },
- { "g:Float", new FloatConverter() },
- { "g:Double", new DoubleConverter() },
- { "g:Direction", new DirectionDeserializer() },
- { "g:DT", new DTDeserializer() },
- { "g:GType", new GTypeDeserializer() },
- { "g:Merge", new MergeDeserializer() },
- { "g:UUID", new UuidDeserializer() },
- { "g:Date", new DateDeserializer() },
- { "g:Timestamp", new DateDeserializer() },
- { "g:Vertex", new VertexDeserializer() },
- { "g:Edge", new EdgeDeserializer() },
- { "g:Property", new PropertyDeserializer() },
- { "g:VertexProperty", new VertexPropertyDeserializer() },
- { "g:Path", new PathDeserializer() },
- { "g:T", new TDeserializer() },
-
- //Extended
- { "gx:OffsetDateTime", new OffsetDateTimeDeserializer() },
- { "gx:BigDecimal", new DecimalConverter() },
- { "gx:Duration", new DurationDeserializer() },
- { "gx:BigInteger", new BigIntegerDeserializer() },
- { "gx:Byte", new SByteConverter() },
- { "gx:ByteBuffer", new ByteBufferDeserializer() },
- { "gx:Char", new CharConverter() },
- { "gx:Int16", new Int16Converter() }
- };
-
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSONReader" /> class.
- /// </summary>
- protected GraphSONReader()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSONReader" /> class.
- /// </summary>
- /// <param name="deserializerByGraphSONType">
- /// <see cref="IGraphSONDeserializer" /> deserializers identified by their
- /// GraphSON type.
- /// </param>
- protected GraphSONReader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType)
- {
- foreach (var deserializerAndGraphSONType in deserializerByGraphSONType)
- Deserializers[deserializerAndGraphSONType.Key] = deserializerAndGraphSONType.Value;
- }
-
- /// <summary>
- /// Deserializes a GraphSON collection to an object.
- /// </summary>
- /// <param name="graphSonData">The GraphSON collection to deserialize.</param>
- /// <returns>The deserialized object.</returns>
- public virtual dynamic ToObject(IEnumerable<JsonElement> graphSonData)
- {
- return graphSonData.Select(graphson => ToObject(graphson));
- }
-
- /// <summary>
- /// Deserializes GraphSON to an object.
- /// </summary>
- /// <param name="graphSon">The GraphSON to deserialize.</param>
- /// <returns>The deserialized object.</returns>
- public virtual dynamic? ToObject(JsonElement graphSon)
- {
- switch (graphSon.ValueKind)
- {
- case JsonValueKind.Array:
- return graphSon.EnumerateArray().Select(t => ToObject(t));
- case JsonValueKind.String:
- return graphSon.GetString();
- case JsonValueKind.Null:
- return null;
- case JsonValueKind.True:
- return true;
- case JsonValueKind.False:
- return false;
- case JsonValueKind.Object:
- break;
- default:
- throw new ArgumentOutOfRangeException(nameof(graphSon.ValueKind), graphSon.ValueKind,
- $"JSON type not supported.");
- }
-
- if (graphSon.TryGetProperty(GraphSONTokens.TypeKey, out var graphSonTypeProperty))
- {
- 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)
- {
- if (!Deserializers.TryGetValue(graphSONType, out var deserializer))
- {
- throw new InvalidOperationException($"Deserializer for \"{graphSONType}\" not found");
- }
- return deserializer.Objectify(typedValue.GetProperty(GraphSONTokens.ValueKey), this);
- }
-
- private dynamic ReadDictionary(JsonElement jsonDict)
- {
- return jsonDict.EnumerateObject()
- .ToDictionary(property => property.Name, property => ToObject(property.Value));
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs
deleted file mode 100644
index 690eaff5bd..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONTokens.cs
+++ /dev/null
@@ -1,32 +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
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class GraphSONTokens
- {
- public static string TypeKey = "@type";
- public static string ValueKey = "@value";
- public static 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
deleted file mode 100644
index 9e7d4b3ed8..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
+++ /dev/null
@@ -1,83 +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;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Provides helper methods for GraphSON serialization.
- /// </summary>
- public static class GraphSONUtil
- {
- /// <summary>
- /// Transforms a value intos its GraphSON representation including type information.
- /// </summary>
- /// <param name="typename">The name of the type.</param>
- /// <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")
- {
- var typedValue = new Dictionary<string, dynamic>
- {
- {GraphSONTokens.TypeKey, FormatTypeName(prefix, typename)}
- };
- if (value != null)
- typedValue[GraphSONTokens.ValueKey] = value;
- return typedValue;
- }
-
- /// <summary>
- /// Formats a type name with its prefix to a GraphSON TypeID.
- /// </summary>
- /// <param name="namespacePrefix">The namespace prefix (default is "g").</param>
- /// <param name="typeName">The name of the type.</param>
- /// <returns>The formatted TypeID.</returns>
- public static string FormatTypeName(string namespacePrefix, string typeName)
- {
- return $"{namespacePrefix}:{typeName}";
- }
-
- /// <summary>
- /// Converts a Collection to a representation of g:List or g:Set
- /// </summary>
- internal static Dictionary<string, dynamic> ToCollection(dynamic objectData, GraphSONWriter writer,
- string typename)
- {
- var collection = objectData as IEnumerable;
- if (collection == null)
- {
- throw new InvalidOperationException("Object must implement IEnumerable");
- }
- var result = new List<object>();
- foreach (var item in collection)
- {
- result.Add(writer.ToDict(item));
- }
- return ToTypedValue(typename, result);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
deleted file mode 100644
index 60fe3dcf36..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
+++ /dev/null
@@ -1,177 +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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Numerics;
-using System.Text.Encodings.Web;
-using System.Text.Json;
-using Gremlin.Net.Driver.Messages;
-using Gremlin.Net.Process.Traversal;
-using Gremlin.Net.Process.Traversal.Strategy;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Allows to serialize objects to GraphSON.
- /// </summary>
- public abstract class GraphSONWriter
- {
- 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()
- {
- { typeof(ITraversal), new TraversalSerializer() },
- { typeof(RequestMessage), new RequestMessageSerializer() },
- { typeof(int), new Int32Converter() },
- { typeof(long), new Int64Converter() },
- { typeof(float), new FloatConverter() },
- { typeof(double), new DoubleConverter() },
- { typeof(Guid), new UuidSerializer() },
- { typeof(Type), new ClassSerializer() },
- { typeof(EnumWrapper), new EnumSerializer() },
- { typeof(P), new PSerializer() },
- { typeof(TextP), new TextPSerializer() },
- { typeof(Vertex), new VertexSerializer() },
- { typeof(Edge), new EdgeSerializer() },
- { typeof(Property), new PropertySerializer() },
- { typeof(VertexProperty), new VertexPropertySerializer() },
- { typeof(AbstractTraversalStrategy), new TraversalStrategySerializer() },
- { typeof(ILambda), new LambdaSerializer() },
-
- //Extended
- { typeof(DateTimeOffset), new OffsetDateTimeSerializer() }, // DateTimeOffset will be serialized as OffsetDateTimeSerializer by default
- { typeof(decimal), new DecimalConverter() },
- { typeof(TimeSpan), new DurationSerializer() },
- { typeof(BigInteger), new BigIntegerSerializer() },
- { typeof(sbyte), new SByteConverter() },
- { typeof(byte[]), new ByteBufferSerializer() },
- { typeof(char), new CharConverter() },
- { typeof(short), new Int16Converter() }
- };
-
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSONWriter" /> class.
- /// </summary>
- protected GraphSONWriter()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="GraphSONWriter" /> class.
- /// </summary>
- /// <param name="customSerializerByType">
- /// <see cref="IGraphSONSerializer" /> serializers identified by their
- /// <see cref="Type" />.
- /// </param>
- protected GraphSONWriter(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType)
- {
- foreach (var serializerAndType in customSerializerByType)
- Serializers[serializerAndType.Key] = serializerAndType.Value;
- }
-
- /// <summary>
- /// Serializes an object to GraphSON.
- /// </summary>
- /// <param name="objectData">The object to serialize.</param>
- /// <returns>The serialized GraphSON.</returns>
- public virtual string WriteObject(dynamic objectData)
- {
- return JsonSerializer.Serialize(ToDict(objectData), JsonOptions);
- }
-
- /// <summary>
- /// Transforms an object into its GraphSON representation including type information.
- /// </summary>
- /// <param name="objectData">The object to transform.</param>
- /// <returns>A GraphSON representation of the object ready to be serialized.</returns>
- [return: NotNullIfNotNull("objectData")]
- public dynamic? ToDict(dynamic? objectData)
- {
- if (objectData != null)
- {
- var type = objectData.GetType();
-
- IGraphSONSerializer serializer = TryGetSerializerFor(type);
-
- if (serializer != null)
- return serializer.Dictify(objectData, this);
- if (IsDictionaryType(type))
- return DictToGraphSONDict(objectData);
- if (IsCollectionType(type))
- return CollectionToGraphSONCollection(objectData);
- }
- return objectData;
- }
-
- private IGraphSONSerializer? TryGetSerializerFor(Type type)
- {
- if (Serializers.TryGetValue(type, out var serializer))
- {
- return serializer;
- }
- foreach (var supportedType in new List<Type>(Serializers.Keys))
- if (supportedType.IsAssignableFrom(type))
- {
- return Serializers[supportedType];
- }
- return null;
- }
-
- private bool IsDictionaryType(Type type)
- {
- return type
- .GetInterfaces()
- .Any(interfaceType => interfaceType.IsConstructedGenericType
- && interfaceType.GetGenericTypeDefinition() == typeof(IEnumerable<>)
- && interfaceType.GenericTypeArguments[0] is { IsConstructedGenericType: true } genericArgument
- && genericArgument.GetGenericTypeDefinition() == typeof(KeyValuePair<,>));
- }
-
- private Dictionary<string, dynamic> DictToGraphSONDict(dynamic dict)
- {
- var graphSONDict = new Dictionary<string, dynamic>();
- foreach (var keyValue in dict)
- graphSONDict.Add(ToDict(keyValue.Key), ToDict(keyValue.Value));
- return graphSONDict;
- }
-
- private bool IsCollectionType(Type type)
- {
- return type.GetInterfaces().Contains(typeof(ICollection));
- }
-
- private IEnumerable<dynamic> CollectionToGraphSONCollection(dynamic collection)
- {
- foreach (var e in collection)
- yield return ToDict(e);
- }
- }
-}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs
deleted file mode 100644
index deeea5c86f..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONDeserializer.cs
+++ /dev/null
@@ -1,41 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- /// <summary>
- /// Supports deserializing GraphSON into an object.
- /// </summary>
- public interface IGraphSONDeserializer
- {
- /// <summary>
- /// Deserializes GraphSON to an object.
- /// </summary>
- /// <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);
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONSerializer.cs
deleted file mode 100644
index 58befc3ce9..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/IGraphSONSerializer.cs
+++ /dev/null
@@ -1,41 +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.Structure.IO.GraphSON
-{
- /// <summary>
- /// Supports serializing of an object to GraphSON.
- /// </summary>
- public interface IGraphSONSerializer
- {
- /// <summary>
- /// Transforms an object into a dictionary that resembles its GraphSON representation.
- /// </summary>
- /// <param name="objectData">The object to dictify.</param>
- /// <param name="writer">A <see cref="GraphSONWriter" /> that can be used to dictify properties of the object.</param>
- /// <returns>The GraphSON representation.</returns>
- Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer);
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int16Converter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int16Converter.cs
deleted file mode 100644
index 51aa40f0bc..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int16Converter.cs
+++ /dev/null
@@ -1,35 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class Int16Converter : NumberConverter<short>
- {
- protected override string GraphSONTypeName => "Int16";
- protected override string Prefix => "gx";
-
- protected override dynamic FromJsonElement(JsonElement graphson) => graphson.GetInt16();
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int32Converter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int32Converter.cs
deleted file mode 100644
index aebffa31dc..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int32Converter.cs
+++ /dev/null
@@ -1,34 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class Int32Converter : NumberConverter<int>
- {
- protected override string GraphSONTypeName => "Int32";
-
- protected override dynamic FromJsonElement(JsonElement graphson) => graphson.GetInt32();
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int64Converter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int64Converter.cs
deleted file mode 100644
index 6c328b4f6b..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Int64Converter.cs
+++ /dev/null
@@ -1,34 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class Int64Converter : NumberConverter<long>
- {
- protected override string GraphSONTypeName => "Int64";
-
- protected override dynamic FromJsonElement(JsonElement graphson) => graphson.GetInt64();
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs
deleted file mode 100644
index d965267b0f..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs
+++ /dev/null
@@ -1,43 +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;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class LambdaSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- ILambda lambda = objectData;
- var valueDict = new Dictionary<string, dynamic>
- {
- {"script", lambda.LambdaExpression},
- {"language", lambda.Language},
- {"arguments", lambda.Arguments}
- };
- return GraphSONUtil.ToTypedValue(nameof(Lambda), valueDict);
- }
- }
-}
\ 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
deleted file mode 100644
index 6aa685e9ec..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
+++ /dev/null
@@ -1,54 +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;
-using System.Collections.Generic;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class ListSerializer : IGraphSONDeserializer, IGraphSONSerializer
- {
- private static readonly IReadOnlyList<object> EmptyList = Array.Empty<object>();
-
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- if (graphsonObject.ValueKind != JsonValueKind.Array)
- {
- return EmptyList;
- }
- var result = new object?[graphsonObject.GetArrayLength()];
- for (var i = 0; i < result.Length; i++)
- {
- result[i] = reader.ToObject(graphsonObject[i]);
- }
- // object[] implements IList<object>
- return result;
- }
-
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- return GraphSONUtil.ToCollection(objectData, writer, "List");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
deleted file mode 100644
index 67249caba2..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
+++ /dev/null
@@ -1,64 +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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class MapSerializer : IGraphSONDeserializer, IGraphSONSerializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- if (graphsonObject.ValueKind != JsonValueKind.Array)
- {
- return new Dictionary<object, object>(0);
- }
- 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]);
- }
- // IDictionary<object, object>
- return result;
- }
-
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- if (!(objectData is IDictionary map))
- {
- throw new InvalidOperationException("Object must implement IDictionary");
- }
- var result = new object?[map.Count * 2];
- var index = 0;
- foreach (var key in map.Keys)
- {
- result[index++] = writer.ToDict(key);
- result[index++] = writer.ToDict(map[key]);
- }
- return GraphSONUtil.ToTypedValue("Map", result);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MergeDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MergeDeserializer.cs
deleted file mode 100644
index b1ff05210d..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MergeDeserializer.cs
+++ /dev/null
@@ -1,38 +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.IO;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class MergeDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- return Merge.GetByValue(graphsonObject.GetString() ??
- throw new IOException("Read null but expected a Merge value"));
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs
deleted file mode 100644
index 110a22fe36..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/NumberConverter.cs
+++ /dev/null
@@ -1,56 +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;
-using System.Globalization;
-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";
- protected virtual bool StringifyValue => false;
-
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- return FromJsonElement(graphsonObject);
- }
-
- protected abstract dynamic FromJsonElement(JsonElement graphson);
-
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- T number = objectData;
- var value = ConvertInvalidNumber(number);
- if (StringifyValue)
- {
- value = string.Format(CultureInfo.InvariantCulture, "{0}", value);
- }
- return GraphSONUtil.ToTypedValue(GraphSONTypeName, value, Prefix);
- }
-
- protected virtual object ConvertInvalidNumber(T number) => number;
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/OffsetDateTimeDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/OffsetDateTimeDeserializer.cs
deleted file mode 100644
index bae59399a2..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/OffsetDateTimeDeserializer.cs
+++ /dev/null
@@ -1,37 +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;
-using System.IO;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class OffsetDateTimeDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- return DateTimeOffset.Parse(graphsonObject.GetString() ??
- throw new IOException("Read null but expected a OffsetDateTime value"));
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/OffsetDateTimeSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/OffsetDateTimeSerializer.cs
deleted file mode 100644
index 9c9f94627f..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/OffsetDateTimeSerializer.cs
+++ /dev/null
@@ -1,37 +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;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class OffsetDateTimeSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- DateTimeOffset value = objectData;
- return GraphSONUtil.ToTypedValue("OffsetDateTime", value.ToString("O"), "gx");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PSerializer.cs
deleted file mode 100644
index ae35540a92..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PSerializer.cs
+++ /dev/null
@@ -1,45 +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;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class PSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic predicate, GraphSONWriter writer)
- {
- P p = predicate;
- var value = p.Other == null
- ? writer.ToDict(p.Value)
- : new List<dynamic> {writer.ToDict(p.Value), writer.ToDict(p.Other)};
- var dict = new Dictionary<string, dynamic>
- {
- {"predicate", p.OperatorName},
- {"value", value}
- };
- return GraphSONUtil.ToTypedValue("P", dict);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs
deleted file mode 100644
index 991bab87a7..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/Path3Deserializer.cs
+++ /dev/null
@@ -1,47 +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;
-using System.IO;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class Path3Deserializer : IGraphSONDeserializer
- {
- 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"));
- 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")) ??
- throw new IOException($"Could not read the objects for the {nameof(Path)}");
- return new Path(labels, objects);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs
deleted file mode 100644
index d8c2b8a0a8..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PathDeserializer.cs
+++ /dev/null
@@ -1,46 +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;
-using System.IO;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class PathDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var labels =
- graphsonObject.GetProperty("labels").EnumerateArray()
- .Select(readObjLabels =>
- 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();
- return new Path(labels, objects);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertyDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertyDeserializer.cs
deleted file mode 100644
index c9654626c7..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertyDeserializer.cs
+++ /dev/null
@@ -1,40 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class PropertyDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- string key = graphsonObject.GetProperty("key").GetString()!;
- var value = reader.ToObject(graphsonObject.GetProperty("value"));
- var element = graphsonObject.TryGetProperty("element", out var elementProperty)
- ? reader.ToObject(elementProperty)
- : null;
- return new Property(key, value, element);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs
deleted file mode 100644
index 8717be84e1..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/PropertySerializer.cs
+++ /dev/null
@@ -1,67 +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;
-using System.IO;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class PropertySerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- Property property = objectData;
- var elementDict = CreateElementDict(property.Element, writer);
- var valueDict = new Dictionary<string, dynamic>
- {
- {"key", property.Key},
- {"value", writer.ToDict(property.Value)},
- {"element", elementDict}
- };
- return GraphSONUtil.ToTypedValue(nameof(Property), valueDict);
- }
-
- 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))
- {
- var elementValueSerialized = elementDict[GraphSONTokens.ValueKey];
- Dictionary<string, dynamic> elementValueDict = elementValueSerialized;
- elementValueDict.Remove("outVLabel");
- elementValueDict.Remove("inVLabel");
- elementValueDict.Remove("properties");
- elementValueDict.Remove("value");
- }
- return serializedElement;
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs
deleted file mode 100644
index 47fe602189..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs
+++ /dev/null
@@ -1,41 +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;
-using Gremlin.Net.Driver.Messages;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class RequestMessageSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- RequestMessage msg = objectData;
- return new Dictionary<string, dynamic>
- {
- {"gremlin", msg.Gremlin},
- {"fields", writer.ToDict(msg.Fields)}
- };
- }
- }
-}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SByteConverter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SByteConverter.cs
deleted file mode 100644
index 8537228277..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SByteConverter.cs
+++ /dev/null
@@ -1,33 +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.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class SByteConverter : NumberConverter<sbyte>
- {
- protected override string GraphSONTypeName => "Byte";
- protected override string Prefix => "gx";
- protected override dynamic FromJsonElement(JsonElement graphson) => graphson.GetSByte();
- }
-}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
deleted file mode 100644
index b2cdaad754..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
+++ /dev/null
@@ -1,47 +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;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class SetSerializer : IGraphSONDeserializer, IGraphSONSerializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- if (graphsonObject.ValueKind != JsonValueKind.Array)
- {
- return new HashSet<object>();
- }
- // ISet<object>
- return new HashSet<object?>(graphsonObject.EnumerateArray().Select(reader.ToObject));
- }
-
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- return GraphSONUtil.ToCollection(objectData, writer, "Set");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs
deleted file mode 100644
index b002e0ce26..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TDeserializer.cs
+++ /dev/null
@@ -1,38 +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.IO;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class TDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- 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/TextPSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TextPSerializer.cs
deleted file mode 100644
index 0c02f584f1..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TextPSerializer.cs
+++ /dev/null
@@ -1,45 +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;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class TextPSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic predicate, GraphSONWriter writer)
- {
- TextP p = predicate;
- var value = p.Other == null
- ? writer.ToDict(p.Value)
- : new List<dynamic> {writer.ToDict(p.Value), writer.ToDict(p.Other)};
- var dict = new Dictionary<string, dynamic>
- {
- {"predicate", p.OperatorName},
- {"value", value}
- };
- return GraphSONUtil.ToTypedValue("TextP", dict);
- }
- }
-}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs
deleted file mode 100644
index 6f7b9be79f..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalSerializer.cs
+++ /dev/null
@@ -1,37 +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;
-using System.Collections.Generic;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class TraversalSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- throw new NotSupportedException("Traversal serialization via GraphSON is no longer supported. Use GremlinLang instead.");
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalStrategySerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalStrategySerializer.cs
deleted file mode 100644
index 03e66ac794..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraversalStrategySerializer.cs
+++ /dev/null
@@ -1,42 +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;
-using Gremlin.Net.Process.Traversal.Strategy;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class TraversalStrategySerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- AbstractTraversalStrategy strategy = objectData;
- var stratData = new Dictionary<string, dynamic>
- {
- {"fqcn", strategy.Fqcn},
- {"conf", writer.ToDict(strategy.Configuration)},
- };
- return GraphSONUtil.ToTypedValue(strategy.StrategyName, stratData);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraverserReader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraverserReader.cs
deleted file mode 100644
index 691280d23b..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/TraverserReader.cs
+++ /dev/null
@@ -1,38 +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.Text.Json;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class TraverserReader : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var bulkObj = reader.ToObject(graphsonObject.GetProperty("bulk"));
- var valueObj = reader.ToObject(graphsonObject.GetProperty("value"));
- return new Traverser(valueObj, bulkObj);
- }
- }
-}
\ 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
deleted file mode 100644
index bb9b07c8d0..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidDeserializer.cs
+++ /dev/null
@@ -1,39 +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;
-using System.IO;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class UuidDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var uuidString = graphsonObject.GetString();
- if (uuidString == null) throw new IOException("Read null but expected a GUID string representation");
- return Guid.Parse(uuidString);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidSerializer.cs
deleted file mode 100644
index 1f355dfd0e..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/UuidSerializer.cs
+++ /dev/null
@@ -1,37 +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;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class UuidSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- Guid guid = objectData;
- return GraphSONUtil.ToTypedValue("UUID", guid);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexDeserializer.cs
deleted file mode 100644
index 1e887f6ed0..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexDeserializer.cs
+++ /dev/null
@@ -1,51 +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;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class VertexDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var id = reader.ToObject(graphsonObject.GetProperty("id"));
- string label = graphsonObject.TryGetProperty("label", out var labelProperty)
- ? labelProperty.GetString()!
- : Vertex.DefaultLabel;
-
- dynamic[] properties = Array.Empty<dynamic>();
- if (graphsonObject.TryGetProperty("properties", out var propertiesObject)
- && propertiesObject.ValueKind == JsonValueKind.Object)
- {
- properties = propertiesObject.EnumerateObject()
- .SelectMany(p => (reader.ToObject(p.Value) as IEnumerable<object>)!).ToArray();
- }
-
- return new Vertex(id, label, properties);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertyDeserializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertyDeserializer.cs
deleted file mode 100644
index e3798f6f4b..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertyDeserializer.cs
+++ /dev/null
@@ -1,50 +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.Linq;
-using System.Text.Json;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class VertexPropertyDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var id = reader.ToObject(graphsonObject.GetProperty("id"));
- string label = graphsonObject.GetProperty("label").GetString()!;
- var value = reader.ToObject(graphsonObject.GetProperty("value"));
- var vertex = graphsonObject.TryGetProperty("vertex", out var vertexProperty)
- ? new Vertex(reader.ToObject(vertexProperty))
- : null;
-
- Property[] properties = System.Array.Empty<Property>();
- if (graphsonObject.TryGetProperty("properties", out var propertiesObject)
- && propertiesObject.ValueKind == JsonValueKind.Object)
- {
- properties = propertiesObject.EnumerateObject()
- .Select(p => new Property(p.Name, reader.ToObject(p.Value))).ToArray();
- }
- return new VertexProperty(id, label, value, vertex, properties);
- }
- }
-}
\ 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
deleted file mode 100644
index cbb8a929fc..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexPropertySerializer.cs
+++ /dev/null
@@ -1,46 +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.Structure.IO.GraphSON
-{
- internal class VertexPropertySerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- VertexProperty vertexProperty = objectData;
- var valueDict = new Dictionary<string, dynamic>
- {
- {"id", writer.ToDict(vertexProperty.Id)},
- {"label", vertexProperty.Label},
- {"value", writer.ToDict(vertexProperty.Value)}
- };
- if (vertexProperty.Vertex != null)
- {
- valueDict.Add("vertex", writer.ToDict(vertexProperty.Vertex.Id));
- }
- return GraphSONUtil.ToTypedValue(nameof(VertexProperty), valueDict);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexSerializer.cs
deleted file mode 100644
index aef1291c4f..0000000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/VertexSerializer.cs
+++ /dev/null
@@ -1,41 +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.Structure.IO.GraphSON
-{
- internal class VertexSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- Vertex vertex = objectData;
- var vertexDict = new Dictionary<string, dynamic>
- {
- {"id", writer.ToDict(vertex.Id)},
- {"label", writer.ToDict(vertex.Label)}
- };
- return GraphSONUtil.ToTypedValue(nameof(Vertex), vertexDict);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/SerializationTokens.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/SerializationTokens.cs
index 3a02fbaddf..8c180390ef 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/SerializationTokens.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/SerializationTokens.cs
@@ -1,6 +1,4 @@
-#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
@@ -19,8 +17,6 @@
* under the License.
*/
-#endregion
-
namespace Gremlin.Net.Structure.IO
{
/// <summary>
@@ -28,19 +24,9 @@ namespace Gremlin.Net.Structure.IO
/// </summary>
public class SerializationTokens
{
- /// <summary>
- /// The MIME type for GraphSON 2.
- /// </summary>
- public const string GraphSON2MimeType = "application/vnd.gremlin-v2.0+json";
-
- /// <summary>
- /// The MIME type for GraphSON 3.
- /// </summary>
- public const string GraphSON3MimeType = "application/vnd.gremlin-v3.0+json";
-
/// <summary>
/// The MIME type for GraphBinary 4.0.
/// </summary>
public const string GraphBinary4MimeType = "application/vnd.graphbinary-v4.0";
}
-}
\ No newline at end of file
+}
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Dev/Provider/IndexTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Dev/Provider/IndexTests.cs
deleted file mode 100644
index d39190143d..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Dev/Provider/IndexTests.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;
-using System.Collections.Generic;
-using System.Text.Json;
-using Gremlin.Net.Driver;
-using Gremlin.Net.Structure.IO.GraphSON;
-using Xunit;
-using Xunit.Sdk;
-
-namespace Gremlin.Net.IntegrationTest.Docs.Dev.Provider
-{
-// tag::myTypeSerialization[]
-internal class MyType
-{
- public static string GraphsonPrefix = "providerx";
- public static string GraphsonBaseType = "MyType";
- public static string GraphsonType = GraphSONUtil.FormatTypeName(GraphsonPrefix, GraphsonBaseType);
-
- public MyType(int x, int y)
- {
- X = x;
- Y = y;
- }
-
- public int X { get; }
- public int Y { get; }
-}
-
-internal class MyClassWriter : IGraphSONSerializer
-{
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- MyType myType = objectData;
- var valueDict = new Dictionary<string, object>
- {
- {"x", myType.X},
- {"y", myType.Y}
- };
- return GraphSONUtil.ToTypedValue(nameof(TestClass), valueDict, MyType.GraphsonPrefix);
- }
-}
-
-internal class MyTypeReader : IGraphSONDeserializer
-{
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- var x = reader.ToObject(graphsonObject.GetProperty("x"));
- var y = reader.ToObject(graphsonObject.GetProperty("y"));
- return new MyType(x, y);
- }
-}
-// end::myTypeSerialization[]
-
- public class IndexTests
- {
- [Fact(Skip="No Server under localhost")]
- public void SupportingGremlinNetIOTests()
- {
-// tag::supportingGremlinNetIO[]
-var graphsonReader = new GraphSON3Reader(
- new Dictionary<string, IGraphSONDeserializer> {{MyType.GraphsonType, new MyTypeReader()}});
-var graphsonWriter = new GraphSON3Writer(
- new Dictionary<Type, IGraphSONSerializer> {{typeof(MyType), new MyClassWriter()}});
-
-var gremlinClient = new GremlinClient(new GremlinServer("localhost", 8182), new GraphSON2MessageSerializer());
-// end::supportingGremlinNetIO[]
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs
index 77c3f554dd..6b15eee466 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs
@@ -30,7 +30,6 @@ using Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection;
using Gremlin.Net.Process.Traversal;
using Gremlin.Net.Process.Traversal.Strategy.Decoration;
using Gremlin.Net.Structure.IO.GraphBinary4;
-using Gremlin.Net.Structure.IO.GraphSON;
using Microsoft.Extensions.Logging;
using Xunit;
// tag::commonImports[]
@@ -85,22 +84,6 @@ var client = new GremlinClient(new GremlinServer("localhost", 8182), new GraphBi
// end::serializationBinary[]
}
- [Fact(Skip="No Server under localhost")]
- public void SerializationGraphson2Test()
- {
-// tag::serializationGraphSon[]
-var client = new GremlinClient(new GremlinServer("localhost", 8182), new GraphSON2MessageSerializer());
-// end::serializationGraphSon[]
- }
-
- [Fact(Skip = "No Server under localhost")]
- public void SerializationGraphson3Test()
- {
-// tag::serializationGraphSon3[]
-var client = new GremlinClient(new GremlinServer("localhost", 8182), new GraphSON3MessageSerializer());
-// end::serializationGraphSon3[]
- }
-
[Fact(Skip="We can't apply strategies")]
public void TraversalStrategiesTest()
{
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/PropertyDeserializationTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/PropertyDeserializationTests.cs
index 1191761674..01cd0b266c 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/PropertyDeserializationTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/PropertyDeserializationTests.cs
@@ -27,7 +27,6 @@ using Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection;
using Gremlin.Net.Process.Traversal;
using Gremlin.Net.Structure;
using Gremlin.Net.Structure.IO.GraphBinary4;
-using Gremlin.Net.Structure.IO.GraphSON;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
@@ -306,21 +305,9 @@ namespace Gremlin.Net.IntegrationTest.Driver
Assert.True((element.Properties?.Length ?? 0) == 0);
}
- // TODO: Remove GraphSON serializer tests entirely once GraphSON support is fully removed from the driver.
- // GraphSON 2/3 serializers are not compatible with the HTTP 4.0 transport (they use WebSocket-style
- // MIME-type framing and the server only accepts GraphBinary 4.0 or GraphSON 4.0 over HTTP).
public static List<object[]> Serializers => new()
{
new object[] { new GraphBinary4MessageSerializer() }
};
-
- [Fact(Skip = "GraphSON 2/3 serializers are not supported over HTTP 4.0 transport")]
- public void GraphSONSerializersNotSupportedOverHttp()
- {
- // TODO: Remove this test and the GraphSON serializer references when GraphSON is fully removed.
- // GraphSON2MessageSerializer and GraphSON3MessageSerializer use WebSocket-style MIME-type framing
- // that is incompatible with the HTTP channelizer. The server only accepts GraphBinary 4.0 or
- // GraphSON 4.0 (application/json) over HTTP.
- }
}
}
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
index 9348c02f41..45c3b0c561 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
@@ -50,17 +50,6 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
Assert.Contains("peter", results);
}
- // TODO: Groovy lambdas are not supported in the GremlinLang/GraphBinary4 serialization path
- [Fact(Skip = "Groovy lambdas are not serializable over HTTP 4.0 with GraphBinary4")]
- public void ShouldHandleLambdasInWithSack()
- {
- var connection = _connectionFactory.CreateRemoteConnection();
- var g = AnonymousTraversalSource.Traversal().With(connection);
- Assert.Equal(24.0, g.WithSack(1.0, (IUnaryOperator) Lambda.Groovy("x -> x + 1")).V().Both().Sack<double>().Sum<double>().Next());
- Assert.Equal(24.0, g.WithSack((ISupplier) Lambda.Groovy("{1.0d}"), (IUnaryOperator) Lambda.Groovy("x -> x + 1")).V().Both().Sack<double>().Sum<double>().Next());
- Assert.Equal(48.0, g.WithSack(1.0, (IBinaryOperator) Lambda.Groovy("x, y -> x + y + 1")).V().Both().Sack<double>().Sum<double>().Next());
- Assert.Equal(48.0, g.WithSack((ISupplier) Lambda.Groovy("{1.0d}"), (IBinaryOperator) Lambda.Groovy("x, y -> x + y + 1")).V().Both().Sack<double>().Sum<double>().Next());
- }
}
}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
deleted file mode 100644
index 0490700027..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
+++ /dev/null
@@ -1,64 +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;
-using Gremlin.Net.Process.Traversal;
-using Gremlin.Net.Structure.IO.GraphSON;
-using Xunit;
-
-namespace Gremlin.Net.IntegrationTest.Process.Traversal
-{
- public class GraphSONWriterTests
- {
- /// <summary>
- /// Parameters for each test supporting multiple versions of GraphSON
- /// </summary>
- public static IEnumerable<object[]> Versions => new []
- {
- new object[] { 2 },
- new object[] { 3 }
- };
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeLongPredicateCorrectly(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var predicate = P.Lt("b").Or(P.Gt("c")).And(P.Neq("d"));
-
- var graphSon = writer.WriteObject(predicate);
-
- const string expected =
- "{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"and\",\"value\":[{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"or\",\"value\":[{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"lt\",\"value\":\"b\"}},{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"gt\",\"value\":\"c\"}}]}},{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"neq\",\"value\":\"d\"}}]}}";
- Assert.Equal(expected, graphSon);
- }
-
- private GraphSONWriter CreateGraphSONWriter(int version)
- {
- if (version == 3)
- {
- return new GraphSON3Writer();
- }
- return new GraphSON2Writer();
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs
deleted file mode 100644
index 4657eb1870..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Driver/GraphSONMessageSerializerTests.cs
+++ /dev/null
@@ -1,83 +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;
-using System.Text;
-using System.Threading.Tasks;
-using Gremlin.Net.Structure.IO.GraphSON;
-using Xunit;
-
-namespace Gremlin.Net.UnitTest.Driver
-{
- public class GraphSONMessageSerializerTests
- {
- [Fact]
- public async Task DeserializingNullThrows()
- {
- var sut = CreateMessageSerializer();
-
- await Assert.ThrowsAsync<ArgumentNullException>(() => sut.DeserializeMessageAsync(null!));
- }
-
- [Fact]
- public async Task EmptyArrayDeserializedIntoEmptyResult()
- {
- var sut = CreateMessageSerializer();
-
- var result = await sut.DeserializeMessageAsync(new byte[0]);
-
- Assert.NotNull(result);
- Assert.Empty(result.Result);
- Assert.Equal(200, result.StatusCode);
- }
-
- [Fact]
- public async Task EmptyStringDeserializedIntoEmptyResult()
- {
- var sut = CreateMessageSerializer();
- var ofEmpty = Encoding.UTF8.GetBytes("");
-
- var result = await sut.DeserializeMessageAsync(ofEmpty);
-
- Assert.NotNull(result);
- Assert.Empty(result.Result);
- }
-
- [Fact]
- public async Task JsonNullDeserializedIntoEmptyResult()
- {
- var sut = CreateMessageSerializer();
- var ofNull = Encoding.UTF8.GetBytes("null");
-
- var result = await sut.DeserializeMessageAsync(ofNull);
-
- Assert.NotNull(result);
- Assert.Empty(result.Result);
- }
-
- private static GraphSONMessageSerializer CreateMessageSerializer()
- {
- return new GraphSON3MessageSerializer(new GraphSON3Reader(), new GraphSON3Writer());
- }
- }
-}
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSON3MessageSerializerTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSON3MessageSerializerTests.cs
deleted file mode 100644
index e9d37059ad..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSON3MessageSerializerTests.cs
+++ /dev/null
@@ -1,58 +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;
-using System.Threading;
-using System.Threading.Tasks;
-using Gremlin.Net.Driver.Messages;
-using Gremlin.Net.Structure.IO.GraphSON;
-using Xunit;
-
-namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON;
-
-public class GraphSON3MessageSerializerTests
-{
- [Fact]
- public async Task SerializeMessageAsyncShouldSupportCancellation()
- {
- var serializer = CreateMessageSerializer();
-
- await Assert.ThrowsAsync<OperationCanceledException>(async () =>
- await serializer.SerializeMessageAsync(RequestMessage.Build(string.Empty).Create(),
- new CancellationToken(true)));
- }
-
- [Fact]
- public async Task DeserializeMessageAsyncShouldSupportCancellation()
- {
- var serializer = CreateMessageSerializer();
-
- await Assert.ThrowsAsync<OperationCanceledException>(async () =>
- await serializer.DeserializeMessageAsync(Array.Empty<byte>(), new CancellationToken(true)));
- }
-
- private static GraphSON3MessageSerializer CreateMessageSerializer()
- {
- return new GraphSON3MessageSerializer();
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
deleted file mode 100644
index b4a7fe8544..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
+++ /dev/null
@@ -1,708 +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;
-using System.Collections.Generic;
-using System.Numerics;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-using Gremlin.Net.Structure;
-using Gremlin.Net.Structure.IO.GraphSON;
-using NSubstitute;
-using Xunit;
-
-namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
-{
- public class GraphSONReaderTests
- {
- /// <summary>
- /// Parameters for each test supporting multiple versions of GraphSON
- /// </summary>
- public static IEnumerable<object[]> Versions => new []
- {
- new object[] { 2 },
- new object[] { 3 }
- };
-
- /// <summary>
- /// Parameters for each collections test supporting multiple versions of GraphSON
- /// </summary>
- public static IEnumerable<object[]> VersionsSupportingCollections => new []
- {
- new object[] { 3 }
- };
-
- private GraphSONReader CreateStandardGraphSONReader(int version)
- {
- if (version == 3)
- {
- return new GraphSON3Reader();
- }
- return new GraphSON2Reader();
- }
-
- [Fact]
- public void ShouldDeserializeWithCustomDeserializerForNewType()
- {
- var deserializerByGraphSONType = new Dictionary<string, IGraphSONDeserializer>
- {
- {"NS:TestClass", new TestGraphSONDeserializer()}
- };
- var reader = new GraphSON2Reader(deserializerByGraphSONType);
- const string graphSON = "{\"@type\":\"NS:TestClass\",\"@value\":\"test\"}";
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSON);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal("test", deserializedValue!.Value);
- }
-
- [Fact]
- public void ShouldDeserializeWithCustomDeserializerForCommonType()
- {
- var customSerializerMock = Substitute.For<IGraphSONDeserializer>();
- const string overrideTypeString = "g:Int64";
- var customSerializerByType = new Dictionary<string, IGraphSONDeserializer>
- {
- {overrideTypeString, customSerializerMock}
- };
- var reader = new GraphSON2Reader(customSerializerByType);
-
- var jsonElement =
- JsonSerializer.Deserialize<JsonElement>($"{{\"@type\":\"{overrideTypeString}\",\"@value\":12}}");
- var deserializedValue = reader.ToObject(jsonElement);
-
- customSerializerMock.Received(1).Objectify(Arg.Any<JsonElement>(), Arg.Any<GraphSONReader>());
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDateToDateTimeOffset(int version)
- {
- const string graphSon = "{\"@type\":\"g:Date\",\"@value\":1475583442552}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- var expectedDateTimeOffset = TestUtils.FromJavaTime(1475583442552);
- Assert.Equal(expectedDateTimeOffset, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDictionary(int version)
- {
- const string serializedDict = "{\"age\":[{\"@type\":\"g:Int32\", \"@value\":29}], \"name\":[\"marko\"], " +
- "\"gender\": null}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedDict);
- var deserializedValue = reader.ToObject(jsonElement);
-
- var expectedDict = new Dictionary<string, dynamic?>
- {
- {"age", new List<object> {29}},
- {"name", new List<object> {"marko"}},
- {"gender", null}
- };
- Assert.Equal(expectedDict, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeEdge(int version)
- {
- const string graphSon = "{\"@type\":\"g:Edge\", \"@value\":{\"id\":{\"@type\":\"g:Int64\", \"@value\":17}, " +
- "\"label\":\"knows\", \"inV\":\"x\", \"outV\":\"y\", \"inVLabel\":\"xLab\", " +
- "\"properties\":{\"aKey\":\"aValue\", \"bKey\":true}}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- Edge readEdge = reader.ToObject(jsonElement)!;
-
- Assert.Equal((long) 17, readEdge.Id);
- Assert.Equal("knows", readEdge.Label);
- Assert.Equal(new Vertex("x", "xLabel"), readEdge.InV);
- Assert.Equal(new Vertex("y"), readEdge.OutV);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeInt(int version)
- {
- var serializedValue = "{\"@type\":\"g:Int32\",\"@value\":5}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(5, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeLong(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Int64\",\"@value\":5}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal((long) 5, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeFloat(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Float\",\"@value\":31.3}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal((float) 31.3, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDouble(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Double\",\"@value\":31.2}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(31.2, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeNaN(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Double\",\"@value\":\"NaN\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(Double.NaN, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializePositiveInfinity(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Double\",\"@value\":\"Infinity\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(double.PositiveInfinity, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeNegativeInfinity(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Double\",\"@value\":\"-Infinity\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(double.NegativeInfinity, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDecimal(int version)
- {
- const string serializedValue = "{\"@type\":\"gx:BigDecimal\",\"@value\":-8.201}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(-8.201M, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDecimalValueAsString(int version)
- {
- const string serializedValue = "{\"@type\":\"gx:BigDecimal\",\"@value\":\"7.50\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- decimal deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(7.5M, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeByte(int version)
- {
- const string serializedValue = "{\"@type\":\"gx:Byte\",\"@value\":1}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(1, deserializedValue);
- Assert.IsType<sbyte>(deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeByteNegative(int version)
- {
- const string serializedValue = "{\"@type\":\"gx:Byte\",\"@value\":-42}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(-42, deserializedValue);
- Assert.IsType<sbyte>(deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeChar(int version)
- {
- const string serializedValue = "{\"@type\":\"gx:Char\",\"@value\":\"x\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal('x', deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeList(int version)
- {
- const string serializedValue = "[{\"@type\":\"g:Int32\", \"@value\":5}, {\"@type\":\"g:Int32\", " +
- "\"@value\":6}, null]";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(new List<object?> {5, 6, null}, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeT(int version)
- {
- const string graphSon = "{\"@type\":\"g:T\",\"@value\":\"label\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- T readT = reader.ToObject(jsonElement)!;
-
- Assert.Equal(T.Label, readT);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDirection(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Direction\",\"@value\":\"OUT\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(Direction.Out, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDT(int version)
- {
- const string serializedValue = "{\"@type\":\"g:DT\",\"@value\":\"minute\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(DT.Minute, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeMerge(int version)
- {
- const string serializedValue = "{\"@type\":\"g:Merge\",\"@value\":\"onMatch\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(Merge.OnMatch, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeGType(int version)
- {
- const string serializedValue = "{\"@type\":\"g:GType\",\"@value\":\"BYTE\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(serializedValue);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(GType.Byte, deserializedValue);
- }
-
- [Fact]
- public void ShouldDeserializePathFromGraphSON2()
- {
- const string graphSon =
- "{\"@type\":\"g:Path\",\"@value\":{\"labels\":[[\"a\"],[\"b\",\"c\"],[]],\"objects\":[{\"@type\":\"g:Vertex\",\"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":1},\"label\":\"person\",\"properties\":{\"name\":[{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":0},\"value\":\"marko\",\"label\":\"name\"}}],\"age\":[{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":1},\"value\":{\"@type\":\"g:Int32\",\"@ [...]
- var reader = CreateStandardGraphSONReader(2);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- Path readPath = reader.ToObject(jsonElement)!;
-
- Assert.Equal("path[v[1], v[3], lop]", readPath.ToString());
- Assert.Equal(new Vertex(1), readPath[0]);
- Assert.Equal(new Vertex(1), readPath["a"]);
- Assert.Equal("lop", readPath[2]);
- Assert.Equal(3, readPath.Count);
- }
-
- [Fact]
- public void ShouldDeserializePathFromGraphSON3()
- {
- const string graphSon = "{\"@type\":\"g:Path\",\"@value\":{" +
- "\"labels\":{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Set\",\"@value\":[\"z\"]}]}," +
- "\"objects\":{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Vertex\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":5},\"label\":\"\"}}]}}}";
- var reader = CreateStandardGraphSONReader(3);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- Path readPath = reader.ToObject(jsonElement)!;
-
- Assert.Equal("path[v[5]]", readPath.ToString());
- Assert.Equal(new Vertex(5L), readPath[0]);
- Assert.Equal(new Vertex(5L), readPath["z"]);
- Assert.Single(readPath);
- Assert.Empty(readPath[0]!.Properties);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializePropertyWithEdgeElement(int version)
- {
- const string graphSon = "{\"@type\":\"g:Property\", \"@value\":{\"key\":\"aKey\", " +
- "\"value\":{\"@type\":\"g:Int64\", \"@value\":17}, " +
- "\"element\":{\"@type\":\"g:Edge\", \"@value\":{\"id\":{\"@type\":\"g:Int64\", " +
- "\"@value\":122}, \"label\":\"knows\", \"inV\":\"x\", \"outV\":\"y\", " +
- "\"inVLabel\":\"xLab\"}}}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- Property readProperty = reader.ToObject(jsonElement)!;
-
- Assert.Equal("aKey", readProperty.Key);
- Assert.Equal((long) 17, readProperty.Value);
- Assert.Equal(typeof(Edge), readProperty.Element!.GetType());
- var edge = readProperty.Element as Edge;
- Assert.Equal((long) 122, edge!.Id);
- Assert.Equal("knows", edge.Label);
- Assert.Equal("x", edge.InV.Id);
- Assert.Equal("y", edge.OutV.Id);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeTimestampToDateTimeOffset(int version)
- {
- const string graphSon = "{\"@type\":\"g:Timestamp\",\"@value\":1475583442558}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- var expectedDateTimeOffset = TestUtils.FromJavaTime(1475583442558);
- Assert.Equal(expectedDateTimeOffset, deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeGuid(int version)
- {
- const string graphSon = "{\"@type\":\"g:UUID\",\"@value\":\"41d2e28a-20a4-4ab0-b379-d810dede3786\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(Guid.Parse("41d2e28a-20a4-4ab0-b379-d810dede3786"), deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeVertexProperty(int version)
- {
- const string graphSon = "{\"@type\":\"g:VertexProperty\", \"@value\":{\"id\":\"anId\", \"label\":\"aKey\", " +
- "\"value\":true, \"vertex\":{\"@type\":\"g:Int32\", \"@value\":9}}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- VertexProperty readVertexProperty = reader.ToObject(jsonElement)!;
-
- Assert.Equal("anId", readVertexProperty.Id);
- Assert.Equal("aKey", readVertexProperty.Label);
- Assert.True(readVertexProperty.Value);
- Assert.NotNull(readVertexProperty.Vertex);
- Assert.Empty(readVertexProperty.Properties);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeVertexPropertyWithLabel(int version)
- {
- const string graphSon = "{\"@type\":\"g:VertexProperty\", \"@value\":{\"id\":{\"@type\":\"g:Int32\", " +
- "\"@value\":1}, \"label\":\"name\", \"value\":\"marko\"}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- VertexProperty readVertexProperty = reader.ToObject(jsonElement)!;
-
- Assert.Equal(1, readVertexProperty.Id);
- Assert.Equal("name", readVertexProperty.Label);
- Assert.Equal("marko", readVertexProperty.Value);
- Assert.Null(readVertexProperty.Vertex);
- Assert.Empty(readVertexProperty.Properties);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeVertex(int version)
- {
- const string graphSon = "{\"@type\":\"g:Vertex\", \"@value\":{\"id\":{\"@type\":\"g:Float\", " +
- "\"@value\":45.23}}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(new Vertex(45.23f), deserializedValue);
- Assert.Empty(deserializedValue!.Properties);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeVertexWithLabel(int version)
- {
- const string graphSon = "{\"@type\":\"g:Vertex\", \"@value\":{\"id\":{\"@type\":\"g:Float\", " +
- "\"@value\":45.23}, \"label\": \"person\"}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- Vertex deserializedValue = reader.ToObject(jsonElement)!;
-
- Assert.Equal("person", deserializedValue.Label);
- Assert.Empty(deserializedValue.Properties);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeVertexWithEdges(int version)
- {
- const string graphSon =
- "{\"@type\":\"g:Vertex\", \"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":1},\"label\":\"person\",\"outE\":{\"created\":[{\"id\":{\"@type\":\"g:Int32\",\"@value\":9},\"inV\":{\"@type\":\"g:Int32\",\"@value\":3},\"properties\":{\"weight\":{\"@type\":\"g:Double\",\"@value\":0.4}}}],\"knows\":[{\"id\":{\"@type\":\"g:Int32\",\"@value\":7},\"inV\":{\"@type\":\"g:Int32\",\"@value\":2},\"properties\":{\"weight\":{\"@type\":\"g:Double\",\"@value\":0.5}}},{\"id\":{\"@type\":\ [...]
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- Vertex readVertex = reader.ToObject(jsonElement)!;
-
- Assert.Equal(new Vertex(1), readVertex);
- Assert.Equal("person", readVertex.Label);
- Assert.Equal(typeof(int), readVertex.Id!.GetType());
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeEmptyGList(int version)
- {
- const string graphSon = "{\"@type\":\"g:List\", \"@value\": []}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- object[] deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(Array.Empty<object>(), deserializedValue);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeGList(int version)
- {
- const string json = "{\"@type\":\"g:List\", \"@value\": [{\"@type\": \"g:Int32\", \"@value\": 1}," +
- "{\"@type\": \"g:Int32\", \"@value\": 2}, {\"@type\": \"g:Int32\", \"@value\": 3}]}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal((IList<object>)new object[] { 1, 2, 3}, deserializedValue);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeGSet(int version)
- {
- const string graphSon = "{\"@type\":\"g:Set\", \"@value\": [{\"@type\": \"g:Int32\", \"@value\": 1}," +
- "{\"@type\": \"g:Int32\", \"@value\": 2}, {\"@type\": \"g:Int32\", \"@value\": 3}]}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal((ISet<object>)new HashSet<object>{ 1, 2, 3}, deserializedValue);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeGMap(int version)
- {
- const string json = "{\"@type\":\"g:Map\", \"@value\": [\"a\",{\"@type\": \"g:Int32\", \"@value\": 1}, " +
- "\"b\", {\"@type\": \"g:Int32\", \"@value\": 2}]}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(new Dictionary<object, object>{ { "a", 1 }, { "b", 2 }}, deserializedValue);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeGMapWithNonStringKeys(int version)
- {
- const string json = "{\"@type\":\"g:Map\", \"@value\": [{\"@type\":\"g:Int32\", \"@value\":123}, \"red\"]}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(new Dictionary<object, object>{ { 123, "red" }}, deserializedValue);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeBulkSet(int version)
- {
- const string graphSon = "{\"@type\": \"g:BulkSet\", \"@value\": [" +
- "\"marko\", {\"@type\": \"g:Int64\", \"@value\": 1}, " +
- "\"josh\", {\"@type\": \"g:Int64\", \"@value\": 3}]}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(new List<object>{ "marko", "josh", "josh", "josh" }, deserializedValue);
- }
-
- [Fact]
- public void ShouldDeserializeBulkSetWithGraphSON3()
- {
- const string graphSon =
- "{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Traverser\",\"@value\":{\"bulk\":{\"@type\":\"g:Int64\",\"@value\":1},\"value\":{\"@type\":\"g:BulkSet\",\"@value\":[{\"@type\":\"g:Int64\",\"@value\":1},{\"@type\":\"g:Int64\",\"@value\":2},{\"@type\":\"g:Int64\",\"@value\":0},{\"@type\":\"g:Int64\",\"@value\":3},{\"@type\":\"g:Int64\",\"@value\":2},{\"@type\":\"g:Int64\",\"@value\":1},{\"@type\":\"g:Double\",\"@value\":1.0},{\"@type\":\"g:Int64\",\"@value\":2}]}}}]}";
- var reader = CreateStandardGraphSONReader(3);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldDeserializeTraverser(int version)
- {
- const string json = "{\"@type\":\"g:Traverser\", \"@value\":{\"bulk\":{\"@type\":\"g:Int64\", " +
- "\"@value\":10}, \"value\":{\"@type\":\"g:Int32\", \"@value\":1}}}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
- Traverser deserializedValue = reader.ToObject(jsonElement)!;
-
- Assert.Equal(10, deserializedValue.Bulk);
- Assert.Equal(1, deserializedValue.Object);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeDurationToTimeSpan(int version)
- {
- const string graphSon = "{\"@type\":\"gx:Duration\",\"@value\":\"PT120H\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(TimeSpan.FromDays(5), deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeBigInteger(int version)
- {
- var graphSon = "{\"@type\":\"gx:BigInteger\",\"@value\":123456789}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(BigInteger.Parse("123456789"), deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeBigIntegerValueAsString(int version)
- {
- var graphSon = "{\"@type\":\"gx:BigInteger\", \"@value\":\"123456789\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(BigInteger.Parse("123456789"), deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeReallyBigIntegerValue(int version)
- {
- const string graphSon = "{\"@type\":\"gx:BigInteger\", \"@value\":123456789987654321123456789987654321}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(BigInteger.Parse("123456789987654321123456789987654321"), deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeByteBuffer(int version)
- {
- const string graphSon = "{\"@type\":\"gx:ByteBuffer\", \"@value\":\"c29tZSBieXRlcyBmb3IgeW91\"}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(Convert.FromBase64String("c29tZSBieXRlcyBmb3IgeW91"), deserializedValue);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldDeserializeInt16(int version)
- {
- const string graphSon = "{\"@type\":\"gx:Int16\", \"@value\":100}";
- var reader = CreateStandardGraphSONReader(version);
-
- var jsonElement = JsonSerializer.Deserialize<JsonElement>(graphSon);
- var deserializedValue = reader.ToObject(jsonElement);
-
- Assert.Equal(100, deserializedValue);
- }
- }
-
- internal class TestGraphSONDeserializer : IGraphSONDeserializer
- {
- public dynamic Objectify(JsonElement graphsonObject, GraphSONReader reader)
- {
- return new TestClass {Value = graphsonObject.GetString()};
- }
- }
-}
\ 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
deleted file mode 100644
index a2c4d1b7ab..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
+++ /dev/null
@@ -1,641 +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;
-using System.Collections.Generic;
-using System.Numerics;
-using System.Text.Json;
-using Gremlin.Net.Process.Traversal;
-using Gremlin.Net.Process.Traversal.Strategy.Decoration;
-using Gremlin.Net.Process.Traversal.Strategy.Optimization;
-using Gremlin.Net.Process.Traversal.Strategy.Verification;
-using Gremlin.Net.Structure;
-using Gremlin.Net.Structure.IO.GraphSON;
-using Xunit;
-
-namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
-{
- public class GraphSONWriterTests
- {
- /// <summary>
- /// Parameters for each test supporting multiple versions of GraphSON
- /// </summary>
- public static IEnumerable<object[]> Versions => new []
- {
- new object[] { 2 },
- new object[] { 3 }
- };
-
- /// <summary>
- /// Parameters for each collections test supporting multiple versions of GraphSON
- /// </summary>
- public static IEnumerable<object[]> VersionsSupportingCollections => new []
- {
- new object[] { 3 }
- };
-
- /// <summary>
- /// Parameters for each collections test supporting multiple versions of GraphSON
- /// </summary>
- public static IEnumerable<object[]> VersionsNotSupportingCollections => new []
- {
- new object[] { 2 }
- };
-
- private GraphSONWriter CreateGraphSONWriter(int version)
- {
- if (version == 3)
- {
- return new GraphSON3Writer();
- }
- return new GraphSON2Writer();
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeInt(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(1);
-
- Assert.Equal("{\"@type\":\"g:Int32\",\"@value\":1}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeLong(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject((long) 2);
-
- Assert.Equal("{\"@type\":\"g:Int64\",\"@value\":2}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeFloat(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject((float) 3.2);
-
- Assert.Equal("{\"@type\":\"g:Float\",\"@value\":3.2}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeDouble(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(3.2);
-
- Assert.Equal("{\"@type\":\"g:Double\",\"@value\":3.2}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeNaN(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(Double.NaN);
-
- Assert.Equal("{\"@type\":\"g:Double\",\"@value\":\"NaN\"}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializePositiveInfinity(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(Double.PositiveInfinity);
-
- Assert.Equal("{\"@type\":\"g:Double\",\"@value\":\"Infinity\"}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeNegativeInfinity(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(Double.NegativeInfinity);
-
- Assert.Equal("{\"@type\":\"g:Double\",\"@value\":\"-Infinity\"}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeDecimal(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(6.5M);
-
- Assert.Equal("{\"@type\":\"gx:BigDecimal\",\"@value\":\"6.5\"}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeBoolean(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(true);
-
- Assert.Equal("true", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeArray(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var array = new[] {5, 6};
-
- var serializedGraphSON = writer.WriteObject(array);
-
- var expectedGraphSON = "[{\"@type\":\"g:Int32\",\"@value\":5},{\"@type\":\"g:Int32\",\"@value\":6}]";
- Assert.Equal(expectedGraphSON, serializedGraphSON);
- }
-
- [Fact]
- public void ShouldSerializeWithCustomSerializerForNewType()
- {
- var customSerializerByType = new Dictionary<Type, IGraphSONSerializer>
- {
- {typeof(TestClass), new TestGraphSONSerializer {TestNamespace = "NS"}}
- };
- var writer = new GraphSON2Writer(customSerializerByType);
- var testObj = new TestClass {Value = "test"};
-
- var serialized = writer.WriteObject(testObj);
-
- Assert.Equal("{\"@type\":\"NS:TestClass\",\"@value\":\"test\"}", serialized);
- }
-
- [Fact]
- public void ShouldSerializeWithCustomSerializerForCommonType()
- {
- var customSerializer = new CustomDummySerializer();
- var customSerializerByType = new Dictionary<Type, IGraphSONSerializer>
- {
- {typeof(int), customSerializer}
- };
- var writer = new GraphSON2Writer(customSerializerByType);
-
- writer.WriteObject(12);
-
- Assert.Equal(12, customSerializer.DictifiedLast);
- }
-
- private class CustomDummySerializer : IGraphSONSerializer
- {
- public dynamic DictifiedLast { get; private set; }
-
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- DictifiedLast = objectData;
- return new Dictionary<string, dynamic>();
- }
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeDateTimeOffset(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var dateTimeOffset = TestUtils.FromJavaTime(1475583442552);
-
- var graphSon = writer.WriteObject(dateTimeOffset);
-
- const string expected = "{\"@type\":\"gx:OffsetDateTime\",\"@value\":\"2016-10-04T12:17:22.5520000+00:00\"}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeDictionary(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var dictionary = new Dictionary<string, dynamic>
- {
- {"age", new List<int> {29}},
- {"name", new List<string> {"marko"}}
- };
-
- var serializedDict = writer.WriteObject(dictionary);
-
- var expectedGraphSON = "{\"age\":[{\"@type\":\"g:Int32\",\"@value\":29}],\"name\":[\"marko\"]}";
- Assert.Equal(expectedGraphSON, serializedDict);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeEdge(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var edge = new Edge(7, new Vertex(0, "person"), "knows", new Vertex(1, "dog"));
-
- var graphSON = writer.WriteObject(edge);
-
- const string expected =
- "{\"@type\":\"g:Edge\",\"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":7},\"outV\":{\"@type\":\"g:Int32\",\"@value\":0},\"outVLabel\":\"person\",\"label\":\"knows\",\"inV\":{\"@type\":\"g:Int32\",\"@value\":1},\"inVLabel\":\"dog\"}}";
- Assert.Equal(expected, graphSON);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeDirection(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var serializedEnum = writer.WriteObject(Direction.Both);
-
- var expectedGraphSON = "{\"@type\":\"g:Direction\",\"@value\":\"BOTH\"}";
- Assert.Equal(expectedGraphSON, serializedEnum);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeDT(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var serializedEnum = writer.WriteObject(DT.Minute);
-
- var expectedGraphSON = "{\"@type\":\"g:DT\",\"@value\":\"minute\"}";
- Assert.Equal(expectedGraphSON, serializedEnum);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeMerge(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var serializedEnum = writer.WriteObject(Merge.OnMatch);
-
- var expectedGraphSON = "{\"@type\":\"g:Merge\",\"@value\":\"onMatch\"}";
- Assert.Equal(expectedGraphSON, serializedEnum);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeGType(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var serializedEnum = writer.WriteObject(GType.Byte);
-
- var expectedGraphSON = "{\"@type\":\"g:GType\",\"@value\":\"BYTE\"}";
- Assert.Equal(expectedGraphSON, serializedEnum);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeList(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var list = new List<int> {5, 6};
-
- var serializedGraphSON = writer.WriteObject(list.ToArray());
-
- var expectedGraphSON = "[{\"@type\":\"g:Int32\",\"@value\":5},{\"@type\":\"g:Int32\",\"@value\":6}]";
- Assert.Equal(expectedGraphSON, serializedGraphSON);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldSerializeGList(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var list = new List<object?> {5, 6, null};
-
- var serializedGraphSON = writer.WriteObject(list);
-
- var expectedGraphSON = "{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Int32\",\"@value\":5}," +
- "{\"@type\":\"g:Int32\",\"@value\":6},null]}";
- Assert.Equal(expectedGraphSON, serializedGraphSON);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldSerializeGSet(int version)
- {
- var writer = CreateGraphSONWriter(version);
- ISet<object> set = new HashSet<object> {600L, 700L};
-
- var serializedGraphSON = writer.WriteObject(set);
-
- var expectedGraphSON = "{\"@type\":\"g:Set\",\"@value\":[{\"@type\":\"g:Int64\",\"@value\":600}," +
- "{\"@type\":\"g:Int64\",\"@value\":700}]}";
- Assert.Equal(expectedGraphSON, serializedGraphSON);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldSerializeGMap(int version)
- {
- var writer = CreateGraphSONWriter(version);
- IDictionary<object, object> map = new Dictionary<object, object> { { 1L, "a"}, { 200L, "b"}};
-
- var serializedGraphSON = writer.WriteObject(map);
-
- var expectedGraphSON = "{\"@type\":\"g:Map\",\"@value\":[{\"@type\":\"g:Int64\",\"@value\":1},\"a\"," +
- "{\"@type\":\"g:Int64\",\"@value\":200},\"b\"]}";
- Assert.Equal(expectedGraphSON, serializedGraphSON);
- }
-
- [Theory, MemberData(nameof(VersionsNotSupportingCollections))]
- public void ShouldSerializePredicateWithMultipleValuesAsJSONArray(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var predicate = new P("within", new List<int> {1, 2});
-
- var serializedPredicate = writer.WriteObject(predicate);
-
- var expectedGraphSON =
- "{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"within\",\"value\":[{\"@type\":\"g:Int32\",\"@value\":1},{\"@type\":\"g:Int32\",\"@value\":2}]}}";
- Assert.Equal(expectedGraphSON, serializedPredicate);
-
- predicate = P.Within(1, 2);
-
- serializedPredicate = writer.WriteObject(predicate);
-
- Assert.Equal(expectedGraphSON, serializedPredicate);
- }
-
- [Theory, MemberData(nameof(VersionsSupportingCollections))]
- public void ShouldSerializePredicateWithMultipleValues(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var predicate = P.Within(new List<int> {1, 2});
-
- var serializedPredicate = writer.WriteObject(predicate);
-
- var expectedGraphSON =
- "{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"within\",\"value\":{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Int32\",\"@value\":1},{\"@type\":\"g:Int32\",\"@value\":2}]}}}";
- Assert.Equal(expectedGraphSON, serializedPredicate);
-
- predicate = P.Within(1, 2);
-
- serializedPredicate = writer.WriteObject(predicate);
-
- Assert.Equal(expectedGraphSON, serializedPredicate);
-
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializePredicateWithSingleValue(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var predicate = new P("lt", 5);
-
- var serializedPredicate = writer.WriteObject(predicate);
-
- var expectedGraphSON =
- "{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"lt\",\"value\":{\"@type\":\"g:Int32\",\"@value\":5}}}";
- Assert.Equal(expectedGraphSON, serializedPredicate);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializePropertyWithEdgeElement(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var property = new Property("aKey", "aValue", new Edge("anId", new Vertex(1), "edgeLabel", new Vertex(2)));
-
- var graphSON = writer.WriteObject(property);
-
- const string expected =
- "{\"@type\":\"g:Property\",\"@value\":{\"key\":\"aKey\",\"value\":\"aValue\",\"element\":{\"@type\":\"g:Edge\",\"@value\":{\"id\":\"anId\",\"outV\":{\"@type\":\"g:Int32\",\"@value\":1},\"label\":\"edgeLabel\",\"inV\":{\"@type\":\"g:Int32\",\"@value\":2}}}}}";
- Assert.Equal(expected, graphSON);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializePropertyWithVertexPropertyElement(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var property = new Property("name", "marko",
- new VertexProperty("anId", "aKey", 21345, new Vertex("vertexId")));
-
- var graphSON = writer.WriteObject(property);
-
- const string expected =
- "{\"@type\":\"g:Property\",\"@value\":{\"key\":\"name\",\"value\":\"marko\",\"element\":{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":\"anId\",\"label\":\"aKey\",\"vertex\":\"vertexId\"}}}}";
- Assert.Equal(expected, graphSON);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeVertexProperty(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var vertexProperty = new VertexProperty("blah", "keyA", true, new Vertex("stephen"));
-
- var graphSON = writer.WriteObject(vertexProperty);
-
- const string expected =
- "{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":\"blah\",\"label\":\"keyA\",\"value\":true,\"vertex\":\"stephen\"}}";
- Assert.Equal(expected, graphSON);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeGuid(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var guid = Guid.Parse("41d2e28a-20a4-4ab0-b379-d810dede3786");
-
- var graphSon = writer.WriteObject(guid);
-
- const string expected = "{\"@type\":\"g:UUID\",\"@value\":\"41d2e28a-20a4-4ab0-b379-d810dede3786\"}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeVertex(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var vertex = new Vertex(45.23f);
-
- var graphSON = writer.WriteObject(vertex);
-
- const string expected =
- "{\"@type\":\"g:Vertex\",\"@value\":{\"id\":{\"@type\":\"g:Float\",\"@value\":45.23},\"label\":\"vertex\"}}";
- Assert.Equal(expected, graphSON);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeVertexWithLabel(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var vertex = new Vertex((long) 123, "project");
-
- var graphSON = writer.WriteObject(vertex);
-
- const string expected =
- "{\"@type\":\"g:Vertex\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":123},\"label\":\"project\"}}";
- Assert.Equal(expected, graphSON);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeReadOnlyStrategy(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var readonlyStrategy = new ReadOnlyStrategy();
-
- var graphSon = writer.WriteObject(readonlyStrategy);
-
- const string expected = "{\"@type\":\"g:ReadOnlyStrategy\",\"@value\":{\"fqcn\":\"org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy\",\"conf\":{}}}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeSubgraphStrategyEmptyConfig(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var readonlyStrategy = new SubgraphStrategy();
-
- var graphSon = writer.WriteObject(readonlyStrategy);
-
- const string expected = "{\"@type\":\"g:SubgraphStrategy\",\"@value\":{\"fqcn\":\"org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy\",\"conf\":{}}}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeSubgraphStrategy(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var readonlyStrategy = new SubgraphStrategy(vertices: __.HasLabel("person"));
-
- Assert.Throws<NotSupportedException>(() => writer.WriteObject(readonlyStrategy));
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeClass(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var type = typeof(InlineFilterStrategy);
-
- var graphSon = writer.WriteObject(type);
-
- const string expected = "{\"@type\":\"g:Class\",\"@value\":\"org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.InlineFilterStrategy\"}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeLambda(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var lambda = Lambda.Groovy("{ it.get() }");
-
- var graphSon = writer.WriteObject(lambda);
-
- const string expected =
- "{\"@type\":\"g:Lambda\",\"@value\":{\"script\":\"{ it.get() }\",\"language\":\"gremlin-groovy\",\"arguments\":-1}}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeTimeSpan(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var timeSpan = new TimeSpan(5, 4, 3, 2, 1);
-
- var graphSon = writer.WriteObject(timeSpan);
-
- const string expected = "{\"@type\":\"gx:Duration\",\"@value\":\"P5DT4H3M2.001S\"}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeBigInteger(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var bigInteger = BigInteger.Parse("123456789987654321123456789987654321");
-
- var graphSon = writer.WriteObject(bigInteger);
-
- const string expected = "{\"@type\":\"gx:BigInteger\",\"@value\":\"123456789987654321123456789987654321\"}";
- Assert.Equal(expected, graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeByte(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject((sbyte)1);
-
- Assert.Equal("{\"@type\":\"gx:Byte\",\"@value\":1}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeByteNegativeValue(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject((sbyte)-42);
-
- Assert.Equal("{\"@type\":\"gx:Byte\",\"@value\":-42}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void TestSByteGraphSONFormat(int version)
- {
- var writer = CreateGraphSONWriter(version);
- var value = (sbyte)42;
-
- var serialized = writer.WriteObject(value);
- var jsonDoc = JsonDocument.Parse(serialized);
-
- Assert.True(jsonDoc.RootElement.TryGetProperty("@type", out var typeProperty));
- Assert.Equal("gx:Byte", typeProperty.GetString());
-
- Assert.True(jsonDoc.RootElement.TryGetProperty("@value", out var valueProperty));
- Assert.Equal(42, valueProperty.GetSByte());
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeByteBuffer(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject(Convert.FromBase64String("c29tZSBieXRlcyBmb3IgeW91"));
-
- Assert.Equal("{\"@type\":\"gx:ByteBuffer\",\"@value\":\"c29tZSBieXRlcyBmb3IgeW91\"}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeChar(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject('x');
-
- Assert.Equal("{\"@type\":\"gx:Char\",\"@value\":\"x\"}", graphSon);
- }
-
- [Theory, MemberData(nameof(Versions))]
- public void ShouldSerializeInt16(int version)
- {
- var writer = CreateGraphSONWriter(version);
-
- var graphSon = writer.WriteObject((short)100);
-
- Assert.Equal("{\"@type\":\"gx:Int16\",\"@value\":100}", graphSon);
- }
- }
-
- internal class TestGraphSONSerializer : IGraphSONSerializer
- {
- public string? TestNamespace { get; set; }
-
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- return GraphSONUtil.ToTypedValue(nameof(TestClass), objectData.Value, TestNamespace);
- }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/TestClass.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/TestClass.cs
deleted file mode 100644
index 9a9183a124..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/TestClass.cs
+++ /dev/null
@@ -1,30 +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
-
-namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
-{
- internal class TestClass
- {
- public dynamic? Value { get; set; }
- }
-}
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/TestUtils.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/TestUtils.cs
deleted file mode 100644
index b6fb39cb1e..0000000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/TestUtils.cs
+++ /dev/null
@@ -1,36 +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;
-
-namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
-{
- internal static class TestUtils
- {
- public static DateTimeOffset FromJavaTime(long milliseconds)
- {
- var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, 0, TimeSpan.Zero);
- return epoch.AddTicks(TimeSpan.TicksPerMillisecond * milliseconds);
- }
- }
-}
\ No newline at end of file