List of usage examples for org.apache.commons.lang3.reflect ExtendedConstructorUtils newInstanceFactory
public static final <T> Factory<T> newInstanceFactory(final Class<T> cls)
From source file:org.springframework.jdbc.repo.impl.RawPropertiesIdentifiedEntityRepoImpl.java
public RawPropertiesIdentifiedEntityRepoImpl(RawPropertiesRepo<E> rawRepo) { super((rawRepo == null) ? null : rawRepo.getEntityClass(), (rawRepo == null) ? null : rawRepo.idsBuilder()); repo = Validate.notNull(rawRepo, "No raw repository", ArrayUtils.EMPTY_OBJECT_ARRAY); Class<E> eClass = rawRepo.getEntityClass(); Map<String, Pair<Method, Method>> entityAttributes = ExtendedBeanUtils .removeNonModifiableAttributes(ExtendedBeanUtils.describeBean(eClass, false, true)); props2entityTransformer = ExtendedBeanUtils .propertiesToBeanTransformer(ExtendedConstructorUtils.newInstanceFactory(eClass), entityAttributes); entity2propsTransfomer = ExtendedBeanUtils.beanToPropertiesTransformer(eClass, entityAttributes); }
From source file:org.springframework.jdbc.repo.impl.RawPropertiesPolymorphicIdentifiedEntityRepoImpl.java
protected Pair<Transformer<Map<String, ?>, E>, Transformer<E, ? extends Map<String, ?>>> getEntityTransformers( final Class<?> eClass) { /*/* w w w. j a va 2s .c o m*/ * NOTE: there might be a "race condition" but we don't care since * result is the same either way */ Pair<Transformer<Map<String, ?>, E>, Transformer<E, ? extends Map<String, ?>>> pair; synchronized (transformersMap) { if ((pair = transformersMap.get(eClass)) != null) { return pair; } } Map<String, Pair<Method, Method>> entityAttributes = ExtendedBeanUtils .removeNonModifiableAttributes(ExtendedBeanUtils.describeBean(eClass, false, true)); @SuppressWarnings("unchecked") final Transformer<Map<String, ?>, E> pureEntityTransformer = ExtendedBeanUtils.propertiesToBeanTransformer( ExtendedConstructorUtils.newInstanceFactory((Class<E>) eClass), entityAttributes); Transformer<Map<String, ?>, E> props2entityTransformer = new Transformer<Map<String, ?>, E>() { @Override public E transform(Map<String, ?> beanProps) { Object value = beanProps.remove(CLASS_PROP_NAME); if (value == null) { throw new IllegalStateException( "transform(" + eClass.getSimpleName() + ") missing reserved type property"); } return pureEntityTransformer.transform(beanProps); } }; @SuppressWarnings("unchecked") final Transformer<E, ? extends Map<String, ?>> purePropsTransformer = ExtendedBeanUtils .beanToPropertiesTransformer((Class<E>) eClass, entityAttributes); Transformer<E, Map<String, ?>> entity2propsTransfomer = new Transformer<E, Map<String, ?>>() { @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public Map<String, ?> transform(E input) { Map<String, ?> beanProps = purePropsTransformer.transform(input); if (ExtendedMapUtils.isEmpty(beanProps)) { return beanProps; } Object value = beanProps.get(CLASS_PROP_NAME); if (value != null) { throw new IllegalStateException( "transform(" + input.getClass().getSimpleName() + ") reserved property used: " + value); } ((Map) beanProps).put(CLASS_PROP_NAME, eClass); return beanProps; } }; pair = Pair.<Transformer<Map<String, ?>, E>, Transformer<E, ? extends Map<String, ?>>>of( props2entityTransformer, entity2propsTransfomer); synchronized (transformersMap) { transformersMap.put(eClass, pair); } logger.info("getEntityTransformers(" + eClass.getSimpleName() + ") created transformers"); return pair; }