8000 Refactor route · MladenMitev/arangodb-java-driver@540370f · GitHub
[go: up one dir, main page]

Skip to content
Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 540370f

Browse files
author
mpv1989
committed
Refactor route
1 parent 9833035 commit 540370f

File tree

2 files changed

+50
-31
lines changed

2 files changed

+50
-31
lines changed

src/main/java/com/arangodb/internal/ArangoRouteImpl.java

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,11 @@
2020

2121
package com.arangodb.internal;
2222

23-
import java.util.HashMap;
2423
import java.util.Map;
25-
import java.util.Map.Entry;
2624

2725
import com.arangodb.ArangoRoute;
2826
import com.arangodb.internal.ArangoExecutor.ResponseDeserializer;
2927
import com.arangodb.velocypack.exception.VPackException;
30-
import com.arangodb.velocystream.Request;
3128
import com.arangodb.velocystream.RequestType;
3229
import com.arangodb.velocystream.Response;
3330

@@ -38,15 +35,8 @@
3835
public class ArangoRouteImpl extends InternalArangoRoute<ArangoDBImpl, ArangoDatabaseImpl, ArangoExecutorSync>
3936
implements ArangoRoute {
4037

41-
private final Map<String, String> queryParam;
42-
private final Map<String, String> headerParam;
43-
private Object body;
44-
4538
protected ArangoRouteImpl(final ArangoDatabaseImpl db, final String path, final Map<String, String> headerParam) {
46-
super(db, path);
47-
queryParam = new HashMap<String, String>();
48-
this.headerParam = new HashMap<String, String>();
49-
this.headerParam.putAll(headerParam);
39+
super(db, path, headerParam);
5040
}
5141

5242
@Override
@@ -56,38 +46,24 @@ public ArangoRoute route(final String... path) {
5646

5747
@Override
5848
public ArangoRoute withHeader(final String key, final Object value) {
59-
if (value != null) {
60-
headerParam.put(key, value.toString());
61-
}
49+
_withHeader(key, value);
6250
return this;
6351
}
6452

6553
@Override
6654
public ArangoRoute withQueryParam(final String key, final Object value) {
67-
if (value != null) {
68-
queryParam.put(key, value.toString());
69-
}
55+
_withQueryParam(key, value);
7056
return this;
7157
}
7258

7359
@Override
7460
public ArangoRoute withBody(final Object body) {
75-
this.body = body;
61+
_withBody(body);
7662
return this;
7763
}
7864

7965
private Response request(final RequestType requestType) {
80-
final Request request = request(db.name(), requestType, path);
81-
for (final Entry<String, String> param : headerParam.entrySet()) {
82-
request.putHeaderParam(param.getKey(), param.getValue());
83-
}
84-
for (final Entry<String, String> param : queryParam.entrySet()) {
85-
request.putQueryParam(param.getKey(), param.getValue());
86-
}
87-
if (body != null) {
88-
request.setBody(util().serialize(body));
89-
}
90-
return executor.execute(request, new ResponseDeserializer<Response>() {
66+
return executor.execute(createRequest(requestType), new ResponseDeserializer<Response>() {
9167
@Override
9268
public Response deserialize(final Response response) throws VPackException {
9369
return response;

src/main/java/com/arangodb/internal/InternalArangoRoute.java

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,63 @@
2020

2121
package com.arangodb.internal;
2222

23+
import java.util.HashMap;
24+
import java.util.Map;
25+
import java.util.Map.Entry;
26+
27+
import com.arangodb.velocystream.Request;
28+
import com.arangodb.velocystream.RequestType;
29+
2330
/**
2431
* @author Mark Vollmary
2532
*
2633
*/
27-
public class InternalArangoRoute<A extends InternalArangoDB<E>, D extends InternalArangoDatabase<A, E>, E extends ArangoExecutor>
34+
public abstract class InternalArangoRoute<A extends InternalArangoDB<E>, D extends InternalArangoDatabase<A, E>, E extends ArangoExecutor>
2835
extends ArangoExecuteable<E> {
2936

3037
protected final D db;
3138
protected final String path;
3239

33-
protected InternalArangoRoute(final D db, final String path) {
40+
protected final Map<String, String> queryParam;
41+
protected final Map<String, String> headerParam;
42+
protected Object body;
43+
44+
protected InternalArangoRoute(final D db, final String path, final Map<String, String> headerParam) {
3445
super(db.executor, db.util, db.context);
3546
this.db = db;
3647
this.path = path;
48+
this.queryParam = new HashMap<String, String>();
49+
this.headerParam = new HashMap<String, String>();
50+
this.headerParam.putAll(headerParam);
51+
}
52+
53+
public void _withHeader(final String key, final Object value) {
54+
if (value != null) {
55+
headerParam.put(key, value.toString());
56+
}
3757
}
3858

59+
public void _withQueryParam(final String key, final Object value) {
60+
if (value != null) {
61+
queryParam.put(key, value.toString());
62+
}
63+
}
64+
65+
public void _withBody(final Object body) {
66+
this.body = body;
67+
}
68+
69+
protected Request createRequest(final RequestType requestType) {
70+
final Request request = request(db.name(), requestType, path);
71+
for (final Entry<String, String> param : headerParam.entrySet()) {
72+
request.putHeaderParam(param.getKey(), param.getValue());
73+
}
74+
for (final Entry<String, String> param : queryParam.entrySet()) {
75+
request.putQueryParam(param.getKey(), param.getValue());
76+
}
77+
if (body != null) {
78+
request.setBody(util().serialize(body));
79+
}
80+
return request;
81+
}
3982
}

0 commit comments

Comments
 (0)
0