diff --git a/src/main/java/com/r35157/libs/notification/AddressedNotifier.java b/src/main/java/com/r35157/libs/notification/AddressedNotifier.java new file mode 100644 index 0000000..05ff801 --- /dev/null +++ b/src/main/java/com/r35157/libs/notification/AddressedNotifier.java @@ -0,0 +1,14 @@ +package com.r35157.libs.notification; + +import java.io.IOException; + +public interface AddressedNotifier< + D extends NotificationDestination, + M extends NotificationMessage> +{ + void push(D destination, M message) throws IOException; + + default BoundNotifier bind(D destination) { + return message -> push(destination, message); + } +} \ No newline at end of file diff --git a/src/main/java/com/r35157/libs/notification/BoundNotifier.java b/src/main/java/com/r35157/libs/notification/BoundNotifier.java new file mode 100644 index 0000000..c2f2e0e --- /dev/null +++ b/src/main/java/com/r35157/libs/notification/BoundNotifier.java @@ -0,0 +1,7 @@ +package com.r35157.libs.notification; + +import java.io.IOException; + +public interface BoundNotifier { + void push(M message) throws IOException; +} \ No newline at end of file diff --git a/src/main/java/com/r35157/libs/notification/NotificationDestination.java b/src/main/java/com/r35157/libs/notification/NotificationDestination.java new file mode 100644 index 0000000..ec80aaa --- /dev/null +++ b/src/main/java/com/r35157/libs/notification/NotificationDestination.java @@ -0,0 +1,3 @@ +package com.r35157.libs.notification; + +public interface NotificationDestination {} diff --git a/src/main/java/com/r35157/libs/notification/NotificationMessage.java b/src/main/java/com/r35157/libs/notification/NotificationMessage.java new file mode 100644 index 0000000..3778b62 --- /dev/null +++ b/src/main/java/com/r35157/libs/notification/NotificationMessage.java @@ -0,0 +1,4 @@ +package com.r35157.libs.notification; + +public interface NotificationMessage { +}