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
    public Notification {
28
        ErrorHandling.checkNull("Arguments must not be null: event=%s, storedEventId=%s", event, storedEventId);
29
    }
30
31
    /**
32
     * 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
33
     * event occurred.
34
     *
35
     * @param event         the event to store and use to set {@code eventType} and {@code occurredOn}
36
     * @param storedEventId the stored event ID to store
37
     *
38
     * @return a new {@code Notification}
39
     *
40
     * @throws IllegalArgumentException if {@code event} or {@code storedEventId} is {@code null}
41
     */
42
    public static Notification create(DomainEvent event, Long storedEventId) {
43 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);
44 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);
45
    }
46
47
}

Mutations

43

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

44

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.23.0