Example #1
0
 /** @return the converter for a PropertyMetadata instance */
 public <J, D> Converter<J, D> getConverter(SinglePropertyMetadata<J, D> metadata) {
   Class<J> propertyType = metadata.getPropertyType();
   if (metadata.getAnnotation(AsJSON.class) != null) {
     TypeFactory typeFactory = objectMapper.getTypeFactory();
     JavaType type;
     if (Map.class.isAssignableFrom(propertyType)) {
       Class[] mapKeyValue = guessMapGenericType(metadata);
       type = typeFactory.constructMapType(Map.class, mapKeyValue[0], mapKeyValue[1]);
     } else if (Set.class.isAssignableFrom(propertyType)) {
       type =
           typeFactory.constructCollectionType(
               Set.class, typeFactory.constructType(guessCollectionGenericType(metadata)));
     } else if (Collection.class.isAssignableFrom(propertyType)) {
       type =
           typeFactory.constructCollectionType(
               List.class, typeFactory.constructType(guessCollectionGenericType(metadata)));
     } else {
       type = typeFactory.uncheckedSimpleType(propertyType);
     }
     return new JsonConverter(type, objectMapper);
   }
   if (Collection.class.isAssignableFrom(propertyType)) {
     return getCollectionConverter(
         (Class<? extends Iterable>) propertyType, guessCollectionGenericType(metadata));
   } else {
     return getConverter(propertyType);
   }
 }
 @Test
 public void testDeserializeFromJsonO14640() throws Exception {
   ObjectMapper objectMapper = new ObjectMapper();
   objectMapper.configure(ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
   TypeFactory typeFactory = objectMapper.getTypeFactory();
   InputStream inputStream = getClass().getResourceAsStream("/O14640.json");
   List<Sequence> sequences =
       objectMapper.readValue(
           inputStream, typeFactory.constructCollectionType(List.class, Sequence.class));
   assertNotNull(sequences);
   assertEquals(1, sequences.size());
   Sequence s = sequences.get(0);
   assertEquals(695, s.getLength());
   assertEquals(5, s.getRegions().size());
   assertEquals(0, s.getMarkups().size());
   assertEquals(7, s.getMotifs().size());
   assertEquals("uniprot", s.getMetadata().get("database"));
 }