@SuppressWarnings("unchecked") public static <Source, Target> BeanCopier<Source, Target> createCopier( Class<?> sourceClass, Class<?> targetClass, boolean deepCopy, Map<String, PropConverter<?, ?>> propCvtMap ) { Assert.notNull(sourceClass, "sourceClass can't be null"); Assert.notNull(targetClass, "targetClass can't be null"); Integer sequence = SEQ.incrementAndGet(); if (propCvtMap != null) { SEQ_PROP_CVT_MAP.putIfAbsent(sequence, propCvtMap); } try { Class<?> beanCopierClazz = COMPILER.compile(getClassCode(sequence, sourceClass, targetClass, deepCopy, propCvtMap)); final BeanCopierAdapter beanCopier = (BeanCopierAdapter) beanCopierClazz.newInstance(); return new BeanCopier<Source, Target>() { @Override public void copyProps(Source source, Target target) { beanCopier.copyProps(source, target); } }; } catch (Exception e) { throw new LtsRuntimeException("Generate BeanCopier error, sourceClass=" + sourceClass.getName() + ", targetClass=" + targetClass.getName(), e); } }
@SuppressWarnings("unchecked") public static <Source, Target> BeanCopier<Source, Target> createCopier( Class<?> sourceClass, Class<?> targetClass, boolean deepCopy, Map<String, PropConverter<?, ?>> propCvtMap ) { Assert.notNull(sourceClass, "sourceClass can't be null"); Assert.notNull(targetClass, "targetClass can't be null"); Integer sequence = SEQ.incrementAndGet(); if (propCvtMap != null) { SEQ_PROP_CVT_MAP.putIfAbsent(sequence, propCvtMap); } try { Class<?> beanCopierClazz = COMPILER.compile(getClassCode(sequence, sourceClass, targetClass, deepCopy, propCvtMap)); final BeanCopierAdapter beanCopier = (BeanCopierAdapter) beanCopierClazz.newInstance(); return new BeanCopier<Source, Target>() { @Override public void copyProps(Source source, Target target) { beanCopier.copyProps(source, target); } }; } catch (Exception e) { throw new LtsRuntimeException("Generate BeanCopier error, sourceClass=" + sourceClass.getName() + ", targetClass=" + targetClass.getName(), e); } }
@SuppressWarnings("unchecked") public static <Source, Target> BeanCopier<Source, Target> createCopier( Class<?> sourceClass, Class<?> targetClass, boolean deepCopy, Map<String, PropConverter<?, ?>> propCvtMap ) { Assert.notNull(sourceClass, "sourceClass can't be null"); Assert.notNull(targetClass, "targetClass can't be null"); Integer sequence = SEQ.incrementAndGet(); if (propCvtMap != null) { SEQ_PROP_CVT_MAP.putIfAbsent(sequence, propCvtMap); } try { Class<?> beanCopierClazz = COMPILER.compile(getClassCode(sequence, sourceClass, targetClass, deepCopy, propCvtMap)); final BeanCopierAdapter beanCopier = (BeanCopierAdapter) beanCopierClazz.newInstance(); return new BeanCopier<Source, Target>() { @Override public void copyProps(Source source, Target target) { beanCopier.copyProps(source, target); } }; } catch (Exception e) { throw new LtsRuntimeException("Generate BeanCopier error, sourceClass=" + sourceClass.getName() + ", targetClass=" + targetClass.getName(), e); } }