Josh,

Just to re-assure you I haven't lost this. The REST stuff I wanted in the last 
milestone release is there, and I've been working to make the functional test 
suite run faster. Now I'm at that stage, I'll crack on with this next week.

Jim

On 18 Jun 2011, at 01:17, Josh Adell wrote:

> Jim,
> The best I can do as far as a failing test is this series of curl
> calls.  I create 2 nodes, then connect them with a relationship that
> has a property called "distance".  When I ask for paths without
> specifying the algorithm, I get back the path with the relationship.
> When I specify the algorithm as "dijkstra" with a cost property of
> "distance", I get back a 400 Bad Request with a stack trace.
> 
> Now interestingly, if I create the relationship with a distance of
> 2.0, it works.  Unfortunately, PHP's json_encode method turns a double
> 2.0 into an integer 2.
> 
> My original thought was to make the DoubleEvaluator class cast the
> Integer cost property value to a basic double before wrapping it in a
> Double object.
> 
> Here is the series of commands:
> 
> ===== SHELL
> 
> $ curl -i -HAccept:application/json -HContent-Type:application/json -X
> POST -d '{"name":"A"}' http://localhost:7474/db/data/node
> HTTP/1.1 201 Created
> Content-Length: 996
> Location: http://localhost:7474/db/data/node/73
> Content-Encoding: UTF-8
> Content-Type: application/json
> Access-Control-Allow-Origin: *
> Server: Jetty(6.1.25)
> 
> {
>  "outgoing_relationships" :
> "http://localhost:7474/db/data/node/73/relationships/out";,
>  "data" : {
>    "name" : "A"
>  },
>  "traverse" : "http://localhost:7474/db/data/node/73/traverse/{returnType}";,
>  "all_typed_relationships" :
> "http://localhost:7474/db/data/node/73/relationships/all/{-list|&|types}",
>  "property" : "http://localhost:7474/db/data/node/73/properties/{key}";,
>  "self" : "http://localhost:7474/db/data/node/73";,
>  "properties" : "http://localhost:7474/db/data/node/73/properties";,
>  "outgoing_typed_relationships" :
> "http://localhost:7474/db/data/node/73/relationships/out/{-list|&|types}",
>  "incoming_relationships" :
> "http://localhost:7474/db/data/node/73/relationships/in";,
>  "extensions" : {
>  },
>  "create_relationship" : 
> "http://localhost:7474/db/data/node/73/relationships";,
>  "all_relationships" :
> "http://localhost:7474/db/data/node/73/relationships/all";,
>  "incoming_typed_relationships" :
> "http://localhost:7474/db/data/node/73/relationships/in/{-list|&|types}"
> }
> 
> $ curl -i -HAccept:application/json -HContent-Type:application/json -X
> POST -d '{"name":"B"}' http://localhost:7474/db/data/node
> HTTP/1.1 201 Created
> Content-Length: 996
> Location: http://localhost:7474/db/data/node/74
> Content-Encoding: UTF-8
> Content-Type: application/json
> Access-Control-Allow-Origin: *
> Server: Jetty(6.1.25)
> 
> {
>  "outgoing_relationships" :
> "http://localhost:7474/db/data/node/74/relationships/out";,
>  "data" : {
>    "name" : "B"
>  },
>  "traverse" : "http://localhost:7474/db/data/node/74/traverse/{returnType}";,
>  "all_typed_relationships" :
> "http://localhost:7474/db/data/node/74/relationships/all/{-list|&|types}",
>  "property" : "http://localhost:7474/db/data/node/74/properties/{key}";,
>  "self" : "http://localhost:7474/db/data/node/74";,
>  "properties" : "http://localhost:7474/db/data/node/74/properties";,
>  "outgoing_typed_relationships" :
> "http://localhost:7474/db/data/node/74/relationships/out/{-list|&|types}",
>  "incoming_relationships" :
> "http://localhost:7474/db/data/node/74/relationships/in";,
>  "extensions" : {
>  },
>  "create_relationship" : 
> "http://localhost:7474/db/data/node/74/relationships";,
>  "all_relationships" :
> "http://localhost:7474/db/data/node/74/relationships/all";,
>  "incoming_typed_relationships" :
> "http://localhost:7474/db/data/node/74/relationships/in/{-list|&|types}"
> }
> 
> $ curl -i -HAccept:application/json -HContent-Type:application/json -X
> POST -d 
> '{"to":"http://localhost:7474/db/data/node/74","type":"GO","data":{"name":"AB","distance":2}}'
> http://localhost:7474/db/data/node/73/relationships
> HTTP/1.1 201 Created
> Content-Length: 421
> Location: http://localhost:7474/db/data/relationship/64
> Content-Encoding: UTF-8
> Content-Type: application/json
> Access-Control-Allow-Origin: *
> Server: Jetty(6.1.25)
> 
> {
>  "start" : "http://localhost:7474/db/data/node/73";,
>  "data" : {
>    "distance" : 2,
>    "name" : "AB"
>  },
>  "self" : "http://localhost:7474/db/data/relationship/64";,
>  "property" : 
> "http://localhost:7474/db/data/relationship/64/properties/{key}";,
>  "properties" : "http://localhost:7474/db/data/relationship/64/properties";,
>  "type" : "GO",
>  "extensions" : {
>  },
>  "end" : "http://localhost:7474/db/data/node/74";
> }
> 
> #####  This succeeds
> $ curl -i -HAccept:application/json -HContent-Type:application/json -X
> POST -d '{"to":"http://localhost:7474/db/data/node/74","type":"GO"}'
> http://localhost:7474/db/data/node/73/paths
> HTTP/1.1 200 OK
> Content-Length: 297
> Content-Encoding: UTF-8
> Content-Type: application/json
> Access-Control-Allow-Origin: *
> Server: Jetty(6.1.25)
> 
> [ {
>  "start" : "http://localhost:7474/db/data/node/73";,
>  "nodes" : [ "http://localhost:7474/db/data/node/73";,
> "http://localhost:7474/db/data/node/74"; ],
>  "length" : 1,
>  "relationships" : [ "http://localhost:7474/db/data/relationship/64"; ],
>  "end" : "http://localhost:7474/db/data/node/74";
> } ]
> 
> 
> ##### This fails
> $ curl -i -HAccept:application/json -HContent-Type:application/json -X
> POST -d 
> '{"to":"http://localhost:7474/db/data/node/74","type":"GO","algorithm":"dijkstra","cost
> property":"distance"}' http://localhost:7474/db/data/node/73/paths
> HTTP/1.1 400 Bad Request
> Content-Length: 4579
> Content-Encoding: UTF-8
> Content-Type: application/json
> Access-Control-Allow-Origin: *
> Server: Jetty(6.1.25)
> 
> {
>  "message" : "java.lang.Integer cannot be cast to java.lang.Double",
>  "exception" : "java.lang.ClassCastException: java.lang.Integer
> cannot be cast to java.lang.Double",
>  "stacktrace" : [
> "org.neo4j.graphalgo.impl.util.DoubleEvaluator.getCost(DoubleEvaluator.java:38)",
> "org.neo4j.graphalgo.impl.util.DoubleEvaluator.getCost(DoubleEvaluator.java:26)",
> "org.neo4j.graphalgo.impl.path.Dijkstra$SelectorFactory.calculateValue(Dijkstra.java:100)",
> "org.neo4j.graphalgo.impl.path.Dijkstra$SelectorFactory.calculateValue(Dijkstra.java:88)",
> "org.neo4j.graphalgo.impl.util.BestFirstSelectorFactory$BestFirstSelector.next(BestFirstSelectorFactory.java:66)",
> "org.neo4j.kernel.impl.traversal.TraverserImpl$TraverserIterator.fetchNextOrNull(TraverserImpl.java:127)",
> "org.neo4j.kernel.impl.traversal.TraverserImpl$TraverserIterator.fetchNextOrNull(TraverserImpl.java:94)",
> "org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55)",
> "org.neo4j.graphalgo.impl.util.StopAfterWeightIterator.fetchNextOrNull(StopAfterWeightIterator.java:45)",
> "org.neo4j.graphalgo.impl.util.StopAfterWeightIterator.fetchNextOrNull(StopAfterWeightIterator.java:29)",
> "org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55)",
> "org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)",
> "org.neo4j.server.rest.repr.ListRepresentation.serialize(ListRepresentation.java:58)",
> "org.neo4j.server.rest.repr.ListRepresentation.serialize(ListRepresentation.java:51)",
> "org.neo4j.server.rest.repr.OutputFormat.format(OutputFormat.java:118)",
> "org.neo4j.server.rest.repr.OutputFormat.response(OutputFormat.java:95)",
> "org.neo4j.server.rest.repr.OutputFormat.ok(OutputFormat.java:48)",
> "org.neo4j.server.rest.web.RestfulGraphDatabase.allPaths(RestfulGraphDatabase.java:987)",
> "sun.reflect.GeneratedMethodAccessor153.invoke(Unknown Source)",
> "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)",
> "java.lang.reflect.Method.invoke(Method.java:597)",
> "com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:184)",
> "com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)",
> "com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:276)",
> "com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)",
> "com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)",
> "com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)",
> "com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71)",
> "com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1171)",
> "com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1103)",
> "com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1053)",
> "com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1043)",
> "com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:406)",
> "com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:477)",
> "com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:662)",
> "javax.servlet.http.HttpServlet.service(HttpServlet.java:820)",
> "org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)",
> "org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)",
> "org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)",
> "org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)",
> "org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)",
> "org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)",
> "org.mortbay.jetty.Server.handle(Server.java:326)",
> "org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)",
> "org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)",
> "org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)",
> "org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)",
> "org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)",
> "org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)",
> "org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)"
> ]
> }
> 
> ===== END SHELL
> 
> Thanks for any help you can provide.
> 
> -- Josh
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user

_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to