java-rest-binding icon indicating copy to clipboard operation
java-rest-binding copied to clipboard

java.lang.UnsupportedOperationException: null when creating `RestGraphDatabase` index via Blueprints

Open ceefour opened this issue 13 years ago • 1 comments

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

ceefour avatar Jul 08 '12 08:07 ceefour

If you have the time feel free to give it a try and issue a pull-request

Thanks!

jexp avatar Jul 08 '12 09:07 jexp