@Override public Model resolve(Type type) { if (processedTypes.contains(type)) { return modelByType.get(type); } else { processedTypes.add(type); } if (LOGGER.isDebugEnabled()) { LOGGER.debug(String.format("resolve %s", type)); } Iterator<ModelConverter> converters = this.getConverters(); Model resolved = null; if (converters.hasNext()) { ModelConverter converter = converters.next(); LOGGER.debug("trying extension " + converter); resolved = converter.resolve(type, this, converters); } if (resolved != null) { modelByType.put(type, resolved); if (resolved instanceof ModelImpl) { ModelImpl impl = (ModelImpl) resolved; if (impl.getName() != null) { modelByName.put(impl.getName(), resolved); } } } return resolved; }
public void testSimple() throws Exception { final ModelConverter mr = modelResolver(); Model model = mr.resolve(ModelWithJodaDateTime.class, new ModelConverterContextImpl(mr), null); assertNotNull(model); Map<String, Property> props = model.getProperties(); assertEquals(2, props.size()); for (Map.Entry<String, Property> entry : props.entrySet()) { String name = entry.getKey(); Property prop = entry.getValue(); if ("name".equals(name)) { assertEquals("string", prop.getType()); } else if ("createdAt".equals(name)) { assertEquals("string", prop.getType()); assertEquals("date-time", prop.getFormat()); } else { fail("Unknown property '" + name + "'"); } } }