Skip to content

Commit

Permalink
Merge 875cf57 into b7131f8
Browse files Browse the repository at this point in the history
  • Loading branch information
mapingo committed Nov 23, 2018
2 parents b7131f8 + 875cf57 commit 2316208
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,10 @@
<artifactId>commons-logging</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.gov.justice.services</groupId>
<artifactId>messaging-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ private Optional<Event> getEventFromEventLogTable(final UUID eventLogId, final C

if (resultSet.next()) {
final UUID streamId = fromString(resultSet.getString("stream_id"));
final Long postitionInStream = resultSet.getLong("position_in_stream");
final Long positionInStream = resultSet.getLong("position_in_stream");
final String name = resultSet.getString("name");
final String metadata = resultSet.getString("metadata");
final String payload = resultSet.getString("payload");
Expand All @@ -92,7 +92,7 @@ private Optional<Event> getEventFromEventLogTable(final UUID eventLogId, final C
return of(new Event(
eventLogId,
streamId,
postitionInStream,
positionInStream,
name,
metadata,
payload,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import uk.gov.justice.services.common.util.UtcClock;
import uk.gov.justice.services.eventsourcing.PublishQueueException;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.Event;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventConverter;
import uk.gov.justice.services.messaging.Metadata;
import uk.gov.justice.subscription.registry.SubscriptionDataSourceProvider;

import java.sql.Connection;
Expand All @@ -29,6 +31,9 @@ public class EventPrePublisher {
@Inject
UtcClock clock;

@Inject
EventConverter eventConverter;

@Transactional(MANDATORY)
public void prePublish(final Event event) {

Expand All @@ -38,12 +43,12 @@ public void prePublish(final Event event) {
final long sequenceNumber = prePublishRepository.getSequenceNumber(eventId, connection);
final long previousSequenceNumber = prePublishRepository.getPreviousSequenceNumber(sequenceNumber, connection);

final String updatedMetadata = metadataSequenceNumberUpdater.updateMetadataJson(
event.getMetadata(),
final Metadata updatedMetadata = metadataSequenceNumberUpdater.updateMetadataJson(
eventConverter.metadataOf(event),
previousSequenceNumber,
sequenceNumber);

prePublishRepository.updateMetadata(eventId, updatedMetadata, connection);
prePublishRepository.updateMetadata(eventId, updatedMetadata.asJsonObject().toString(), connection);
prePublishRepository.addToPublishQueueTable(eventId, clock.now(), connection);

} catch (final SQLException e) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,34 +1,15 @@
package uk.gov.justice.services.eventsourcing.prepublish;

import uk.gov.justice.services.eventsourcing.PublishQueueException;
import static uk.gov.justice.services.messaging.Envelope.metadataFrom;

import java.io.IOException;
import java.io.StringReader;

import javax.inject.Inject;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import uk.gov.justice.services.messaging.Metadata;

public class MetadataSequenceNumberUpdater {

@Inject
ObjectMapper objectMapper;

public String updateMetadataJson(final String metadataJson, final long previousSequenceNumber, final long sequenceNumber) {
final ObjectNode objectNode = asObjectNode(metadataJson);

objectNode.put("previousEventNumber", previousSequenceNumber);
objectNode.put("eventNumber", sequenceNumber);

return objectNode.toString();
}

private ObjectNode asObjectNode(final String metadataJson) {
try {
return (ObjectNode) objectMapper.readTree(new StringReader(metadataJson));
} catch (final IOException e) {
throw new PublishQueueException("Failed to parse metadata into a json ObjectNode");
}
public Metadata updateMetadataJson(final Metadata metadata, final long previousSequenceNumber, final long sequenceNumber) {
return metadataFrom(metadata)
.withEventNumber(sequenceNumber)
.withPreviousEventNumber(previousSequenceNumber)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,17 @@
import uk.gov.justice.services.common.util.UtcClock;
import uk.gov.justice.services.eventsourcing.PublishQueueException;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.Event;
import uk.gov.justice.services.eventsourcing.repository.jdbc.event.EventConverter;
import uk.gov.justice.services.messaging.Metadata;
import uk.gov.justice.subscription.registry.SubscriptionDataSourceProvider;

import java.sql.Connection;
import java.sql.SQLException;
import java.time.ZonedDateTime;
import java.util.UUID;

import javax.json.JsonObject;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
Expand All @@ -42,15 +46,20 @@ public class EventPrePublisherTest {
@Mock
private UtcClock clock;

@Mock
private EventConverter eventConverter;

@InjectMocks
private EventPrePublisher eventPrePublisher;

@Test
public void shouldAddSequenceNumberIntoTheEventMetadataAndSetItForPublishing() throws Exception {

final UUID eventId = randomUUID();
final String originalMetadata = "original metadata";
final String updatedMetadata = "updated metadata";
final Metadata originalMetadata = mock(Metadata.class);
final Metadata updatedMetadata = mock(Metadata.class);
final JsonObject metadataJsonObject = mock(JsonObject.class);
final String updatedMetadataString = "updated metadata";

final long sequenceNumber = 982L;
final long previousSequenceNumber = 981L;
Expand All @@ -64,18 +73,21 @@ public void shouldAddSequenceNumberIntoTheEventMetadataAndSetItForPublishing() t
when(subscriptionDataSourceProvider.getEventStoreDataSource().getConnection()).thenReturn(connection);
when(prePublishRepository.getSequenceNumber(eventId, connection)).thenReturn(sequenceNumber);
when(prePublishRepository.getPreviousSequenceNumber(sequenceNumber, connection)).thenReturn(previousSequenceNumber);
when(event.getMetadata()).thenReturn(originalMetadata);
when(clock.now()).thenReturn(now);
when(eventConverter.metadataOf(event)).thenReturn(originalMetadata);

when(metadataSequenceNumberUpdater.updateMetadataJson(
originalMetadata,
previousSequenceNumber,
sequenceNumber)).thenReturn(updatedMetadata);

when(updatedMetadata.asJsonObject()).thenReturn(metadataJsonObject);
when(metadataJsonObject.toString()).thenReturn(updatedMetadataString);

eventPrePublisher.prePublish(event);

final InOrder inOrder = inOrder(prePublishRepository);
inOrder.verify(prePublishRepository).updateMetadata(eventId, updatedMetadata, connection);
inOrder.verify(prePublishRepository).updateMetadata(eventId, updatedMetadataString, connection);
inOrder.verify(prePublishRepository).addToPublishQueueTable(eventId, now, connection);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,55 +1,52 @@
package uk.gov.justice.services.eventsourcing.prepublish;

import static com.jayway.jsonassert.JsonAssert.with;
import static java.util.Optional.of;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static uk.gov.justice.services.messaging.Envelope.metadataBuilder;

import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer;
import uk.gov.justice.services.messaging.Metadata;

import java.util.UUID;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Spy;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class MetadataSequenceNumberUpdaterTest {

@Spy
@SuppressWarnings("unused")
private ObjectMapper objectMapper = new ObjectMapperProducer().objectMapper();

@InjectMocks
private MetadataSequenceNumberUpdater metadataSequenceNumberUpdater;

@Test
public void shouldAddPreviousAndNextSequenceNumberIntoMetadataJson() throws Exception {

final String name = "example.first-event";
final String eventSource = "event source";
final UUID id = UUID.fromString("07652a0b-3a12-4b93-ad24-a33c7c171f19");
final UUID streamId = UUID.fromString("031e1bec-8c3d-45fb-b206-c70f33678f58");
final long previousSequenceNumber = 23;
final long sequenceNumber = 24;

final String metadataJson = "{\n" +
" \"id\":\"07652a0b-3a12-4b93-ad24-a33c7c171f19\",\n" +
" \"name\":\"example.first-event\",\n" +
" \"stream\":{\n" +
" \"id\":\"031e1bec-8c3d-45fb-b206-c70f33678f58\"\n" +
" },\n" +
" \"source\":\"event source\"\n" +
"}";

final Metadata originalMetadata = metadataBuilder()
.withId(id)
.withName(name)
.withStreamId(streamId)
.withSource(eventSource)
.build();

final String updatedMetadata = metadataSequenceNumberUpdater.updateMetadataJson(
metadataJson,
final Metadata updatedMetadata = metadataSequenceNumberUpdater.updateMetadataJson(
originalMetadata,
previousSequenceNumber,
sequenceNumber);

with(updatedMetadata)
.assertThat("$.id", is("07652a0b-3a12-4b93-ad24-a33c7c171f19"))
.assertThat("$.name", is("example.first-event"))
.assertThat("$.stream.id", is("031e1bec-8c3d-45fb-b206-c70f33678f58"))
.assertThat("$.source", is("event source"))
.assertThat("$.previousEventNumber", is((int) previousSequenceNumber))
.assertThat("$.eventNumber", is((int) sequenceNumber))
;
assertThat(updatedMetadata.id(), is(id));
assertThat(updatedMetadata.name(), is(name));
assertThat(updatedMetadata.streamId(), is(of(streamId)));
assertThat(updatedMetadata.source(), is(of(eventSource)));
assertThat(updatedMetadata.eventNumber(), is(of(sequenceNumber)));
assertThat(updatedMetadata.previousEventNumber(), is(of(previousSequenceNumber)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -193,16 +193,16 @@ public void shouldPublishEventsInTheEventLogTable() throws Exception {
final String envelopeJson_3 = envelopes.get(2).toDebugStringPrettyPrint();

with(envelopeJson_1)
.assertThat("$._metadata.previousEventNumber", is(0))
.assertThat("$._metadata.eventNumber", is(1))
.assertThat("$._metadata.event.previousEventNumber", is(0))
.assertThat("$._metadata.event.eventNumber", is(1))
;
with(envelopeJson_2)
.assertThat("$._metadata.previousEventNumber", is(1))
.assertThat("$._metadata.eventNumber", is(2))
.assertThat("$._metadata.event.previousEventNumber", is(1))
.assertThat("$._metadata.event.eventNumber", is(2))
;
with(envelopeJson_3)
.assertThat("$._metadata.previousEventNumber", is(2))
.assertThat("$._metadata.eventNumber", is(3))
.assertThat("$._metadata.event.previousEventNumber", is(2))
.assertThat("$._metadata.event.eventNumber", is(3))
;
} else {
fail();
Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@

<utilities.version>1.16.1</utilities.version>
<test-utils.version>1.18.1</test-utils.version>
<framework.version>5.0.4</framework.version>
<framework.version>5.1.0-M1</framework.version>
<framework-domain.version>1.0.3</framework-domain.version>
<common-bom.version>1.28.0</common-bom.version>
<framework-api.version>3.0.1</framework-api.version>
<framework-api.version>3.1.0-M1</framework-api.version>
</properties>

<dependencyManagement>
Expand Down

0 comments on commit 2316208

Please sign in to comment.