El jueves, 18 de junio de 2015, 22:57:08 (UTC+2), José Álvarez de Lara 
escribió:
>
>
>
> El jueves, 18 de junio de 2015, 17:26:33 (UTC+2), José Álvarez de Lara 
> escribió:
>>
>>
>>
>> El jueves, 18 de junio de 2015, 7:49:55 (UTC+2), Michael Hunger escribió:
>>>
>>> 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é 
>>>
>>>> ... 
>>>
>>>  Here is the blog post I posted.
>>>
>>>                    
>> http://neo4j-and-java-rest-api-auth.blogspot.com.es/p/how-to-use-rest-api-from-java-when-auth.html
>>
>>> Finally I decided to Google Blogger because I did not see the way of how 
>>>> to use SyntaxHighlighter in WordPress.
>>>
>>>                   Cheers 
>>
>
>                      Here is the Project on GitHub repository,
>                      
>                       https://github.com/GGSvennson/Neo4jRestApi
>
>                      Thanks,
>                      Jose
>

                         Hi Michael,

                         I finished the job. Let me know if everything is 
ok.

                         Best,

                        Thanks,
                        Jose 

>  -- 
>>> 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