package com.alibaba.tamper.builder; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import junit.framework.TestCase; import com.alibaba.tamper.core.builder.BeanMappingBuilder; import com.alibaba.tamper.core.config.BeanMappingBehavior; import com.alibaba.tamper.core.config.BeanMappingConfigHelper; import com.alibaba.tamper.core.config.BeanMappingField; import com.alibaba.tamper.core.config.BeanMappingObject; import com.alibaba.tamper.process.convertor.StringAndCommonConvertor.StringToCommon; /** * @author jianghang 2011-6-22 上午10:57:00 */ public class BeanMappingBuilderTest extends TestCase { public void testSimpleBuilder() { BeanMappingBuilder builder = new BeanMappingBuilder() { protected void configure() { behavior(true, false, false, true);// 设置行为 mapping(HashMap.class, HashMap.class).debug(true).mappingEmptyStrings(false).mappingNullValue(false).trimStrings( true); fields(srcField("one", String.class), targetField("oneOther", String.class)).debug(true).mappingEmptyStrings( false).mappingNullValue( false).trimStrings( true); fields(srcField("two").locatorClass(ArrayList.class).componentClasses(String.class), targetField("twoOther")); } }; BeanMappingObject object = builder.get(); assertNotNull(object); assertEquals(object.getBeanFields().size(), 2); } public void testBehavior() { BeanMappingBuilder builder = new BeanMappingBuilder() { protected void configure() { behavior().debug(true).mappingEmptyStrings(false).mappingNullValue(false).trimStrings(true);// 设置行为 mapping(HashMap.class, HashMap.class).debug(false).mappingEmptyStrings(true); fields(srcField("one"), targetField("oneOther")).mappingEmptyStrings(false).trimStrings(false); } }; BeanMappingObject object = builder.get(); assertNotNull(object); // 验证bean behavior BeanMappingBehavior objectBehavior = object.getBehavior(); assertEquals(objectBehavior.isDebug(), false); // 覆盖 assertEquals(objectBehavior.isMappingEmptyStrings(), true);// 覆盖 assertEquals(objectBehavior.isMappingNullValue(), false); // 继承 assertEquals(objectBehavior.isTrimStrings(), true); // 继承 // 验证field behavior BeanMappingBehavior fieldBehavior = object.getBeanFields().get(0).getBehavior(); assertEquals(fieldBehavior.isDebug(), false); // 继承 assertEquals(fieldBehavior.isMappingEmptyStrings(), false);// 覆盖 assertEquals(fieldBehavior.isMappingNullValue(), false); // 继承 assertEquals(fieldBehavior.isTrimStrings(), false); // 覆盖 } public void testConfig() { BeanMappingBuilder builder = new BeanMappingBuilder() { protected void configure() { mapping(HashMap.class, HashMap.class).batch(false).reversable(true).keys("src", "target"); fields(srcField("one"), targetField("oneOther")).convertor("convertor").defaultValue("ljh"); fields(srcField("two").clazz(String.class), targetField("twoOther")).script("1+2").convertor( StringToCommon.class); fields(srcField("three").clazz(ArrayList.class), targetField("threeOther").clazz(HashSet.class)).recursiveMapping( true); } }; BeanMappingObject object = builder.get(); assertNotNull(object); assertEquals(object.getBeanFields().size(), 3); assertEquals(object.isBatch(), false); assertEquals(object.isReversable(), true); assertEquals(object.getSrcKey(), "src"); assertEquals(object.getTargetKey(), "target"); assertEquals(object.getSrcClass(), HashMap.class); assertEquals(object.getTargetClass(), HashMap.class); BeanMappingField one = object.getBeanFields().get(0); assertEquals(one.getConvertor(), "convertor"); assertEquals(one.getDefaultValue(), "ljh"); assertEquals(one.getSrcField().getName(), "one"); assertEquals(one.getTargetField().getName(), "oneOther"); BeanMappingField two = object.getBeanFields().get(1); assertEquals(two.getConvertorClass(), StringToCommon.class); assertEquals(two.getScript(), "1+2"); assertEquals(two.getSrcField().getName(), "two"); assertEquals(two.getSrcField().getClazz(), String.class); assertEquals(two.getTargetField().getName(), "twoOther"); BeanMappingField three = object.getBeanFields().get(2); assertEquals(three.getSrcField().getName(), "three"); assertEquals(three.getSrcField().getClazz(), ArrayList.class); assertEquals(three.getTargetField().getName(), "threeOther"); assertEquals(three.getTargetField().getClazz(), HashSet.class); assertEquals(three.isMapping(), true); } public void testRegister() { BeanMappingBuilder builder = new BeanMappingBuilder() { protected void configure() { mapping(HashMap.class, HashMap.class); fields(srcField("one"), targetField("oneOther")); } }; BeanMappingConfigHelper.getInstance().register(builder); // 进行注册 BeanMappingObject object = BeanMappingConfigHelper.getInstance().getBeanMappingObject(HashMap.class, HashMap.class); assertNotNull(object); } }