Tinkerpop3 custom edge id generator
I use TinkerGraph
for integration tests (extended unit tests) in Java. In this implementation Edge ids
are generated as a sequence of Integers. I want to change that so they are generated as random UUIDs. The reason for this is to get my test setup behave closer to my production graph database. Can I do this in Tinkerpop3
and if so how?
I have found that in Tinkerpop/blueprints (https://github.com/tinkerpop/blueprints/wiki/id-implementation) there existed an IdGraph.IdFactory
which seemingly would provide what I need. However as I understand it that is not available for Tinkerpop3.
java tinkerpop3 tinkergraph
add a comment |
I use TinkerGraph
for integration tests (extended unit tests) in Java. In this implementation Edge ids
are generated as a sequence of Integers. I want to change that so they are generated as random UUIDs. The reason for this is to get my test setup behave closer to my production graph database. Can I do this in Tinkerpop3
and if so how?
I have found that in Tinkerpop/blueprints (https://github.com/tinkerpop/blueprints/wiki/id-implementation) there existed an IdGraph.IdFactory
which seemingly would provide what I need. However as I understand it that is not available for Tinkerpop3.
java tinkerpop3 tinkergraph
add a comment |
I use TinkerGraph
for integration tests (extended unit tests) in Java. In this implementation Edge ids
are generated as a sequence of Integers. I want to change that so they are generated as random UUIDs. The reason for this is to get my test setup behave closer to my production graph database. Can I do this in Tinkerpop3
and if so how?
I have found that in Tinkerpop/blueprints (https://github.com/tinkerpop/blueprints/wiki/id-implementation) there existed an IdGraph.IdFactory
which seemingly would provide what I need. However as I understand it that is not available for Tinkerpop3.
java tinkerpop3 tinkergraph
I use TinkerGraph
for integration tests (extended unit tests) in Java. In this implementation Edge ids
are generated as a sequence of Integers. I want to change that so they are generated as random UUIDs. The reason for this is to get my test setup behave closer to my production graph database. Can I do this in Tinkerpop3
and if so how?
I have found that in Tinkerpop/blueprints (https://github.com/tinkerpop/blueprints/wiki/id-implementation) there existed an IdGraph.IdFactory
which seemingly would provide what I need. However as I understand it that is not available for Tinkerpop3.
java tinkerpop3 tinkergraph
java tinkerpop3 tinkergraph
asked Nov 15 '18 at 12:24
AnnTeaAnnTea
457614
457614
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
This looks to be possible but will require some work. Vertex
and Edge Ids
in TinkerGraph
are determined using IDManagers
which is done here.
You can see that this is decided via a config value which ends up using reflection to construct the IDManager
.
So you would have to do the following:
Create your own
IDManager
by implementing the interface you can use the default manager as a guideline. For example:
public enum DefaultIdManager implements IdManager {
...
ANY {
@Override
public Long getNextId(final TinkerGraph graph) {
return unique random number
}
}
...
}
You would then have to create a config with your new manager specified and create the tinkergraph using that manager:
BaseConfiguration config = new BaseConfiguration();
config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
TinkerGraph.open(config);
I would love to know if there is an easier way but I think this will work.
Side Note:
It might be easier to check if your production graph DB provides an in-memory layer. I know a few graph dbs do and using that rather than TinkerGraph
will likely be better. TinkerGraph
is really only meant for plating around I believe.
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53319470%2ftinkerpop3-custom-edge-id-generator%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This looks to be possible but will require some work. Vertex
and Edge Ids
in TinkerGraph
are determined using IDManagers
which is done here.
You can see that this is decided via a config value which ends up using reflection to construct the IDManager
.
So you would have to do the following:
Create your own
IDManager
by implementing the interface you can use the default manager as a guideline. For example:
public enum DefaultIdManager implements IdManager {
...
ANY {
@Override
public Long getNextId(final TinkerGraph graph) {
return unique random number
}
}
...
}
You would then have to create a config with your new manager specified and create the tinkergraph using that manager:
BaseConfiguration config = new BaseConfiguration();
config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
TinkerGraph.open(config);
I would love to know if there is an easier way but I think this will work.
Side Note:
It might be easier to check if your production graph DB provides an in-memory layer. I know a few graph dbs do and using that rather than TinkerGraph
will likely be better. TinkerGraph
is really only meant for plating around I believe.
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
add a comment |
This looks to be possible but will require some work. Vertex
and Edge Ids
in TinkerGraph
are determined using IDManagers
which is done here.
You can see that this is decided via a config value which ends up using reflection to construct the IDManager
.
So you would have to do the following:
Create your own
IDManager
by implementing the interface you can use the default manager as a guideline. For example:
public enum DefaultIdManager implements IdManager {
...
ANY {
@Override
public Long getNextId(final TinkerGraph graph) {
return unique random number
}
}
...
}
You would then have to create a config with your new manager specified and create the tinkergraph using that manager:
BaseConfiguration config = new BaseConfiguration();
config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
TinkerGraph.open(config);
I would love to know if there is an easier way but I think this will work.
Side Note:
It might be easier to check if your production graph DB provides an in-memory layer. I know a few graph dbs do and using that rather than TinkerGraph
will likely be better. TinkerGraph
is really only meant for plating around I believe.
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
add a comment |
This looks to be possible but will require some work. Vertex
and Edge Ids
in TinkerGraph
are determined using IDManagers
which is done here.
You can see that this is decided via a config value which ends up using reflection to construct the IDManager
.
So you would have to do the following:
Create your own
IDManager
by implementing the interface you can use the default manager as a guideline. For example:
public enum DefaultIdManager implements IdManager {
...
ANY {
@Override
public Long getNextId(final TinkerGraph graph) {
return unique random number
}
}
...
}
You would then have to create a config with your new manager specified and create the tinkergraph using that manager:
BaseConfiguration config = new BaseConfiguration();
config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
TinkerGraph.open(config);
I would love to know if there is an easier way but I think this will work.
Side Note:
It might be easier to check if your production graph DB provides an in-memory layer. I know a few graph dbs do and using that rather than TinkerGraph
will likely be better. TinkerGraph
is really only meant for plating around I believe.
This looks to be possible but will require some work. Vertex
and Edge Ids
in TinkerGraph
are determined using IDManagers
which is done here.
You can see that this is decided via a config value which ends up using reflection to construct the IDManager
.
So you would have to do the following:
Create your own
IDManager
by implementing the interface you can use the default manager as a guideline. For example:
public enum DefaultIdManager implements IdManager {
...
ANY {
@Override
public Long getNextId(final TinkerGraph graph) {
return unique random number
}
}
...
}
You would then have to create a config with your new manager specified and create the tinkergraph using that manager:
BaseConfiguration config = new BaseConfiguration();
config.addProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, "your.package.structure.YourIdManager.ANY");
TinkerGraph.open(config);
I would love to know if there is an easier way but I think this will work.
Side Note:
It might be easier to check if your production graph DB provides an in-memory layer. I know a few graph dbs do and using that rather than TinkerGraph
will likely be better. TinkerGraph
is really only meant for plating around I believe.
answered Nov 28 '18 at 9:33
Filipe TeixeiraFilipe Teixeira
3,1251836
3,1251836
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
add a comment |
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
This works. Thanks.
– AnnTea
Nov 30 '18 at 18:10
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53319470%2ftinkerpop3-custom-edge-id-generator%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown