List of usage examples for org.springframework.data.mapping.model ConvertingPropertyAccessor ConvertingPropertyAccessor
public ConvertingPropertyAccessor(PersistentPropertyAccessor<T> accessor, ConversionService conversionService)
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()); } }