DATAGEODE-272 - Write Unit Tests for transaction event handler framework code.

This commit is contained in:
John Blum
2019-11-12 17:02:49 -08:00
parent 2f558d4c95
commit a45fefbcfc
4 changed files with 350 additions and 14 deletions

View File

@@ -22,6 +22,8 @@ import org.apache.geode.cache.TransactionEvent;
import org.apache.geode.cache.TransactionWriter;
import org.apache.geode.cache.TransactionWriterException;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -45,8 +47,8 @@ public class ComposableTransactionWriter implements TransactionWriter {
* the composition of both {@link TransactionWriter} one and {@link TransactionWriter} two.
* @see org.apache.geode.cache.TransactionWriter
*/
public static TransactionWriter compose(TransactionWriter transactionWriterOne,
TransactionWriter transactionWriterTwo) {
public static @Nullable TransactionWriter compose(@Nullable TransactionWriter transactionWriterOne,
@Nullable TransactionWriter transactionWriterTwo) {
return transactionWriterOne == null ? transactionWriterTwo
: transactionWriterTwo == null ? transactionWriterOne
@@ -56,7 +58,8 @@ public class ComposableTransactionWriter implements TransactionWriter {
private final TransactionWriter transactionWriterOne;
private final TransactionWriter transactionWriterTwo;
private ComposableTransactionWriter(TransactionWriter transactionWriterOne, TransactionWriter transactionWriterTwo) {
private ComposableTransactionWriter(@NonNull TransactionWriter transactionWriterOne,
@NonNull TransactionWriter transactionWriterTwo) {
Assert.notNull(transactionWriterOne, "TransactionWriter one must not be null");
Assert.notNull(transactionWriterTwo, "TransactionWriter two must not be null");
@@ -65,14 +68,34 @@ public class ComposableTransactionWriter implements TransactionWriter {
this.transactionWriterTwo = transactionWriterTwo;
}
/**
* Returns a reference to the first {@link TransactionWriter} in the composition.
*
* @return a reference to the first {@link TransactionWriter} in the composition.
* @see org.apache.geode.cache.TransactionWriter
*/
protected TransactionWriter getTransactionWriterOne() {
return this.transactionWriterOne;
}
/**
* Returns a reference to the second {@link TransactionWriter} in the composition.
*
* @return a reference to the second {@link TransactionWriter} in the composition.
* @see org.apache.geode.cache.TransactionWriter
*/
protected TransactionWriter getTransactionWriterTwo() {
return this.transactionWriterTwo;
}
/**
* @inheritDoc
*/
@Override
public void beforeCommit(TransactionEvent event) throws TransactionWriterException {
this.transactionWriterOne.beforeCommit(event);
this.transactionWriterTwo.beforeCommit(event);
getTransactionWriterOne().beforeCommit(event);
getTransactionWriterTwo().beforeCommit(event);
}
/**
@@ -81,8 +104,8 @@ public class ComposableTransactionWriter implements TransactionWriter {
@Override
public void close() {
this.transactionWriterOne.close();
this.transactionWriterTwo.close();
getTransactionWriterOne().close();
getTransactionWriterTwo().close();
}
/**
@@ -91,8 +114,8 @@ public class ComposableTransactionWriter implements TransactionWriter {
@Override
public void init(Properties properties) {
this.transactionWriterOne.init(properties);
this.transactionWriterTwo.init(properties);
getTransactionWriterOne().init(properties);
getTransactionWriterTwo().init(properties);
}
/**
@@ -101,7 +124,7 @@ public class ComposableTransactionWriter implements TransactionWriter {
@Override
public void initialize(Cache cache, Properties properties) {
this.transactionWriterOne.initialize(cache, properties);
this.transactionWriterTwo.initialize(cache, properties);
getTransactionWriterOne().initialize(cache, properties);
getTransactionWriterTwo().initialize(cache, properties);
}
}

View File

@@ -21,6 +21,7 @@ import org.apache.geode.cache.TransactionWriter;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.lang.NonNull;
import org.springframework.util.Assert;
/**
@@ -57,6 +58,16 @@ public class TransactionListenerAdapter implements TransactionListener, Transact
this.applicationEventPublisher = applicationEventPublisher;
}
/**
* Returns a reference to the configured {@link ApplicationEventPublisher}.
*
* @return a reference to the configured {@link ApplicationEventPublisher}.
* @see org.springframework.context.ApplicationEventPublisher
*/
protected @NonNull ApplicationEventPublisher getApplicationEventPublisher() {
return this.applicationEventPublisher;
}
/**
* @inheritDoc
*/
@@ -68,7 +79,7 @@ public class TransactionListenerAdapter implements TransactionListener, Transact
// all application @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) annotated transaction
// event handler methods are invoked.
//this.applicationEventPublisher.publishEvent(TransactionApplicationEvent.of(event));
//getApplicationEventPublisher().publishEvent(TransactionApplicationEvent.of(event));
}
/**
@@ -76,7 +87,7 @@ public class TransactionListenerAdapter implements TransactionListener, Transact
*/
@Override
public void afterCommit(TransactionEvent event) {
this.applicationEventPublisher.publishEvent(TransactionApplicationEvent.of(event));
getApplicationEventPublisher().publishEvent(TransactionApplicationEvent.of(event));
}
/**
@@ -90,6 +101,6 @@ public class TransactionListenerAdapter implements TransactionListener, Transact
*/
@Override
public void afterRollback(TransactionEvent event) {
this.applicationEventPublisher.publishEvent(TransactionApplicationEvent.of(event));
getApplicationEventPublisher().publishEvent(TransactionApplicationEvent.of(event));
}
}