/** * Defines custom {@link jodd.json.TypeJsonSerializer} for given type. */ public JsonSerializer withSerializer(final Class type, final TypeJsonSerializer typeJsonSerializer) { if (typeSerializersMap == null) { typeSerializersMap = new TypeJsonSerializerMap(TypeJsonSerializerMap.get()); } typeSerializersMap.register(type, typeJsonSerializer); return this; }
/** * Creates new serializers map and registers defaults. */ public TypeJsonSerializerMap() { registerDefaults(); defaultSerializerMap = null; }
/** * Lookups for the {@link jodd.json.TypeJsonSerializer serializer} for given type. * If serializer not found, then all interfaces and subclasses of the type are checked. * Finally, if no serializer is found, object's serializer is returned. */ public TypeJsonSerializer lookup(final Class type) { return cache.get(type, () -> _lookup(type)); }
protected TypeJsonSerializer _lookup(final Class type) { synchronized (map) { TypeJsonSerializer tjs = lookupSerializer(type); return lookupSerializer(Arrays.class); tjs = lookupSerializer(interfaze); tjs = lookupSerializer(clazz); return lookupSerializer(Object.class);