Skip to content

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)