Example usage for org.springframework.data.convert EntityInstantiator createInstance

List of usage examples for org.springframework.data.convert EntityInstantiator createInstance

Introduction

In this page you can find the example usage for org.springframework.data.convert EntityInstantiator createInstance.

Prototype

<T, E extends PersistentEntity<? extends T, P>, P extends PersistentProperty<P>> T createInstance(E entity,
        ParameterValueProvider<P> provider);

Source Link

Document

Creates a new instance of the given entity using the given source to pull data from.

Usage

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  w w  w.j  a v a  2  s.c o  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: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());
    }/*from   w  w  w .j  av a 2  s.  c  o m*/

    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.frank.search.solr.core.convert.MappingSolrConverter.java

private <S extends Object> S read(final SolrPersistentEntity<S> entity, final Map<String, ?> source,
        Object parent) {//w  ww  .  ja v  a2  s . com
    ParameterValueProvider<SolrPersistentProperty> parameterValueProvider = getParameterValueProvider(entity,
            source, parent);

    EntityInstantiator instantiator = instantiators.getInstantiatorFor(entity);
    final S instance = instantiator.createInstance(entity, parameterValueProvider);
    final PersistentPropertyAccessor accessor = new ConvertingPropertyAccessor(
            entity.getPropertyAccessor(instance), getConversionService());

    entity.doWithProperties(new PropertyHandler<SolrPersistentProperty>() {

        @Override
        public void doWithPersistentProperty(SolrPersistentProperty persistentProperty) {
            if (entity.isConstructorArgument(persistentProperty)) {
                return;
            }

            Object o = getValue(persistentProperty, source, instance);
            if (o != null) {
                accessor.setProperty(persistentProperty, o);
            }
        }
    });

    return instance;
}

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);/* w  w  w . ja v a 2s  .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:io.twipple.springframework.data.clusterpoint.convert.DefaultClusterpointEntityConverter.java

/**
 * Creates a new {@link PersistentPropertyAccessor} for the given entity.
 *
 * @param entity   the persistent entity.
 * @param provider the parameter value provider.
 * @param <R>      the entity type.
 * @return a new {@link PersistentPropertyAccessor}.
 *///w  w w.j  av a 2 s  .co  m
@NotNull
private <R> PersistentPropertyAccessor getPersistentPropertyAccessor(
        @NotNull ClusterpointPersistentEntity<R> entity,
        @NotNull ParameterValueProvider<ClusterpointPersistentProperty> provider) {

    Assert.notNull(entity);
    Assert.notNull(provider);

    EntityInstantiator instantiator = instantiators.getInstantiatorFor(entity);
    R instance = instantiator.createInstance(entity, provider);
    return entity.getPropertyAccessor(instance);
}

From source file:org.springframework.data.solr.core.convert.MappingSolrConverter.java

private <S extends Object> S read(final SolrPersistentEntity<S> entity, final Map<String, ?> source,
        Object parent) {/*from ww w . j a va  2  s  .  c  o  m*/
    ParameterValueProvider<SolrPersistentProperty> parameterValueProvider = getParameterValueProvider(entity,
            source, parent);

    EntityInstantiator instantiator = instantiators.getInstantiatorFor(entity);
    final S instance = instantiator.createInstance(entity, parameterValueProvider);
    final PersistentPropertyAccessor accessor = new ConvertingPropertyAccessor(
            entity.getPropertyAccessor(instance), getConversionService());

    entity.doWithProperties(new PropertyHandler<SolrPersistentProperty>() {

        @Override
        public void doWithPersistentProperty(SolrPersistentProperty persistentProperty) {
            if (entity.isConstructorArgument(persistentProperty)) {
                return;
            }

            Object o = getValue(persistentProperty, source, instance);
            if (o != null) {
                accessor.setProperty(persistentProperty, o);
            }

        }
    });

    return instance;
}