Skip to content

Commit ef11acd

Browse files
author
mpv1989
committed
extracted VelocyPack implementation
see https://github.com/arangodb/java-velocypack
1 parent e15b0b2 commit ef11acd

File tree

60 files changed

+68
-13032
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+68
-13032
lines changed

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ v4.1.11 (2017-03-xx)
44
* added convenience methods (ArangoCollection.getIndex(String), .deleteIndex(key))
55
* fixed exception handling in Connection (issue #110)
66
* added connection pooling (issue #103)
7+
* extracted VelocyPack implementation to https://github.com/arangodb/java-velocypack
78

89
v4.1.10 (2017-02-22)
910
---------------------------

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<logback-classic.version>1.1.3</logback-classic.version>
2828
<hamcrest-all.version>1.3</hamcrest-all.version>
2929
<junit.version>4.12</junit.version>
30+
<arangodb.velocypack.version>1.0.1</arangodb.velocypack.version>
3031
</properties>
3132

3233
<developers>
@@ -196,6 +197,10 @@
196197
</build>
197198

198199
<dependencies>
200+
<dependency>
201+
<groupId>com.arangodb</groupId>
202+
<artifactId>velocypack</artifactId>
203+
</dependency>
199204
<dependency>
200205
<groupId>org.slf4j</groupId>
201206
<artifactId>slf4j-api</artifactId>
@@ -223,6 +228,11 @@
223228

224229
<dependencyManagement>
225230
<dependencies>
231+
<dependency>
232+
<groupId>com.arangodb</groupId>
233+
<artifactId>velocypack</artifactId>
234+
<version>${arangodb.velocypack.version}</version>
235+
</dependency>
226236
<dependency>
227237
<groupId>org.slf4j</groupId>
228238
<artifactId>slf4j-api</artifactId>

src/main/java/com/arangodb/ArangoDB.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import com.arangodb.internal.CollectionCache.DBAccess;
4242
import com.arangodb.internal.DocumentCache;
4343
import com.arangodb.internal.InternalArangoDB;
44-
import com.arangodb.internal.velocypack.VPackConfigure;
44+
import com.arangodb.internal.velocypack.VPackDriverModule;
4545
import com.arangodb.internal.velocystream.Communication;
4646
import com.arangodb.internal.velocystream.CommunicationSync;
4747
import com.arangodb.internal.velocystream.ConnectionSync;
@@ -57,6 +57,7 @@
5757
import com.arangodb.velocypack.VPackInstanceCreator;
5858
import com.arangodb.velocypack.VPackJsonDeserializer;
5959
import com.arangodb.velocypack.VPackJsonSerializer;
60+
import com.arangodb.velocypack.VPackModule;
6061
import com.arangodb.velocypack.VPackParser;
6162
import com.arangodb.velocypack.VPackSerializer;
6263
import com.arangodb.velocypack.ValueType;
@@ -83,14 +84,15 @@ public static class Builder {
8384
private Integer maxConnections;
8485
private final VPack.Builder vpackBuilder;
8586
private final CollectionCache collectionCache;
86-
private final VPackParser vpackParser;
87+
private final VPackParser.Builder vpackParser;
8788

8889
public Builder() {
8990
super();
9091
vpackBuilder = new VPack.Builder();
9192
collectionCache = new CollectionCache();
92-
vpackParser = new VPackParser();
93-
VPackConfigure.configure(vpackBuilder, vpackParser, collectionCache);
93+
vpackParser = new VPackParser.Builder();
94+
vpackBuilder.registerModule(new VPackDriverModule(collectionCache));
95+
vpackParser.registerModule(new VPackDriverModule(collectionCache));
9496
host = new Host(ArangoDBConstants.DEFAULT_HOST, ArangoDBConstants.DEFAULT_PORT);
9597
hosts = new ArrayList<Host>();
9698
loadProperties(ArangoDB.class.getResourceAsStream(DEFAULT_PROPERTY_FILE));
@@ -260,6 +262,16 @@ public <A extends Annotation> Builder annotationFieldNaming(
260262
return this;
261263
}
262264

265+
public Builder registerModule(final VPackModule module) {
266+
vpackBuilder.registerModule(module);
267+
return this;
268+
}
269+
270+
public Builder registerModules(final VPackModule... modules) {
271+
vpackBuilder.registerModules(modules);
272+
return this;
273+
}
274+
263275
public ArangoDB build() {
264276
if (hosts.isEmpty()) {
265277
hosts.add(host);
@@ -268,7 +280,8 @@ public ArangoDB build() {
268280
new CommunicationSync.Builder(new DefaultHostHandler(hosts)).timeout(timeout).user(user)
269281
.password(password).useSsl(useSsl).sslContext(sslContext).chunksize(chunksize)
270282
.maxConnections(maxConnections),
271-
vpackBuilder.build(), vpackBuilder.serializeNullValues(true).build(), vpackParser, collectionCache);
283+
vpackBuilder.build(), vpackBuilder.serializeNullValues(true).build(), vpackParser.build(),
284+
collectionCache);
272285
}
273286

274287
}

src/main/java/com/arangodb/internal/velocypack/VPackConfigure.java renamed to src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@
3535
import com.arangodb.internal.CollectionCache;
3636
import com.arangodb.internal.velocystream.AuthenticationRequest;
3737
import com.arangodb.model.TraversalOptions;
38-
import com.arangodb.velocypack.VPack;
3938
import com.arangodb.velocypack.VPackDeserializationContext;
4039
import com.arangodb.velocypack.VPackDeserializer;
4140
import com.arangodb.velocypack.VPackFieldNamingStrategy;
4241
import com.arangodb.velocypack.VPackJsonDeserializer;
43-
import com.arangodb.velocypack.VPackParser;
42+
import com.arangodb.velocypack.VPackModule;
43+
import com.arangodb.velocypack.VPackParserModule;
44+
import com.arangodb.velocypack.VPackParserSetupContext;
45+
import com.arangodb.velocypack.VPackSetupContext;
4446
import com.arangodb.velocypack.VPackSlice;
4547
import com.arangodb.velocypack.ValueType;
4648
import com.arangodb.velocypack.exception.VPackException;
@@ -52,16 +54,19 @@
5254
* @author Mark - mark at arangodb.com
5355
*
5456
*/
55-
public class VPackConfigure {
57+
public class VPackDriverModule implements VPackModule, VPackParserModule {
5658

5759
private static final String ID = "_id";
60+
private final CollectionCache collectionCache;
5861

59-
public static void configure(
60-
final VPack.Builder builder,
61-
final VPackParser vpackParser,
62-
final CollectionCache cache) {
62+
public VPackDriverModule(final CollectionCache collectionCache) {
63+
super();
64+
this.collectionCache = collectionCache;
65+
}
6366

64-
builder.fieldNamingStrategy(new VPackFieldNamingStrategy() {
67+
@Override
68+
public <C extends VPackSetupContext<C>> void setup(final C context) {
69+
context.fieldNamingStrategy(new VPackFieldNamingStrategy() {
6570
@Override
6671
public String translateName(final Field field) {
6772
final DocumentField annotation = field.getAnnotation(DocumentField.class);
@@ -71,7 +76,7 @@ public String translateName(final Field field) {
7176
return field.getName();
7277
}
7378
});
74-
builder.registerDeserializer(ID, String.class, new VPackDeserializer<String>() {
79+
context.registerDeserializer(ID, String.class, new VPackDeserializer<String>() {
7580
@Override
7681
public String deserialize(
7782
final VPackSlice parent,
@@ -81,7 +86,7 @@ public String deserialize(
8186
if (vpack.isCustom()) {
8287
final long idLong = NumberUtil.toLong(vpack.getBuffer(), vpack.getStart() + 1,
8388
vpack.getByteSize() - 1);
84-
final String collectionName = cache.getCollectionName(idLong);
89+
final String collectionName = collectionCache.getCollectionName(idLong);
8590
if (collectionName != null) {
8691
final VPackSlice key = parent.get("_key");
8792
id = String.format("%s/%s", collectionName, key.getAsString());
@@ -94,7 +99,26 @@ public String deserialize(
9499
return id;
95100
}
96101
});
97-
vpackParser.registerDeserializer(ID, ValueType.CUSTOM, new VPackJsonDeserializer() {
102+
context.registerSerializer(Request.class, VPackSerializers.REQUEST);
103+
context.registerSerializer(AuthenticationRequest.class, VPackSerializers.AUTH_REQUEST);
104+
context.registerSerializer(CollectionType.class, VPackSerializers.COLLECTION_TYPE);
105+
context.registerSerializer(BaseDocument.class, VPackSerializers.BASE_DOCUMENT);
106+
context.registerSerializer(BaseEdgeDocument.class, VPackSerializers.BASE_EDGE_DOCUMENT);
107+
context.registerSerializer(TraversalOptions.Order.class, VPackSerializers.TRAVERSAL_ORDER);
108+
context.registerSerializer(LogLevel.class, VPackSerializers.LOG_LEVEL);
109+
110+
context.registerDeserializer(Response.class, VPackDeserializers.RESPONSE);
111+
context.registerDeserializer(CollectionType.class, VPackDeserializers.COLLECTION_TYPE);
112+
context.registerDeserializer(CollectionStatus.class, VPackDeserializers.COLLECTION_STATUS);
113+
context.registerDeserializer(BaseDocument.class, VPackDeserializers.BASE_DOCUMENT);
114+
context.registerDeserializer(BaseEdgeDocument.class, VPackDeserializers.BASE_EDGE_DOCUMENT);
115+
context.registerDeserializer(QueryEntity.PROPERTY_STARTED, Date.class, VPackDeserializers.DATE_STRING);
116+
context.registerDeserializer(LogLevel.class, VPackDeserializers.LOG_LEVEL);
117+
}
118+
119+
@Override
120+
public <C extends VPackParserSetupContext<C>> void setup(final C context) {
121+
context.registerDeserializer(ID, ValueType.CUSTOM, new VPackJsonDeserializer() {
98122
@Override
99123
public void deserialize(
100124
final VPackSlice parent,
@@ -103,7 +127,7 @@ public void deserialize(
103127
final StringBuilder json) throws VPackException {
104128
final String id;
105129
final long idLong = NumberUtil.toLong(vpack.getBuffer(), vpack.getStart() + 1, vpack.getByteSize() - 1);
106-
final String collectionName = cache.getCollectionName(idLong);
130+
final String collectionName = collectionCache.getCollectionName(idLong);
107131
if (collectionName != null) {
108132
final VPackSlice key = parent.get("_key");
109133
id = String.format("%s/%s", collectionName, key.getAsString());
@@ -113,22 +137,6 @@ public void deserialize(
113137
json.append(JSONValue.toJSONString(id));
114138
}
115139
});
116-
117-
builder.registerSerializer(Request.class, VPackSerializers.REQUEST);
118-
builder.registerSerializer(AuthenticationRequest.class, VPackSerializers.AUTH_REQUEST);
119-
builder.registerSerializer(CollectionType.class, VPackSerializers.COLLECTION_TYPE);
120-
builder.registerSerializer(BaseDocument.class, VPackSerializers.BASE_DOCUMENT);
121-
builder.registerSerializer(BaseEdgeDocument.class, VPackSerializers.BASE_EDGE_DOCUMENT);
122-
builder.registerSerializer(TraversalOptions.Order.class, VPackSerializers.TRAVERSAL_ORDER);
123-
builder.registerSerializer(LogLevel.class, VPackSerializers.LOG_LEVEL);
124-
125-
builder.registerDeserializer(Response.class, VPackDeserializers.RESPONSE);
126-
builder.registerDeserializer(CollectionType.class, VPackDeserializers.COLLECTION_TYPE);
127-
builder.registerDeserializer(CollectionStatus.class, VPackDeserializers.COLLECTION_STATUS);
128-
builder.registerDeserializer(BaseDocument.class, VPackDeserializers.BASE_DOCUMENT);
129-
builder.registerDeserializer(BaseEdgeDocument.class, VPackDeserializers.BASE_EDGE_DOCUMENT);
130-
builder.registerDeserializer(QueryEntity.PROPERTY_STARTED, Date.class, VPackDeserializers.DATE_STRING);
131-
builder.registerDeserializer(LogLevel.class, VPackDeserializers.LOG_LEVEL);
132140
}
133141

134142
}

src/main/java/com/arangodb/velocypack/ArrayIterator.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/main/java/com/arangodb/velocypack/ObjectIterator.java

Lines changed: 0 additions & 93 deletions
This file was deleted.

0 commit comments

Comments
 (0)