Skip to content
This repository was archived by the owner on Apr 3, 2019. It is now read-only.

Commit 97a4dcc

Browse files
author
Klemens Burchardi
committed
* new Class RestOperations is now used instead of handling the
RestOperations inside the RecordingRestRequest * changed methods and class accordingly
1 parent 8de5c75 commit 97a4dcc

File tree

4 files changed

+47
-99
lines changed

4 files changed

+47
-99
lines changed

src/main/java/org/neo4j/rest/graphdb/BatchRestAPI.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package org.neo4j.rest.graphdb;
22

3-
import java.net.URI;
4-
import java.util.Collection;
3+
54
import java.util.Map;
65

76
import org.neo4j.graphdb.Node;
87
import org.neo4j.graphdb.RelationshipType;
98
import org.neo4j.helpers.collection.MapUtil;
109
import org.neo4j.rest.graphdb.ExecutingRestRequest;
1110
import org.neo4j.rest.graphdb.RecordingRestRequest;
12-
import org.neo4j.rest.graphdb.RecordingRestRequest.RestOperation;
11+
import org.neo4j.rest.graphdb.RestOperations.RestOperation;
1312
import org.neo4j.rest.graphdb.RequestResult;
1413
import org.neo4j.rest.graphdb.RestAPI;
1514
import org.neo4j.rest.graphdb.RestNode;
@@ -28,19 +27,21 @@ public BatchRestAPI( String uri, String user, String password ) {
2827

2928
public BatchRestAPI(String uri, ExecutingRestRequest executingRestRequest){
3029
super(uri);
31-
this.restRequest = new RecordingRestRequest(executingRestRequest);
30+
this.restRequest = new RecordingRestRequest(executingRestRequest, new RestOperations());
3231
}
3332

3433
@Override
3534
protected RestRequest createRestRequest( String uri, String user, String password){
36-
return new RecordingRestRequest(new ExecutingRestRequest(uri, user, password));
35+
return new RecordingRestRequest(new ExecutingRestRequest(uri, user, password),new RestOperations());
3736
}
3837

3938

4039
@Override
4140
public Node createRestNode(RequestResult requestResult) {
42-
final long batchId = requestResult.getBatchId();
43-
return new RestNode("{"+batchId+"}", this);
41+
final long batchId = requestResult.getBatchId();
42+
Node node = new RestNode("{"+batchId+"}", this);
43+
((RecordingRestRequest)this.restRequest).getOperations().addToRestOperation(batchId, node);
44+
return node;
4445
}
4546

4647
@Override
@@ -51,16 +52,19 @@ public RestRelationship createRelationship(Node startNode, Node endNode, Relatio
5152
data.put("data",props);
5253
}
5354
RequestResult requestResult = this.restRequest.post(restRequest.getUri()+"/relationships", data);
55+
//RequestResult requestResult = restRequest.post( "relationships", data);
5456
return createRestRelationship(requestResult, startNode);
5557
}
5658

5759
@Override
5860
public RestRelationship createRestRelationship(RequestResult requestResult, Node startNode) {
59-
final long batchId = requestResult.getBatchId();
60-
return new RestRelationship("{"+batchId+"}", this);
61+
final long batchId = requestResult.getBatchId();
62+
RestRelationship relationship = new RestRelationship("{"+batchId+"}", this);
63+
((RecordingRestRequest)this.restRequest).getOperations().addToRestOperation(batchId, relationship);
64+
return relationship;
6165
}
6266

63-
public Collection<RestOperation> getRecordedOperations(){
64-
return ((RecordingRestRequest) this.restRequest).getRecordedRequests();
67+
public Map<Long,RestOperation> getRecordedOperations(){
68+
return ((RecordingRestRequest) this.restRequest).getOperations().getRecordedRequests();
6569
}
6670
}

src/main/java/org/neo4j/rest/graphdb/RecordingRestRequest.java

Lines changed: 25 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,38 @@
22

33

44
import java.io.UnsupportedEncodingException;
5-
import java.net.URI;
6-
import java.net.URISyntaxException;
75
import java.net.URLEncoder;
8-
import java.util.ArrayList;
9-
import java.util.Collection;
10-
import java.util.HashMap;
116
import java.util.Map;
12-
import java.util.concurrent.atomic.AtomicLong;
137

148
import javax.ws.rs.core.MediaType;
15-
import org.neo4j.rest.graphdb.RecordingRestRequest.RestOperation.Methods;
169

10+
import org.neo4j.rest.graphdb.RestOperations.RestOperation;
11+
import org.neo4j.rest.graphdb.RestOperations.RestOperation.Methods;
1712

1813

19-
public class RecordingRestRequest implements RestRequest {
20-
21-
private Collection<RestOperation> operations = new ArrayList<RecordingRestRequest.RestOperation>();
14+
15+
public class RecordingRestRequest implements RestRequest {
16+
2217
protected final String baseUri;
2318
private MediaType contentType;
24-
private MediaType acceptHeader;
25-
private AtomicLong currentBatchId = new AtomicLong(0);
19+
private MediaType acceptHeader;
2620
private RestRequest restRequest;
21+
private RestOperations operations;
2722

2823

2924

30-
public RecordingRestRequest( RestRequest restRequest ) {
25+
public RestOperations getOperations() {
26+
return operations;
27+
}
28+
29+
public RecordingRestRequest( RestRequest restRequest) {
3130
this( restRequest.getUri(), MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON_TYPE );
3231
this.restRequest = restRequest;
3332
}
3433

35-
public RecordingRestRequest( RestRequest restRequest, AtomicLong currentBatchid ) {
34+
public RecordingRestRequest( RestRequest restRequest, RestOperations operations ) {
3635
this(restRequest);
37-
this.currentBatchId = currentBatchid;
36+
this.operations = operations;
3837
}
3938

4039

@@ -46,59 +45,7 @@ public RecordingRestRequest(String baseUri, MediaType contentType, MediaType acc
4645
}
4746

4847

49-
public static class RestOperation {
50-
public enum Methods{
51-
POST,
52-
PUT,
53-
GET,
54-
DELETE
55-
}
56-
57-
private Methods method;
58-
private Object data;
59-
private long batchId;
60-
private String uri;
61-
private MediaType contentType;
62-
private MediaType acceptHeader;
63-
64-
public RestOperation(long batchId, Methods method, String uri, MediaType contentType, MediaType acceptHeader, Object data){
65-
this.batchId = batchId;
66-
this.method = method;
67-
this.uri = uri;
68-
this.contentType = contentType;
69-
this.acceptHeader = acceptHeader;
70-
this.data = data;
71-
}
72-
73-
public Methods getMethod() {
74-
return method;
75-
}
76-
77-
public Object getData() {
78-
return data;
79-
}
80-
81-
public long getBatchId() {
82-
return batchId;
83-
}
84-
85-
public String getUri() {
86-
return uri;
87-
}
88-
89-
public MediaType getContentType() {
90-
return contentType;
91-
}
92-
93-
public MediaType getAcceptHeader() {
94-
return acceptHeader;
95-
}
96-
97-
}
98-
99-
public Collection<RestOperation> getRecordedRequests(){
100-
return this.operations;
101-
}
48+
10249

10350
@Override
10451
public RequestResult get(String path, Object data) {
@@ -123,7 +70,7 @@ public RequestResult put(String path, Object data) {
12370

12471
@Override
12572
public RestRequest with(String uri) {
126-
return new RecordingRestRequest(this.restRequest.with(uri), this.currentBatchId);
73+
return new RecordingRestRequest(this.restRequest.with(uri), this.operations);
12774
}
12875

12976
@Override
@@ -136,20 +83,12 @@ public RequestResult get(String path) {
13683
return this.record(Methods.GET, path, null);
13784
}
13885

139-
public RequestResult record(Methods method, String path, Object data){
140-
RestOperation r = new RestOperation(this.currentBatchId.incrementAndGet(),method,path,this.contentType,this.acceptHeader,data);
141-
operations.add(r);
142-
return RequestResult.batchResult(r);
86+
public RequestResult record(Methods method, String path, Object data){
87+
return this.operations.record(method, path, data);
14388
}
144-
14589

146-
private URI uri( String uri ) {
147-
try {
148-
return new URI( uri );
149-
} catch ( URISyntaxException e ) {
150-
throw new RuntimeException( e );
151-
}
152-
}
90+
91+
15392

15493
private String uriWithoutSlash( String uri ) {
15594
String uriString = uri;
@@ -163,6 +102,10 @@ public static String encode( Object value ) {
163102
} catch ( UnsupportedEncodingException e ) {
164103
throw new RuntimeException( e );
165104
}
166-
}
105+
}
106+
107+
public Map<Long,RestOperation> getRecordedRequests(){
108+
return this.operations.getRecordedRequests();
109+
}
167110
}
168111

src/main/java/org/neo4j/rest/graphdb/RequestResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import javax.ws.rs.core.Response;
2121
import javax.ws.rs.core.Response.StatusType;
2222

23-
import org.neo4j.rest.graphdb.RecordingRestRequest.RestOperation;
23+
import org.neo4j.rest.graphdb.RestOperations.RestOperation;
2424

2525
import java.net.URI;
2626
import java.util.Map;

src/main/java/org/neo4j/rest/graphdb/RestAPI.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.neo4j.graphdb.traversal.TraversalDescription;
1616
import org.neo4j.helpers.collection.MapUtil;
1717
import org.neo4j.index.impl.lucene.LuceneIndexImplementation;
18-
import org.neo4j.rest.graphdb.RecordingRestRequest.RestOperation;
18+
import org.neo4j.rest.graphdb.RestOperations.RestOperation;
1919
import org.neo4j.rest.graphdb.BatchRestAPI;
2020
import org.neo4j.rest.graphdb.index.RestIndexManager;
2121

@@ -149,14 +149,14 @@ public void setPropertyRefetchTimeInMillis(long propertyRefetchTimeInMillis) {
149149
public <T> T executeBatch( BatchCallback<T> batchCallback){
150150
BatchRestAPI batchRestApi = new BatchRestAPI(this.restRequest.getUri(), (ExecutingRestRequest)this.restRequest);
151151
T batchResult = batchCallback.recordBatch(batchRestApi);
152-
Collection<RestOperation> operations = batchRestApi.getRecordedOperations();
152+
Map<Long, RestOperation> operations = batchRestApi.getRecordedOperations();
153153
RequestResult response = this.restRequest.post("batch", createBatchRequestData(operations));
154154
return batchResult;
155155
}
156156

157-
private Collection<Map<String,Object>> createBatchRequestData(Collection<RestOperation> operations){
157+
private Collection<Map<String,Object>> createBatchRequestData(Map<Long, RestOperation> operations){
158158
Collection<Map<String,Object>> batch = new ArrayList<Map<String,Object>>();
159-
for (RestOperation operation : operations){
159+
for (RestOperation operation : operations.values()){
160160
Map<String,Object> params = new HashMap<String, Object>();
161161
params.put("method", operation.getMethod());
162162
params.put("to", operation.getUri());
@@ -165,7 +165,8 @@ private Collection<Map<String,Object>> createBatchRequestData(Collection<RestOpe
165165
}
166166
params.put("id", operation.getBatchId());
167167
batch.add(params);
168-
}
168+
}
169+
System.out.println(batch.toString());
169170
return batch;
170171
}
171172

0 commit comments

Comments
 (0)