2222
2323import java .io .IOException ;
2424import java .io .InputStream ;
25+ import java .lang .annotation .Annotation ;
2526import java .util .Collection ;
2627import java .util .Properties ;
2728
4647import com .arangodb .model .UserCreateOptions ;
4748import com .arangodb .model .UserUpdateOptions ;
4849import com .arangodb .velocypack .VPack ;
50+ import com .arangodb .velocypack .VPackAnnotationFieldFilter ;
51+ import com .arangodb .velocypack .VPackAnnotationFieldNaming ;
4952import com .arangodb .velocypack .VPackDeserializer ;
5053import com .arangodb .velocypack .VPackInstanceCreator ;
54+ import com .arangodb .velocypack .VPackJsonDeserializer ;
55+ import com .arangodb .velocypack .VPackJsonSerializer ;
5156import com .arangodb .velocypack .VPackParser ;
5257import com .arangodb .velocypack .VPackSerializer ;
58+ import com .arangodb .velocypack .ValueType ;
5359import com .arangodb .velocypack .exception .VPackException ;
5460import com .arangodb .velocystream .Request ;
5561import com .arangodb .velocystream .Response ;
@@ -169,6 +175,20 @@ public <T> Builder registerSerializer(final Class<T> clazz, final VPackSerialize
169175 return this ;
170176 }
171177
178+ /**
179+ * Register a special serializer for a member class which can only be identified by its enclosing class.
180+ *
181+ * @param clazz
182+ * type of the enclosing class
183+ * @param serializer
184+ * serializer to register
185+ * @return builder
186+ */
187+ public <T > Builder registerEnclosingSerializer (final Class <T > clazz , final VPackSerializer <T > serializer ) {
188+ vpackBuilder .registerEnclosingSerializer (clazz , serializer );
189+ return this ;
190+ }
191+
172192 public <T > Builder registerDeserializer (final Class <T > clazz , final VPackDeserializer <T > deserializer ) {
173193 vpackBuilder .registerDeserializer (clazz , deserializer );
174194 return this ;
@@ -179,6 +199,46 @@ public <T> Builder registerInstanceCreator(final Class<T> clazz, final VPackInst
179199 return this ;
180200 }
181201
202+ public Builder registerJsonDeserializer (final ValueType type , final VPackJsonDeserializer deserializer ) {
203+ vpackParser .registerDeserializer (type , deserializer );
204+ return this ;
205+ }
206+
207+ public Builder registerJsonDeserializer (
208+ final String attribute ,
209+ final ValueType type ,
210+ final VPackJsonDeserializer deserializer ) {
211+ vpackParser .registerDeserializer (attribute , type , deserializer );
212+ return this ;
213+ }
214+
215+ public <T > Builder registerJsonSerializer (final Class <T > clazz , final VPackJsonSerializer <T > serializer ) {
216+ vpackParser .registerSerializer (clazz , serializer );
217+ return this ;
218+ }
219+
220+ public <T > Builder registerJsonSerializer (
221+ final String attribute ,
222+ final Class <T > clazz ,
223+ final VPackJsonSerializer <T > serializer ) {
224+ vpackParser .registerSerializer (attribute , clazz , serializer );
225+ return this ;
226+ }
227+
228+ public <A extends Annotation > Builder annotationFieldFilter (
229+ final Class <A > type ,
230+ final VPackAnnotationFieldFilter <A > fieldFilter ) {
231+ vpackBuilder .annotationFieldFilter (type , fieldFilter );
232+ return this ;
233+ }
234+
235+ public <A extends Annotation > Builder annotationFieldNaming (
236+ final Class <A > type ,
237+ final VPackAnnotationFieldNaming <A > fieldNaming ) {
238+ vpackBuilder .annotationFieldNaming (type , fieldNaming );
239+ return this ;
240+ }
241+
182242 public ArangoDB build () {
183243 return new ArangoDB (
184244 new CommunicationSync .Builder ().host (host ).port (port ).timeout (timeout ).user (user ).password (password )
@@ -457,4 +517,5 @@ public LogLevelEntity getLogLevel() throws ArangoDBException {
457517 public LogLevelEntity setLogLevel (final LogLevelEntity entity ) throws ArangoDBException {
458518 return executor .execute (setLogLevelRequest (entity ), LogLevelEntity .class );
459519 }
520+
460521}
0 commit comments