Skip to content

Commit e95d58f

Browse files
committed
HHH-19818 Check whether to generate revision early and without CollectionEntry
1 parent 87a498e commit e95d58f

3 files changed

Lines changed: 32 additions & 25 deletions

File tree

hibernate-envers/src/main/java/org/hibernate/envers/event/spi/EnversPostCollectionRecreateEventListenerImpl.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ public EnversPostCollectionRecreateEventListenerImpl(EnversService enversService
2727

2828
@Override
2929
public void onPostRecreateCollection(PostCollectionRecreateEvent event) {
30-
final CollectionEntry collectionEntry = getCollectionEntry( event );
31-
if ( !collectionEntry.getLoadedPersister().isInverse() ) {
32-
onCollectionAction( event, event.getCollection(), null, collectionEntry );
33-
}
34-
else {
35-
onCollectionActionInversed( event, event.getCollection(), null, collectionEntry );
30+
if ( shouldGenerateRevision( event ) ) {
31+
final CollectionEntry collectionEntry = getCollectionEntry( event );
32+
if ( !collectionEntry.getLoadedPersister().isInverse() ) {
33+
onCollectionAction( event, event.getCollection(), null, collectionEntry );
34+
}
35+
else {
36+
onCollectionActionInversed( event, event.getCollection(), null, collectionEntry );
37+
}
3638
}
3739
}
3840
}

hibernate-envers/src/main/java/org/hibernate/envers/event/spi/EnversPreCollectionRemoveEventListenerImpl.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,22 @@ public EnversPreCollectionRemoveEventListenerImpl(EnversService enversService) {
3030

3131
@Override
3232
public void onPreRemoveCollection(PreCollectionRemoveEvent event) {
33-
final CollectionEntry collectionEntry = getCollectionEntry( event );
34-
if ( collectionEntry != null ) {
35-
if ( !collectionEntry.getLoadedPersister().isInverse() ) {
36-
Serializable oldColl = collectionEntry.getSnapshot();
37-
if ( !event.getCollection().wasInitialized() && shouldGenerateRevision( event ) ) {
38-
// In case of uninitialized collection we need a fresh snapshot to properly calculate audit data.
39-
oldColl = initializeCollection( event );
33+
if ( shouldGenerateRevision( event ) ) {
34+
final CollectionEntry collectionEntry = getCollectionEntry( event );
35+
if ( collectionEntry != null ) {
36+
if ( !collectionEntry.getLoadedPersister().isInverse() ) {
37+
Serializable oldColl = collectionEntry.getSnapshot();
38+
if ( !event.getCollection().wasInitialized() && shouldGenerateRevision( event ) ) {
39+
// In case of uninitialized collection we need a fresh snapshot to properly calculate audit data.
40+
oldColl = initializeCollection( event );
41+
}
42+
onCollectionAction( event, null, oldColl, collectionEntry );
4043
}
41-
onCollectionAction( event, null, oldColl, collectionEntry );
42-
}
43-
else {
44-
// HHH-7510 - Avoid LazyInitializationException when global_with_modified_flag = true
45-
if ( getEnversService().getConfig().isModifiedFlagsEnabled() ) {
46-
initializeCollection( event );
44+
else {
45+
// HHH-7510 - Avoid LazyInitializationException when global_with_modified_flag = true
46+
if ( getEnversService().getConfig().isModifiedFlagsEnabled() ) {
47+
initializeCollection( event );
48+
}
4749
}
4850
}
4951
}

hibernate-envers/src/main/java/org/hibernate/envers/event/spi/EnversPreCollectionUpdateEventListenerImpl.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,15 @@ public EnversPreCollectionUpdateEventListenerImpl(EnversService enversService) {
2727

2828
@Override
2929
public void onPreUpdateCollection(PreCollectionUpdateEvent event) {
30-
final CollectionEntry collectionEntry = getCollectionEntry( event );
31-
if ( !collectionEntry.getLoadedPersister().isInverse() ) {
32-
onCollectionAction( event, event.getCollection(), collectionEntry.getSnapshot(), collectionEntry );
33-
}
34-
else {
35-
onCollectionActionInversed( event, event.getCollection(), collectionEntry.getSnapshot(), collectionEntry );
30+
if ( shouldGenerateRevision( event ) ) {
31+
final CollectionEntry collectionEntry = getCollectionEntry( event );
32+
if ( !collectionEntry.getLoadedPersister().isInverse() ) {
33+
onCollectionAction( event, event.getCollection(), collectionEntry.getSnapshot(), collectionEntry );
34+
}
35+
else {
36+
onCollectionActionInversed( event, event.getCollection(), collectionEntry.getSnapshot(),
37+
collectionEntry );
38+
}
3639
}
3740
}
3841
}

0 commit comments

Comments
 (0)