Notification.java

1
package com.reallifedeveloper.common.application.notification;
2
3
import java.time.ZonedDateTime;
4
5
import org.checkerframework.checker.nullness.qual.Nullable;
6
7
import com.reallifedeveloper.common.domain.ErrorHandling;
8
import com.reallifedeveloper.common.domain.event.DomainEvent;
9
10
/**
11
 * A notification is information about a domain event that has occurred, and that has been stored in an
12
 * {@link com.reallifedeveloper.common.application.eventstore.EventStore}. The notification can be sent to external systems that need to be
13
 * informed about the event.
14
 *
15
 * @param eventType     the type of the event
16
 * @param storedEventId the stored event ID, must not be {@code null}
17
 * @param occurredOn    the timestamp the event occurred
18
 * @param event         the domain event that occurred, must not be {@code null}
19
 *
20
 * @author RealLifeDeveloper
21
 */
22
public record Notification(@Nullable String eventType, Long storedEventId, @Nullable ZonedDateTime occurredOn, DomainEvent event) {
23
24
    /**
25
     * Creates a new {@code Notification}.
26
     *
27
     * @throws IllegalArgumentException if {@code event} or {@code storedEventId} is {@code null}
28
     */
29
    public Notification {
30
        ErrorHandling.checkNull("Arguments must not be null: event=%s, storedEventId=%s", event, storedEventId);
31
    }
32
33
    /**
34
     * A factory method that sets the {@code eventType} to the name of the event class and {@code occurredOn} to the date and time when the
35
     * event occurred.
36
     *
37
     * @param event         the event to store and use to set {@code eventType} and {@code occurredOn}
38
     * @param storedEventId the stored event ID to store
39
     *
40
     * @return a new {@code Notification}
41
     *
42
     * @throws IllegalArgumentException if {@code event} or {@code storedEventId} is {@code null}
43
     */
44
    public static Notification create(DomainEvent event, Long storedEventId) {
45 1 1. create : removed call to com/reallifedeveloper/common/domain/ErrorHandling::checkNull → KILLED
        ErrorHandling.checkNull("Arguments must not be null: event=%s, storedEventId=%s", event, storedEventId);
46 1 1. create : replaced return value with null for com/reallifedeveloper/common/application/notification/Notification::create → RUN_ERROR
        return new Notification(event.getClass().getName(), storedEventId, event.eventOccurredOn(), event);
47
    }
48
49
}

Mutations

45

1.1
Location : create
Killed by : com.reallifedeveloper.common.application.notification.NotificationTest.[engine:junit-jupiter]/[class:com.reallifedeveloper.common.application.notification.NotificationTest]/[method:createNullEvent()]
removed call to com/reallifedeveloper/common/domain/ErrorHandling::checkNull → KILLED

46

1.1
Location : create
Killed by : none
replaced return value with null for com/reallifedeveloper/common/application/notification/Notification::create → RUN_ERROR

Active mutators

Tests examined


Report generated by PIT 1.20.0