Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I succeeded to solve my problem, thanks to <a href="http://markmail.org/search/list:org.codehaus.jackson#query:%20list:org.codehaus.jackson.user+page:1+mid:toy6mh4wpezo3mnq+state:results" rel="noreferrer">Tatu from Jackson ML</a>.</p> <p>I had to use custom non blocking deserializers for every primitive types handled in Jackson. Something like this factory :</p> <pre><code>public class JacksonNonBlockingObjectMapperFactory { /** * Deserializer that won't block if value parsing doesn't match with target type * @param &lt;T&gt; Handled type */ private static class NonBlockingDeserializer&lt;T&gt; extends JsonDeserializer&lt;T&gt; { private StdDeserializer&lt;T&gt; delegate; public NonBlockingDeserializer(StdDeserializer&lt;T&gt; _delegate){ this.delegate = _delegate; } @Override public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { try { return delegate.deserialize(jp, ctxt); }catch (JsonMappingException e){ // If a JSON Mapping occurs, simply returning null instead of blocking things return null; } } } private List&lt;StdDeserializer&gt; jsonDeserializers = new ArrayList&lt;StdDeserializer&gt;(); public ObjectMapper createObjectMapper(){ ObjectMapper objectMapper = new ObjectMapper(); SimpleModule customJacksonModule = new SimpleModule("customJacksonModule", new Version(1, 0, 0, null)); for(StdDeserializer jsonDeserializer : jsonDeserializers){ // Wrapping given deserializers with NonBlockingDeserializer customJacksonModule.addDeserializer(jsonDeserializer.getValueClass(), new NonBlockingDeserializer(jsonDeserializer)); } objectMapper.registerModule(customJacksonModule); return objectMapper; } public JacksonNonBlockingObjectMapperFactory setJsonDeserializers(List&lt;StdDeserializer&gt; _jsonDeserializers){ this.jsonDeserializers = _jsonDeserializers; return this; } } </code></pre> <p>Then calling it like this way (pass as deserializers only those you want to be non blocking) :</p> <pre><code>JacksonNonBlockingObjectMapperFactory factory = new JacksonNonBlockingObjectMapperFactory(); factory.setJsonDeserializers(Arrays.asList(new StdDeserializer[]{ // StdDeserializer, here, comes from Jackson (org.codehaus.jackson.map.deser.StdDeserializer) new StdDeserializer.ShortDeserializer(Short.class, null), new StdDeserializer.IntegerDeserializer(Integer.class, null), new StdDeserializer.CharacterDeserializer(Character.class, null), new StdDeserializer.LongDeserializer(Long.class, null), new StdDeserializer.FloatDeserializer(Float.class, null), new StdDeserializer.DoubleDeserializer(Double.class, null), new StdDeserializer.NumberDeserializer(), new StdDeserializer.BigDecimalDeserializer(), new StdDeserializer.BigIntegerDeserializer(), new StdDeserializer.CalendarDeserializer() })); ObjectMapper om = factory.createObjectMapper(); </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload