DATACOUCH-519 - Apply formatting for changes
This commit is contained in:
@@ -17,7 +17,9 @@
|
||||
package org.springframework.data.couchbase.core;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.*;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.dao.support.PersistenceExceptionTranslator;
|
||||
import org.springframework.data.couchbase.CouchbaseClientFactory;
|
||||
@@ -32,8 +34,7 @@ import org.springframework.lang.Nullable;
|
||||
import com.couchbase.client.java.Collection;
|
||||
|
||||
/**
|
||||
* Implements Couchbase operations
|
||||
* findBy, insertBy, upsertBy, replaceBy, removeBy, existsBy
|
||||
* Implements Couchbase operations findBy, insertBy, upsertBy, replaceBy, removeBy, existsBy
|
||||
*
|
||||
* @author Michael Nitschinger
|
||||
* @author Michael Reiche
|
||||
|
||||
@@ -27,7 +27,11 @@ import org.springframework.data.couchbase.core.convert.translation.TranslationSe
|
||||
import org.springframework.data.couchbase.core.mapping.CouchbaseDocument;
|
||||
import org.springframework.data.couchbase.core.mapping.CouchbasePersistentEntity;
|
||||
import org.springframework.data.couchbase.core.mapping.CouchbasePersistentProperty;
|
||||
import org.springframework.data.couchbase.core.mapping.event.*;
|
||||
import org.springframework.data.couchbase.core.mapping.event.AfterConvertCallback;
|
||||
import org.springframework.data.couchbase.core.mapping.event.BeforeConvertCallback;
|
||||
import org.springframework.data.couchbase.core.mapping.event.BeforeConvertEvent;
|
||||
import org.springframework.data.couchbase.core.mapping.event.BeforeSaveEvent;
|
||||
import org.springframework.data.couchbase.core.mapping.event.CouchbaseMappingEvent;
|
||||
import org.springframework.data.couchbase.repository.support.MappingCouchbaseEntityInformation;
|
||||
import org.springframework.data.mapping.PersistentPropertyAccessor;
|
||||
import org.springframework.data.mapping.callback.EntityCallbacks;
|
||||
@@ -49,8 +53,8 @@ public class CouchbaseTemplateSupport implements ApplicationContextAware {
|
||||
private final MappingContext<? extends CouchbasePersistentEntity<?>, CouchbasePersistentProperty> mappingContext;
|
||||
// TODO: this should be replaced I think
|
||||
private final TranslationService translationService;
|
||||
private ApplicationContext applicationContext;
|
||||
EntityCallbacks entityCallbacks;
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public CouchbaseTemplateSupport(final CouchbaseConverter converter) {
|
||||
this.converter = converter;
|
||||
@@ -74,8 +78,7 @@ public class CouchbaseTemplateSupport implements ApplicationContextAware {
|
||||
|
||||
T readEntity = converter.read(entityClass, (CouchbaseDocument) translationService.decode(source, converted));
|
||||
final ConvertingPropertyAccessor<T> accessor = getPropertyAccessor(readEntity);
|
||||
CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(
|
||||
readEntity.getClass());
|
||||
CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(readEntity.getClass());
|
||||
|
||||
if (persistentEntity.getVersionProperty() != null) {
|
||||
accessor.setProperty(persistentEntity.getVersionProperty(), cas);
|
||||
@@ -85,8 +88,7 @@ public class CouchbaseTemplateSupport implements ApplicationContextAware {
|
||||
|
||||
public void applyUpdatedCas(final Object entity, final long cas) {
|
||||
final ConvertingPropertyAccessor<Object> accessor = getPropertyAccessor(entity);
|
||||
final CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(
|
||||
entity.getClass());
|
||||
final CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(entity.getClass());
|
||||
final CouchbasePersistentProperty versionProperty = persistentEntity.getVersionProperty();
|
||||
|
||||
if (versionProperty != null) {
|
||||
|
||||
@@ -19,7 +19,6 @@ package org.springframework.data.couchbase.core;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.dao.support.PersistenceExceptionTranslator;
|
||||
import org.springframework.data.couchbase.CouchbaseClientFactory;
|
||||
|
||||
@@ -33,8 +33,6 @@ import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.core.CollectionFactory;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.convert.support.DefaultConversionService;
|
||||
import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.data.annotation.LastModifiedDate;
|
||||
import org.springframework.data.convert.EntityInstantiator;
|
||||
import org.springframework.data.couchbase.core.mapping.CouchbaseDocument;
|
||||
import org.springframework.data.couchbase.core.mapping.CouchbaseList;
|
||||
@@ -64,9 +62,9 @@ import org.springframework.data.mapping.model.SpELExpressionEvaluator;
|
||||
import org.springframework.data.mapping.model.SpELExpressionParameterValueProvider;
|
||||
import org.springframework.data.util.ClassTypeInformation;
|
||||
import org.springframework.data.util.TypeInformation;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
* A mapping converter for Couchbase. The converter is responsible for reading from and writing to entities and
|
||||
@@ -112,8 +110,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Callbacks for Audit Mechanism
|
||||
*/
|
||||
private @Nullable
|
||||
EntityCallbacks entityCallbacks;
|
||||
private @Nullable EntityCallbacks entityCallbacks;
|
||||
|
||||
public MappingCouchbaseConverter() {
|
||||
super(new DefaultConversionService());
|
||||
@@ -138,7 +135,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
* attribute.
|
||||
*
|
||||
* @param mappingContext the mapping context to use.
|
||||
* @param typeKey the attribute name to use to store complex types class name.
|
||||
* @param typeKey the attribute name to use to store complex types class name.
|
||||
*/
|
||||
public MappingCouchbaseConverter(
|
||||
final MappingContext<? extends CouchbasePersistentEntity<?>, CouchbasePersistentProperty> mappingContext,
|
||||
@@ -167,7 +164,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Check if one class is a subtype of the other.
|
||||
*
|
||||
* @param left the first class.
|
||||
* @param left the first class.
|
||||
* @param right the second class.
|
||||
* @return true if it is a subtype, false otherwise.
|
||||
*/
|
||||
@@ -193,9 +190,9 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Read an incoming {@link CouchbaseDocument} into the target entity.
|
||||
*
|
||||
* @param type the type information of the target entity.
|
||||
* @param type the type information of the target entity.
|
||||
* @param source the document to convert.
|
||||
* @param <R> the entity type.
|
||||
* @param <R> the entity type.
|
||||
* @return the converted entity.
|
||||
*/
|
||||
protected <R> R read(final TypeInformation<R> type, final CouchbaseDocument source) {
|
||||
@@ -205,10 +202,10 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Read an incoming {@link CouchbaseDocument} into the target entity.
|
||||
*
|
||||
* @param type the type information of the target entity.
|
||||
* @param type the type information of the target entity.
|
||||
* @param source the document to convert.
|
||||
* @param parent an optional parent object.
|
||||
* @param <R> the entity type.
|
||||
* @param <R> the entity type.
|
||||
* @return the converted entity.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -228,8 +225,8 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
return (R) readMap(typeToUse, source, parent);
|
||||
}
|
||||
|
||||
CouchbasePersistentEntity<R> entity = (CouchbasePersistentEntity<R>) mappingContext.getRequiredPersistentEntity(
|
||||
typeToUse);
|
||||
CouchbasePersistentEntity<R> entity = (CouchbasePersistentEntity<R>) mappingContext
|
||||
.getRequiredPersistentEntity(typeToUse);
|
||||
return read(entity, source, parent);
|
||||
}
|
||||
|
||||
@@ -243,11 +240,10 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
* @param entity the target entity.
|
||||
* @param source the document to convert.
|
||||
* @param parent an optional parent object.
|
||||
* @param <R> the entity type.
|
||||
* @param <R> the entity type.
|
||||
* @return the converted entity.
|
||||
*/
|
||||
protected <R> R read(final CouchbasePersistentEntity<R> entity, final CouchbaseDocument source,
|
||||
final Object parent) {
|
||||
protected <R> R read(final CouchbasePersistentEntity<R> entity, final CouchbaseDocument source, final Object parent) {
|
||||
final DefaultSpELExpressionEvaluator evaluator = new DefaultSpELExpressionEvaluator(source, spELContext);
|
||||
ParameterValueProvider<CouchbasePersistentProperty> provider = getParameterProvider(entity, source, evaluator,
|
||||
parent);
|
||||
@@ -259,8 +255,8 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
entity.doWithProperties(new PropertyHandler<CouchbasePersistentProperty>() {
|
||||
@Override
|
||||
public void doWithPersistentProperty(final CouchbasePersistentProperty prop) {
|
||||
if (!doesPropertyExistInSource(prop) || entity.isConstructorArgument(prop) || isIdConstructionProperty(
|
||||
prop) || prop.isAnnotationPresent(N1qlJoin.class)) {
|
||||
if (!doesPropertyExistInSource(prop) || entity.isConstructorArgument(prop) || isIdConstructionProperty(prop)
|
||||
|| prop.isAnnotationPresent(N1qlJoin.class)) {
|
||||
return;
|
||||
}
|
||||
Object obj = prop.isIdProperty() ? source.getId() : getValueInternal(prop, source, instance);
|
||||
@@ -289,8 +285,8 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
* Loads the property value through the value provider.
|
||||
*
|
||||
* @param property the source property.
|
||||
* @param source the source document.
|
||||
* @param parent the optional parent.
|
||||
* @param source the source document.
|
||||
* @param parent the optional parent.
|
||||
* @return the actual property value.
|
||||
*/
|
||||
protected Object getValueInternal(final CouchbasePersistentProperty property, final CouchbaseDocument source,
|
||||
@@ -301,10 +297,10 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Creates a new parameter provider.
|
||||
*
|
||||
* @param entity the persistent entity.
|
||||
* @param source the source document.
|
||||
* @param entity the persistent entity.
|
||||
* @param source the source document.
|
||||
* @param evaluator the SPEL expression evaluator.
|
||||
* @param parent the optional parent.
|
||||
* @param parent the optional parent.
|
||||
* @return a new parameter value provider.
|
||||
*/
|
||||
private ParameterValueProvider<CouchbasePersistentProperty> getParameterProvider(
|
||||
@@ -321,7 +317,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Recursively parses the a map from the source document.
|
||||
*
|
||||
* @param type the type information for the document.
|
||||
* @param type the type information for the document.
|
||||
* @param source the source document.
|
||||
* @param parent the optional parent.
|
||||
* @return the recursively parsed map.
|
||||
@@ -362,7 +358,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Potentially convert simple values like ENUMs.
|
||||
*
|
||||
* @param value the value to convert.
|
||||
* @param value the value to convert.
|
||||
* @param target the target object.
|
||||
* @return the potentially converted object.
|
||||
*/
|
||||
@@ -406,16 +402,15 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
|
||||
writeInternal(source, target, type);
|
||||
if (target.getId() == null) {
|
||||
throw new MappingException(
|
||||
"An ID property is needed, but not found/could not be generated on this entity.");
|
||||
throw new MappingException("An ID property is needed, but not found/could not be generated on this entity.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a source object into a {@link CouchbaseDocument} target.
|
||||
*
|
||||
* @param source the source object.
|
||||
* @param target the target document.
|
||||
* @param source the source object.
|
||||
* @param target the target document.
|
||||
* @param typeHint the type information for the source.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -565,7 +560,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
*
|
||||
* @param source the source object.
|
||||
* @param target the target document.
|
||||
* @param prop the property information.
|
||||
* @param prop the property information.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private void writePropertyInternal(final Object source, final CouchbaseDocument target,
|
||||
@@ -615,9 +610,9 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
CouchbaseDocument propertyDoc = new CouchbaseDocument();
|
||||
addCustomTypeKeyIfNecessary(type, source, propertyDoc);
|
||||
|
||||
CouchbasePersistentEntity<?> entity = isSubtype(prop.getType(), source.getClass()) ?
|
||||
mappingContext.getRequiredPersistentEntity(source.getClass()) :
|
||||
mappingContext.getRequiredPersistentEntity(type);
|
||||
CouchbasePersistentEntity<?> entity = isSubtype(prop.getType(), source.getClass())
|
||||
? mappingContext.getRequiredPersistentEntity(source.getClass())
|
||||
: mappingContext.getRequiredPersistentEntity(type);
|
||||
writeInternal(source, propertyDoc, entity);
|
||||
target.put(name, propertyDoc);
|
||||
}
|
||||
@@ -625,7 +620,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Wrapper method to create the underlying map.
|
||||
*
|
||||
* @param map the source map.
|
||||
* @param map the source map.
|
||||
* @param prop the persistent property.
|
||||
* @return the written couchbase document.
|
||||
*/
|
||||
@@ -641,7 +636,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
*
|
||||
* @param source the source object.
|
||||
* @param target the target document.
|
||||
* @param type the type information for the document.
|
||||
* @param type the type information for the document.
|
||||
* @return the written couchbase document.
|
||||
*/
|
||||
private CouchbaseDocument writeMapInternal(final Map<Object, Object> source, final CouchbaseDocument target,
|
||||
@@ -660,9 +655,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
new CouchbaseList(conversions.getSimpleTypeHolder()), type.getMapValueType()));
|
||||
} else {
|
||||
CouchbaseDocument embeddedDoc = new CouchbaseDocument();
|
||||
TypeInformation<?> valueTypeInfo = type.isMap() ?
|
||||
type.getMapValueType() :
|
||||
ClassTypeInformation.OBJECT;
|
||||
TypeInformation<?> valueTypeInfo = type.isMap() ? type.getMapValueType() : ClassTypeInformation.OBJECT;
|
||||
writeInternal(val, embeddedDoc, valueTypeInfo);
|
||||
target.put(simpleKey, embeddedDoc);
|
||||
}
|
||||
@@ -678,7 +671,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
* Helper method to create the underlying collection/list.
|
||||
*
|
||||
* @param collection the collection to write.
|
||||
* @param prop the property information.
|
||||
* @param prop the property information.
|
||||
* @return the created couchbase list.
|
||||
*/
|
||||
private CouchbaseList createCollection(final Collection<?> collection, final CouchbasePersistentProperty prop) {
|
||||
@@ -691,7 +684,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
*
|
||||
* @param source the source object.
|
||||
* @param target the target document.
|
||||
* @param type the type information for the document.
|
||||
* @param type the type information for the document.
|
||||
* @return the created couchbase list.
|
||||
*/
|
||||
private CouchbaseList writeCollectionInternal(final Collection<?> source, final CouchbaseList target,
|
||||
@@ -704,8 +697,8 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
if (elementType == null || conversions.isSimpleType(elementType)) {
|
||||
target.put(getPotentiallyConvertedSimpleWrite(element));
|
||||
} else if (element instanceof Collection || elementType.isArray()) {
|
||||
target.put(writeCollectionInternal(asCollection(element),
|
||||
new CouchbaseList(conversions.getSimpleTypeHolder()), componentType));
|
||||
target.put(writeCollectionInternal(asCollection(element), new CouchbaseList(conversions.getSimpleTypeHolder()),
|
||||
componentType));
|
||||
} else {
|
||||
|
||||
CouchbaseDocument embeddedDoc = new CouchbaseDocument();
|
||||
@@ -722,13 +715,12 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
* Read a collection from the source object.
|
||||
*
|
||||
* @param targetType the target type.
|
||||
* @param source the list as source.
|
||||
* @param parent the optional parent.
|
||||
* @param source the list as source.
|
||||
* @param parent the optional parent.
|
||||
* @return the instantiated collection.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private Object readCollection(final TypeInformation<?> targetType, final CouchbaseList source,
|
||||
final Object parent) {
|
||||
private Object readCollection(final TypeInformation<?> targetType, final CouchbaseList source, final Object parent) {
|
||||
Assert.notNull(targetType, "Target type must not be null!");
|
||||
|
||||
Class<?> collectionType = targetType.getType();
|
||||
@@ -737,9 +729,8 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
}
|
||||
|
||||
collectionType = Collection.class.isAssignableFrom(collectionType) ? collectionType : List.class;
|
||||
Collection<Object> items = targetType.getType().isArray() ?
|
||||
new ArrayList<Object>() :
|
||||
CollectionFactory.createCollection(collectionType, source.size(false));
|
||||
Collection<Object> items = targetType.getType().isArray() ? new ArrayList<Object>()
|
||||
: CollectionFactory.createCollection(collectionType, source.size(false));
|
||||
TypeInformation<?> componentType = targetType.getComponentType();
|
||||
Class<?> rawComponentType = componentType == null ? null : componentType.getType();
|
||||
|
||||
@@ -764,7 +755,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
*
|
||||
* @param source the source object.
|
||||
* @param target the target document.
|
||||
* @param key the key of the object.
|
||||
* @param key the key of the object.
|
||||
*/
|
||||
private void writeSimpleInternal(final Object source, final CouchbaseDocument target, final String key) {
|
||||
target.put(key, getPotentiallyConvertedSimpleWrite(source));
|
||||
@@ -777,14 +768,14 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
|
||||
Optional<Class<?>> customTarget = conversions.getCustomWriteTarget(value.getClass());
|
||||
|
||||
return customTarget.map(it -> (Object) conversionService.convert(value, it)).orElseGet(
|
||||
() -> Enum.class.isAssignableFrom(value.getClass()) ? ((Enum<?>) value).name() : value);
|
||||
return customTarget.map(it -> (Object) conversionService.convert(value, it))
|
||||
.orElseGet(() -> Enum.class.isAssignableFrom(value.getClass()) ? ((Enum<?>) value).name() : value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a custom type key if needed.
|
||||
*
|
||||
* @param type the type information.
|
||||
* @param type the type information.
|
||||
* @param source th the source object.
|
||||
* @param target the target document.
|
||||
*/
|
||||
@@ -807,8 +798,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
}
|
||||
|
||||
/**
|
||||
* COPIED
|
||||
* Set the {@link EntityCallbacks} instance to use when invoking
|
||||
* COPIED Set the {@link EntityCallbacks} instance to use when invoking
|
||||
* {@link org.springframework.data.mapping.callback.EntityCallback callbacks} like the {@link AfterConvertCallback}.
|
||||
* <p/>
|
||||
* Overrides potentially existing {@link EntityCallbacks}.
|
||||
@@ -825,10 +815,10 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
/**
|
||||
* Helper method to read the value based on the value type.
|
||||
*
|
||||
* @param value the value to convert.
|
||||
* @param type the type information.
|
||||
* @param value the value to convert.
|
||||
* @param type the type information.
|
||||
* @param parent the optional parent.
|
||||
* @param <R> the target type.
|
||||
* @param <R> the target type.
|
||||
* @return the converted object.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -961,8 +951,8 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
private final Object parent;
|
||||
|
||||
public ConverterAwareSpELExpressionParameterValueProvider(final SpELExpressionEvaluator evaluator,
|
||||
final ConversionService conversionService,
|
||||
final ParameterValueProvider<CouchbasePersistentProperty> delegate, final Object parent) {
|
||||
final ConversionService conversionService, final ParameterValueProvider<CouchbasePersistentProperty> delegate,
|
||||
final Object parent) {
|
||||
super(evaluator, conversionService, delegate);
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@ public interface AfterConvertCallback<T> extends EntityCallback<T> {
|
||||
* Entity callback method invoked after a domain object is materialized from a {@link Document}. Can return either the
|
||||
* same or a modified instance of the domain object.
|
||||
*
|
||||
* @param entity the domain object (the result of the conversion).
|
||||
* @param document must not be {@literal null}.
|
||||
* @param entity the domain object (the result of the conversion).
|
||||
* @param document must not be {@literal null}.
|
||||
* @param collection name of the collection.
|
||||
* @return the domain object that is the result of reading it from the {@link Document}.
|
||||
*/
|
||||
|
||||
@@ -32,7 +32,7 @@ public interface BeforeConvertCallback<T> extends EntityCallback<T> {
|
||||
* Entity callback method invoked before a domain object is converted to be persisted. Can return either the same or a
|
||||
* modified instance of the domain object.
|
||||
*
|
||||
* @param entity the domain object to save.
|
||||
* @param entity the domain object to save.
|
||||
* @param collection name of the collection.
|
||||
* @return the domain object to be persisted.
|
||||
*/
|
||||
|
||||
@@ -34,8 +34,8 @@ import org.springframework.data.couchbase.core.mapping.event.AuditingEventListen
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* A support registrar that allows to set up auditing for Couchbase (including {@link AuditingHandler}
|
||||
* and { IsNewStrategyFactory} set up). See {@link EnableCouchbaseAuditing} for the associated annotation.
|
||||
* A support registrar that allows to set up auditing for Couchbase (including {@link AuditingHandler} and {
|
||||
* IsNewStrategyFactory} set up). See {@link EnableCouchbaseAuditing} for the associated annotation.
|
||||
*
|
||||
* @author Thomas Darimont
|
||||
* @author Oliver Gierke
|
||||
@@ -44,56 +44,56 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public class CouchbaseAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport {
|
||||
|
||||
@Override
|
||||
protected Class<? extends Annotation> getAnnotation() {
|
||||
return EnableCouchbaseAuditing.class;
|
||||
}
|
||||
@Override
|
||||
protected Class<? extends Annotation> getAnnotation() {
|
||||
return EnableCouchbaseAuditing.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getAuditingHandlerBeanName() {
|
||||
return BeanNames.COUCHBASE_AUDITING_HANDLER;
|
||||
}
|
||||
@Override
|
||||
protected String getAuditingHandlerBeanName() {
|
||||
return BeanNames.COUCHBASE_AUDITING_HANDLER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry registry) {
|
||||
Assert.notNull(annotationMetadata, "AnnotationMetadata must not be null!");
|
||||
Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
|
||||
@Override
|
||||
public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry registry) {
|
||||
Assert.notNull(annotationMetadata, "AnnotationMetadata must not be null!");
|
||||
Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
|
||||
|
||||
ensureMappingContext(registry, annotationMetadata);
|
||||
super.registerBeanDefinitions(annotationMetadata, registry);
|
||||
}
|
||||
ensureMappingContext(registry, annotationMetadata);
|
||||
super.registerBeanDefinitions(annotationMetadata, registry);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BeanDefinitionBuilder getAuditHandlerBeanDefinitionBuilder(AuditingConfiguration configuration) {
|
||||
Assert.notNull(configuration, "AuditingConfiguration must not be null!");
|
||||
@Override
|
||||
protected BeanDefinitionBuilder getAuditHandlerBeanDefinitionBuilder(AuditingConfiguration configuration) {
|
||||
Assert.notNull(configuration, "AuditingConfiguration must not be null!");
|
||||
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class);
|
||||
builder.addConstructorArgReference(BeanNames.COUCHBASE_MAPPING_CONTEXT);
|
||||
return configureDefaultAuditHandlerAttributes(configuration, builder);
|
||||
}
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class);
|
||||
builder.addConstructorArgReference(BeanNames.COUCHBASE_MAPPING_CONTEXT);
|
||||
return configureDefaultAuditHandlerAttributes(configuration, builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerAuditListenerBeanDefinition(BeanDefinition auditingHandlerDefinition,
|
||||
BeanDefinitionRegistry registry) {
|
||||
Assert.notNull(auditingHandlerDefinition, "BeanDefinition must not be null!");
|
||||
Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
|
||||
@Override
|
||||
protected void registerAuditListenerBeanDefinition(BeanDefinition auditingHandlerDefinition,
|
||||
BeanDefinitionRegistry registry) {
|
||||
Assert.notNull(auditingHandlerDefinition, "BeanDefinition must not be null!");
|
||||
Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
|
||||
|
||||
BeanDefinitionBuilder listenerBeanDefinitionBuilder = BeanDefinitionBuilder
|
||||
.rootBeanDefinition(AuditingEventListener.class);
|
||||
listenerBeanDefinitionBuilder.addConstructorArgValue(ParsingUtils.getObjectFactoryBeanDefinition(
|
||||
getAuditingHandlerBeanName(), registry));
|
||||
BeanDefinitionBuilder listenerBeanDefinitionBuilder = BeanDefinitionBuilder
|
||||
.rootBeanDefinition(AuditingEventListener.class);
|
||||
listenerBeanDefinitionBuilder
|
||||
.addConstructorArgValue(ParsingUtils.getObjectFactoryBeanDefinition(getAuditingHandlerBeanName(), registry));
|
||||
|
||||
registerInfrastructureBeanWithId(listenerBeanDefinitionBuilder.getBeanDefinition(),
|
||||
AuditingEventListener.class.getName(), registry);
|
||||
}
|
||||
registerInfrastructureBeanWithId(listenerBeanDefinitionBuilder.getBeanDefinition(),
|
||||
AuditingEventListener.class.getName(), registry);
|
||||
}
|
||||
|
||||
private void ensureMappingContext(BeanDefinitionRegistry registry, Object source) {
|
||||
if (!registry.containsBeanDefinition(BeanNames.COUCHBASE_MAPPING_CONTEXT)) {
|
||||
RootBeanDefinition definition = new RootBeanDefinition(CouchbaseMappingContext.class);
|
||||
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
definition.setSource(source);
|
||||
private void ensureMappingContext(BeanDefinitionRegistry registry, Object source) {
|
||||
if (!registry.containsBeanDefinition(BeanNames.COUCHBASE_MAPPING_CONTEXT)) {
|
||||
RootBeanDefinition definition = new RootBeanDefinition(CouchbaseMappingContext.class);
|
||||
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
definition.setSource(source);
|
||||
|
||||
registry.registerBeanDefinition(BeanNames.COUCHBASE_MAPPING_CONTEXT, definition);
|
||||
}
|
||||
}
|
||||
registry.registerBeanDefinition(BeanNames.COUCHBASE_MAPPING_CONTEXT, definition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,24 +41,24 @@ import org.springframework.data.domain.AuditorAware;
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Import(CouchbaseAuditingRegistrar.class)
|
||||
public @interface EnableCouchbaseAuditing {
|
||||
/**
|
||||
* Configures the {@link AuditorAware} bean to be used to lookup the current principal.
|
||||
*/
|
||||
String auditorAwareRef() default "auditorAwareRef";
|
||||
/**
|
||||
* Configures the {@link AuditorAware} bean to be used to lookup the current principal.
|
||||
*/
|
||||
String auditorAwareRef() default "auditorAwareRef";
|
||||
|
||||
/**
|
||||
* Configures whether the creation and modification dates are set. Defaults to {@literal true}.
|
||||
*/
|
||||
boolean setDates() default true;
|
||||
/**
|
||||
* Configures whether the creation and modification dates are set. Defaults to {@literal true}.
|
||||
*/
|
||||
boolean setDates() default true;
|
||||
|
||||
/**
|
||||
* Configures whether the entity shall be marked as modified on creation. Defaults to {@literal true}.
|
||||
*/
|
||||
boolean modifyOnCreate() default true;
|
||||
/**
|
||||
* Configures whether the entity shall be marked as modified on creation. Defaults to {@literal true}.
|
||||
*/
|
||||
boolean modifyOnCreate() default true;
|
||||
|
||||
/**
|
||||
* Configures a {@link DateTimeProvider} bean name that allows customizing the {@link org.joda.time.DateTime} to be
|
||||
* used for setting creation and modification dates.
|
||||
*/
|
||||
String dateTimeProviderRef() default "dateTimeProviderRef";
|
||||
/**
|
||||
* Configures a {@link DateTimeProvider} bean name that allows customizing the {@link org.joda.time.DateTime} to be
|
||||
* used for setting creation and modification dates.
|
||||
*/
|
||||
String dateTimeProviderRef() default "dateTimeProviderRef";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user