package com.github.ltsopensource.core.support.bean; import com.github.ltsopensource.core.commons.utils.BeanUtils; import com.github.ltsopensource.core.compiler.AbstractCompiler; import com.github.ltsopensource.core.domain.Job; import com.github.ltsopensource.core.support.JobUtils; import com.github.ltsopensource.queue.domain.JobPo; import org.junit.Before; import org.junit.Test; import java.util.HashMap; import java.util.Map; /** * @author Robert HG (254963746@qq.com) on 4/2/16. */ public class BeanCopierFactoryTest { JobPo jobPo; @Before public void init() { jobPo = new JobPo(); jobPo.setJobId("dsfdasf"); jobPo.setTaskId("dfasfs"); jobPo.setPriority(5); jobPo.setInternalExtParam("xxx", "fadsfsa"); } @Test public void testBeanCopier() { long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { JobUtils.copy(jobPo); } // 856 System.out.println("BeanCopier cost time " + (System.currentTimeMillis() - start)); } @Test public void testClone() { long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { BeanUtils.deepClone(jobPo); } // 50908 System.out.println("Clone cost time " + (System.currentTimeMillis() - start)); } @Test public void testJdkCopy() { AbstractCompiler.setCompiler("jdk"); JobUtils.copy(jobPo); } @Test public void testJavassistCopy() { AbstractCompiler.setCompiler("javassist"); JobUtils.copy(jobPo); } @Test public void testGetBeanCopier() throws Exception { BeanCopier<JobPo, JobPo> beanCopier = BeanCopierFactory.createCopier(JobPo.class, JobPo.class); JobPo jobPo2 = new JobPo(); beanCopier.copyProps(jobPo, jobPo2); System.out.println(jobPo2); Job job = new Job(); BeanCopier<JobPo, Job> beanCopier2 = BeanCopierFactory.createCopier(JobPo.class, Job.class); beanCopier2.copyProps(jobPo, job); System.out.println(job); } @Test public void testPropConvert() { Map<String, PropConverter<?, ?>> map = new HashMap<String, PropConverter<?, ?>>(); map.put("taskId", new MyPropConverter()); BeanCopier<JobPo, Job> beanCopier = BeanCopierFactory.createCopier(JobPo.class, Job.class, map); Job job = new Job(); beanCopier.copyProps(jobPo, job); System.out.println(job); } @Test public void testDeepCopy() { BeanCopier<JobPo, JobPo> beanCopier = BeanCopierFactory.createCopier(JobPo.class, JobPo.class, true); JobPo jobPo2 = new JobPo(); beanCopier.copyProps(jobPo, jobPo2); System.out.println(jobPo2); } public class MyPropConverter implements PropConverter<JobPo, String> { @Override public String convert(JobPo jobPo) { return "测试的发生的发生"; } } }