RESOLVED - BATCH-522: abstract common concerns from BatchSqlUpdateItemWriter and HibernateAwareItemWriter

duplicate logic pulled up to AbstractTransactionalResourceItemWriter
This commit is contained in:
robokaso
2008-04-09 09:39:53 +00:00
parent 58448aa23b
commit 5ff2e320bc
5 changed files with 225 additions and 250 deletions

View File

@@ -76,7 +76,7 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
list.add(item);
}
});
TransactionSynchronizationManager.bindResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED, new HashSet(
TransactionSynchronizationManager.bindResource(writer.getResourceKey(), new HashSet(
Collections.singleton("spam")));
RepeatSynchronizationManager.register(context);
}
@@ -86,8 +86,8 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
if (TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED)) {
TransactionSynchronizationManager.unbindResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED);
if (TransactionSynchronizationManager.hasResource(writer.getResourceKey())) {
TransactionSynchronizationManager.unbindResource(writer.getResourceKey());
}
RepeatSynchronizationManager.clear();
}
@@ -125,9 +125,9 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
* {@link org.springframework.batch.item.database.BatchSqlUpdateItemWriter#clear()}.
*/
public void testClear() {
assertTrue(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertTrue(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
writer.clear();
assertFalse(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertFalse(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
}
/**
@@ -135,9 +135,9 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
* {@link org.springframework.batch.item.database.BatchSqlUpdateItemWriter#flush()}.
*/
public void testFlush() {
assertTrue(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertTrue(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
writer.flush();
assertFalse(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertFalse(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
assertEquals(2, list.size());
assertTrue(list.contains("SQL"));
}
@@ -148,10 +148,10 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
* @throws Exception
*/
public void testWriteAndFlush() throws Exception {
assertTrue(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertTrue(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
writer.write("bar");
writer.flush();
assertFalse(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertFalse(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
assertEquals(3, list.size());
assertTrue(list.contains("SQL"));
}
@@ -176,7 +176,7 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
catch (RuntimeException e) {
assertEquals("bar", e.getMessage());
}
assertFalse(TransactionSynchronizationManager.hasResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED));
assertFalse(TransactionSynchronizationManager.hasResource(writer.getResourceKey()));
assertEquals(2, list.size());
writer.setItemPreparedStatementSetter(new ItemPreparedStatementSetter() {
public void setValues(Object item, PreparedStatement ps) throws SQLException {
@@ -197,7 +197,7 @@ public class BatchSqlUpdateItemWriterTests extends TestCase {
*/
public void testEmptyFlush() {
// items are bound on write, so we unbind them first
TransactionSynchronizationManager.unbindResource(BatchSqlUpdateItemWriter.ITEMS_PROCESSED);
TransactionSynchronizationManager.unbindResource(writer.getResourceKey());
writer.flush();
}

View File

@@ -81,7 +81,7 @@ public class HibernateAwareItemWriterTests extends TestCase {
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
String key = HibernateAwareItemWriter.class.getName() + ".ITEMS_PROCESSED";
String key = writer.getResourceKey();
if (TransactionSynchronizationManager.hasResource(key)) {
TransactionSynchronizationManager.unbindResource(key);
}
@@ -165,16 +165,19 @@ public class HibernateAwareItemWriterTests extends TestCase {
} catch (RuntimeException e) {
assertEquals("bar", e.getMessage());
}
assertEquals(1, list.size());
assertEquals(2, list.size());
assertTrue(list.contains("foo"));
assertTrue(list.contains("delegateFlush"));
writer.setHibernateTemplate(new HibernateTemplateWrapper() {
public void flush() throws DataAccessException {
list.add("flush");
}
});
writer.write("foo");
assertEquals(4, list.size());
assertEquals(6, list.size());
assertTrue(list.contains("flush"));
assertTrue(list.contains("clear"));
assertTrue(list.contains("delegateFlush"));
assertTrue(context.isCompleteOnly());
}