java-rest-binding
java-rest-binding copied to clipboard
java.lang.UnsupportedOperationException: null when creating `RestGraphDatabase` index via Blueprints
REST Graph Database (v1.6), server powered by Neo4j v1.6.2 is unable to create index via Blueprints with the following error:
01:43:11.983 [main] INFO com.hendyirawan.likebox.dao.LikeDao - Connecting to Neo4j REST Graph Database http://localhost:7474/db/data
01:43:12.246 [main] DEBUG com.hendyirawan.likebox.dao.LikeDao - Get vertex index likeboxPerson
01:43:12.476 [main] INFO com.hendyirawan.likebox.dao.LikeDao - Creating vertex index likeboxPerson
java.lang.UnsupportedOperationException: null
at org.neo4j.rest.graphdb.index.RestIndexManager.setConfiguration(RestIndexManager.java:134) ~[neo4j-rest-graphdb-1.6.jar:1.6]
at com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jIndex.generateIndex(Neo4jIndex.java:127) ~[blueprints-neo4j-graph-1.2.jar:na]
at com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jIndex.<init>(Neo4jIndex.java:37) ~[blueprints-neo4j-graph-1.2.jar:na]
at com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jGraph.getIndex(Neo4jGraph.java:144) ~[blueprints-neo4j-graph-1.2.jar:na]
at com.hendyirawan.likebox.dao.LikeDao.getIndex(LikeDao.java:43) [classes/:na]
at com.hendyirawan.likebox.dao.LikeDao.getPerson(LikeDao.java:51) [classes/:na]
at com.hendyirawan.likebox.LikeDaoTest.personShouldExist(LikeDaoTest.java:49) [test-classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) [junit-4.10.jar:na]
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) [junit-4.10.jar:na]
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) [junit-4.10.jar:na]
at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:270) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60) [arquillian-container-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:53) [arquillian-container-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142) [arquillian-container-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createTestContext(ContainerEventController.java:129) [arquillian-container-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:89) [arquillian-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75) [arquillian-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60) [arquillian-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_31]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_31]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_31]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135) [arquillian-core-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111) [arquillian-test-impl-base-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:263) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:226) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:240) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) [junit-4.10.jar:na]
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) [junit-4.10.jar:na]
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) [junit-4.10.jar:na]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) [junit-4.10.jar:na]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) [junit-4.10.jar:na]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) [junit-4.10.jar:na]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) [junit-4.10.jar:na]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) [junit-4.10.jar:na]
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:185) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:199) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) [junit-4.10.jar:na]
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:147) [arquillian-junit-core-1.0.0.Final.jar:1.0.0.Final]
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) [.cp/:na]
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) [.cp/:na]
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) [.cp/:na]
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) [.cp/:na]
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) [.cp/:na]
Sample project: https://github.com/ceefour/likebox/zipball/neo4j-rest-blueprint
Code to create index :
protected Index<Vertex> getIndex(String kind) {
String indexName = prefix + kind;
log.debug("Get vertex index {}", indexName);
try {
return g.getIndex(indexName, Vertex.class);
} catch (Exception e) {
log.info("Creating vertex index " + indexName, e);
return g.createManualIndex(indexName, Vertex.class);
}
}
Issue is still reproducible on Neo4j 1.7 via RestGraphDb and Blueprints 1.2.
Workaround : Go to webadmin Gremlin console then create the indexes via Gremlin/Blueprints :
g.createManualIndex('berbatikPerson', Vertex.class)
g.createManualIndex('berbatikProduct', Vertex.class)
A non-Blueprints index is not usable, because plain index have parameters of only:
{"type":"exact"}
while a Blueprints index has parameters of:
{"_blueprints:type":"MANUAL", "type":"exact"}
Moved from neo4j issue: https://github.com/neo4j/community/issues/416
If you have the time feel free to give it a try and issue a pull-request
Thanks!