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
@Override
public T get(final String id, final boolean internal) {
T entity;
if (internal) {
T entity = repository.findOne(id);
entity = repository.findOne(id);
entity.setInternal(true);
return entity;
} else {
entity = get(id);
}
modifyRetrieved(entity);
return get(id);
return entity;
}
@Override
@PreFilter(value = "hasPermission(filterObject, #this.this.getTypeName(), 'read')", filterTarget = "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
......@@ -97,6 +102,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
final T createdEntity = repository.save(entity);
eventPublisher.publishEvent(new AfterCreationEvent<>(this, createdEntity));
finalizeCreate(entity);
modifyRetrieved(entity);
return createdEntity;
}
......@@ -134,6 +140,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
final T updatedEntity = repository.save(newEntity);
eventPublisher.publishEvent(new AfterFullUpdateEvent<>(this, updatedEntity, oldEntity));
finalizeUpdate(updatedEntity);
modifyRetrieved(updatedEntity);
return updatedEntity;
}
......@@ -174,6 +181,7 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
eventPublisher.publishEvent(new BeforePatchEvent<>(this, entity, propertyGetter, changes));
final T patchedEntity = repository.save(entity);
eventPublisher.publishEvent(new AfterPatchEvent<>(this, patchedEntity, propertyGetter, changes));
modifyRetrieved(patchedEntity);
return patchedEntity;
}
......@@ -197,7 +205,10 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService
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
}
/**
* 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() {
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