Skip to content

Commit e7a7c64

Browse files
Merge pull request #569 from BIBSYSDEV/collect-publication-event-handlers
Collect publication event handlers
2 parents 6d1fcc4 + 5327f53 commit e7a7c64

File tree

43 files changed

+106
-190
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+106
-190
lines changed

dynamodb-event-emitter/build.gradle

Lines changed: 0 additions & 19 deletions
This file was deleted.

dynamodb-event-emitter/src/main/resources/log4j2.xml

Lines changed: 0 additions & 19 deletions
This file was deleted.

publication-event-dtopublicationdoi-producer/build.gradle

Lines changed: 0 additions & 28 deletions
This file was deleted.

publication-event-dtopublicationdoi-producer/src/main/resources/log4j2.xml

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
dependencies {
2+
implementation project(":publication-events")
3+
implementation project(":publication-doi-commons")
4+
implementation project(":storage-model")
5+
6+
implementation(libs.nva.datamodel) {
7+
exclude group: 'com.github.bibsysdev', module: 'nva-commons'
8+
}
9+
implementation libs.nva.eventhandlers
10+
implementation libs.nva.core
11+
12+
13+
implementation libs.aws.core
14+
implementation libs.aws.lambda.java.core
15+
implementation libs.aws.sdk2.eventbridge
16+
implementation libs.aws.lambda.events
17+
implementation libs.aws.sdk.dynamodb
18+
implementation libs.aws.java.sdk.core
19+
20+
implementation libs.aws.sdk2.urlconnectionclient
21+
implementation libs.aws.sdk2.sqs
22+
implementation libs.aws.sdk2.httpClientApi
23+
implementation libs.aws.sdk2.auth
24+
implementation libs.aws.sdk2.regions
25+
implementation libs.aws.sdk2.core
26+
27+
implementation libs.jackson.annotations
28+
implementation libs.jackson.databind
29+
implementation libs.jackson.core
30+
31+
32+
testImplementation(libs.javers) {
33+
because "For comparing java objects and detailing the differences in readable way"
34+
}
35+
testImplementation libs.nva.identifiers
36+
37+
compileOnly(libs.nva.identifiers){
38+
because "PMD complains about no/unit/nva/identifiers/SortableIdentifier"
39+
}
40+
41+
}
42+
43+
44+
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.event.producer;
1+
package no.unit.nva.publication.events.doirequests;
22

33
import static java.util.Objects.isNull;
44
import static java.util.Objects.nonNull;

dynamodb-event-emitter/src/main/java/no/unit/nva/doi/lambda/AppEnv.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/dynamodbstream/DynamoDbStreamEventsConstants.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
package no.unit.nva.doi.lambda;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import nva.commons.core.Environment;
44
import nva.commons.core.JacocoGenerated;
55

66
@JacocoGenerated
7-
public final class AppEnv {
7+
public final class DynamoDbStreamEventsConstants {
88

99
public static final String EVENT_BUS_NAME = "EVENT_BUS_NAME";
1010
public static final String DLQ_URL = "DLQ_URL";
1111
public static final String MAX_ATTEMPT = "MAX_ATTEMPT";
1212
private static final Environment ENVIRONMENT = new Environment();
1313

1414
@JacocoGenerated
15-
private AppEnv() {
15+
private DynamoDbStreamEventsConstants() {
1616
}
1717

1818
@JacocoGenerated

dynamodb-event-emitter/src/main/java/no/unit/nva/doi/lambda/DynamodbEventFanoutStreamRecordsEventBridgeHandler.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/dynamodbstream/DynamodbEventFanoutStreamRecordsEventBridgeHandler.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
package no.unit.nva.doi.lambda;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.RequestHandler;
55
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
66
import java.time.Duration;
7-
import no.unit.nva.doi.publisher.EventBridgePublisher;
8-
import no.unit.nva.doi.publisher.EventBridgeRetryClient;
9-
import no.unit.nva.doi.publisher.EventPublisher;
10-
import no.unit.nva.doi.publisher.SqsEventPublisher;
117
import nva.commons.core.JacocoGenerated;
128
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
139
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
@@ -45,13 +41,13 @@ private static EventPublisher defaultEventBridgePublisher() {
4541
return new EventBridgePublisher(
4642
defaultEventBridgeRetryClient(),
4743
defaultFailedEventPublisher(),
48-
AppEnv.getEventBusName()
44+
DynamoDbStreamEventsConstants.getEventBusName()
4945
);
5046
}
5147

5248
@JacocoGenerated
5349
private static EventPublisher defaultFailedEventPublisher() {
54-
return new SqsEventPublisher(defaultSqsClient(), AppEnv.getDlqUrl());
50+
return new SqsEventPublisher(defaultSqsClient(), DynamoDbStreamEventsConstants.getDlqUrl());
5551
}
5652

5753
@JacocoGenerated
@@ -65,7 +61,7 @@ private static SqsClient defaultSqsClient() {
6561

6662
@JacocoGenerated
6763
private static EventBridgeRetryClient defaultEventBridgeRetryClient() {
68-
return new EventBridgeRetryClient(defaultEventBridgeClient(), AppEnv.getMaxAttempt());
64+
return new EventBridgeRetryClient(defaultEventBridgeClient(), DynamoDbStreamEventsConstants.getMaxAttempt());
6965
}
7066

7167
@JacocoGenerated

dynamodb-event-emitter/src/main/java/no/unit/nva/doi/publisher/EventBridgePublisher.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/dynamodbstream/EventBridgePublisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
44
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord;

dynamodb-event-emitter/src/main/java/no/unit/nva/doi/publisher/EventBridgeRetryClient.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/dynamodbstream/EventBridgeRetryClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import java.util.Collections;
44
import java.util.List;

dynamodb-event-emitter/src/main/java/no/unit/nva/doi/publisher/EventPublisher.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/dynamodbstream/EventPublisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
44

dynamodb-event-emitter/src/main/java/no/unit/nva/doi/publisher/SqsEventPublisher.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/dynamodbstream/SqsEventPublisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
44
import com.fasterxml.jackson.annotation.JsonInclude;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.publication.events;
1+
package no.unit.nva.publication.events.fanout;
22

33
import static com.amazonaws.util.BinaryUtils.copyAllBytesFrom;
44
import com.amazonaws.services.dynamodbv2.document.Item;

publication-fanout-handler/src/main/java/no/unit/nva/publication/events/PublicationFanoutHandler.java renamed to publication-event-handlers/src/main/java/no/unit/nva/publication/events/fanout/PublicationFanoutHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package no.unit.nva.publication.events;
1+
package no.unit.nva.publication.events.fanout;
22

3-
import static no.unit.nva.publication.events.DynamodbStreamRecordPublicationMapper.toPublication;
3+
import static no.unit.nva.publication.events.fanout.DynamodbStreamRecordPublicationMapper.toPublication;
44
import static nva.commons.core.attempt.Try.attempt;
55
import com.amazonaws.services.lambda.runtime.Context;
66
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
@@ -10,6 +10,7 @@
1010
import no.unit.nva.events.handlers.EventHandler;
1111
import no.unit.nva.events.models.AwsEventBridgeEvent;
1212
import no.unit.nva.model.Publication;
13+
import no.unit.nva.publication.events.DynamoEntryUpdateEvent;
1314
import nva.commons.core.JacocoGenerated;
1415
import nva.commons.core.JsonUtils;
1516
import org.slf4j.Logger;
Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package no.unit.nva.doi.event.producer;
1+
package no.unit.nva.publication.events.doirequests;
22

3-
import static no.unit.nva.doi.event.producer.DoiRequestEventProducer.EMPTY_EVENT;
4-
import static no.unit.nva.doi.event.producer.DoiRequestEventProducer.NO_RESOURCE_IDENTIFIER_ERROR;
3+
import static no.unit.nva.publication.events.doirequests.DoiRequestEventProducer.EMPTY_EVENT;
4+
import static no.unit.nva.publication.events.doirequests.DoiRequestEventProducer.NO_RESOURCE_IDENTIFIER_ERROR;
55
import static nva.commons.core.JsonUtils.objectMapper;
66
import static nva.commons.core.attempt.Try.attempt;
77
import static org.hamcrest.MatcherAssert.assertThat;
@@ -36,31 +36,33 @@
3636

3737
class DoiRequestEventProducerTest {
3838

39-
public static final String EVENT_PUBLICATION_WITH_DOI_IS_UPDATED =
40-
"resource_update_event_updated_metadata_with_existing_doi.json";
41-
public static final String DOI_FIELD = "doi";
42-
public static final JsonPointer PUBLICATION_DATA_FIELD = JsonPointer.compile(
39+
private static final String DOI_FIELD = "doi";
40+
private static final JsonPointer PUBLICATION_DATA_FIELD = JsonPointer.compile(
4341
"/detail/responsePayload/newPublication");
42+
private static final String EVENT_PUBLICATION_WITH_DOI_IS_UPDATED =
43+
"doirequests/resource_update_event_updated_metadata_with_existing_doi.json";
4444
private static final String RESOURCE_UPDATE_EVENT_OLD_AND_NEW_PRESENT_DIFFERENT_NEW_HAS_DOI =
45-
"resource_update_event_old_and_new_present_different_new_has_doi.json";
45+
"doirequests/resource_update_event_old_and_new_present_different_new_has_doi.json";
4646
private static final String RESOURCE_UPDATE_EVENT_OLD_AND_NEW_PRESENT_DIFFERENT_NO_DOI =
47-
"resource_update_event_old_and_new_present_different_new_has_doi.json";
47+
"doirequests/resource_update_event_old_and_new_present_different_new_has_doi.json";
4848
private static final String RESOURCE_UPDATE_EVENT_OLD_AND_NEW_PRESENT_EQUAL =
49-
"resource_update_event_old_and_new_present_equal.json";
50-
private static final String RESOURCE_UPDATE_EVENT_OLD_ONLY = "resource_update_event_old_only.json";
49+
"doirequests/resource_update_event_old_and_new_present_equal.json";
50+
private static final String RESOURCE_UPDATE_EVENT_OLD_ONLY =
51+
"doirequests/resource_update_event_old_only.json";
5152
private static final String RESOURCE_UPDATE_NEW_IMAGE_ONLY_WITHOUT_DOI =
52-
"resource_update_event_new_image_only_no_doi.json";
53+
"doirequests/resource_update_event_new_image_only_no_doi.json";
5354
private static final String RESOURCE_UPDATE_NEW_IMAGE_ONLY_WITH_DOI =
54-
"resource_update_event_new_image_only_with_doi.json";
55+
"doirequests/resource_update_event_new_image_only_with_doi.json";
5556
private static final String PUBLICATION_WITHOUT_DOI_REQUEST =
56-
"resource_update_event_publication_without_doi_request.json";
57-
private static final String PUBLICATION_WITHOUT_IDENTIFIER = "resource_update_event_publication_without_id.json";
57+
"doirequests/resource_update_event_publication_without_doi_request.json";
58+
private static final String PUBLICATION_WITHOUT_IDENTIFIER =
59+
"doirequests/resource_update_event_publication_without_id.json";
5860
private static final String RESOURCE_UPDATE_EVENT_DOI_REQUEST_APPROVED =
59-
"resource_update_event_doi_request_approved_for_publishe_publication.json";
60-
61-
public static final Javers JAVERS = JaversBuilder.javers().build();
61+
"doirequests/resource_update_event_doi_request_approved_for_publishe_publication.json";
6262
private static final String EVENT_PUBLICATION_UPDATED_ONLY_BY_MODIFIED_DATE =
63-
"resource_update_event_old_and_new_present_with_doi_and_different_modified_date.json";
63+
"doirequests/resource_update_event_old_and_new_present_with_doi_and_different_modified_date.json";
64+
65+
private static final Javers JAVERS = JaversBuilder.javers().build();
6466
private DoiRequestEventProducer handler;
6567
private Context context;
6668
private ByteArrayOutputStream outputStream;

dynamodb-event-emitter/src/test/java/no/unit/nva/doi/lambda/DynamodbEventFanoutStreamRecordsEventBridgeHandlerTest.java renamed to publication-event-handlers/src/test/java/no/unit/nva/publication/events/dynamodbstream/DynamodbEventFanoutStreamRecordsEventBridgeHandlerTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
package no.unit.nva.doi.lambda;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
55
import com.fasterxml.jackson.databind.ObjectMapper;
66
import java.io.File;
77
import java.io.IOException;
8-
import no.unit.nva.doi.publisher.EventPublisher;
8+
import java.nio.file.Path;
9+
import nva.commons.core.ioutils.IoUtils;
910
import org.junit.jupiter.api.Test;
1011
import org.mockito.Mockito;
1112

1213
public class DynamodbEventFanoutStreamRecordsEventBridgeHandlerTest {
1314

14-
public static final String DYNAMODB_STREAM_EVENT = "src/test/resources/event.json";
15+
public static final String DYNAMODB_STREAM_EVENT =
16+
IoUtils.stringFromResources(Path.of("dynamodbstreams/event.json"));
1517
private final ObjectMapper objectMapper = new ObjectMapper();
1618

1719
@Test
@@ -26,9 +28,7 @@ public void handleRequestWritesToConsoleOnValidEvent() throws Exception {
2628

2729
DynamodbEventFanoutStreamRecordsEventBridgeHandler handler = createHandler(eventPublisher);
2830
Context context = Mockito.mock(Context.class);
29-
File eventFile = new File(DYNAMODB_STREAM_EVENT);
30-
DynamodbEvent event = objectMapper.readValue(eventFile, DynamodbEvent.class);
31-
31+
DynamodbEvent event = objectMapper.readValue(DYNAMODB_STREAM_EVENT, DynamodbEvent.class);
3232
handler.handleRequest(event, context);
3333
}
3434

dynamodb-event-emitter/src/test/java/no/unit/nva/doi/publisher/EventBridgePublisherTest.java renamed to publication-event-handlers/src/test/java/no/unit/nva/publication/events/dynamodbstream/EventBridgePublisherTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import static org.mockito.ArgumentMatchers.any;
44
import static org.mockito.Mockito.verify;
@@ -46,7 +46,7 @@ public void setup() {
4646
MockitoAnnotations.initMocks(this);
4747

4848
publisher = new EventBridgePublisher(eventBridge, failedEventPublisher,
49-
EVENT_BUS, Clock.fixed(NOW, ZoneId.systemDefault()));
49+
EVENT_BUS, Clock.fixed(NOW, ZoneId.systemDefault()));
5050
}
5151

5252
@Test

dynamodb-event-emitter/src/test/java/no/unit/nva/doi/publisher/EventBridgeRetryClientTest.java renamed to publication-event-handlers/src/test/java/no/unit/nva/publication/events/dynamodbstream/EventBridgeRetryClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import static java.util.Arrays.asList;
44
import static java.util.Collections.emptyList;

dynamodb-event-emitter/src/test/java/no/unit/nva/doi/publisher/SqsPublisherTest.java renamed to publication-event-handlers/src/test/java/no/unit/nva/publication/events/dynamodbstream/SqsPublisherTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
package no.unit.nva.doi.publisher;
1+
package no.unit.nva.publication.events.dynamodbstream;
22

33
import static org.mockito.Mockito.verify;
44
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
55
import java.util.Collections;
66
import java.util.UUID;
7+
import no.unit.nva.publication.events.dynamodbstream.EventPublisher;
8+
import no.unit.nva.publication.events.dynamodbstream.SqsEventPublisher;
79
import org.junit.jupiter.api.BeforeEach;
810
import org.junit.jupiter.api.Test;
911
import org.mockito.Mock;

0 commit comments

Comments
 (0)