3535import com .arangodb .internal .CollectionCache ;
3636import com .arangodb .internal .velocystream .AuthenticationRequest ;
3737import com .arangodb .model .TraversalOptions ;
38- import com .arangodb .velocypack .VPack ;
3938import com .arangodb .velocypack .VPackDeserializationContext ;
4039import com .arangodb .velocypack .VPackDeserializer ;
4140import com .arangodb .velocypack .VPackFieldNamingStrategy ;
4241import 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 ;
4446import com .arangodb .velocypack .VPackSlice ;
4547import com .arangodb .velocypack .ValueType ;
4648import com .arangodb .velocypack .exception .VPackException ;
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}
0 commit comments