Skip to content
Snippets Groups Projects
Commit 452cc241 authored by Daniel Gerhardt's avatar Daniel Gerhardt
Browse files

Merge branch 'entity-service-modify-hook' into 'master'

Add modifyRetrieved hook method for DefaultEntityServiceImpl

See merge request !107
parents c856ffe1 c3d6657e
Branches
1 merge request!107Add modifyRetrieved hook method for DefaultEntityServiceImpl
Pipeline #20980 passed with warnings with stages
in 1 minute and 52 seconds
...@@ -68,20 +68,25 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService ...@@ -68,20 +68,25 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
@Override @Override
public T get(final String id, final boolean internal) { public T get(final String id, final boolean internal) {
T entity;
if (internal) { if (internal) {
T entity = repository.findOne(id); entity = repository.findOne(id);
entity.setInternal(true); entity.setInternal(true);
} else {
return entity; entity = get(id);
} }
modifyRetrieved(entity);
return get(id); return entity;
} }
@Override @Override
@PreFilter(value = "hasPermission(filterObject, #this.this.getTypeName(), 'read')", filterTarget = "ids") @PreFilter(value = "hasPermission(filterObject, #this.this.getTypeName(), 'read')", filterTarget = "ids")
public Iterable<T> get(final Iterable<String> ids) { public Iterable<T> get(final Iterable<String> ids) {
return repository.findAllById(ids); Iterable<T> entities = repository.findAllById(ids);
entities.forEach(this::modifyRetrieved);
return entities;
} }
@Override @Override
...@@ -97,6 +102,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService ...@@ -97,6 +102,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
final T createdEntity = repository.save(entity); final T createdEntity = repository.save(entity);
eventPublisher.publishEvent(new AfterCreationEvent<>(this, createdEntity)); eventPublisher.publishEvent(new AfterCreationEvent<>(this, createdEntity));
finalizeCreate(entity); finalizeCreate(entity);
modifyRetrieved(entity);
return createdEntity; return createdEntity;
} }
...@@ -134,6 +140,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService ...@@ -134,6 +140,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
final T updatedEntity = repository.save(newEntity); final T updatedEntity = repository.save(newEntity);
eventPublisher.publishEvent(new AfterFullUpdateEvent<>(this, updatedEntity, oldEntity)); eventPublisher.publishEvent(new AfterFullUpdateEvent<>(this, updatedEntity, oldEntity));
finalizeUpdate(updatedEntity); finalizeUpdate(updatedEntity);
modifyRetrieved(updatedEntity);
return updatedEntity; return updatedEntity;
} }
...@@ -174,6 +181,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService ...@@ -174,6 +181,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
eventPublisher.publishEvent(new BeforePatchEvent<>(this, entity, propertyGetter, changes)); eventPublisher.publishEvent(new BeforePatchEvent<>(this, entity, propertyGetter, changes));
final T patchedEntity = repository.save(entity); final T patchedEntity = repository.save(entity);
eventPublisher.publishEvent(new AfterPatchEvent<>(this, patchedEntity, propertyGetter, changes)); eventPublisher.publishEvent(new AfterPatchEvent<>(this, patchedEntity, propertyGetter, changes));
modifyRetrieved(patchedEntity);
return patchedEntity; return patchedEntity;
} }
...@@ -197,7 +205,10 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService ...@@ -197,7 +205,10 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
eventPublisher.publishEvent(new BeforePatchEvent<>(this, entity, propertyGetter, changes)); eventPublisher.publishEvent(new BeforePatchEvent<>(this, entity, propertyGetter, changes));
} }
return repository.saveAll(entities); Iterable<T> patchedEntities = repository.saveAll(entities);
patchedEntities.forEach(this::modifyRetrieved);
return patchedEntities;
} }
/** /**
...@@ -227,6 +238,16 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService ...@@ -227,6 +238,16 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
} }
/**
* This method can be overridden by subclasses to modify a retrieved entity before it is returned by service
* methods.
*
* @param entity The entity to be modified
*/
protected void modifyRetrieved(final T entity) {
}
public String getTypeName() { public String getTypeName() {
return type.getSimpleName().toLowerCase(); return type.getSimpleName().toLowerCase();
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment