How to handle the "Unknow ODataVersion 3.0" exception when I use odata4j? - odata

I am studying the odata protocal, and find the odata4j, but when I follow the Consumers Example, an exception occurred, "java.lang.IllegalArgumentException: Unknown ODataVersion 3.0". I debug it and found the odata4j is not supported odata version 3. My question is how can I fix it, or how can I use odata4j? Can I change something to make the version to 2 or 1?? Thank you very much.
By the way, I dowloaded the latest odata4j, which is version 0.7.

A sincere recommendation is to switch to Apache Olingo if you would like to implement OData services or clients on the Java platform. The only reason is that OData4J hasn't been updated for more than a year and is not currently supported or maintained. Apache Olingo, on the other hand, is been actively contributed by SAP, Microsoft, and many others. Thus, there are also more samples and documentations there.

Related

Tinkerpop common version for multiple databases

Summary
I am devloping a app that is intendent to work across multiple graph databases suppoted by tinkerpop
Details
Based on my research the same version of tinkerpop library (gremlin-python) does not work with the latest version of all the graph databases. What is the best approach for this situation. The databases I intent to test are
JanusGraph 0.2.0 supported gremlin-python 3.2.7
NEO4J 3.3.3 supported gremlin-python 3.3.2
I am still trying to integrating some more databases like orientDB and Amazon Neptune do you know what version they will supported.
This issue can be a little tricky especially with non-open source systems that don't publish version and feature support clearly. For open source systems, you can typically find the version of TinkerPop they support for a particular version by looking at the pom.xml of the project. For OrientDB that means finding the version you want (in this case 3.2.3.0) and then looking for the gremlin-core dependency:
https://github.com/orientechnologies/orientdb-gremlin/blob/3.2.3.0/driver/pom.xml#L47
The version points to a property, so examine the pom a bit further and you'll see that number defined above:
https://github.com/orientechnologies/orientdb-gremlin/blob/3.2.3.0/driver/pom.xml#L14
So OrientDB 3.2.3.0 supports TinkerPop 3.2.3. With closed source systems you can only search around until you find the answer your looking for or ask the vendor directly I guess - I've seen that Neptune is on 3.3.x, but I'm not sure of what version of "x".
Just because all of these systems support different versions of TinkerPop and the general recommendation is to use a matching TinkerPop version to connect to them doesn't mean that you can't get a 3.3.x driver to connect to a 3.2.x based server. You may not have the best experience doing so and you would need to be aware of a few things as you do that, but I think it can be done.
The key to this to work from a driver perspective is to ensure that you have the right serialization configuration for the graph you are connecting to. This is true whether you are trying to connect to a same version system or not. By default, TinkerPop ensures that these configurations within the same version are aligned so that they work out of the box. This is why we tend to recommend that you use the same version when possible. When not possible, you need to make those alignments manually.
For example, if you scroll down in this link a bit to the "Serialization" section you will find the supported formats for Neptune:
https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html
As long as you configure your driver to match one of those formats it should work for you. The same could be said of JanusGraph, which in contrast to Neptune, will not support Gryo or GraphSON 3.0 as it is bound to the 3.2.x line. The configuration for the serializers can be found in JanusGraph's packaging of Gremlin Server:
https://github.com/JanusGraph/janusgraph/blob/v0.2.0/janusgraph-dist/src/assembly/static/conf/gremlin-server/gremlin-server.yaml#L15-L21
As to how you configure your python driver for serialization? Admittedly, there isn't a lot written on that. The key is to set the message_serializer when configuring the Client (from gremlinpython 3.3.2):
https://github.com/apache/tinkerpop/blob/3.3.2/gremlin-python/src/main/jython/gremlin_python/driver/client.py#L44-L45
You can see there that by default it is set to GraphSON 3.0. So, that's perfect for Neptune, but not JanusGraph. For JanusGraph, which doesn't support GraphSON 3.0 yet, you would just change the configuration to use the GraphSON 2.0 serializer:
https://github.com/apache/tinkerpop/blob/3.3.2/gremlin-python/src/main/jython/gremlin_python/driver/serializer.py#L149
So, that is just getting a connection working - then there are other things to consider:
If you use a new version of gremlinpython against an older server, you will need to make sure that you are aware of any features that aren't supported on the server (e.g. don't use math() step from your 3.3.x client because it won't work on a 3.2.x server)
CosmosDB has may allow you to connect with 3.3.x, but it doesn't have full Gremlin support and at this time does not support bytecode based traversals - only strings
A number of bugs have been fixed in GraphSON serialization over these releases and sometimes certain types may have a revised serialization scheme that may prevent a 3.3.x from talking to a 3.2.x - I can't think of any big issues like that offhand that would immediately jump out, but I'm pretty sure it's happened - perhaps something in serialization of Tree and perhaps some of the extended types. You can always look at the full list of GraphSON types here and compare between published versions if you run into trouble.

Whats difference between HL7 v2.5 and v2.8

Whats difference between HL7 version 2.5 and 2.8. I searched on google, but couldn't get any good information on this.
We need to migrate to 2.8, and wondering how much impact we would have because of this change.
All HL7v2 versions are backwards compatible, meaning that if you assert that you are using 2.8, a 2.5 message should automatically be valid in 2.8.
That said, HL7v2 implementations may be making rules/assumptions that don't follow anything in the spec.
From HL7v2.7 Chapter 1.8.1
The usage of multiple versions of HL7 2.x within a single integration infrastructure creates further anomalies that are introduced as the Standard has evolved. While all attempts have been made to maintain “backwards compatibility” it is clearly a goal that cannot be completely achieved. For example, documentation exists within HL7 2.x that, after several years of continued support, has retired older data types with newer definitions that support more comprehensive properties including requirements for all countries using HL7.
You state that you need to migrate to 2.8. The only reason you would need to upgrade is if you have need of a new field added in a version between 2.5 and 2.8.
Chapter 1 of each HL7 version spec usually contains errata and breaking changes between versions.

How to implement a SignalR client in Delphi

I look like having a requirement to access a SignalR hub with a Delphi client.
How do I implement a basic SignalR client in Delphi?
More generally, where can I find an up to date description of the protocol?
Traffic load will not be high, so it doesn't have to be extremely clever or anything.
[Edited to make it less of a "recommendation" question.]
Partial answer to question: I found useful, low level version of the documentation in a legacy zip of version 1.3
It has since vanished from the signalr git repository, and I've been unable to find a newer version online anywhere.
I have popped it here for convenience.
http://www.mithril.com.au/SignalR%20Protocol.docx
This document describes the protocol at a suitably low-level for me to feel confident I can construct a partial implementation of SignalR using existing components, sufficient for my purposes anyway.
If a more up to date version of this exists anywhere, I'd appreciate a link.

Choosing Erlang webserver

Yep, subjective question. But here are a lot of such questions that got good answers. So now I have to try to develop some REST API with Erlang, as I got from google I have to install some webserver, such as Cowboy, Webmachine, Yaws, Mociweb. But all information I can find is too old and seems to be non-actual. So what server still keeps on developing and how can I choose one for me? Am I wrong at all at this way?
You can't go wrong with Cowboy. It is actively being developed, with a 2.0 pre-release just made available. The documentation is excellent, and handles REST very well.
See: http://ninenines.eu/docs/en/cowboy/1.0/guide/rest_handlers/ for the Cowboy REST support.

How to install implementation of Corba on my computer and then program using any language compatible with Corba

I have to do a project in Corba.I have absolutely zero knowledge of corba.Things that I've to do is first is to install a corba implementation on my PC.After that I have to develop a Photo Printing Portal in any programming language supported by Corba.After that I have to deploy my application on the supplied ORB.
Please suggest how should I go about doing this.
You did not mention any programming language.
In case it is C++, I highly recommend to read the book Advanced CORBA Programming with C++
It may be an idea to get Java on one side and C++ on another side talking with each other, using CORBA.
In addition to that #lothar recommends, you could install Eclipse and develop in Java. Java has CORBA support. JacORB has been used by some as more stable and reliable alternative but this was ten years ago and probably many Sun's CORBA bugs at that time are already fixed.
For C++, you can try ACE-TAO version. It has many examples in
ACE_wrappers/TAO/examples
Besides, there are many script supported Corba, such as R2Corba, omniORBpy.. I also have one Corba supported Tcl version which is not useful for you due to license restriction(But there is do some open source version).
I believe script corba is more appliable for your since less code is required..

Resources