Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
LukasLohoff committed Apr 12, 2021
1 parent 1de0112 commit 1c0b6d8
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 23 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,6 @@ Auditing is enabled by default and can be disabled by setting `spring.jpa.proper

### Enabling envers mid-project

If envers is enabled mid-way and there is already data this can result in errors when querying audit data. To fix this, a revision with revisiontype `0` (created) has to be manually inserted for each existing entity into the respective audit table.
If envers is enabled mid-way and there is already data this can result in errors when querying audit data. To fix this, a revision with revision type `0` (created) has to be manually inserted for each existing entity into the respective audit table.

See https://discourse.hibernate.org/t/safe-envers-queries-when-the-audit-history-is-incomplete/771.
Original file line number Diff line number Diff line change
Expand Up @@ -84,24 +84,24 @@ public RevisionRepositoryFactory(EntityManager entityManager, Class<?> revisionE
super(entityManager);

this.entityManager = entityManager;
this.revisionEntityInformation = Optional.ofNullable(revisionEntityClass) //
.filter(it -> !it.equals(DefaultRevisionEntity.class))//
.<RevisionEntityInformation> map(ReflectionRevisionEntityInformation::new) //
this.revisionEntityInformation = Optional.ofNullable(revisionEntityClass)
.filter(it -> !it.equals(DefaultRevisionEntity.class))
.<RevisionEntityInformation> map(ReflectionRevisionEntityInformation::new)
.orElseGet(DefaultRevisionEntityInformation::new);
}

@Override
protected RepositoryComposition.RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata) {

Object fragmentImplementation = getTargetRepositoryViaReflection( //
CustomRevisionRepositoryImpl.class, //
getEntityInformation(metadata.getDomainType()), //
revisionEntityInformation, //
entityManager //
Object fragmentImplementation = getTargetRepositoryViaReflection(
CustomRevisionRepositoryImpl.class,
getEntityInformation(metadata.getDomainType()),
revisionEntityInformation,
entityManager
);

return RepositoryComposition.RepositoryFragments //
.just(fragmentImplementation) //
return RepositoryComposition.RepositoryFragments
.just(fragmentImplementation)
.append(super.getRepositoryFragments(metadata));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package de.terrestris.shogun.lib.envers;

import org.hibernate.envers.DefaultRevisionEntity;
import org.springframework.data.envers.repository.support.DefaultRevisionMetadata;
import org.springframework.data.history.RevisionMetadata;
import org.springframework.util.Assert;

Expand Down Expand Up @@ -107,7 +106,7 @@ public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) {
return false;
}
DefaultRevisionMetadata that = (DefaultRevisionMetadata) o;
CustomRevisionMetadata that = (CustomRevisionMetadata) o;
return getRevisionNumber().equals(that.getRevisionNumber())
&& getRevisionInstant().equals(that.getRevisionInstant()) && revisionType.equals(that.getRevisionType());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,28 +85,24 @@ static class QueryResult<T> {
QueryResult(Object[] data) {

Assert.notNull(data, "Data must not be null");
Assert.isTrue( //
data.length == 4, //
Assert.isTrue(
data.length == 4,
() -> String.format("Data must have length three, but has length %d.", data.length));
Assert.isTrue( //
data[2] instanceof RevisionType, //
Assert.isTrue(
data[2] instanceof RevisionType,
() -> String.format("The third array element must be of type Revision type, but is of type %s",
data[2].getClass()));

entity = (T) data[0];
metadata = data[1];
revisionType = convertRevisionType((RevisionType) data[2]);
changedFields = data[3];
// String[] changedFieldsArray = (String[]) data[3];
// if (changedFieldsArray) {
// changedFields = Arrays.asList(data[3])
// }
}

RevisionMetadata<?> createRevisionMetadata() {

return metadata instanceof DefaultRevisionEntity //
? new CustomRevisionMetadata((DefaultRevisionEntity) metadata, revisionType, (Set<String>) changedFields) //
return metadata instanceof DefaultRevisionEntity
? new CustomRevisionMetadata((DefaultRevisionEntity) metadata, revisionType, (Set<String>) changedFields)
: new CustomAnnotationRevisionMetadata<>(metadata, RevisionNumber.class, RevisionTimestamp.class, revisionType, (Set<String>) changedFields);
}

Expand Down

0 comments on commit 1c0b6d8

Please sign in to comment.