Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add setStreamId method to EventTransformation to support transformations for new streams #17

Merged
merged 1 commit into from
Oct 25, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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