Example usage for org.springframework.data.mapping.model BeanWrapper getBean

List of usage examples for org.springframework.data.mapping.model BeanWrapper getBean

Introduction

In this page you can find the example usage for org.springframework.data.mapping.model BeanWrapper getBean.

Prototype

public T getBean() 

Source Link

Usage

From source file:org.develspot.data.orientdb.convert.MappingOrientConverter.java

@SuppressWarnings("unchecked")
private <S extends Object> S read(final OrientPersistentEntity<S> entity, final OrientElement dbObject,
        boolean lazy) {
    OrientMappingInstance mappingInstance = MappingInstanceHolder.getMappingInstance();

    //check if entity is already loaded
    if (mappingInstance.instanceLoaded(dbObject.getId())) {
        return (S) mappingInstance.get(dbObject.getId());
    }// www.ja v  a  2 s.  c om

    EntityInstantiator instantiator = instantiators.getInstantiatorFor(entity);
    final DefaultOrientPropertyValueProvider objectResolver = new DefaultOrientPropertyValueProvider(dbObject,
            this, spELContext, lazy);

    PersistentEntityParameterValueProvider<OrientPersistentProperty> parameterProvider = new PersistentEntityParameterValueProvider<OrientPersistentProperty>(
            entity, objectResolver, null);

    S instance = instantiator.createInstance(entity, parameterProvider);
    final BeanWrapper<OrientPersistentEntity<S>, S> wrapper = BeanWrapper.create(instance, conversionService);

    final S result = wrapper.getBean();
    mappingInstance.addInstance(dbObject.getId(), result);

    // Set properties not already set in the constructor
    entity.doWithProperties(new PropertyHandler<OrientPersistentProperty>() {
        public void doWithPersistentProperty(OrientPersistentProperty prop) {
            if (!prop.isIdProperty() && (dbObject.getProperty(prop.getField().getName()) == null
                    || entity.isConstructorArgument(prop))) {
                return;
            }
            Object obj = objectResolver.getPropertyValue(prop);
            wrapper.setProperty(prop, obj, fieldAccessOnly);
        }
    });

    entity.doWithAssociations(new AssociationHandler<OrientPersistentProperty>() {
        public void doWithAssociation(Association<OrientPersistentProperty> association) {
            OrientPersistentProperty inverse = association.getInverse();
            Object resolved = objectResolver.getPropertyValue(inverse);
            wrapper.setProperty(inverse, resolved);

        }
    });
    return result;
}

From source file:com.couchbase.spring.core.convert.MappingCouchbaseConverter.java

public <R> R read(Class<R> type, final ConvertedCouchbaseDocument doc, Object parent) {
    final CouchbasePersistentEntity<R> entity = (CouchbasePersistentEntity<R>) mappingContext
            .getPersistentEntity(type);/*from   www .j  a v  a  2s .co  m*/

    ParameterValueProvider<CouchbasePersistentProperty> provider = getParameterProvider(entity, doc, parent);
    EntityInstantiator instantiator = instantiators.getInstantiatorFor(entity);
    R instance = instantiator.createInstance(entity, provider);

    final BeanWrapper<CouchbasePersistentEntity<R>, R> wrapper = BeanWrapper.create(instance,
            conversionService);
    final R result = wrapper.getBean();

    // Set properties not already set in the constructor
    entity.doWithProperties(new PropertyHandler<CouchbasePersistentProperty>() {
        public void doWithPersistentProperty(CouchbasePersistentProperty prop) {

            boolean isConstructorProperty = entity.isConstructorArgument(prop);
            boolean hasValueForProperty = doc.containsField(prop.getFieldName());

            if (!hasValueForProperty || isConstructorProperty) {
                return;
            }

            Object obj = null;
            if (prop.isIdProperty()) {
                obj = doc.getId();
            } else {
                obj = doc.get(prop.getFieldName());
            }
            wrapper.setProperty(prop, obj, useFieldAccessOnly);
        }
    });

    return result;
}

From source file:com.joyveb.dbpimpl.cass.prepare.convert.MappingCassandraConverter.java

private <S extends Object> S readRowInternal(final CassandraPersistentEntity<S> entity, final Row row) {

    final DefaultSpELExpressionEvaluator evaluator = new DefaultSpELExpressionEvaluator(row, spELContext);

    final PropertyValueProvider<CassandraPersistentProperty> propertyProvider = new CassandraPropertyValueProvider(
            row, evaluator);/* ww  w. j ava2 s  .  c  o m*/
    PersistentEntityParameterValueProvider<CassandraPersistentProperty> parameterProvider = new PersistentEntityParameterValueProvider<CassandraPersistentProperty>(
            entity, propertyProvider, null);

    EntityInstantiator instantiator = instantiators.getInstantiatorFor(entity);
    S instance = instantiator.createInstance(entity, parameterProvider);

    final BeanWrapper<CassandraPersistentEntity<S>, S> wrapper = BeanWrapper.create(instance,
            conversionService);
    final S result = wrapper.getBean();

    // Set properties not already set in the constructor
    entity.doWithProperties(new ReadPropertyHandler<S>(entity, row, propertyProvider, wrapper));

    return result;
}

From source file:org.springframework.data.mongodb.core.convert.MappingMongoConverter.java

private <S extends Object> S read(final MongoPersistentEntity<S> entity, final DBObject dbo) {

    final StandardEvaluationContext spelCtx = new StandardEvaluationContext(dbo);
    spelCtx.addPropertyAccessor(DBObjectPropertyAccessor.INSTANCE);

    if (applicationContext != null) {
        spelCtx.setBeanResolver(new BeanFactoryResolver(applicationContext));
    }/* ww w  .  ja v  a 2s .  c om*/

    final MappedConstructor constructor = new MappedConstructor(entity, mappingContext);

    SpELAwareParameterValueProvider delegate = new SpELAwareParameterValueProvider(spelExpressionParser,
            spelCtx);
    ParameterValueProvider provider = new DelegatingParameterValueProvider(constructor, dbo, delegate);

    final BeanWrapper<MongoPersistentEntity<S>, S> wrapper = BeanWrapper.create(entity, provider,
            conversionService);

    // Set properties not already set in the constructor
    entity.doWithProperties(new PropertyHandler<MongoPersistentProperty>() {
        public void doWithPersistentProperty(MongoPersistentProperty prop) {

            boolean isConstructorProperty = constructor.isConstructorParameter(prop);
            boolean hasValueForProperty = dbo.containsField(prop.getFieldName());

            if (!hasValueForProperty || isConstructorProperty) {
                return;
            }

            Object obj = getValueInternal(prop, dbo, spelCtx, prop.getSpelExpression());
            wrapper.setProperty(prop, obj, useFieldAccessOnly);
        }
    });

    // Handle associations
    entity.doWithAssociations(new AssociationHandler<MongoPersistentProperty>() {
        public void doWithAssociation(Association<MongoPersistentProperty> association) {
            MongoPersistentProperty inverseProp = association.getInverse();
            Object obj = getValueInternal(inverseProp, dbo, spelCtx, inverseProp.getSpelExpression());
            try {
                wrapper.setProperty(inverseProp, obj);
            } catch (IllegalAccessException e) {
                throw new MappingException(e.getMessage(), e);
            } catch (InvocationTargetException e) {
                throw new MappingException(e.getMessage(), e);
            }
        }
    });

    return wrapper.getBean();
}