2222
2323import java .io .IOException ;
2424import java .io .InputStream ;
25+ import java .lang .annotation .Annotation ;
2526import java .util .Collection ;
2627import java .util .Properties ;
2728import java .util .concurrent .CompletableFuture ;
4950import com .arangodb .model .UserCreateOptions ;
5051import com .arangodb .model .UserUpdateOptions ;
5152import com .arangodb .velocypack .VPack ;
53+ import com .arangodb .velocypack .VPackAnnotationFieldFilter ;
54+ import com .arangodb .velocypack .VPackAnnotationFieldNaming ;
5255import com .arangodb .velocypack .VPackDeserializer ;
5356import com .arangodb .velocypack .VPackInstanceCreator ;
57+ import com .arangodb .velocypack .VPackJsonDeserializer ;
58+ import com .arangodb .velocypack .VPackJsonSerializer ;
5459import com .arangodb .velocypack .VPackParser ;
5560import com .arangodb .velocypack .VPackSerializer ;
61+ import com .arangodb .velocypack .ValueType ;
5662import com .arangodb .velocystream .Request ;
5763import com .arangodb .velocystream .Response ;
5864
@@ -172,6 +178,20 @@ public <T> Builder registerSerializer(final Class<T> clazz, final VPackSerialize
172178 return this ;
173179 }
174180
181+ /**
182+ * Register a special serializer for a member class which can only be identified by its enclosing class.
183+ *
184+ * @param clazz
185+ * type of the enclosing class
186+ * @param serializer
187+ * serializer to register
188+ * @return builder
189+ */
190+ public <T > Builder registerEnclosingSerializer (final Class <T > clazz , final VPackSerializer <T > serializer ) {
191+ vpackBuilder .registerEnclosingSerializer (clazz , serializer );
192+ return this ;
193+ }
194+
175195 public <T > Builder registerDeserializer (final Class <T > clazz , final VPackDeserializer <T > deserializer ) {
176196 vpackBuilder .registerDeserializer (clazz , deserializer );
177197 return this ;
@@ -182,6 +202,46 @@ public <T> Builder registerInstanceCreator(final Class<T> clazz, final VPackInst
182202 return this ;
183203 }
184204
205+ public Builder registerJsonDeserializer (final ValueType type , final VPackJsonDeserializer deserializer ) {
206+ vpackParser .registerDeserializer (type , deserializer );
207+ return this ;
208+ }
209+
210+ public Builder registerJsonDeserializer (
211+ final String attribute ,
212+ final ValueType type ,
213+ final VPackJsonDeserializer deserializer ) {
214+ vpackParser .registerDeserializer (attribute , type , deserializer );
215+ return this ;
216+ }
217+
218+ public <T > Builder registerJsonSerializer (final Class <T > clazz , final VPackJsonSerializer <T > serializer ) {
219+ vpackParser .registerSerializer (clazz , serializer );
220+ return this ;
221+ }
222+
223+ public <T > Builder registerJsonSerializer (
224+ final String attribute ,
225+ final Class <T > clazz ,
226+ final VPackJsonSerializer <T > serializer ) {
227+ vpackParser .registerSerializer (attribute , clazz , serializer );
228+ return this ;
229+ }
230+
231+ public <T extends Annotation > Builder annotationFieldFilter (
232+ final Class <T > type ,
233+ final VPackAnnotationFieldFilter <T > fieldFilter ) {
234+ vpackBuilder .annotationFieldFilter (type , fieldFilter );
235+ return this ;
236+ }
237+
238+ public <T extends Annotation > Builder annotationFieldNaming (
239+ final Class <T > type ,
240+ final VPackAnnotationFieldNaming <T > fieldNaming ) {
241+ vpackBuilder .annotationFieldNaming (type , fieldNaming );
242+ return this ;
243+ }
244+
185245 public ArangoDBAsync build () {
186246 return new ArangoDBAsync (asyncBuilder (), vpackBuilder .build (),
187247 vpackBuilder .serializeNullValues (true ).build (), vpackParser , collectionCache , syncBuilder ());
0 commit comments