/** * 自定义构造器 * * @param parentSourceClass 源对象父类类型 * @param parentTargetClass 目标对象父类类型 * @return this */ public OrikaCopier.Builder<F, T> parent(Class<?> parentSourceClass, Class<?> parentTargetClass) { builder.use(parentSourceClass, parentTargetClass); return this; }
/** * Configure this ClassMapBuilder to use an existing mapping (for parent classes) * defined from <code>aParentClass</code> to <code>bParentClass</code>. * * @param aParentClass the source class of the parent mapping * @param bParentClass the destination class of the parent mapping * @return this ClassMapBuilder */ public <X, Y> ClassMapBuilder<A, B> use(Class<?> aParentClass, Class<?> bParentClass) { @SuppressWarnings("unchecked") Type<Object> aParentType = TypeFactory.valueOf((Class<Object>) aParentClass); @SuppressWarnings("unchecked") Type<Object> bParentType = TypeFactory.valueOf((Class<Object>) bParentClass); return use(aParentType, bParentType); }
/** * Configure this ClassMapBuilder to use an existing mapping (for parent * classes) defined from <code>aParentClass</code> to * <code>bParentClass</code>. * * @param aParentClass * the source class of the parent mapping * @param bParentClass * the destination class of the parent mapping * @return this ClassMapBuilder */ public <X, Y> ClassMapBuilder<A, B> use(Class<?> aParentClass, Class<?> bParentClass) { @SuppressWarnings("unchecked") Type<Object> aParentType = TypeFactory.valueOf((Class<Object>) aParentClass); @SuppressWarnings("unchecked") Type<Object> bParentType = TypeFactory.valueOf((Class<Object>) bParentClass); return use(aParentType, bParentType); }
@Test public void testExcludedFields() { MapperFactory factory = new DefaultMapperFactory.Builder() .compilerStrategy(new EclipseJdtCompilerStrategy()) .build(); factory.registerClassMap(factory.classMap(Source.class, Dest.class) .exclude("id") .exclude("type") .byDefault()); factory.registerClassMap(factory .classMap(SubSource.class, SubDest.class) .use(Source.class, Dest.class).byDefault()); SubSource source = new SubSource(); source.id = "1"; source.type = "A"; source.name = "Bob"; source.age = 55; SubDest destination = factory.getMapperFacade().map(source, SubDest.class); Assert.assertNull(destination.id); Assert.assertNull(destination.type); Assert.assertEquals(source.name, destination.name); Assert.assertEquals(source.age, destination.age); }
.classMap(SubSource2.class, SubDest2.class) .field("type", "type") .use(Source.class, Dest.class) .byDefault());
@Test public void testOneCallOfFieldMapping() { MapperFactory factory = MappingUtil.getMapperFactory(); { ClassMapBuilder<A, E> classMapBuilder = factory.classMap(A.class, E.class); factory.registerClassMap(classMapBuilder.byDefault().toClassMap()); } { ClassMapBuilder<B, F> classMapBuilder = factory.classMap(B.class, F.class); classMapBuilder.byDefault().use(A.class, E.class); factory.registerClassMap(classMapBuilder.toClassMap()); } BoundMapperFacade<B,F> mapperFacade = factory.getMapperFacade(B.class, F.class); B source = new B(); source.setName("Israfil"); source.setAge(1000); F target = mapperFacade.map(source); Assert.assertEquals(source.getName(), target.getName()); Assert.assertEquals(source.getAge(), target.getAge()); Assert.assertEquals(1, target.getNameCalls()); }
@Test public void testOneCallOfFieldMapping() { MapperFactory mapperFactory = MappingUtil.getMapperFactory(); { ClassMapBuilder<A, E> classMapBuilder = ClassMapBuilder.map(A.class, E.class); mapperFactory.registerClassMap(classMapBuilder.byDefault().toClassMap()); } { ClassMapBuilder<B, F> classMapBuilder = ClassMapBuilder.map(B.class, F.class); classMapBuilder.byDefault().use(A.class, E.class); mapperFactory.registerClassMap(classMapBuilder.toClassMap()); } mapperFactory.build(); MapperFacade mapperFacade = mapperFactory.getMapperFacade(); B source = new B(); source.setName("Israfil"); source.setAge(1000); F target = mapperFacade.map(source, F.class); Assert.assertEquals(source.getName(), target.getName()); Assert.assertEquals(source.getAge(), target.getAge()); Assert.assertEquals(1, target.getNameCalls()); }
@Test public void testReuseOfMapper() { MapperFactory factory = MappingUtil.getMapperFactory(); { ClassMapBuilder<A, C> classMapBuilder = factory.classMap(A.class, C.class); classMapBuilder.field("name", "nom"); factory.registerClassMap(classMapBuilder.toClassMap()); } { ClassMapBuilder<B, D> classMapBuilder = factory.classMap(B.class, D.class); classMapBuilder.field("age", "ages").use(A.class, C.class); factory.registerClassMap(classMapBuilder.toClassMap()); } BoundMapperFacade<B,D> mapperFacade = factory.getMapperFacade(B.class, D.class); B source = new B(); source.setName("Israfil"); source.setAge(1000); D target = mapperFacade.map(source); Assert.assertEquals(source.getName(), target.getNom()); Assert.assertEquals(source.getAge(), target.getAges()); }
@Test public void testReuseOfMapper() { MapperFactory mapperFactory = MappingUtil.getMapperFactory(); { ClassMapBuilder<A, C> classMapBuilder = ClassMapBuilder.map(A.class, C.class); classMapBuilder.field("name", "nom"); mapperFactory.registerClassMap(classMapBuilder.toClassMap()); } { ClassMapBuilder<B, D> classMapBuilder = ClassMapBuilder.map(B.class, D.class); classMapBuilder.field("age", "ages").use(A.class, C.class); mapperFactory.registerClassMap(classMapBuilder.toClassMap()); } mapperFactory.build(); MapperFacade mapperFacade = mapperFactory.getMapperFacade(); B source = new B(); source.setName("Israfil"); source.setAge(1000); D target = mapperFacade.map(source, D.class); Assert.assertEquals(source.getName(), target.getNom()); Assert.assertEquals(source.getAge(), target.getAges()); }
@Test public void testParentLookup() { MapperFactory factory = MappingUtil.getMapperFactory(); factory.registerClassMap( factory.classMap(B2.class, A2.class) .use(B1.class,A1.class) .byDefault()); factory.registerClassMap( factory.classMap(A1.class, B1.class) .byDefault()); MapperFacade mapper = factory.getMapperFacade(); A3 a = new A3(); a.name1 = "a1"; a.name2 = "a2"; a.name3 = "a3"; B3 b = mapper.map(a, B3.class); Assert.assertNotNull(b); Assert.assertEquals(a.name1, b.name1); Assert.assertEquals(a.name2, b.name2); } }
builder.use(key.getAType(), key.getBType());