Daniel C. Weber created TINKERPOP-2067:
------------------------------------------
Summary: Allow getting raw data from
Gremlin.Net.Driver.IGremlinClient
Key: TINKERPOP-2067
URL: https://issues.apache.org/jira/browse/TINKERPOP-2067
Project: TinkerPop
Issue Type: Improvement
Components: dotnet
Reporter: Daniel C. Weber
I am developing an ORM-style server driver for Gremlin
([https://github.com/ExRam/ExRam.Gremlinq)]. To communicate with
Gremlin-servers, I rely on Gremlin.net
([https://github.com/ExRam/ExRam.Gremlinq/tree/master/ExRam.Gremlinq.Providers.WebSocket).]
Since ExRam.Gremlinq deals with deserializing Json data to POCOs by itself, it
needs to get raw data from an IGremlinClient. Currently, it's only safe to use
SubmitAsync<T> with object or dynamic as T, or other (scalar) types if known it
advance. To get a raw JToken, I currently use a hack:
[https://github.com/ExRam/ExRam.Gremlinq/blob/master/ExRam.Gremlinq.Providers.WebSocket/GremlinClientNativeGremlinQueryProvider.cs#L34]
The hack is not only ugly, it prohibits users of ExRam.Gremlinq to create and
pass in instances of IGremlinClient by themselves, which could become necessary
e.g. for adjusting the Graphson version etc.
I had a look into the sources of Gremlin.net. It deserializes a server's answer
to a ResponseMessage<JToken>, so the JToken is available in any case. It would
be a trivial change to check the type parameter T and return the token if
typeof(T) == typeof(JToken), and I could definitely file the PR for that.
However, I'm of course less aware of possible unintended implications. Any
thoughts are appreciated!
thx
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)