The past 24 hours ive been trying to write a simple pass-through graph provider. Basically a Graph type that takes any other Graph type as an argument in a constructor and passes all calls through to the graph. I want to make the framework so someone can then simply override one or two methods to do simple extensions to existing providers. A HelloWorld test i am trying to write would be one where all the interactions with the base graph would be normal except when setting or getting a property on a edge or a vertex in which case if it is a string it appends a "!" to the end when setting a property. If i can get that minimal functionality working i can reuse and extend those classes to create all sorts of more complex wrapped graphs. I'd like to make that a library on its own that people can use to create easy wrapped graphs which can be used to extend graph provider functionality.
After that id use that library to create a more useful real world utility. What i want to do is create a graph that is backed by a traditional graph DB (say neo4j or titan) which stores all the nodes and edges, but any vertex that has a special property on it would b e treated as a message queue (like redis in publish and subscribe mode). I want to make it so messages could be stored in the messaging queue system (redis) but its content could still be queried from gremlin calls (perhaps treating the messages a bit like a property that stores an array or something). So I could essentially create a Titan-redis hybrid or similar that looks like a unified graph. This in turn could be used as a backend to Apache Storm in order to encode stream topologies in a Tinkerpop / gremlin format. It would also then allow you to perform gremlin queries on the graph to see where bottlenecks in the streams happen to be. Sadly I cant even get a basic passthrough to a tinkergraph to work or even scratch the surface on what im trying to do. All I really need to see is a simple example of a graph provider wrapper but all i keep hearing/seeing are complicated complete solutions. I'm starting to doubt its even possible in any feasible way, but i keep hoping. If anyone can help me please advise. I used to build stuff like this easily in Tinkerpop2 and I'm trying to resist the urge to go back to Tinkerpop2 but its becoming more and more likely if i can't get a TP3 solution to work.
