Код: Выделить всё
public class MyValidatorFilter implements ContainerRequestFilter {
private static final ImprovedThreadLocal thread = new ImprovedThreadLocal();
// We dont want to use ThreadLocal..
public static ImprovedThreadLocal getCurrentRequestTemporaryKeyMap() {
return thread;
}
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
thread.set(new TemporaryKeyMap());
}
}
Код: Выделить всё
public class MyDeserializer extends StdDeserializer {
@Override
public T deserialize(JsonParser pJsonParser, DeserializationContext pDeserializationContext)
throws IOException {
// How can I get ContainerRequestContext here?
TemporaryKeyMap object = MyValidatorFilter.getCurrentRequestTemporaryKeyMap().get();
return null;
}
}
Мы попытались передать содержимое области запроса через DeserializationContext.
Код: Выделить всё
public class MyValidatorFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
ObjectMapper mapper = new ObjectMapper();
DeserializationConfig deserializationConfig = mapper.getDeserializationConfig();
DeserializationConfig modifiedConfig = deserializationConfig.withAttribute("datastring", requestContext.getProperty("datastring"));
mapper.setConfig(modifiedConfig);
...
}
}
Код: Выделить всё
public class MyDeserializer extends StdDeserializer {
@Override
public T deserialize(JsonParser pJsonParser, DeserializationContext pDeserializationContext)
throws IOException {
String token = (String) pDeserializationContext.getAttribute("datastring");
return null;
}
}
Источник: https://stackoverflow.com/questions/781 ... n-serializ
Мобильная версия