Skip to content

Commit

Permalink
Move @transactional annotation from private to public methods
Browse files Browse the repository at this point in the history
  • Loading branch information
amckenzie committed Jun 25, 2018
1 parent 588a352 commit 5e154d4
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -15,8 +13,6 @@
import javax.ejb.TransactionAttribute;
import javax.inject.Inject;

import org.slf4j.Logger;

@Stateless
public class AsyncStreamDispatcher {

Expand All @@ -29,9 +25,6 @@ public class AsyncStreamDispatcher {
@Inject
private TransactionalEnvelopeDispatcher envelopeDispatcher;

@Inject
private StreamStatusJdbcRepository streamStatusRepository;

@Inject
private StreamStatusFactory streamStatusFactory;

Expand All @@ -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) {
Expand All @@ -60,7 +53,7 @@ public UUID dispatch(final UUID streamId) {
jsonEnvelopeJdbcRepository.getLatestEvent(streamId),
streamId);

insertStreamStatus(streamStatus);
transactionalStreamStatusRepository.insert(streamStatus);
}

progressLogger.logCompletion(streamId);
Expand Down Expand Up @@ -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();
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {
Expand All @@ -35,9 +33,6 @@ public class AsyncStreamDispatcherTest {
@Mock
private TransactionalEnvelopeDispatcher envelopeDispatcher;

@Mock
private StreamStatusJdbcRepository streamStatusRepository;

@Mock
private StreamStatusFactory streamStatusFactory;

Expand All @@ -51,7 +46,7 @@ public class AsyncStreamDispatcherTest {
private LoggingMdc loggingMdc;

@Mock
private Logger logger;
private TransactionalStreamStatusRepository transactionalStreamStatusRepository;

@InjectMocks
private AsyncStreamDispatcher asyncStreamDispatcher;
Expand All @@ -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);
Expand All @@ -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();
}
Expand All @@ -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
Expand All @@ -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);
Expand All @@ -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
Expand All @@ -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);
Expand All @@ -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
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}

0 comments on commit 5e154d4

Please sign in to comment.