And also put it please up as a github gist or repository

Thanks!!

Von meinem iPhone gesendet

> Am 18.06.2015 um 03:13 schrieb José Álvarez de Lara <[email protected]>:
> 
> 
> 
> El jueves, 18 de junio de 2015, 0:23:31 (UTC+2), Michael Hunger escribió:
>> 
>> Hi Jose,
>> 
>> thanks so much for your investigative work.
>> 
>> Would you mind writing this up as a blog post? And publish it, then we can 
>> help you promote it too.
>> 
>> Cheers, Michael
>> 
>> Am 17.06.2015 um 00:30 schrieb José Álvarez de Lara <[email protected]>:
>> 
>> Based on "The Neo4j v2.3.0-M01 Manual" manual under "7.1. How to use the 
>> REST API from Java"
>> I have tried to develop a similar code and using the latest Jersey library 
>> to date is 2.18.
>> 
>> 
>> Authentication would take place the following code snippet,
>> 
>>     private static WebTarget testDatabaseAuthentication()
>>     {
>>         // START SNIPPET: testAuthentication
>>         Client client = ClientBuilder.newClient();        
>> HttpAuthenticationFeature authFeature = 
>> HttpAuthenticationFeature.basic(username, password);
>>         client.register(authFeature);        WebTarget target = 
>> client.target(SERVER_ROOT_URI);
>>         
>>         Response response = target
>>                 .request()
>>                 .header("application/xml", "true")
>>                 .get();
>>         
>>         String entity = response.readEntity(String.class);        
>> System.out.println( String.format(
>>                 "GET, status code [%d], returned data: "
>>                         + System.getProperty( "line.separator" ) + "%s",
>>                 response.getStatus(), entity ) );        response.close();
>>         return target;
>>         // END SNIPPET: testAuthentication
>>     }Introducir código aquí...
>> 
>> being the username and password those used to log onto the Neo4j server.
>> 
>> With the authentication method I recover the 'target' object of the WebTarget
>> class and keep it throughout the whole program so as I do not to need to 
>> login
>> in each of the different and consecutive methods again.
>> 
>> I added a helper method to extract the path of each node that then I will use
>> in the different methods. The code snippet is as follows,
>> 
>>     private static String extractPathFromNode( URI node ) {
>>         String auxUri = node.toString();
>>         return auxUri.replace(SERVER_ROOT_URI, "");
>>     }Introducir código aquí...
>> 
>> and what I do is to recover the resulting part of removing the 
>> SERVER_ROOT_URI root
>> (the root "http://localhost:7474/db/data/"; is what I used to login) which is 
>> the
>> 'target' object now.
>> 
>> The rest of the methods will use the 'target' object with the path extracted 
>> from
>> the nodes or properties. I supply now the code snippet of each one,
>> 
>> 
>>     private static void sendTransactionalCypherQuery( WebTarget target, 
>> String query ) {
>>         // START SNIPPET: queryAllNodes
>>         final String txUri = "transaction/commit";
>>         //WebResource resource = Client.create().resource( txUri );        
>> String payload = "{\"statements\" : [ {\"statement\" : \"" + query + "\"} 
>> ]}";
>>         
>>         Response response = target
>>                 .path(txUri)
>>                 .request(MediaType.APPLICATION_JSON)
>>                 .header("application/xml", "true")
>>                 .accept(MediaType.APPLICATION_JSON)
>>                 .post(Entity.entity(payload, 
>> MediaType.APPLICATION_JSON_TYPE));
>>                 
>>         String entity = response.readEntity(String.class);        
>> System.out.println( String.format(
>>                 "GET, status code [%d], returned data: "
>>                         + System.getProperty( "line.separator" ) + "%s",
>>                 response.getStatus(), entity ) );        response.close();
>>         // END SNIPPET: queryAllNodes
>>     }
>>     
>>     private static void findSingersInBands( WebTarget target, URI startNode )
>>             //throws URISyntaxException
>>     {
>>         // START SNIPPET: traversalDesc
>>         // TraversalDefinition turns into JSON to send to the Server
>>         TraversalDefinition t = new TraversalDefinition();
>>         t.setOrder( TraversalDefinition.DEPTH_FIRST );
>>         t.setUniqueness( TraversalDefinition.NODE );
>>         t.setMaxDepth( 10 );
>>         t.setReturnFilter( TraversalDefinition.ALL );
>>         t.setRelationships( new Relation( "singer", Relation.OUT ) );
>>         // END SNIPPET: traversalDesc        // START SNIPPET: traverse
>>         //URI traverserUri = new URI( startNode.toString() + 
>> "/traverse/node" );
>>         String auxPath = extractPathFromNode( startNode );
>>         String traverserUri = auxPath + "/traverse/node";
>>         String jsonTraverserPayload = t.toJson();
>>         
>>         // POST {} to the node entry point URI
>>         Response response = target
>>                 .path(traverserUri)
>>                 .request(MediaType.APPLICATION_JSON)
>>                 .header("application/xml", "true")
>>                 .accept(MediaType.APPLICATION_JSON)
>>                 .post(Entity.entity(jsonTraverserPayload, 
>> MediaType.APPLICATION_JSON_TYPE));
>>         
>>         System.out.println( String.format(
>>                 "POST [%s] to [%s], status code [%d], returned data: "
>>                         + System.getProperty( "line.separator" ) + "%s",
>>                 jsonTraverserPayload, traverserUri, response.getStatus(),
>>                 response.getEntity().toString() ) );
>>         
>>         response.close();
>>         // END SNIPPET: traverse
>>     }
>>     
>>     // START SNIPPET: insideAddMetaToProp
>>     private static void addMetadataToProperty( WebTarget target, URI 
>> relationshipUri,
>>             String name, String value ) //throws URISyntaxException
>>     {
>>         //URI propertyUri = new URI( relationshipUri.toString() + 
>> "/properties" );
>>         String auxPath = extractPathFromNode( relationshipUri );
>>         String propertyUri = auxPath + "/properties";
>>         String entity = toJsonNameValuePairCollection( name, value );
>>         
>>         Response response = target
>>                 .path(propertyUri)
>>                 .request(MediaType.APPLICATION_JSON)
>>                 .header("application/xml", "true")
>>                 .accept(MediaType.APPLICATION_JSON)
>>                 .put(Entity.entity(entity, MediaType.APPLICATION_JSON_TYPE));
>>         
>>         System.out.println( String.format(
>>                 "PUT [%s] to [%s], status code [%d]", entity, propertyUri,
>>                 response.getStatus() ) );
>>         
>>         response.close();
>>     }
>>     // END SNIPPET: insideAddMetaToProp
>>     
>>     private static String toJsonNameValuePairCollection( String name,
> 
> 
> 
> Hi Michael,
> 
> Thank you for to be so kind.
> 
> I will publish it in WordPress where I have opened an account.
> 
> This time I will include the main method to finish completing the blog post.
> 
> Kind regards,
> José 
>> ...
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to