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

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