Example usage for org.springframework.data.mapping.model ConvertingPropertyAccessor ConvertingPropertyAccessor

List of usage examples for org.springframework.data.mapping.model ConvertingPropertyAccessor ConvertingPropertyAccessor

Introduction

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

Prototype

public ConvertingPropertyAccessor(PersistentPropertyAccessor<T> accessor, ConversionService conversionService) 

Source Link

Document

Creates a new ConvertingPropertyAccessor for the given delegate PersistentPropertyAccessor and ConversionService .

Usage

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) {/*from  w ww .j  av a2 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;
}

From source file:com.frank.search.solr.core.convert.MappingSolrConverter.java

@SuppressWarnings("rawtypes")
protected void write(Object source, final Map target, SolrPersistentEntity<?> entity) {

    final PersistentPropertyAccessor accessor = new ConvertingPropertyAccessor(
            entity.getPropertyAccessor(source), getConversionService());

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

        @SuppressWarnings("unchecked")
        @Override//from ww  w.  jav a2  s.  c  o m
        public void doWithPersistentProperty(SolrPersistentProperty persistentProperty) {

            Object value = accessor.getProperty(persistentProperty);
            if (value == null || persistentProperty.isReadonly()) {
                return;
            }

            if (persistentProperty.containsWildcard() && !persistentProperty.isMap()) {
                throw new IllegalArgumentException("Field '" + persistentProperty.getFieldName()
                        + "' must not contain wildcards. Consider excluding Field from beeing indexed.");
            }

            Collection<SolrInputField> fields;
            if (persistentProperty.isMap() && persistentProperty.containsWildcard()) {
                fields = writeWildcardMapPropertyToTarget(target, persistentProperty, (Map<?, ?>) value);
            } else {
                fields = writeRegularPropertyToTarget(target, persistentProperty, value);
            }

            if (persistentProperty.isBoosted()) {
                for (SolrInputField field : fields) {
                    field.setBoost(persistentProperty.getBoost());
                }
            }
        }
    });

    if (entity.isBoosted() && target instanceof SolrInputDocument) {
        ((SolrInputDocument) target).setDocumentBoost(entity.getBoost());
    }

}

From source file:com._4dconcept.springframework.data.marklogic.core.MarklogicTemplate.java

/**
 * Populates the id property of the saved object, if it's not set already.
 *
 * @param objectToSave The object currently saved
 */// w w  w . ja  v a 2  s . c o m
private void generateIdIfNecessary(Object objectToSave) {
    MarklogicPersistentProperty property = getIdPropertyFor(objectToSave.getClass());

    if (property == null) {
        return;
    }

    MarklogicPersistentEntity<?> entity = retrievePersistentEntity(objectToSave.getClass());
    PersistentPropertyAccessor accessor = entity.getPropertyAccessor(objectToSave);

    if (accessor.getProperty(property) != null) {
        return;
    }

    ConversionService conversionService = marklogicConverter.getConversionService();
    new ConvertingPropertyAccessor(accessor, conversionService).setProperty(property, UUID.randomUUID());
}

From source file:org.springframework.data.gemfire.mapping.MappingPdxSerializer.java

@Override
public Object fromData(final Class<?> type, final PdxReader reader) {
    final GemfirePersistentEntity<?> entity = getPersistentEntity(type);

    final Object instance = getInstantiatorFor(entity).createInstance(entity,
            new PersistentEntityParameterValueProvider<GemfirePersistentProperty>(entity,
                    new GemfirePropertyValueProvider(reader), null));

    final PersistentPropertyAccessor accessor = new ConvertingPropertyAccessor(
            entity.getPropertyAccessor(instance), getConversionService());

    entity.doWithProperties(new PropertyHandler<GemfirePersistentProperty>() {
        public void doWithPersistentProperty(GemfirePersistentProperty persistentProperty) {
            if (!entity.isConstructorArgument(persistentProperty)) {
                PdxSerializer customSerializer = getCustomSerializer(persistentProperty.getType());

                Object value = null;

                try {
                    if (log.isDebugEnabled()) {
                        log.debug(String.format(
                                "setting property [%1$s] for entity [%2$s] of type [%3$s] from PDX%4$s",
                                persistentProperty.getName(), instance, type,
                                (customSerializer != null
                                        ? String.format(" using custom PdxSerializer [%1$s]", customSerializer)
                                        : "")));
                    }/*  w  w  w .j  av  a2 s .  co  m*/

                    value = (customSerializer != null
                            ? customSerializer.fromData(persistentProperty.getType(), reader)
                            : reader.readField(persistentProperty.getName()));

                    if (log.isDebugEnabled()) {
                        log.debug(String.format("with value [%1$s]", value));
                    }

                    accessor.setProperty(persistentProperty, value);
                } catch (Exception e) {
                    throw new MappingException(String.format(
                            "while setting value [%1$s] of property [%2$s] for entity of type [%3$s] from PDX%4$s",
                            value, persistentProperty.getName(), type,
                            (customSerializer != null
                                    ? String.format(" using custom PdxSerializer [%14s]", customSerializer)
                                    : "")),
                            e);
                }
            }
        }
    });

    return accessor.getBean();
}

From source file:org.springframework.data.gemfire.mapping.MappingPdxSerializer.java

@Override
public boolean toData(final Object value, final PdxWriter writer) {
    GemfirePersistentEntity<?> entity = getPersistentEntity(value.getClass());

    final PersistentPropertyAccessor accessor = new ConvertingPropertyAccessor(
            entity.getPropertyAccessor(value), getConversionService());

    entity.doWithProperties(new PropertyHandler<GemfirePersistentProperty>() {
        @Override//  w w w . j  a  v  a  2s.com
        @SuppressWarnings("unchecked")
        public void doWithPersistentProperty(GemfirePersistentProperty persistentProperty) {
            PdxSerializer customSerializer = getCustomSerializer(persistentProperty.getType());

            Object propertyValue = null;

            try {
                propertyValue = accessor.getProperty(persistentProperty);

                if (log.isDebugEnabled()) {
                    log.debug(String.format(
                            "serializing value [%1$s] of property [%2$s] for entity of type [%3$s] to PDX%4$s",
                            propertyValue, persistentProperty.getName(), value.getClass(),
                            (customSerializer != null
                                    ? String.format(" using custom PdxSerializer [%1$s]", customSerializer)
                                    : "")));
                }

                if (customSerializer != null) {
                    customSerializer.toData(propertyValue, writer);
                } else {
                    writer.writeField(persistentProperty.getName(), propertyValue,
                            (Class) persistentProperty.getType());
                }
            } catch (Exception e) {
                throw new MappingException(String.format(
                        "while serializing value [%1$s] of property [%2$s] for entity of type [%3$s] to PDX%4$s",
                        propertyValue, persistentProperty.getName(), value.getClass(),
                        (customSerializer != null
                                ? String.format(" using custom PdxSerializer [%1$s].",
                                        customSerializer.getClass().getName())
                                : ".")),
                        e);
            }
        }
    });

    GemfirePersistentProperty idProperty = entity.getIdProperty();

    if (idProperty != null) {
        writer.markIdentityField(idProperty.getName());
    }

    return true;
}

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 w ww . java  2  s .c om*/
    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:org.springframework.data.solr.core.convert.MappingSolrConverter.java

@SuppressWarnings("rawtypes")
protected void write(Object source, final Map target, SolrPersistentEntity<?> entity) {

    final PersistentPropertyAccessor accessor = new ConvertingPropertyAccessor(
            entity.getPropertyAccessor(source), getConversionService());

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

        @SuppressWarnings({ "unchecked" })
        @Override// w  ww .j a  v a2  s  .c  o  m
        public void doWithPersistentProperty(SolrPersistentProperty persistentProperty) {

            Object value = accessor.getProperty(persistentProperty);
            if (value == null || persistentProperty.isReadonly()) {
                return;
            }

            if (persistentProperty.containsWildcard() && !persistentProperty.isMap()) {
                throw new IllegalArgumentException("Field '" + persistentProperty.getFieldName()
                        + "' must not contain wildcards. Consider excluding Field from beeing indexed.");
            }

            Object fieldValue = value;
            if (persistentProperty.isMap() && persistentProperty.containsWildcard()) {
                TypeInformation<?> mapTypeInformation = persistentProperty.getTypeInformation()
                        .getMapValueType();
                Class<?> rawMapType = mapTypeInformation.getType();

                Map<?, ?> map = (Map<?, ?>) fieldValue;
                for (Map.Entry<?, ?> entry : map.entrySet()) {
                    String mappedFieldName = entry.getKey().toString();
                    SolrInputField field = new SolrInputField(mappedFieldName);
                    if (entry.getValue() instanceof Iterable) {
                        for (Object o : (Iterable<?>) entry.getValue()) {
                            field.addValue(convertToSolrType(rawMapType, o), 1f);
                        }
                    } else {
                        if (rawMapType.isArray()) {
                            for (Object o : (Object[]) entry.getValue()) {
                                field.addValue(convertToSolrType(rawMapType, o), 1f);
                            }
                        } else {
                            field.addValue(convertToSolrType(rawMapType, entry.getValue()), 1f);
                        }
                    }
                    target.put(mappedFieldName, field);
                }
                return;
            }

            SolrInputField field = new SolrInputField(persistentProperty.getFieldName());
            if (persistentProperty.isCollectionLike()) {
                Collection<?> collection = asCollection(fieldValue);
                for (Object o : collection) {
                    if (o != null) {
                        field.addValue(convertToSolrType(persistentProperty.getType(), o), 1f);
                    }
                }
            } else {
                field.setValue(convertToSolrType(persistentProperty.getType(), fieldValue), 1f);
            }
            target.put(persistentProperty.getFieldName(), field);

            if (persistentProperty.isBoosted()) {
                field.setBoost(persistentProperty.getBoost());
            }

        }
    });

    if (entity.isBoosted() && target instanceof SolrInputDocument) {
        ((SolrInputDocument) target).setDocumentBoost(entity.getBoost());
    }

}