diff --git a/spring-ldap/src/itest/java/conf/ldapAndJdbcTransactionTestContext.xml b/spring-ldap/src/itest/java/conf/ldapAndJdbcTransactionTestContext.xml
index cd74f83f..35bb1d1e 100644
--- a/spring-ldap/src/itest/java/conf/ldapAndJdbcTransactionTestContext.xml
+++ b/spring-ldap/src/itest/java/conf/ldapAndJdbcTransactionTestContext.xml
@@ -18,8 +18,6 @@
-
+ class="org.springframework.ldap.transaction.compensating.manager.TransactionAwareContextSourceProxy">
@@ -45,23 +43,15 @@
-
-
+ class="org.springframework.ldap.transaction.compensating.manager.ContextSourceAndDataSourceTransactionManager">
+ class="org.springframework.ldap.transaction.compensating.manager.LdapAndJdbcDummyDaoImpl">
@@ -77,16 +67,4 @@
-
diff --git a/spring-ldap/src/itest/java/conf/ldapTemplateTransactionTestContext.xml b/spring-ldap/src/itest/java/conf/ldapTemplateTransactionTestContext.xml
index ee31f80c..0d6c15bd 100644
--- a/spring-ldap/src/itest/java/conf/ldapTemplateTransactionTestContext.xml
+++ b/spring-ldap/src/itest/java/conf/ldapTemplateTransactionTestContext.xml
@@ -18,12 +18,10 @@
-
+ class="org.springframework.ldap.transaction.compensating.manager.TransactionAwareContextSourceProxy">
@@ -33,13 +31,13 @@
+ class="org.springframework.ldap.transaction.compensating.manager.ContextSourceTransactionManager">
+ class="org.springframework.ldap.transaction.compensating.manager.LdapDummyDaoImpl">
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/ContextSourceAndDataSourceTransactionManagerIntegrationTest.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceAndDataSourceTransactionManagerIntegrationTest.java
similarity index 96%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/ContextSourceAndDataSourceTransactionManagerIntegrationTest.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceAndDataSourceTransactionManagerIntegrationTest.java
index c10c05c2..0ec4514f 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/ContextSourceAndDataSourceTransactionManagerIntegrationTest.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceAndDataSourceTransactionManagerIntegrationTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -30,7 +30,7 @@ import org.springframework.ldap.LdapServerManager;
import org.springframework.ldap.NameNotFoundException;
import org.springframework.ldap.core.AttributesMapper;
import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.transaction.core.ContextSourceAndDataSourceTransactionManager;
+import org.springframework.ldap.transaction.compensating.manager.ContextSourceAndDataSourceTransactionManager;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
import org.springframework.transaction.support.TransactionSynchronizationManager;
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerIntegrationTest.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerIntegrationTest.java
similarity index 95%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerIntegrationTest.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerIntegrationTest.java
index 75db65f6..e5ac3236 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerIntegrationTest.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerIntegrationTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
@@ -24,7 +24,7 @@ import org.springframework.ldap.LdapServerManager;
import org.springframework.ldap.NameNotFoundException;
import org.springframework.ldap.core.AttributesMapper;
import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.transaction.core.ContextSourceAndDataSourceTransactionManager;
+import org.springframework.ldap.transaction.compensating.manager.ContextSourceAndDataSourceTransactionManager;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
import org.springframework.transaction.support.TransactionSynchronizationManager;
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyDao.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyDao.java
similarity index 89%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyDao.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyDao.java
index 68948d9c..7d6f0e78 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyDao.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyDao.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
public interface DummyDao {
void createWithException(String country, String company, String fullname,
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyException.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyException.java
similarity index 82%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyException.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyException.java
index e49fc7de..dacb7839 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyException.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
public class DummyException extends RuntimeException {
public DummyException(String message) {
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyServiceImpl.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyServiceImpl.java
similarity index 83%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyServiceImpl.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyServiceImpl.java
index 6b4ba922..f023fea5 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/DummyServiceImpl.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/DummyServiceImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
public class DummyServiceImpl {
private DummyDao dummyDaoImpl;
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/LdapAndJdbcDummyDaoImpl.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/LdapAndJdbcDummyDaoImpl.java
similarity index 80%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/LdapAndJdbcDummyDaoImpl.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/LdapAndJdbcDummyDaoImpl.java
index ed7b5097..ec0b43e6 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/LdapAndJdbcDummyDaoImpl.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/LdapAndJdbcDummyDaoImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.ldap.core.DirContextAdapter;
@@ -36,7 +36,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#createWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#createWithException(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String,
* java.lang.String)
*/
@@ -49,7 +49,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#create(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#create(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String,
* java.lang.String)
*/
@@ -73,7 +73,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#update(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#update(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void update(String dn, String fullname, String lastname,
@@ -93,7 +93,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#updateWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#updateWithException(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void updateWithException(String dn, String fullname,
@@ -105,7 +105,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#updateAndRename(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#updateAndRename(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void updateAndRename(String dn, String newDn, String description) {
@@ -120,7 +120,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#updateAndRenameWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#updateAndRenameWithException(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void updateAndRenameWithException(String dn, String newDn,
@@ -132,7 +132,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#modifyAttributes(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#modifyAttributes(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void modifyAttributes(String dn, String lastName, String description) {
@@ -146,7 +146,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#modifyAttributesWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#modifyAttributesWithException(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void modifyAttributesWithException(String dn, String lastName,
@@ -158,7 +158,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#unbind(java.lang.String)
+ * @see org.springframework.ldap.transaction.support.DummyDao#unbind(java.lang.String)
*/
public void unbind(String dn, String fullname) {
ldapTemplate.unbind(dn);
@@ -169,7 +169,7 @@ public class LdapAndJdbcDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#unbindWithException(java.lang.String)
+ * @see org.springframework.ldap.transaction.support.DummyDao#unbindWithException(java.lang.String)
*/
public void unbindWithException(String dn, String fullname) {
unbind(dn, fullname);
diff --git a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/LdapDummyDaoImpl.java b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/LdapDummyDaoImpl.java
similarity index 78%
rename from spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/LdapDummyDaoImpl.java
rename to spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/LdapDummyDaoImpl.java
index 1ea50c98..4db82c0a 100644
--- a/spring-ldap/src/itest/java/org/springframework/ldap/transaction/core/LdapDummyDaoImpl.java
+++ b/spring-ldap/src/itest/java/org/springframework/ldap/transaction/compensating/manager/LdapDummyDaoImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import org.springframework.ldap.core.DirContextAdapter;
import org.springframework.ldap.core.DistinguishedName;
@@ -29,7 +29,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#createWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#createWithException(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String,
* java.lang.String)
*/
@@ -42,7 +42,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#create(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#create(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String,
* java.lang.String)
*/
@@ -64,7 +64,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#update(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#update(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void update(String dn, String fullname, String lastname,
@@ -80,7 +80,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#updateWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#updateWithException(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void updateWithException(String dn, String fullname,
@@ -92,7 +92,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#updateAndRename(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#updateAndRename(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void updateAndRename(String dn, String newDn, String description) {
@@ -107,7 +107,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#updateAndRenameWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#updateAndRenameWithException(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void updateAndRenameWithException(String dn, String newDn,
@@ -119,7 +119,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#modifyAttributes(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#modifyAttributes(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void modifyAttributes(String dn, String lastName, String description) {
@@ -133,7 +133,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#modifyAttributesWithException(java.lang.String,
+ * @see org.springframework.ldap.transaction.support.DummyDao#modifyAttributesWithException(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void modifyAttributesWithException(String dn, String lastName,
@@ -145,7 +145,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#unbind(java.lang.String)
+ * @see org.springframework.ldap.transaction.support.DummyDao#unbind(java.lang.String)
*/
public void unbind(String dn, String fullname) {
ldapTemplate.unbind(dn);
@@ -154,7 +154,7 @@ public class LdapDummyDaoImpl implements DummyDao {
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.transaction.core.DummyDao#unbindWithException(java.lang.String)
+ * @see org.springframework.ldap.transaction.support.DummyDao#unbindWithException(java.lang.String)
*/
public void unbindWithException(String dn, String fullname) {
unbind(dn, fullname);
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactory.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactory.java
index 45d42a0b..736ca19f 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactory.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactory.java
@@ -45,38 +45,53 @@ public class LdapCompensatingTransactionOperationFactory implements
private static Log log = LogFactory
.getLog(LdapCompensatingTransactionOperationFactory.class);
- private LdapOperations ldapOperations;
-
private TempEntryRenamingStrategy renamingStrategy;
/**
* Constructor.
*
- * @param ctx
- * The transactional DirContext.
+ * @param renamingStrategy
+ * the {@link TempEntryRenamingStrategy} to supply to relevant
+ * operations.
*/
- public LdapCompensatingTransactionOperationFactory(DirContext ctx,
+ public LdapCompensatingTransactionOperationFactory(
TempEntryRenamingStrategy renamingStrategy) {
- this.ldapOperations = new LdapTemplate(new SingleContextSource(ctx));
this.renamingStrategy = renamingStrategy;
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.springframework.transaction.compensating.CompensatingTransactionOperationFactory#createRecordingOperation(java.lang.Object,
+ * java.lang.String)
+ */
public CompensatingTransactionOperationRecorder createRecordingOperation(
- String operation) {
- if (StringUtils.equals(operation, LdapTransactionUtils.BIND_METHOD_NAME)) {
+ Object resource, String operation) {
+ if (StringUtils
+ .equals(operation, LdapTransactionUtils.BIND_METHOD_NAME)) {
log.debug("Bind operation recorded");
- return new BindOperationRecorder(ldapOperations);
- } else if (StringUtils.equals(operation, LdapTransactionUtils.REBIND_METHOD_NAME)) {
+ return new BindOperationRecorder(
+ createLdapOperationsInstance((DirContext) resource));
+ } else if (StringUtils.equals(operation,
+ LdapTransactionUtils.REBIND_METHOD_NAME)) {
log.debug("Rebind operation recorded");
- return new RebindOperationRecorder(ldapOperations, renamingStrategy);
- } else if (StringUtils.equals(operation, LdapTransactionUtils.RENAME_METHOD_NAME)) {
+ return new RebindOperationRecorder(
+ createLdapOperationsInstance((DirContext) resource),
+ renamingStrategy);
+ } else if (StringUtils.equals(operation,
+ LdapTransactionUtils.RENAME_METHOD_NAME)) {
log.debug("Rename operation recorded");
- return new RenameOperationRecorder(ldapOperations);
+ return new RenameOperationRecorder(
+ createLdapOperationsInstance((DirContext) resource));
} else if (StringUtils.equals(operation,
LdapTransactionUtils.MODIFY_ATTRIBUTES_METHOD_NAME)) {
- return new ModifyAttributesOperationRecorder(ldapOperations);
- } else if (StringUtils.equals(operation, LdapTransactionUtils.UNBIND_METHOD_NAME)) {
- return new UnbindOperationRecorder(ldapOperations, renamingStrategy);
+ return new ModifyAttributesOperationRecorder(
+ createLdapOperationsInstance((DirContext) resource));
+ } else if (StringUtils.equals(operation,
+ LdapTransactionUtils.UNBIND_METHOD_NAME)) {
+ return new UnbindOperationRecorder(
+ createLdapOperationsInstance((DirContext) resource),
+ renamingStrategy);
}
log
@@ -85,6 +100,10 @@ public class LdapCompensatingTransactionOperationFactory implements
return new NullOperationRecorder();
}
+ LdapOperations createLdapOperationsInstance(DirContext ctx) {
+ return new LdapTemplate(new SingleContextSource(ctx));
+ }
+
/**
* A {@link ContextSource} implementation using returning
* {@link NonClosingDirContextInvocationHandler} proxies on the same
@@ -180,8 +199,4 @@ public class LdapCompensatingTransactionOperationFactory implements
}
}
}
-
- void setLdapOperations(LdapOperations ldapOperations) {
- this.ldapOperations = ldapOperations;
- }
}
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtils.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtils.java
index 0b0af9c8..4f56746c 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtils.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtils.java
@@ -21,12 +21,7 @@ import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapContext;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.ldap.NamingException;
-import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.core.DistinguishedName;
-import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.Assert;
/**
@@ -37,9 +32,6 @@ import org.springframework.util.Assert;
*/
public final class LdapTransactionUtils {
- private static final Log logger = LogFactory
- .getLog(LdapTransactionUtils.class);
-
public static final String REBIND_METHOD_NAME = "rebind";
public static final String BIND_METHOD_NAME = "bind";
@@ -57,28 +49,6 @@ public final class LdapTransactionUtils {
}
- /**
- * Close the given JNDI Context and ignore any thrown exception. This is
- * useful for typical finally blocks in JNDI code.
- *
- * @param context
- * the JNDI Context to close (may be null)
- */
- public static void closeContext(DirContext context) {
- if (context != null) {
- try {
- context.close();
- } catch (NamingException ex) {
- logger.debug("Could not close JNDI DirContext", ex);
- } catch (Throwable ex) {
- // We don't trust the JNDI provider: It might throw
- // RuntimeException or Error.
- logger.debug("Unexpected exception on closing JNDI DirContext",
- ex);
- }
- }
- }
-
/**
* Get the first parameter in the argument list as a Name.
*
@@ -113,31 +83,6 @@ public final class LdapTransactionUtils {
}
}
- /**
- * Close the supplied context, but only if it is not associated with the
- * current transaction.
- *
- * @param context
- * the DirContext to close.
- * @param contextSource
- * the ContextSource bound to the transaction.
- * @throws NamingException
- */
- public static void doCloseConnection(DirContext context,
- ContextSource contextSource) throws javax.naming.NamingException {
- DirContextHolder transactionContextHolder = (DirContextHolder) TransactionSynchronizationManager
- .getResource(contextSource);
- if (transactionContextHolder == null
- || transactionContextHolder.getCtx() != context) {
- logger.debug("Closing context");
- // This is not the transactional context or the transaction is
- // no longer active - we should close it.
- context.close();
- } else {
- logger.debug("Leaving transactional context open");
- }
- }
-
/**
* Check whether the supplied method is a method for which transactions is
* supported (and which should be recorded for possible rollback later).
@@ -173,5 +118,4 @@ public final class LdapTransactionUtils {
return DirContext.class;
}
-
}
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceAndDataSourceTransactionManager.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceAndDataSourceTransactionManager.java
similarity index 96%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceAndDataSourceTransactionManager.java
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceAndDataSourceTransactionManager.java
index 8656b151..4f010256 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceAndDataSourceTransactionManager.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceAndDataSourceTransactionManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.ldap.core.ContextSource;
@@ -30,7 +30,6 @@ import org.springframework.transaction.support.DefaultTransactionStatus;
* and thus commit and rollback may result in unexpected results.
*
* @author Mattias Arthursson
- * @since 1.2
*/
public class ContextSourceAndDataSourceTransactionManager extends
DataSourceTransactionManager {
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManager.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManager.java
similarity index 96%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManager.java
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManager.java
index 71f68417..2e44d3b8 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManager.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.transaction.compensating.TempEntryRenamingStrategy;
@@ -104,7 +104,6 @@ import org.springframework.transaction.support.DefaultTransactionStatus;
* @see DefaultCompensatingTransactionOperationManager
* @see TempEntryRenamingStrategy
* @see TransactionAwareContextSourceProxy
- * @since 1.2
*/
public class ContextSourceTransactionManager extends
AbstractPlatformTransactionManager {
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerDelegate.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerDelegate.java
similarity index 84%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerDelegate.java
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerDelegate.java
index d1a5cadf..0f29018f 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerDelegate.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerDelegate.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
@@ -21,11 +21,12 @@ import javax.naming.directory.DirContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.ldap.core.ContextSource;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
+import org.springframework.ldap.transaction.compensating.LdapCompensatingTransactionOperationFactory;
import org.springframework.ldap.transaction.compensating.TempEntryRenamingStrategy;
import org.springframework.ldap.transaction.compensating.support.DefaultTempEntryRenamingStrategy;
import org.springframework.transaction.compensating.support.AbstractCompensatingTransactionManagerDelegate;
import org.springframework.transaction.compensating.support.CompensatingTransactionHolderSupport;
+import org.springframework.transaction.compensating.support.DefaultCompensatingTransactionOperationManager;
/**
* This delegate performs all the work for the
@@ -36,7 +37,6 @@ import org.springframework.transaction.compensating.support.CompensatingTransact
* @author Mattias Arthursson
* @see ContextSourceTransactionManager
* @see ContextSourceAndDataSourceTransactionManager
- * @since 1.2
*/
public class ContextSourceTransactionManagerDelegate extends
AbstractCompensatingTransactionManagerDelegate {
@@ -77,8 +77,10 @@ public class ContextSourceTransactionManagerDelegate extends
protected CompensatingTransactionHolderSupport getNewHolder() {
DirContext newCtx = getContextSource().getReadOnlyContext();
- DirContextHolder contextHolder = new DirContextHolder(newCtx,
- renamingStrategy);
+ DirContextHolder contextHolder = new DirContextHolder(
+ new DefaultCompensatingTransactionOperationManager(
+ new LdapCompensatingTransactionOperationFactory(
+ renamingStrategy)), newCtx);
return contextHolder;
}
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/DirContextHolder.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/DirContextHolder.java
similarity index 67%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/DirContextHolder.java
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/DirContextHolder.java
index e47cc30f..6c27e0f8 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/DirContextHolder.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/DirContextHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,11 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.compensating;
+package org.springframework.ldap.transaction.compensating.manager;
import javax.naming.directory.DirContext;
-import org.springframework.transaction.compensating.CompensatingTransactionOperationFactory;
import org.springframework.transaction.compensating.CompensatingTransactionOperationManager;
import org.springframework.transaction.compensating.support.CompensatingTransactionHolderSupport;
@@ -29,24 +28,23 @@ import org.springframework.transaction.compensating.support.CompensatingTransact
* for commit or rollback.
*
* @author Mattias Arthursson
- * @since 1.2
+ *
*/
public class DirContextHolder extends CompensatingTransactionHolderSupport {
private DirContext ctx;
- private TempEntryRenamingStrategy renamingStrategy;
-
/**
* Constructor.
*
+ * @param manager
+ * The {@link CompensatingTransactionOperationManager}.
* @param ctx
* The DirContext associated with the current transaction.
*/
- public DirContextHolder(DirContext ctx,
- TempEntryRenamingStrategy renamingStrategy) {
+ public DirContextHolder(CompensatingTransactionOperationManager manager,
+ DirContext ctx) {
+ super(manager);
this.ctx = ctx;
- this.renamingStrategy = renamingStrategy;
- refreshTransactionOperationManager();
}
/**
@@ -57,12 +55,6 @@ public class DirContextHolder extends CompensatingTransactionHolderSupport {
*/
public void setCtx(DirContext ctx) {
this.ctx = ctx;
- refreshTransactionOperationManager();
- }
-
- protected CompensatingTransactionOperationFactory createOperationFactory() {
- return new LdapCompensatingTransactionOperationFactory(ctx,
- renamingStrategy);
}
/**
@@ -72,7 +64,12 @@ public class DirContextHolder extends CompensatingTransactionHolderSupport {
return ctx;
}
- public TempEntryRenamingStrategy getRenamingStrategy() {
- return renamingStrategy;
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.springframework.transaction.compensating.support.CompensatingTransactionHolderSupport#getTransactedResource()
+ */
+ protected Object getTransactedResource() {
+ return ctx;
}
}
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/TransactionAwareContextSourceProxy.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareContextSourceProxy.java
similarity index 91%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/core/TransactionAwareContextSourceProxy.java
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareContextSourceProxy.java
index d4421226..99434251 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/TransactionAwareContextSourceProxy.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareContextSourceProxy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import java.lang.reflect.Proxy;
@@ -22,7 +22,6 @@ import javax.naming.directory.DirContext;
import org.springframework.ldap.NamingException;
import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.core.DirContextProxy;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
import org.springframework.ldap.transaction.compensating.LdapTransactionUtils;
import org.springframework.transaction.support.TransactionSynchronizationManager;
@@ -35,7 +34,6 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
* {@link TransactionAwareDirContextInvocationHandler}.
*
* @author Mattias Arthursson
- * @since 1.2
*/
public class TransactionAwareContextSourceProxy implements ContextSource {
private ContextSource target;
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/TransactionAwareDirContextInvocationHandler.java b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareDirContextInvocationHandler.java
similarity index 66%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/core/TransactionAwareDirContextInvocationHandler.java
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareDirContextInvocationHandler.java
index 93666134..fea01fa2 100644
--- a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/TransactionAwareDirContextInvocationHandler.java
+++ b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareDirContextInvocationHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
@@ -21,10 +21,13 @@ import java.lang.reflect.Method;
import javax.naming.directory.DirContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.ldap.NamingException;
import org.springframework.ldap.core.ContextSource;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
import org.springframework.ldap.transaction.compensating.LdapTransactionUtils;
import org.springframework.transaction.compensating.support.CompensatingTransactionUtils;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
/**
* Proxy implementation for DirContext, making sure that the instance is not
@@ -32,11 +35,13 @@ import org.springframework.transaction.compensating.support.CompensatingTransact
* storing compensating rollback operations for them.
*
* @author Mattias Arthursson
- * @since 1.2
*/
public class TransactionAwareDirContextInvocationHandler implements
InvocationHandler {
+ private static Log log = LogFactory
+ .getLog(TransactionAwareDirContextInvocationHandler.class);
+
private DirContext target;
private ContextSource contextSource;
@@ -75,7 +80,7 @@ public class TransactionAwareDirContextInvocationHandler implements
// Use hashCode of Connection proxy.
return new Integer(proxy.hashCode());
} else if (methodName.equals("close")) {
- LdapTransactionUtils.doCloseConnection(target, contextSource);
+ doCloseConnection(target, contextSource);
return null;
} else if (LdapTransactionUtils
.isSupportedWriteTransactionOperation(methodName)) {
@@ -91,4 +96,30 @@ public class TransactionAwareDirContextInvocationHandler implements
}
}
}
+
+ /**
+ * Close the supplied context, but only if it is not associated with the
+ * current transaction.
+ *
+ * @param context
+ * the DirContext to close.
+ * @param contextSource
+ * the ContextSource bound to the transaction.
+ * @throws NamingException
+ */
+ void doCloseConnection(DirContext context, ContextSource contextSource)
+ throws javax.naming.NamingException {
+ DirContextHolder transactionContextHolder = (DirContextHolder) TransactionSynchronizationManager
+ .getResource(contextSource);
+ if (transactionContextHolder == null
+ || transactionContextHolder.getCtx() != context) {
+ log.debug("Closing context");
+ // This is not the transactional context or the transaction is
+ // no longer active - we should close it.
+ context.close();
+ } else {
+ log.debug("Leaving transactional context open");
+ }
+ }
+
}
\ No newline at end of file
diff --git a/spring-ldap/src/main/java/org/springframework/ldap/transaction/core/package.html b/spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/package.html
similarity index 100%
rename from spring-ldap/src/main/java/org/springframework/ldap/transaction/core/package.html
rename to spring-ldap/src/main/java/org/springframework/ldap/transaction/compensating/manager/package.html
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationFactory.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationFactory.java
index 574e5d5c..d494e14f 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationFactory.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationFactory.java
@@ -31,11 +31,14 @@ public interface CompensatingTransactionOperationFactory {
* Create an appropriate {@link CompensatingTransactionOperationRecorder}
* instance corresponding to the supplied method name.
*
+ * @param resource
+ * The target transaction resource.
* @param method
* the method name to create a
* {@link CompensatingTransactionOperationRecorder} for.
+ *
* @return a new {@link CompensatingTransactionOperationRecorder} instance.
*/
public CompensatingTransactionOperationRecorder createRecordingOperation(
- String method);
+ Object resource, String method);
}
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationManager.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationManager.java
index a15b80c9..39b78741 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationManager.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/CompensatingTransactionOperationManager.java
@@ -31,12 +31,15 @@ public interface CompensatingTransactionOperationManager {
* operation), performing the operation, and storing the necessary
* information to roll back or commit the performed operation.
*
+ * @param resource
+ * the target resource to perform the operation on.
* @param operation
* The method to be invoked.
* @param args
* Arguments supplied to the method.
*/
- public void performOperation(String operation, Object[] args);
+ public void performOperation(Object resource, String operation,
+ Object[] args);
/**
* Rollback all recorded operations, by performing each of the recorded
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java
index 6dd72fec..9dd03360 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java
@@ -17,7 +17,6 @@ package org.springframework.transaction.compensating.support;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.springframework.ldap.transaction.core.ContextSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
import org.springframework.transaction.support.DefaultTransactionStatus;
@@ -34,7 +33,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
public abstract class AbstractCompensatingTransactionManagerDelegate {
private static Log log = LogFactory
- .getLog(ContextSourceTransactionManager.class);
+ .getLog(AbstractCompensatingTransactionManagerDelegate.class);
/**
* Close the target resource - the implementation specific resource held in
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionHolderSupport.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionHolderSupport.java
index 470177a7..25e5ade9 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionHolderSupport.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionHolderSupport.java
@@ -15,8 +15,6 @@
*/
package org.springframework.transaction.compensating.support;
-import org.springframework.ldap.transaction.compensating.LdapCompensatingTransactionOperationFactory;
-import org.springframework.transaction.compensating.CompensatingTransactionOperationFactory;
import org.springframework.transaction.compensating.CompensatingTransactionOperationManager;
import org.springframework.transaction.support.ResourceHolderSupport;
@@ -32,23 +30,23 @@ public abstract class CompensatingTransactionHolderSupport extends
private CompensatingTransactionOperationManager transactionOperationManager;
/**
- * This method creates a new TransactionOperationManager instance. To be
- * called by subclass in case the target object has changed.
+ * Constructor.
+ *
+ * @param manager
+ * The {@link CompensatingTransactionOperationManager} to use for
+ * creating Compensating operations.
*/
- protected void refreshTransactionOperationManager() {
- setTransactionOperationManager(new DefaultCompensatingTransactionOperationManager(
- createOperationFactory()));
+ public CompensatingTransactionHolderSupport(
+ CompensatingTransactionOperationManager manager) {
+ this.transactionOperationManager = manager;
}
/**
- * Factory method to create a
- * {@link CompensatingTransactionOperationFactory} using the settings and
- * current state of this object.
+ * Get the actual transacted resource.
*
- * @return a new {@link LdapCompensatingTransactionOperationFactory}
- * referncing the current transaction context.
+ * @return the transaction's target resource
*/
- protected abstract CompensatingTransactionOperationFactory createOperationFactory();
+ protected abstract Object getTransactedResource();
public void clear() {
super.clear();
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionObject.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionObject.java
index ca00bad6..e5662291 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionObject.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionObject.java
@@ -15,7 +15,7 @@
*/
package org.springframework.transaction.compensating.support;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
+import org.springframework.ldap.transaction.compensating.manager.DirContextHolder;
/**
* Transaction object for ContextSourceTransactionManager. Keeps a reference to
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtils.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtils.java
index ae4468ae..8ce8f895 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtils.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtils.java
@@ -38,13 +38,15 @@ public class CompensatingTransactionUtils {
*/
public static void performOperation(Object synchronizationKey,
Object target, Method method, Object[] args) throws Throwable {
- CompensatingTransactionHolderSupport transactionContextHolder = (CompensatingTransactionHolderSupport) TransactionSynchronizationManager
+ CompensatingTransactionHolderSupport transactionResourceHolder = (CompensatingTransactionHolderSupport) TransactionSynchronizationManager
.getResource(synchronizationKey);
- if (transactionContextHolder != null) {
+ if (transactionResourceHolder != null) {
- CompensatingTransactionOperationManager transactionDataManager = transactionContextHolder
+ CompensatingTransactionOperationManager transactionOperationManager = transactionResourceHolder
.getTransactionOperationManager();
- transactionDataManager.performOperation(method.getName(), args);
+ transactionOperationManager.performOperation(
+ transactionResourceHolder.getTransactedResource(), method
+ .getName(), args);
} else {
// Perform the target operation
try {
diff --git a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManager.java b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManager.java
index 1ad1d788..afbec1ea 100644
--- a/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManager.java
+++ b/spring-ldap/src/main/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManager.java
@@ -58,12 +58,13 @@ public class DefaultCompensatingTransactionOperationManager implements
/*
* (non-Javadoc)
*
- * @see org.springframework.ldap.support.transaction.CompensatingTransactionOperationManager#operationPerformed(java.lang.String,
- * java.lang.Object[])
+ * @see org.springframework.transaction.compensating.CompensatingTransactionOperationManager#performOperation(java.lang.Object,
+ * java.lang.String, java.lang.Object[])
*/
- public void performOperation(String operation, Object[] args) {
+ public void performOperation(Object resource, String operation,
+ Object[] args) {
CompensatingTransactionOperationRecorder recorder = operationFactory
- .createRecordingOperation(operation);
+ .createRecordingOperation(resource, operation);
CompensatingTransactionOperationExecutor executor = recorder
.recordOperation(args);
diff --git a/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactoryTest.java b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactoryTest.java
index 50d2396c..2a768b50 100644
--- a/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactoryTest.java
+++ b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapCompensatingTransactionOperationFactoryTest.java
@@ -15,17 +15,12 @@
*/
package org.springframework.ldap.transaction.compensating;
+import javax.naming.directory.DirContext;
+
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.ldap.core.LdapOperations;
-import org.springframework.ldap.transaction.compensating.BindOperationRecorder;
-import org.springframework.ldap.transaction.compensating.LdapCompensatingTransactionOperationFactory;
-import org.springframework.ldap.transaction.compensating.ModifyAttributesOperationRecorder;
-import org.springframework.ldap.transaction.compensating.RebindOperationRecorder;
-import org.springframework.ldap.transaction.compensating.RenameOperationRecorder;
-import org.springframework.ldap.transaction.compensating.TempEntryRenamingStrategy;
-import org.springframework.ldap.transaction.compensating.UnbindOperationRecorder;
import org.springframework.transaction.compensating.CompensatingTransactionOperationRecorder;
public class LdapCompensatingTransactionOperationFactoryTest extends TestCase {
@@ -37,6 +32,12 @@ public class LdapCompensatingTransactionOperationFactoryTest extends TestCase {
private TempEntryRenamingStrategy renamingStrategyMock;
+ private MockControl dirContextControl;
+
+ private DirContext dirContextMock;
+
+ private LdapCompensatingTransactionOperationFactory tested;
+
protected void setUp() throws Exception {
ldapOperationsControl = MockControl.createControl(LdapOperations.class);
ldapOperationsMock = (LdapOperations) ldapOperationsControl.getMock();
@@ -46,6 +47,17 @@ public class LdapCompensatingTransactionOperationFactoryTest extends TestCase {
renamingStrategyMock = (TempEntryRenamingStrategy) renamingStrategyControl
.getMock();
+ dirContextControl = MockControl.createControl(DirContext.class);
+ dirContextMock = (DirContext) dirContextControl.getMock();
+
+ tested = new LdapCompensatingTransactionOperationFactory(
+ renamingStrategyMock) {
+
+ LdapOperations createLdapOperationsInstance(DirContext ctx) {
+ assertEquals(dirContextMock, ctx);
+ return ldapOperationsMock;
+ }
+ };
}
protected void tearDown() throws Exception {
@@ -54,25 +66,29 @@ public class LdapCompensatingTransactionOperationFactoryTest extends TestCase {
renamingStrategyControl = null;
renamingStrategyMock = null;
+
+ dirContextControl = null;
+ dirContextMock = null;
+
+ tested = null;
}
protected void replay() {
ldapOperationsControl.replay();
renamingStrategyControl.replay();
+ dirContextControl.replay();
}
protected void verify() {
ldapOperationsControl.verify();
renamingStrategyControl.verify();
+ dirContextControl.verify();
}
public void testGetRecordingOperation_Bind() throws Exception {
- LdapCompensatingTransactionOperationFactory tested = new LdapCompensatingTransactionOperationFactory(
- null, renamingStrategyMock);
- tested.setLdapOperations(ldapOperationsMock);
CompensatingTransactionOperationRecorder result = tested
- .createRecordingOperation("bind");
+ .createRecordingOperation(dirContextMock, "bind");
assertTrue(result instanceof BindOperationRecorder);
BindOperationRecorder bindOperationRecorder = (BindOperationRecorder) result;
assertSame(ldapOperationsMock, bindOperationRecorder
@@ -80,12 +96,8 @@ public class LdapCompensatingTransactionOperationFactoryTest extends TestCase {
}
public void testGetRecordingOperation_Rebind() throws Exception {
- LdapCompensatingTransactionOperationFactory tested = new LdapCompensatingTransactionOperationFactory(
- null, renamingStrategyMock);
- tested.setLdapOperations(ldapOperationsMock);
-
CompensatingTransactionOperationRecorder result = tested
- .createRecordingOperation("rebind");
+ .createRecordingOperation(dirContextMock, "rebind");
assertTrue(result instanceof RebindOperationRecorder);
RebindOperationRecorder rebindOperationRecorder = (RebindOperationRecorder) result;
assertSame(ldapOperationsMock, rebindOperationRecorder
@@ -95,41 +107,28 @@ public class LdapCompensatingTransactionOperationFactoryTest extends TestCase {
}
public void testGetRecordingOperation_Rename() throws Exception {
- LdapCompensatingTransactionOperationFactory tested = new LdapCompensatingTransactionOperationFactory(
- null, renamingStrategyMock);
- tested.setLdapOperations(ldapOperationsMock);
-
CompensatingTransactionOperationRecorder result = tested
- .createRecordingOperation("rename");
+ .createRecordingOperation(dirContextMock, "rename");
assertTrue(result instanceof RenameOperationRecorder);
RenameOperationRecorder recordingOperation = (RenameOperationRecorder) result;
assertSame(ldapOperationsMock, recordingOperation.getLdapOperations());
}
public void testGetRecordingOperation_ModifyAttributes() throws Exception {
- LdapCompensatingTransactionOperationFactory tested = new LdapCompensatingTransactionOperationFactory(
- null, renamingStrategyMock);
- tested.setLdapOperations(ldapOperationsMock);
-
CompensatingTransactionOperationRecorder result = tested
- .createRecordingOperation("modifyAttributes");
+ .createRecordingOperation(dirContextMock, "modifyAttributes");
assertTrue(result instanceof ModifyAttributesOperationRecorder);
ModifyAttributesOperationRecorder recordingOperation = (ModifyAttributesOperationRecorder) result;
assertSame(ldapOperationsMock, recordingOperation.getLdapOperations());
}
public void testGetRecordingOperation_Unbind() throws Exception {
- LdapCompensatingTransactionOperationFactory tested = new LdapCompensatingTransactionOperationFactory(
- null, renamingStrategyMock);
- tested.setLdapOperations(ldapOperationsMock);
-
CompensatingTransactionOperationRecorder result = tested
- .createRecordingOperation("unbind");
+ .createRecordingOperation(dirContextMock, "unbind");
assertTrue(result instanceof UnbindOperationRecorder);
UnbindOperationRecorder recordingOperation = (UnbindOperationRecorder) result;
assertSame(ldapOperationsMock, recordingOperation.getLdapOperations());
assertSame(renamingStrategyMock, recordingOperation
.getRenamingStrategy());
}
-
}
diff --git a/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtilsTest.java b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtilsTest.java
index 914aa536..5eed68e4 100644
--- a/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtilsTest.java
+++ b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/LdapTransactionUtilsTest.java
@@ -21,11 +21,7 @@ import javax.naming.directory.DirContext;
import junit.framework.TestCase;
import org.easymock.MockControl;
-import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.support.LdapUtils;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
-import org.springframework.ldap.transaction.compensating.LdapTransactionUtils;
-import org.springframework.transaction.compensating.support.CompensatingTransactionHolderSupport;
import org.springframework.transaction.support.TransactionSynchronizationManager;
public class LdapTransactionUtilsTest extends TestCase {
@@ -34,17 +30,10 @@ public class LdapTransactionUtilsTest extends TestCase {
private DirContext dirContextMock;
- private MockControl contextSourceControl;
-
- private ContextSource contextSourceMock;
-
protected void setUp() throws Exception {
dirContextControl = MockControl.createControl(DirContext.class);
dirContextMock = (DirContext) dirContextControl.getMock();
- contextSourceControl = MockControl.createControl(ContextSource.class);
- contextSourceMock = (ContextSource) contextSourceControl.getMock();
-
if (TransactionSynchronizationManager.isSynchronizationActive()) {
TransactionSynchronizationManager.clearSynchronization();
}
@@ -53,19 +42,14 @@ public class LdapTransactionUtilsTest extends TestCase {
protected void tearDown() throws Exception {
dirContextControl = null;
dirContextMock = null;
-
- contextSourceControl = null;
- contextSourceMock = null;
}
protected void replay() {
dirContextControl.replay();
- contextSourceControl.replay();
}
protected void verify() {
dirContextControl.verify();
- contextSourceControl.verify();
}
public void testCloseContext() throws NamingException {
@@ -82,51 +66,6 @@ public class LdapTransactionUtilsTest extends TestCase {
verify();
}
- public void testDoCloseConnection_NoTransaction() throws NamingException {
- dirContextMock.close();
-
- replay();
- LdapTransactionUtils.doCloseConnection(dirContextMock,
- contextSourceMock);
- verify();
- }
-
- public void testDoCloseConnection_ActiveTransaction()
- throws NamingException {
- CompensatingTransactionHolderSupport holder = new DirContextHolder(
- dirContextMock, null);
- TransactionSynchronizationManager.bindResource(contextSourceMock,
- holder);
-
- // Context should not be closed.
-
- replay();
- LdapTransactionUtils.doCloseConnection(dirContextMock,
- contextSourceMock);
- verify();
- }
-
- public void testDoCloseConnection_NotTransactionalContext()
- throws NamingException {
- CompensatingTransactionHolderSupport holder = new DirContextHolder(
- dirContextMock, null);
- TransactionSynchronizationManager.bindResource(contextSourceMock,
- holder);
-
- MockControl dirContextControl2 = MockControl
- .createControl(DirContext.class);
- DirContext dirContextMock2 = (DirContext) dirContextControl2.getMock();
-
- dirContextMock2.close();
-
- dirContextControl2.replay();
- replay();
- LdapTransactionUtils.doCloseConnection(dirContextMock2,
- contextSourceMock);
- verify();
- dirContextControl2.verify();
- }
-
public void testIsSupportedWriteTransactionOperation() {
assertTrue(LdapTransactionUtils
.isSupportedWriteTransactionOperation("bind"));
diff --git a/spring-ldap/src/test/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerTest.java b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerTest.java
similarity index 82%
rename from spring-ldap/src/test/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerTest.java
rename to spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerTest.java
index dc8acca1..509f36c8 100644
--- a/spring-ldap/src/test/java/org/springframework/ldap/transaction/core/ContextSourceTransactionManagerTest.java
+++ b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/ContextSourceTransactionManagerTest.java
@@ -1,19 +1,4 @@
-/*
- * Copyright 2005-2007 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import javax.naming.directory.DirContext;
@@ -21,10 +6,9 @@ import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.ldap.core.ContextSource;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
import org.springframework.ldap.transaction.compensating.TempEntryRenamingStrategy;
-import org.springframework.ldap.transaction.core.ContextSourceTransactionManager;
-import org.springframework.ldap.transaction.core.TransactionAwareContextSourceProxy;
+import org.springframework.ldap.transaction.compensating.manager.ContextSourceTransactionManager;
+import org.springframework.ldap.transaction.compensating.manager.TransactionAwareContextSourceProxy;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.compensating.CompensatingTransactionOperationManager;
import org.springframework.transaction.compensating.support.CompensatingTransactionHolderSupport;
@@ -121,8 +105,8 @@ public class ContextSourceTransactionManagerTest extends TestCase {
}
public void testDoGetTransactionTransactionActive() {
- CompensatingTransactionHolderSupport expectedContextHolder = new DirContextHolder(null,
- null);
+ CompensatingTransactionHolderSupport expectedContextHolder = new DirContextHolder(
+ null, null);
TransactionSynchronizationManager.bindResource(contextSourceMock,
expectedContextHolder);
Object result = tested.doGetTransaction();
@@ -145,8 +129,6 @@ public class ContextSourceTransactionManagerTest extends TestCase {
DirContextHolder foundContextHolder = (DirContextHolder) TransactionSynchronizationManager
.getResource(contextSourceMock);
assertSame(contextMock, foundContextHolder.getCtx());
- assertSame(renamingStrategyMock, foundContextHolder
- .getRenamingStrategy());
}
public void testDoCommit() {
@@ -154,8 +136,8 @@ public class ContextSourceTransactionManagerTest extends TestCase {
public void testDoRollback() {
- DirContextHolder expectedContextHolder = new DirContextHolder(
- contextMock, renamingStrategyMock);
+ DirContextHolder expectedContextHolder = new DirContextHolder(null,
+ contextMock);
expectedContextHolder
.setTransactionOperationManager(transactionDataManagerMock);
TransactionSynchronizationManager.bindResource(contextSourceMock,
@@ -172,8 +154,8 @@ public class ContextSourceTransactionManagerTest extends TestCase {
}
public void testDoCleanupAfterCompletion() throws Exception {
- DirContextHolder expectedContextHolder = new DirContextHolder(
- contextMock, renamingStrategyMock);
+ DirContextHolder expectedContextHolder = new DirContextHolder(null,
+ contextMock);
TransactionSynchronizationManager.bindResource(contextSourceMock,
expectedContextHolder);
diff --git a/spring-ldap/src/test/java/org/springframework/ldap/transaction/core/TransactionAwareContextSourceProxyTest.java b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareContextSourceProxyTest.java
similarity index 92%
rename from spring-ldap/src/test/java/org/springframework/ldap/transaction/core/TransactionAwareContextSourceProxyTest.java
rename to spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareContextSourceProxyTest.java
index d2782396..a2b3d544 100644
--- a/spring-ldap/src/test/java/org/springframework/ldap/transaction/core/TransactionAwareContextSourceProxyTest.java
+++ b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareContextSourceProxyTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 the original author or authors.
+ * Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.transaction.core;
+package org.springframework.ldap.transaction.compensating.manager;
import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapContext;
@@ -23,7 +23,7 @@ import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.core.DirContextProxy;
-import org.springframework.ldap.transaction.core.TransactionAwareContextSourceProxy;
+import org.springframework.ldap.transaction.compensating.manager.TransactionAwareContextSourceProxy;
/**
* Tests for {@link TransactionAwareContextSourceProxy}.
diff --git a/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareDirContextInvocationHandlerTest.java b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareDirContextInvocationHandlerTest.java
new file mode 100644
index 00000000..3ebbcbad
--- /dev/null
+++ b/spring-ldap/src/test/java/org/springframework/ldap/transaction/compensating/manager/TransactionAwareDirContextInvocationHandlerTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2002-2007 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.ldap.transaction.compensating.manager;
+
+import javax.naming.NamingException;
+import javax.naming.directory.DirContext;
+
+import junit.framework.TestCase;
+
+import org.easymock.MockControl;
+import org.springframework.ldap.core.ContextSource;
+import org.springframework.ldap.transaction.compensating.manager.TransactionAwareDirContextInvocationHandler;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
+
+public class TransactionAwareDirContextInvocationHandlerTest extends TestCase {
+
+ private MockControl contextSourceControl;
+
+ private ContextSource contextSourceMock;
+
+ private MockControl dirContextControl;
+
+ private DirContext dirContextMock;
+
+ private TransactionAwareDirContextInvocationHandler tested;
+
+ private DirContextHolder holder;
+
+ protected void setUp() throws Exception {
+ dirContextControl = MockControl.createControl(DirContext.class);
+ dirContextMock = (DirContext) dirContextControl.getMock();
+
+ contextSourceControl = MockControl.createControl(ContextSource.class);
+ contextSourceMock = (ContextSource) contextSourceControl.getMock();
+
+ holder = new DirContextHolder(null, dirContextMock);
+ tested = new TransactionAwareDirContextInvocationHandler(null, null);
+ }
+
+ protected void tearDown() throws Exception {
+ dirContextControl = null;
+ dirContextMock = null;
+
+ contextSourceControl = null;
+ contextSourceMock = null;
+
+ holder = null;
+
+ tested = null;
+ }
+
+ protected void replay() {
+ dirContextControl.replay();
+ contextSourceControl.replay();
+ }
+
+ protected void verify() {
+ dirContextControl.verify();
+ contextSourceControl.verify();
+ }
+
+ public void testDoCloseConnection_NoTransaction() throws NamingException {
+ dirContextMock.close();
+
+ replay();
+ tested.doCloseConnection(dirContextMock, contextSourceMock);
+ verify();
+ }
+
+ public void testDoCloseConnection_ActiveTransaction()
+ throws NamingException {
+ TransactionSynchronizationManager.bindResource(contextSourceMock,
+ holder);
+
+ // Context should not be closed.
+
+ replay();
+ tested.doCloseConnection(dirContextMock, contextSourceMock);
+ verify();
+ }
+
+ public void testDoCloseConnection_NotTransactionalContext()
+ throws NamingException {
+ TransactionSynchronizationManager.bindResource(contextSourceMock,
+ holder);
+
+ MockControl dirContextControl2 = MockControl
+ .createControl(DirContext.class);
+ DirContext dirContextMock2 = (DirContext) dirContextControl2.getMock();
+
+ dirContextMock2.close();
+
+ dirContextControl2.replay();
+ replay();
+ tested.doCloseConnection(dirContextMock2, contextSourceMock);
+ verify();
+ dirContextControl2.verify();
+ }
+
+}
diff --git a/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtilsTest.java b/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtilsTest.java
index daca7969..e7a9b319 100644
--- a/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtilsTest.java
+++ b/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/CompensatingTransactionUtilsTest.java
@@ -23,7 +23,7 @@ import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.ldap.core.ContextSource;
-import org.springframework.ldap.transaction.compensating.DirContextHolder;
+import org.springframework.ldap.transaction.compensating.manager.DirContextHolder;
import org.springframework.transaction.compensating.CompensatingTransactionOperationManager;
import org.springframework.transaction.compensating.support.CompensatingTransactionHolderSupport;
import org.springframework.transaction.compensating.support.CompensatingTransactionUtils;
@@ -83,20 +83,21 @@ public class CompensatingTransactionUtilsTest extends TestCase {
operationManagerControl.verify();
}
-
public void testPerformOperation() throws Throwable {
- CompensatingTransactionHolderSupport holder = new DirContextHolder(dirContextMock, null);
+ CompensatingTransactionHolderSupport holder = new DirContextHolder(
+ null, dirContextMock);
holder.setTransactionOperationManager(operationManagerMock);
TransactionSynchronizationManager.bindResource(contextSourceMock,
holder);
Object[] expectedArgs = new Object[] { "someDn" };
- operationManagerMock.performOperation("unbind", expectedArgs);
+ operationManagerMock.performOperation(dirContextMock, "unbind",
+ expectedArgs);
replay();
- CompensatingTransactionUtils.performOperation(contextSourceMock, dirContextMock,
- getUnbindMethod(), expectedArgs);
+ CompensatingTransactionUtils.performOperation(contextSourceMock,
+ dirContextMock, getUnbindMethod(), expectedArgs);
verify();
}
@@ -105,8 +106,8 @@ public class CompensatingTransactionUtilsTest extends TestCase {
dirContextMock.unbind("someDn");
replay();
- CompensatingTransactionUtils.performOperation(contextSourceMock, dirContextMock,
- getUnbindMethod(), expectedArgs);
+ CompensatingTransactionUtils.performOperation(contextSourceMock,
+ dirContextMock, getUnbindMethod(), expectedArgs);
verify();
}
diff --git a/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManagerTest.java b/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManagerTest.java
index efe0f18c..b5c35185 100644
--- a/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManagerTest.java
+++ b/spring-ldap/src/test/java/org/springframework/transaction/compensating/support/DefaultCompensatingTransactionOperationManagerTest.java
@@ -86,11 +86,11 @@ public class DefaultCompensatingTransactionOperationManagerTest extends
public void testPerformOperation() {
Object[] expectedArgs = new Object[0];
+ Object expectedResource = new Object();
- operationFactoryControl
- .expectAndReturn(operationFactoryMock
- .createRecordingOperation("some method"),
- operationRecorderMock);
+ operationFactoryControl.expectAndReturn(operationFactoryMock
+ .createRecordingOperation(expectedResource, "some method"),
+ operationRecorderMock);
operationRecorderControl.expectAndReturn(operationRecorderMock
.recordOperation(expectedArgs), operationExecutorMock);
operationExecutorMock.performOperation();
@@ -98,7 +98,7 @@ public class DefaultCompensatingTransactionOperationManagerTest extends
DefaultCompensatingTransactionOperationManager tested = new DefaultCompensatingTransactionOperationManager(
operationFactoryMock);
replay();
- tested.performOperation("some method", expectedArgs);
+ tested.performOperation(expectedResource, "some method", expectedArgs);
verify();
Stack result = tested.getOperationExecutors();