@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;
  }
Exemplo n.º 2
0
  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 + "'");
      }
    }
  }