From 5e154d44e80a519ed507666033a89f6a26237901 Mon Sep 17 00:00:00 2001 From: amckenzie Date: Mon, 25 Jun 2018 16:15:22 +0100 Subject: [PATCH] Move @Transactional annotation from private to public methods --- .../tools/replay/AsyncStreamDispatcher.java | 17 ++-------- .../TransactionalStreamStatusRepository.java | 20 +++++++++++ .../replay/AsyncStreamDispatcherTest.java | 25 ++++++-------- ...ansactionalStreamStatusRepositoryTest.java | 33 +++++++++++++++++++ 4 files changed, 65 insertions(+), 30 deletions(-) create mode 100644 framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepository.java create mode 100644 framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepositoryTest.java diff --git a/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcher.java b/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcher.java index 8f3e7fe..673d85e 100644 --- a/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcher.java +++ b/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcher.java @@ -1,11 +1,9 @@ package uk.gov.justice.framework.tools.replay; import static javax.ejb.TransactionAttributeType.NOT_SUPPORTED; -import static javax.ejb.TransactionAttributeType.REQUIRED; import uk.gov.justice.services.core.handler.exception.MissingHandlerException; import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatus; -import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatusJdbcRepository; import uk.gov.justice.services.messaging.JsonEnvelope; import java.util.UUID; @@ -15,8 +13,6 @@ import javax.ejb.TransactionAttribute; import javax.inject.Inject; -import org.slf4j.Logger; - @Stateless public class AsyncStreamDispatcher { @@ -29,9 +25,6 @@ public class AsyncStreamDispatcher { @Inject private TransactionalEnvelopeDispatcher envelopeDispatcher; - @Inject - private StreamStatusJdbcRepository streamStatusRepository; - @Inject private StreamStatusFactory streamStatusFactory; @@ -45,7 +38,7 @@ public class AsyncStreamDispatcher { private LoggingMdc loggingMdc; @Inject - private Logger logger; + private TransactionalStreamStatusRepository transactionalStreamStatusRepository; @TransactionAttribute(NOT_SUPPORTED) public UUID dispatch(final UUID streamId) { @@ -60,7 +53,7 @@ public UUID dispatch(final UUID streamId) { jsonEnvelopeJdbcRepository.getLatestEvent(streamId), streamId); - insertStreamStatus(streamStatus); + transactionalStreamStatusRepository.insert(streamStatus); } progressLogger.logCompletion(streamId); @@ -94,7 +87,6 @@ private void dispatchEnvelope(final JsonEnvelope jsonEnvelope, final UUID stream loggingMdc.remove(EVENT_DATA_MDC_KEY); } - @TransactionAttribute(REQUIRED) private void doDispatch(final JsonEnvelope jsonEnvelope, final UUID streamId) { try { progressLogger.logDispatch(); @@ -104,9 +96,4 @@ private void doDispatch(final JsonEnvelope jsonEnvelope, final UUID streamId) { progressLogger.logFailure(streamId, jsonEnvelope); } } - - @TransactionAttribute(REQUIRED) - private void insertStreamStatus(final StreamStatus streamStatus) { - streamStatusRepository.insert(streamStatus); - } } diff --git a/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepository.java b/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepository.java new file mode 100644 index 0000000..14a6a92 --- /dev/null +++ b/framework-tools-replay/src/main/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepository.java @@ -0,0 +1,20 @@ +package uk.gov.justice.framework.tools.replay; + +import static javax.transaction.Transactional.TxType.REQUIRED; + +import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatus; +import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatusJdbcRepository; + +import javax.inject.Inject; +import javax.transaction.Transactional; + +public class TransactionalStreamStatusRepository { + + @Inject + private StreamStatusJdbcRepository streamStatusRepository; + + @Transactional(REQUIRED) + public void insert(final StreamStatus streamStatus) { + streamStatusRepository.insert(streamStatus); + } +} diff --git a/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcherTest.java b/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcherTest.java index 04ee174..5bafcb5 100644 --- a/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcherTest.java +++ b/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/AsyncStreamDispatcherTest.java @@ -11,7 +11,6 @@ import uk.gov.justice.services.core.handler.exception.MissingHandlerException; import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatus; -import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatusJdbcRepository; import uk.gov.justice.services.messaging.JsonEnvelope; import java.util.ArrayList; @@ -25,7 +24,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.slf4j.Logger; @RunWith(MockitoJUnitRunner.class) public class AsyncStreamDispatcherTest { @@ -35,9 +33,6 @@ public class AsyncStreamDispatcherTest { @Mock private TransactionalEnvelopeDispatcher envelopeDispatcher; - @Mock - private StreamStatusJdbcRepository streamStatusRepository; - @Mock private StreamStatusFactory streamStatusFactory; @@ -51,7 +46,7 @@ public class AsyncStreamDispatcherTest { private LoggingMdc loggingMdc; @Mock - private Logger logger; + private TransactionalStreamStatusRepository transactionalStreamStatusRepository; @InjectMocks private AsyncStreamDispatcher asyncStreamDispatcher; @@ -74,7 +69,7 @@ public void shouldGetTheEventsOfAStreamDispatchThemAllThenUpdateTheStreamStatus( assertThat(asyncStreamDispatcher.dispatch(streamId), is(streamId)); - final InOrder inOrder = inOrder(loggingMdc, progressLogger, envelopeDispatcher, streamStatusRepository, progressLogger); + final InOrder inOrder = inOrder(loggingMdc, progressLogger, envelopeDispatcher, transactionalStreamStatusRepository, progressLogger); inOrder.verify(loggingMdc).put("streamId", "streamId: " + streamId); inOrder.verify(progressLogger).logStart(streamId); @@ -96,7 +91,7 @@ public void shouldGetTheEventsOfAStreamDispatchThemAllThenUpdateTheStreamStatus( inOrder.verify(progressLogger).logSuccess(streamId, jsonEnvelope_3); inOrder.verify(loggingMdc).remove("eventData"); - inOrder.verify(streamStatusRepository).insert(streamStatus); + inOrder.verify(transactionalStreamStatusRepository).insert(streamStatus); inOrder.verify(progressLogger).logCompletion(streamId); inOrder.verify(loggingMdc).clear(); } @@ -117,13 +112,13 @@ public void shouldDispatchOneFullPageOfEvents() throws Exception { assertThat(asyncStreamDispatcher.dispatch(streamId), is(streamId)); - final InOrder inOrder = inOrder(envelopeDispatcher, streamStatusRepository); + final InOrder inOrder = inOrder(envelopeDispatcher, transactionalStreamStatusRepository); for (JsonEnvelope jsonEnvelope : pageOfEvents_1) { inOrder.verify(envelopeDispatcher).dispatch(jsonEnvelope); } - inOrder.verify(streamStatusRepository).insert(streamStatus); + inOrder.verify(transactionalStreamStatusRepository).insert(streamStatus); } @Test @@ -144,7 +139,7 @@ public void shouldDispatchTwoFullPagesOfEvents() throws Exception { assertThat(asyncStreamDispatcher.dispatch(streamId), is(streamId)); - final InOrder inOrder = inOrder(envelopeDispatcher, streamStatusRepository); + final InOrder inOrder = inOrder(envelopeDispatcher, transactionalStreamStatusRepository); for (JsonEnvelope jsonEnvelope : pageOfEvents_1) { inOrder.verify(envelopeDispatcher).dispatch(jsonEnvelope); @@ -154,7 +149,7 @@ public void shouldDispatchTwoFullPagesOfEvents() throws Exception { inOrder.verify(envelopeDispatcher).dispatch(jsonEnvelope); } - inOrder.verify(streamStatusRepository).insert(streamStatus); + inOrder.verify(transactionalStreamStatusRepository).insert(streamStatus); } @Test @@ -175,7 +170,7 @@ public void shouldDispatchOneFullPageAndSecondPageWithSingleEvent() throws Excep assertThat(asyncStreamDispatcher.dispatch(streamId), is(streamId)); - final InOrder inOrder = inOrder(envelopeDispatcher, streamStatusRepository); + final InOrder inOrder = inOrder(envelopeDispatcher, transactionalStreamStatusRepository); for (JsonEnvelope jsonEnvelope : pageOfEvents_1) { inOrder.verify(envelopeDispatcher).dispatch(jsonEnvelope); @@ -185,7 +180,7 @@ public void shouldDispatchOneFullPageAndSecondPageWithSingleEvent() throws Excep inOrder.verify(envelopeDispatcher).dispatch(jsonEnvelope); } - inOrder.verify(streamStatusRepository).insert(streamStatus); + inOrder.verify(transactionalStreamStatusRepository).insert(streamStatus); } @Test @@ -207,7 +202,7 @@ public void shouldLogFailureIfNoHandlerFoundForDispatch() throws Exception { assertThat(asyncStreamDispatcher.dispatch(streamId), is(streamId)); - final InOrder inOrder = inOrder(progressLogger, envelopeDispatcher, streamStatusRepository, progressLogger); + final InOrder inOrder = inOrder(progressLogger, envelopeDispatcher, transactionalStreamStatusRepository, progressLogger); inOrder.verify(progressLogger).logStart(streamId); inOrder.verify(envelopeDispatcher).dispatch(jsonEnvelope); diff --git a/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepositoryTest.java b/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepositoryTest.java new file mode 100644 index 0000000..b0b4ff9 --- /dev/null +++ b/framework-tools-replay/src/test/java/uk/gov/justice/framework/tools/replay/TransactionalStreamStatusRepositoryTest.java @@ -0,0 +1,33 @@ +package uk.gov.justice.framework.tools.replay; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatus; +import uk.gov.justice.services.event.buffer.core.repository.streamstatus.StreamStatusJdbcRepository; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class TransactionalStreamStatusRepositoryTest { + + @Mock + private StreamStatusJdbcRepository streamStatusRepository; + + @InjectMocks + private TransactionalStreamStatusRepository streamDispatcherDelegate; + + @Test + public void shouldDelegateTheInsertOfStreamStatusToTheRepositoryToAllowForTransactionalAnnotation() throws Exception { + + final StreamStatus streamStatus = mock(StreamStatus.class); + + streamDispatcherDelegate.insert(streamStatus); + + verify(streamStatusRepository).insert(streamStatus); + } +}