Skip to content

Commit 76b9922

Browse files
author
Thomas Risberg
committed
DATADOC-48 moved clearing change-set values to postRemove lifecycle
1 parent 486b9a0 commit 76b9922

File tree

1 file changed

+25
-19
lines changed
  • spring-data-mongodb-cross-store/src/main/java/org/springframework/data/persistence/document/mongo

1 file changed

+25
-19
lines changed

spring-data-mongodb-cross-store/src/main/java/org/springframework/data/persistence/document/mongo/MongoDocumentBacking.aj

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ public aspect MongoDocumentBacking {
8282
args(entity);
8383

8484
// intercept EntityManager.remove calls
85-
public pointcut entityManagerRemove(EntityManager em, Object entity) :
86-
call(* EntityManager.remove(Object)) &&
87-
target(em) &&
88-
args(entity);
85+
// public pointcut entityManagerRemove(EntityManager em, Object entity) :
86+
// call(* EntityManager.remove(Object)) &&
87+
// target(em) &&
88+
// args(entity);
8989

9090
// move changeSet from detached entity to the newly merged persistent object
9191
Object around(EntityManager em, Object entity) : entityManagerMerge(em, entity) {
@@ -97,26 +97,31 @@ public aspect MongoDocumentBacking {
9797
}
9898

9999
// clear changeSet from removed entity
100-
Object around(EntityManager em, Object entity) : entityManagerRemove(em, entity) {
101-
if (entity instanceof DocumentBacked) {
102-
ChangeSet nulledCs = new HashMapChangeSet();
103-
DocumentBacked documentEntity = (DocumentBacked) entity;
104-
@SuppressWarnings("unchecked")
105-
ChangeSetPersister<Object> changeSetPersister = (ChangeSetPersister<Object>)documentEntity.itdChangeSetPersister;
106-
try {
100+
// Object around(EntityManager em, Object entity) : entityManagerRemove(em, entity) {
101+
// if (entity instanceof DocumentBacked) {
102+
// removeChangeSetValues((DocumentBacked)entity);
103+
// }
104+
// return proceed(em, entity);
105+
// }
106+
107+
private static void removeChangeSetValues(DocumentBacked entity) {
108+
LOGGER.debug("Removing all change-set values for " + entity);
109+
ChangeSet nulledCs = new HashMapChangeSet();
110+
DocumentBacked documentEntity = (DocumentBacked) entity;
111+
@SuppressWarnings("unchecked")
112+
ChangeSetPersister<Object> changeSetPersister = (ChangeSetPersister<Object>)documentEntity.itdChangeSetPersister;
113+
try {
107114
changeSetPersister.getPersistentState(
108115
documentEntity.getClass(),
109116
documentEntity.get_persistent_id(),
110117
documentEntity.getChangeSet());
111-
}
112-
catch (DataAccessException e) {}
113-
catch (NotFoundException e) {}
114-
for (String key : ((DocumentBacked)entity).getChangeSet().getValues().keySet()) {
118+
}
119+
catch (DataAccessException e) {}
120+
catch (NotFoundException e) {}
121+
for (String key :entity.getChangeSet().getValues().keySet()) {
115122
nulledCs.set(key, null);
116-
}
117-
((DocumentBacked)entity).setChangeSet(nulledCs);
118-
}
119-
return proceed(em, entity);
123+
}
124+
entity.setChangeSet(nulledCs);
120125
}
121126

122127
before(DocumentBacked entity) : arbitraryUserConstructorOfChangeSetBackedObject(entity) {
@@ -204,6 +209,7 @@ public aspect MongoDocumentBacking {
204209
LOGGER.debug("JPA lifecycle event PostRemove: " + this.getClass().getName() + " :: " + this);
205210
}
206211
registerTransactionSynchronization(this);
212+
removeChangeSetValues(this);
207213
}
208214
@javax.persistence.PostLoad public void DocumentBacked.itdPostLoad() {
209215
if (LOGGER.isDebugEnabled()) {

0 commit comments

Comments
 (0)