List of usage examples for org.springframework.data.mapping PropertyHandler PropertyHandler
PropertyHandler
From source file:com.frank.search.solr.core.schema.SolrSchemaResolver.java
public SchemaDefinition resolveSchemaForEntity(SolrPersistentEntity<?> entity) { Assert.notNull(entity, "Schema cannot be resolved for 'null'."); final SchemaDefinition schemaDefinition = new SchemaDefinition(entity.getSolrCoreName()); entity.doWithProperties(new PropertyHandler<SolrPersistentProperty>() { @Override/*from w w w . j a v a 2s . co m*/ public void doWithPersistentProperty(SolrPersistentProperty persistentProperty) { SchemaDefinition.FieldDefinition fieldDefinition = createFieldDefinitionForProperty( persistentProperty); if (fieldDefinition != null) { schemaDefinition.addFieldDefinition(fieldDefinition); } } }); return schemaDefinition; }
From source file:org.oasis.datacore.sdk.data.spring.DatacoreMappingMongoConverter.java
protected void writeInternal(Object obj, final DBObject dbo, MongoPersistentEntity<?> entity) { if (obj == null) { return;//from w ww . j av a 2s.c om } if (null == entity) { throw new MappingException("No mapping metadata found for entity of type " + obj.getClass().getName()); } final BeanWrapper<MongoPersistentEntity<Object>, Object> wrapper = BeanWrapper.create(obj, conversionService); final MongoPersistentProperty idProperty = entity.getIdProperty(); if (!dbo.containsField("_id") && null != idProperty) { boolean fieldAccessOnly = idProperty.usePropertyAccess() ? false : useFieldAccessOnly; try { Object id = wrapper.getProperty(idProperty, Object.class, fieldAccessOnly); dbo.put("_id", idMapper.convertId(id)); } catch (ConversionException ignored) { } } // Write the properties entity.doWithProperties(new PropertyHandler<MongoPersistentProperty>() { public void doWithPersistentProperty(MongoPersistentProperty prop) { if (prop.equals(idProperty)) { return; } boolean fieldAccessOnly = prop.usePropertyAccess() ? false : useFieldAccessOnly; Object propertyObj = wrapper.getProperty(prop, prop.getType(), fieldAccessOnly); //if (null != propertyObj) { // [Ozwillo] HACK to allow unset / set to null at save if (/*[Ozwillo] HACK*/null != propertyObj && /*[Ozwillo] END*/!conversions.isSimpleType(propertyObj.getClass())) { writePropertyInternal(propertyObj, dbo, prop); } else { writeSimpleInternal(propertyObj, dbo, prop.getFieldName()); } //} // [Ozwillo] HACK } }); entity.doWithAssociations(new AssociationHandler<MongoPersistentProperty>() { public void doWithAssociation(Association<MongoPersistentProperty> association) { MongoPersistentProperty inverseProp = association.getInverse(); Class<?> type = inverseProp.getType(); Object propertyObj = wrapper.getProperty(inverseProp, type, useFieldAccessOnly); //if (null != propertyObj) { // [Ozwillo] HACK to allow unset / set to null at save writePropertyInternal(propertyObj, dbo, inverseProp); //} // [Ozwillo] HACK } }); // [Ozwillo] HACK to persist Datacore model fields at root level NOT FOR NOW /*if ("DCEntity".equals(entity.getName())) { DCEntity dcEntity = (DCEntity) object; DCModel dcModel = dcModelService.getModel(dcEntity.getType()); for (DCField dcField : dcModel.getAllFields()) { } }*/ }
From source file:com.turbospaces.model.BO.java
/** * create business object over actual basic persistent entity * /* ww w . j a v a 2 s .com*/ * @param delegate * the actual persistent entity meta-data provider * @throws NoSuchMethodException * re-throw cglib exception * @throws SecurityException * re-throw cglib exception * @throws IntrospectionException * re-throw exceptions */ public BO(final BasicPersistentEntity delegate) throws SecurityException, NoSuchMethodException, IntrospectionException { this.delegate = delegate; this.fastConstructor = FastClass.create(delegate.getType()) .getConstructor(delegate.getType().getConstructor()); // find optimistic lock version/routing fields { final Collection<PersistentProperty> versionCandidates = Lists.newLinkedList(); final Collection<PersistentProperty> routingCandidates = Lists.newLinkedList(); delegate.doWithProperties(new PropertyHandler() { @Override public void doWithPersistentProperty(final PersistentProperty persistentProperty) { PropertyDescriptor propertyDescriptor = persistentProperty.getPropertyDescriptor(); Field field = persistentProperty.getField(); if (hasAnnotation(propertyDescriptor, field, Version.class)) versionCandidates.add(persistentProperty); if (hasAnnotation(propertyDescriptor, field, Routing.class)) routingCandidates.add(persistentProperty); } private boolean hasAnnotation(final PropertyDescriptor descriptor, final Field field, final Class annotation) { if (descriptor != null && descriptor.getReadMethod() != null && descriptor.getReadMethod().getAnnotation(annotation) != null) return true; if (field != null && field.getAnnotation(annotation) != null) return true; return false; } }); Preconditions.checkArgument(versionCandidates.size() <= 1, "too many fields marked with @Version annotation, candidates = " + versionCandidates.toString()); Preconditions.checkArgument(routingCandidates.size() <= 1, "too many fields marked with @Routing annotation, candidates = " + routingCandidates.toString()); if (!versionCandidates.isEmpty()) optimisticLockVersionProperty = versionCandidates.iterator().next(); if (!routingCandidates.isEmpty()) routingProperty = routingCandidates.iterator().next(); } { // Java Beans convention marker AtomicBoolean propertyAccess = new AtomicBoolean(true); List<String> setters = Lists.newLinkedList(); List<String> getters = Lists.newLinkedList(); List<Class<?>> types = Lists.newLinkedList(); for (PersistentProperty<?> persistentProperty : getOrderedProperties()) { PropertyDescriptor propertyDescriptor = persistentProperty.getPropertyDescriptor(); if (propertyDescriptor != null) { if (propertyDescriptor.getReadMethod() != null && propertyDescriptor.getWriteMethod() != null) { setters.add(propertyDescriptor.getWriteMethod().getName()); getters.add(propertyDescriptor.getReadMethod().getName()); types.add(persistentProperty.getType()); } } else { propertyAccess.set(false); brokenProperties.add(persistentProperty); } } if (propertyAccess.get()) // create properties extract for all persistent properties bulkBean = BulkBean.create(delegate.getType(), getters.toArray(new String[getters.size()]), setters.toArray(new String[setters.size()]), types.toArray(new Class[types.size()])); else Log.warn(String.format( "PropetiesSerializer-%s unable to use getters-setters access optimization. Suspected/Corrupted properties = %s", delegate.getType().getSimpleName(), getBrokenProperties())); boolean canOptimizeIdProperty = hasReadWriteMethods(delegate.getIdProperty()); boolean canOptimizeVersionProperty = hasReadWriteMethods(getOptimisticLockVersionProperty()); boolean canOptimizeRoutingProperty = hasReadWriteMethods(getRoutingProperty()); // create id/version/routing bulk fields extractor if (canOptimizeIdProperty && canOptimizeVersionProperty && canOptimizeRoutingProperty) { String[] g = new String[] { delegate.getIdProperty().getPropertyDescriptor().getReadMethod().getName(), getOptimisticLockVersionProperty().getPropertyDescriptor().getReadMethod().getName(), getRoutingProperty().getPropertyDescriptor().getReadMethod().getName() }; String[] s = new String[] { delegate.getIdProperty().getPropertyDescriptor().getWriteMethod().getName(), getOptimisticLockVersionProperty().getPropertyDescriptor().getWriteMethod().getName(), getRoutingProperty().getPropertyDescriptor().getWriteMethod().getName() }; Class<?>[] c = new Class[] { delegate.getIdProperty().getType(), getOptimisticLockVersionProperty().getType(), getRoutingProperty().getType() }; idVersionRoutingBulkBean = BulkBean.create(delegate.getType(), g, s, c); } } }
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()); }/* w w w .j ava 2s . co 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.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);/* ww w . ja v a 2s. c om*/ 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.couchbase.spring.core.convert.MappingCouchbaseConverter.java
protected void writeInternal(final Object source, ConvertedCouchbaseDocument target, TypeInformation<?> type) throws IOException { CouchbasePersistentEntity<?> entity = mappingContext.getPersistentEntity(source.getClass()); if (entity == null) { throw new MappingException( "No mapping metadata found for entity of type " + source.getClass().getName()); }// w w w . j ava 2 s. c o m final CouchbasePersistentProperty idProperty = entity.getIdProperty(); if (idProperty == null) { throw new MappingException("ID property required for entity of type " + source.getClass().getName()); } final BeanWrapper<CouchbasePersistentEntity<Object>, Object> wrapper = BeanWrapper.create(source, conversionService); String id = wrapper.getProperty(idProperty, String.class, false); target.setId(id); target.setExpiry(entity.getExpiry()); JsonFactory jsonFactory = new JsonFactory(); OutputStream jsonStream = new ByteArrayOutputStream(); final JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(jsonStream, JsonEncoding.UTF8); jsonGenerator.setCodec(new ObjectMapper()); jsonGenerator.writeStartObject(); entity.doWithProperties(new PropertyHandler<CouchbasePersistentProperty>() { @Override public void doWithPersistentProperty(CouchbasePersistentProperty prop) { if (prop.equals(idProperty)) { return; } Object propertyValue = wrapper.getProperty(prop, prop.getType(), false); if (propertyValue != null) { try { jsonGenerator.writeFieldName(prop.getFieldName()); jsonGenerator.writeObject(propertyValue); } catch (IOException ex) { throw new MappingException( "Could not translate to JSON while converting " + source.getClass().getName()); } } } }); jsonGenerator.writeEndObject(); jsonGenerator.close(); target.setRawValue(jsonStream.toString()); }
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 w w . j a v a 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:io.twipple.springframework.data.clusterpoint.convert.DefaultClusterpointEntityConverter.java
/** * Read an incoming {@link ClusterpointDocument} into the target entity. * * @param entity the target entity./*from w w w . j a va 2s .c o m*/ * @param source the document to convert. * @param parent an optional parent object. * @param <R> the entity type. * @return the converted entity. */ @NotNull @SuppressWarnings("unchecked") protected <R> R read(@NotNull final ClusterpointPersistentEntity<R> entity, @NotNull final ClusterpointDocument source, Object parent) { Assert.notNull(entity); Assert.notNull(source); final DefaultSpELExpressionEvaluator evaluator = new DefaultSpELExpressionEvaluator(source, spELContext); ParameterValueProvider<ClusterpointPersistentProperty> parameterValueProvider = getParameterValueProvider( entity, source, evaluator, parent); final PersistentPropertyAccessor propertyAccessor = getPersistentPropertyAccessor(entity, parameterValueProvider); final PropertyValueProvider<ClusterpointPersistentProperty> propertyValueProvider = getPropertyValueProvider( source, propertyAccessor); entity.doWithProperties(new PropertyHandler<ClusterpointPersistentProperty>() { @Override public void doWithPersistentProperty(@NotNull ClusterpointPersistentProperty property) { Assert.notNull(property); if (!source.doesPropertyExist(property) || entity.isConstructorArgument(property)) { return; } Object obj = propertyValueProvider.getPropertyValue(property); setPropertyInternal(propertyAccessor, property, obj); } }); entity.doWithAssociations(new AssociationHandler<ClusterpointPersistentProperty>() { @Override public void doWithAssociation(@NotNull Association<ClusterpointPersistentProperty> association) { Assert.notNull(association); ClusterpointPersistentProperty inverseProperty = association.getInverse(); Object obj = propertyValueProvider.getPropertyValue(inverseProperty); setPropertyInternal(propertyAccessor, inverseProperty, obj); } }); return (R) propertyAccessor.getBean(); }
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 w ww.j av a 2 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.joyveb.dbpimpl.cass.prepare.convert.MappingCassandraConverter.java
@Override public CreateTableSpecification getCreateTableSpecification(CassandraPersistentEntity<?> entity) { final CreateTableSpecification spec = new CreateTableSpecification(); spec.name(entity.getTableName());//from w ww . j av a 2 s. c o m final List<CassandraPersistentProperty> partitionKeyProperties = new ArrayList<CassandraPersistentProperty>( 5); final List<CassandraPersistentProperty> clusteringKeyProperties = new ArrayList<CassandraPersistentProperty>( 5); doWithAllProperties(entity, new PropertyHandler<CassandraPersistentProperty>() { public void doWithPersistentProperty(CassandraPersistentProperty prop) { if (prop.isIdProperty()) { partitionKeyProperties.add(prop); } else if (prop.getKeyPart() == KeyPart.PARTITION) { partitionKeyProperties.add(prop); } else if (prop.getKeyPart() == KeyPart.CLUSTERING) { clusteringKeyProperties.add(prop); } else { spec.column(prop.getColumnName(), prop.getDataType()); } } }); if (partitionKeyProperties.isEmpty()) { throw new MappingException("not found partition key in the entity " + entity.getType()); } /* * Sort primary key properties by ordinal */ Collections.sort(partitionKeyProperties, OrdinalBasedPropertyComparator.INSTANCE); Collections.sort(clusteringKeyProperties, OrdinalBasedPropertyComparator.INSTANCE); /* * Add ordered primary key columns to the specification */ for (CassandraPersistentProperty prop : partitionKeyProperties) { spec.partitionKeyColumn(prop.getColumnName(), prop.getDataType()); } for (CassandraPersistentProperty prop : clusteringKeyProperties) { spec.clusteringKeyColumn(prop.getColumnName(), prop.getDataType(), prop.getOrdering()); } return spec; }