From 23ff75ee6e1014428d15a9037de70338c6b492b5 Mon Sep 17 00:00:00 2001 From: Thomas Risberg Date: Mon, 28 Mar 2011 13:54:44 -0400 Subject: [PATCH] needed access to entity when use with partial JPA/cross-store persistence --- .../data/persistence/ChangeSetPersister.java | 96 ++++++++++--------- ...geSetBackedTransactionSynchronization.java | 2 +- 2 files changed, 50 insertions(+), 48 deletions(-) diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/ChangeSetPersister.java b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/ChangeSetPersister.java index 0aaa02841..742c2e846 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/ChangeSetPersister.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/ChangeSetPersister.java @@ -1,47 +1,49 @@ -package org.springframework.data.persistence; - -import org.springframework.dao.DataAccessException; - -/** - * Interface to be implemented by classes that can synchronize - * between data stores and ChangeSets. - * @author Rod Johnson - * - * @param entity key - */ -public interface ChangeSetPersister { - - String ID_KEY = "_id"; - - String CLASS_KEY = "_class"; - - /** - * TODO how to tell when not found? throw exception? - */ - void getPersistentState(Class entityClass, K key, ChangeSet changeSet) throws DataAccessException, NotFoundException; - - /** - * Return id - * @param cs - * @return - * @throws DataAccessException - */ - K getPersistentId(Class entityClass, ChangeSet cs) throws DataAccessException; - - /** - * Return key - * @param cs Key may be null if not persistent - * @return - * @throws DataAccessException - */ - K persistState(Class entityClass, ChangeSet cs) throws DataAccessException; - - /** - * Exception thrown in alternate control flow if getPersistentState - * finds no entity data. - */ - class NotFoundException extends Exception { - - } - -} +package org.springframework.data.persistence; + +import org.springframework.dao.DataAccessException; + +/** + * Interface to be implemented by classes that can synchronize + * between data stores and ChangeSets. + * @author Rod Johnson + * + * @param entity key + */ +public interface ChangeSetPersister { + + String ID_KEY = "_id"; + + String CLASS_KEY = "_class"; + + /** + * TODO how to tell when not found? throw exception? + */ + void getPersistentState(Class entityClass, K key, ChangeSet changeSet) throws DataAccessException, NotFoundException; + + /** + * Return id + * @param entity + * @param cs + * @return + * @throws DataAccessException + */ + K getPersistentId(ChangeSetBacked entity, ChangeSet cs) throws DataAccessException; + + /** + * Return key + * @param entity + * @param cs Key may be null if not persistent + * @return + * @throws DataAccessException + */ + K persistState(ChangeSetBacked entity, ChangeSet cs) throws DataAccessException; + + /** + * Exception thrown in alternate control flow if getPersistentState + * finds no entity data. + */ + class NotFoundException extends Exception { + + } + +} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/transaction/ChangeSetBackedTransactionSynchronization.java b/spring-data-commons-core/src/main/java/org/springframework/data/transaction/ChangeSetBackedTransactionSynchronization.java index 69c2e595f..5ea9353d6 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/transaction/ChangeSetBackedTransactionSynchronization.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/transaction/ChangeSetBackedTransactionSynchronization.java @@ -23,7 +23,7 @@ public class ChangeSetBackedTransactionSynchronization implements TransactionSyn public void afterCommit() { log.debug("After Commit called for " + entity); - changeSetPersister.persistState(entity.getClass(), entity.getChangeSet()); + changeSetPersister.persistState(entity, entity.getChangeSet()); changeSetTxStatus = 0; }