public DocumentDefinition<Immutable> immutableRootTypes() { return new JsonDocumentDefinition<Immutable>(){{ converting(Interface.class).to(Immutable.class).using( new Converter<Interface, Immutable>(){ @Override public Immutable convert(Interface aFrom) { return new Immutable(aFrom.getFirst(), aFrom.getSecond()); } } ); mapping(Immutable.class).via(Interface.class).with( property("first"), property("second") ); }}; }
public DocumentDefinition<Immutable> intermediateRootTypeWithNoCommonHierarchy() { // a converter that can convert from Uncommon to Immutable // this could be written inline in the document definition, // and, with Java8 lambdas, could be quite succinct. final Converter<Uncommon, Immutable> uncommonToImmutable = new Converter<Uncommon, Immutable>() { public Immutable convert(Uncommon aFrom) { return new Immutable(aFrom.getFirst(), aFrom.getSecond()); } }; return new JsonDocumentDefinition<Immutable>(){{ converting(Uncommon.class).to(Immutable.class).using(uncommonToImmutable); mapping(Immutable.class).via(Uncommon.class).with( property("first"), property("second") ); }}; }
public DocumentDefinition<Immutables> immutableNonRootTypes() { return new JsonDocumentDefinition<Immutables>(){{ converting(Interface.class).to(Immutable.class).using( new Converter<Interface, Immutable>(){ public Immutable convert(Interface aFrom) { converting(Uncommon.class).to(Immutable.class).using( new Converter<Uncommon, Immutable>(){ public Immutable convert(Uncommon aFrom) {