Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package ch.nerdin.generators.testdata;
  
 
 import java.util.List;
 import java.util.Map;

 
 public class BeanBuilder {
 
     private static final Logger logger = LoggerFactory.getLogger(BeanBuilder.class.getName());
 
     @Autowired
     private Interceptor interceptor;
 
     @Autowired
     private List<Generatorgenerators;
     private Objenesis objenesis;
 
     @PostConstruct
     public void init() {
          = new ObjenesisStd(true);
     }
 
     public <T> T buildBean(Class<T> typeMap<StringFieldPropertyfieldProperties) {
         T bean = instantiateBean(type);
         setFieldValues(fieldPropertiesbean);
         return bean;
     }
 
     @SuppressWarnings("unchecked")
     private <T> T instantiateBean(Class<T> type) {
         T bean = (T) .getInstantiatorOf(type).newInstance();
         if (canProxyBean(type)) {
             bean = (T) proxyBean(bean);
         }
         return bean;
     }
 
     protected boolean canProxyBean(Class<?> type) {
         try {
             type.getConstructor();
         } catch (NoSuchMethodException e) {
             return false;
         }
 
         return !Modifier.isFinal(type.getModifiers());
     }
 
     private void setFieldValues(Map<StringFieldPropertyfieldPropertiesObject bean) {
         for (String name : fieldProperties.keySet()) {
             FieldProperty fieldProperty = fieldProperties.get(name);
             Object value = instantiateValueForField(fieldProperty);
             setFieldValue(beanfieldProperty.getType(), namevalue);
         }
     }
 
     protected void setFieldValue(Object beanClass<?> typeString nameObject value) {
         try {
             PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(beanname);
             if (propertyDescriptor != null && propertyDescriptor.getWriteMethod() != null) {
                 BeanUtils.setProperty(beannamevalue);
             } else {
                 Field field = bean.getClass().getDeclaredField(name);
                 field.setAccessible(true);
                 field.set(beanvalue);
             }
         } catch (IllegalArgumentException e) {
             //ignore when the default generated value for this field could not be cast or set.
         } catch (Exception ex) {
             .warn("could not create value for field '{}' for type '{}' because {}",
                     new Object[]{nametypeex.getMessage()});
         }
     }
 
     protected Object instantiateValueForField(FieldProperty property) {
         for (Generator generator : ) {
             if (generator.canGenerate(property)) {
                 return ConvertUtils.convert(generator.generate(property), property.getType());
            }
        }
        return null;
    }
    private Object proxyBean(Object bean) {
        return proxyBean(bean".*get.*");
    }
    Object proxyBean(Class<?> beanString pattern) {
        return proxyBean((Objectbeanpattern);
    }
    Object proxyBean(Object beanString methodPattern) {
        JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();
        pointcut.setPattern(methodPattern);
        advisor.setPointcut(pointcut);
        ProxyFactory factoryBean = new ProxyFactory();
        factoryBean.setProxyTargetClass(true);
        factoryBean.addAdvisor(advisor);
        if (bean instanceof Class<?>) {
            factoryBean.setTargetClass((Classbean);
        } else {
            factoryBean.setTarget(bean);
        }
        return factoryBean.getProxy();
    }
New to GrepCode? Check out our FAQ X