Skip to content

Commit

Permalink
Add setStreamId method to EventTransformation to support transformati…
Browse files Browse the repository at this point in the history
…ons for new streams
  • Loading branch information
MartinYSpasov committed Oct 25, 2018
1 parent cb45b28 commit a989e19
Show file tree
Hide file tree
Showing 43 changed files with 1,307 additions and 643 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package uk.gov.sample.event.transformation.move;

import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.MOVE_AND_TRANSFORM;
import static java.util.UUID.randomUUID;

import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.TRANSFORM;

import uk.gov.justice.services.core.enveloper.Enveloper;
import uk.gov.justice.services.messaging.JsonEnvelope;
import uk.gov.justice.tools.eventsourcing.transformation.api.Action;
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;
import uk.gov.justice.tools.eventsourcing.transformation.api.annotation.Transformation;

import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;

@Transformation(pass = 2)
Expand All @@ -19,7 +23,7 @@ public class SampleTransformationMove2 implements EventTransformation {
@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.transformation.move.2")) {
return MOVE_AND_TRANSFORM;
return TRANSFORM;
}
return NO_ACTION;
}
Expand All @@ -34,5 +38,10 @@ public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
public void setEnveloper(final Enveloper enveloper) {
this.enveloper = enveloper;
}

@Override
public Optional<UUID> setStreamId(final JsonEnvelope event){
return Optional.of(randomUUID());
}
}

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package uk.gov.sample.event.transformation.move;

import static java.util.UUID.randomUUID;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;

import uk.gov.justice.services.core.enveloper.Enveloper;
Expand All @@ -8,6 +9,8 @@
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;
import uk.gov.justice.tools.eventsourcing.transformation.api.annotation.Transformation;

import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;

@Transformation(pass = 6)
Expand All @@ -18,7 +21,7 @@ public class SampleTransformationMoveWithoutBackUp implements EventTransformatio
@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.transformation.move.without.backup")) {
return new Action(false, false, false, true);
return new Action(true, false, false);
}
return NO_ACTION;
}
Expand All @@ -34,4 +37,9 @@ public void setEnveloper(final Enveloper enveloper) {
this.enveloper = enveloper;
}

@Override
public Optional<UUID> setStreamId(final JsonEnvelope event){
return Optional.of(randomUUID());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ public class SampleTransformationPass1 implements EventTransformation {

@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.events.name.pass")) {
if (event.metadata().name().equalsIgnoreCase("sample.events.name.sequence")) {
return TRANSFORM;
}
return NO_ACTION;
}

@Override
public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.transformedName.pass").apply(event.payload());
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.name.sequence1").apply(event.payload());
return Stream.of(transformedEnvelope);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ public class SampleTransformationPass2 implements EventTransformation {

@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.events.transformedName.pass")) {
if (event.metadata().name().equalsIgnoreCase("sample.events.name.sequence1")) {
return TRANSFORM;
}
return NO_ACTION;
}

@Override
public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.transformedName.pass2").apply(event.payload());
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.name.sequence2").apply(event.payload());
return Stream.of(transformedEnvelope);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package uk.gov.sample.event.transformation.pass;

import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;

import uk.gov.justice.services.core.enveloper.Enveloper;
import uk.gov.justice.services.messaging.JsonEnvelope;
import uk.gov.justice.tools.eventsourcing.transformation.api.Action;
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;
import uk.gov.justice.tools.eventsourcing.transformation.api.annotation.Transformation;

import java.util.stream.Stream;

@Transformation(pass = 7)
public class SampleTransformationSequenceScenario1 implements EventTransformation {

private Enveloper enveloper;

@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.events.name.pass1.sequence")) {
return new Action(true, false, false);
}
return NO_ACTION;
}

@Override
public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.name.pass1.sequence1").apply(event.payload());
final JsonEnvelope transformedEnvelope2 = enveloper.withMetadataFrom(event, "sample.events.name.pass1.sequence2").apply(event.payload());
final JsonEnvelope transformedEnvelope3 = enveloper.withMetadataFrom(event, "sample.events.name.pass1.sequence3").apply(event.payload());
return Stream.of(transformedEnvelope, transformedEnvelope2, transformedEnvelope3);
}

@Override
public void setEnveloper(final Enveloper enveloper) {
this.enveloper = enveloper;
}
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package uk.gov.sample.event.transformation.pass;

import static java.util.UUID.fromString;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;

import uk.gov.justice.services.core.enveloper.Enveloper;
import uk.gov.justice.services.messaging.JsonEnvelope;
import uk.gov.justice.tools.eventsourcing.transformation.api.Action;
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;
import uk.gov.justice.tools.eventsourcing.transformation.api.annotation.Transformation;

import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;

@Transformation(pass = 8)
public class SampleTransformationSequenceScenario2 implements EventTransformation {

private Enveloper enveloper;

@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.events.name.pass1.sequence2")) {
return new Action(true, false, false);
}
return NO_ACTION;
}

@Override
public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.name.pass1.sequence2").apply(event.payload());
return Stream.of(transformedEnvelope);
}

@Override
public void setEnveloper(final Enveloper enveloper) {
this.enveloper = enveloper;
}

@Override
public Optional<UUID> setStreamId(final JsonEnvelope event) {
return Optional.of(fromString("80764cb1-a031-4328-b59e-6c18b0974a84"));
}

}


Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package uk.gov.sample.event.transformation.pass;

import static java.util.UUID.fromString;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;

import uk.gov.justice.services.core.enveloper.Enveloper;
import uk.gov.justice.services.messaging.JsonEnvelope;
import uk.gov.justice.tools.eventsourcing.transformation.api.Action;
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;
import uk.gov.justice.tools.eventsourcing.transformation.api.annotation.Transformation;

import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;

@Transformation(pass = 9)
public class SampleTransformationSequenceScenario3 implements EventTransformation {

private Enveloper enveloper;

@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.events.name.pass1.sequence3")) {
return new Action(true, false, false);
}
return NO_ACTION;
}

@Override
public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.events.name.pass1.sequence3").apply(event.payload());
return Stream.of(transformedEnvelope);
}

@Override
public void setEnveloper(final Enveloper enveloper) {
this.enveloper = enveloper;
}

@Override
public Optional<UUID> setStreamId(final JsonEnvelope event) {
return Optional.of(fromString("80764cb1-a031-4328-b59e-6c18b0974a84"));
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public Action actionFor(final JsonEnvelope event) {
if (EVENTS_TO_DEACTIVATE.contains(event.metadata().name().toLowerCase())) {
return DEACTIVATE;
} else if (event.metadata().name().toLowerCase().endsWith(EVENT_NAME_ENDS_WITH)) {
return new Action(true, true, false, false);
return new Action(true, true, false);
}

return NO_ACTION;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package uk.gov.sample.event.transformation.transform;

import static java.util.UUID.fromString;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.TRANSFORM;

import uk.gov.justice.services.core.enveloper.Enveloper;
import uk.gov.justice.services.messaging.JsonEnvelope;
import uk.gov.justice.tools.eventsourcing.transformation.api.Action;
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;
import uk.gov.justice.tools.eventsourcing.transformation.api.annotation.Transformation;

import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;

@Transformation
public class SampleTransformationWithStreamId implements EventTransformation {

private Enveloper enveloper;

@Override
public Action actionFor(final JsonEnvelope event) {
if (event.metadata().name().equalsIgnoreCase("sample.transformation.with.stream.id")) {
return TRANSFORM;
}
return NO_ACTION;
}

@Override
public Stream<JsonEnvelope> apply(final JsonEnvelope event) {
final JsonEnvelope transformedEnvelope = enveloper.withMetadataFrom(event, "sample.transformation.with.stream.id.transformed").apply(event.payload());
return Stream.of(transformedEnvelope);
}

@Override
public void setEnveloper(final Enveloper enveloper) {
this.enveloper = enveloper;
}

@Override
public Optional<UUID> setStreamId(final JsonEnvelope event) {
return Optional.of(fromString("80764cb1-a031-4328-b59e-6c18b0974a84"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,8 @@

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)

public class SampleTransformationMove1Test {

private static final String SOURCE_EVENT_NAME = "sample.transformation.move.1";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,20 @@
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom;
import static uk.gov.justice.services.messaging.spi.DefaultJsonMetadata.metadataBuilder;
import static uk.gov.justice.services.test.utils.core.enveloper.EnveloperFactory.createEnveloper;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.MOVE_AND_TRANSFORM;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.NO_ACTION;
import static uk.gov.justice.tools.eventsourcing.transformation.api.Action.TRANSFORM;

import uk.gov.justice.services.core.enveloper.Enveloper;
import uk.gov.justice.services.messaging.JsonEnvelope;
import uk.gov.justice.tools.eventsourcing.transformation.api.EventTransformation;

import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;

import org.junit.Before;
Expand Down Expand Up @@ -49,7 +52,7 @@ public void shouldCreateInstanceOfEventTransformation() {
public void shouldSetTransformAction() {
final JsonEnvelope event = buildEnvelope(SOURCE_EVENT_NAME);

assertThat(sampleTransformationMove2.actionFor(event), is(MOVE_AND_TRANSFORM));
assertThat(sampleTransformationMove2.actionFor(event), is(TRANSFORM));
}

@Test
Expand All @@ -59,6 +62,14 @@ public void shouldSetNoAction() {
assertThat(sampleTransformationMove2.actionFor(event), is(NO_ACTION));
}

@Test
public void shouldReturnStreamId() {
final JsonEnvelope event = buildEnvelope(SOURCE_EVENT_NAME);
final Optional<UUID> streamId = sampleTransformationMove2.setStreamId(event);
assertTrue(streamId.isPresent());
}


@Test
public void shouldCreateTransformation() {
final JsonEnvelope event = buildEnvelope(SOURCE_EVENT_NAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,7 @@

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class SampleTransformationMove3Test {

private static final String SOURCE_EVENT_NAME = "sample.transformation.move.3";
Expand Down
Loading

0 comments on commit a989e19

Please sign in to comment.