Java 类com.fasterxml.jackson.databind.deser.DeserializerCache 实例源码
项目:rapidoid
文件:JSON.java
public static synchronized void reset() {
for (ObjectMapper mapper : U.list(MAPPER, PRETTY_MAPPER)) {
SerializerProvider serializerProvider = mapper.getSerializerProvider();
if (serializerProvider instanceof DefaultSerializerProvider) {
DefaultSerializerProvider provider = (DefaultSerializerProvider) serializerProvider;
provider.flushCachedSerializers();
} else {
Log.warn("Couldn't clear the cache of Jackson serializers!", "class", Cls.of(serializerProvider));
}
DeserializationContext deserializationContext = mapper.getDeserializationContext();
Object cache = Cls.getFieldValue(deserializationContext, "_cache");
if (cache instanceof DeserializerCache) {
DeserializerCache deserializerCache = (DeserializerCache) cache;
deserializerCache.flushCachedDeserializers();
} else {
Log.warn("Couldn't clear the cache of Jackson deserializers!", "class", Cls.of(cache));
}
}
}
项目:cevent-app
文件:JacksonReloader.java
private void invalidateJacksonCaches() {
try {
ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
Collection<ObjectMapper> mappers = BeanFactoryUtils
.beansOfTypeIncludingAncestors(beanFactory, ObjectMapper.class)
.values();
for (ObjectMapper mapper : mappers) {
log.trace("Flushing Jackson serializer cache");
SerializerProvider serializerProvider = mapper.getSerializerProvider();
Field serializerCacheField = serializerProvider.getClass().getSuperclass().getSuperclass().getDeclaredField("_serializerCache");
ReflectionUtils.makeAccessible(serializerCacheField);
SerializerCache serializerCache = (SerializerCache) serializerCacheField.get(serializerProvider);
Method serializerCacheFlushMethod = SerializerCache.class.getDeclaredMethod("flush");
serializerCacheFlushMethod.invoke(serializerCache);
log.trace("Flushing Jackson deserializer cache");
DeserializationContext deserializationContext = mapper.getDeserializationContext();
Field deSerializerCacheField = deserializationContext.getClass().getSuperclass().getSuperclass().getDeclaredField("_cache");
ReflectionUtils.makeAccessible(deSerializerCacheField);
DeserializerCache deSerializerCache = (DeserializerCache) deSerializerCacheField.get(deserializationContext);
Method deSerializerCacheFlushMethod = DeserializerCache.class.getDeclaredMethod("flushCachedDeserializers");
deSerializerCacheFlushMethod.invoke(deSerializerCache);
}
} catch (Exception e) {
log.warn("Could not hot reload Jackson class!");
e.printStackTrace();
}
}
项目:parkingfriends
文件:JacksonReloader.java
public void reloadEvent() {
log.debug("Hot reloading Jackson classes");
try {
ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
Collection<ObjectMapper> mappers = BeanFactoryUtils
.beansOfTypeIncludingAncestors(beanFactory, ObjectMapper.class)
.values();
for (ObjectMapper mapper : mappers) {
log.trace("Flushing Jackson serializer cache");
SerializerProvider serializerProvider = mapper.getSerializerProvider();
Field serializerCacheField = serializerProvider.getClass().getSuperclass().getSuperclass().getDeclaredField("_serializerCache");
ReflectionUtils.makeAccessible(serializerCacheField);
SerializerCache serializerCache = (SerializerCache) serializerCacheField.get(serializerProvider);
Method serializerCacheFlushMethod = SerializerCache.class.getDeclaredMethod("flush");
serializerCacheFlushMethod.invoke(serializerCache);
log.trace("Flushing Jackson deserializer cache");
DeserializationContext deserializationContext = mapper.getDeserializationContext();
Field deSerializerCacheField = deserializationContext.getClass().getSuperclass().getSuperclass().getDeclaredField("_cache");
ReflectionUtils.makeAccessible(deSerializerCacheField);
DeserializerCache deSerializerCache = (DeserializerCache) deSerializerCacheField.get(deserializationContext);
Method deSerializerCacheFlushMethod = DeserializerCache.class.getDeclaredMethod("flushCachedDeserializers");
deSerializerCacheFlushMethod.invoke(deSerializerCache);
}
} catch (Exception e) {
log.warn("Could not hot reload Jackson class!");
e.printStackTrace();
}
}