From 9dbaedbc8d243427248aac17802fdc653935b4e7 Mon Sep 17 00:00:00 2001
From: DieGurke <55625494+DieGurke@users.noreply.github.com>
Date: Wed, 5 Feb 2020 22:20:04 +0100
Subject: [PATCH 1/6] Contacts events
Created 2 events used for the contact list (add/remove) of the client
and requesting a list of users form the server.
---
.../java/envoy/event/ContactOperation.java | 50 +++++++++++++++++++
.../java/envoy/event/ContactsRequest.java | 32 ++++++++++++
2 files changed, 82 insertions(+)
create mode 100644 src/main/java/envoy/event/ContactOperation.java
create mode 100644 src/main/java/envoy/event/ContactsRequest.java
diff --git a/src/main/java/envoy/event/ContactOperation.java b/src/main/java/envoy/event/ContactOperation.java
new file mode 100644
index 0000000..1a5a108
--- /dev/null
+++ b/src/main/java/envoy/event/ContactOperation.java
@@ -0,0 +1,50 @@
+package envoy.event;
+
+import envoy.data.User;
+
+/**
+ * Project: envoy-common
+ * File: ContactOperation.java
+ * Created: 05.02.2020
+ *
+ * @author Maximilian Käfer
+ * @since Envoy Common v0.2-alpha
+ */
+public class ContactOperation implements Event {
+
+ public enum Operation {
+ ADD, REMOVE;
+ }
+
+ private final User contact;
+ private final Operation operationType;
+
+ private static final long serialVersionUID = -1166652868189511553L;
+
+ /**
+ * Initializes a {@link ContacsOperation}.
+ *
+ * @param operationType the {@link Operation} which should be executed on the
+ * {@link contact}.
+ * @since Envoy Common v0.2-alpha
+ */
+ public ContactOperation(User contact, Operation operationType) {
+ this.contact = contact;
+ this.operationType = operationType;
+ }
+
+ /**
+ * @return the {@link User}, which should be added/removed from the contacts
+ * list.
+ * @since Envoy Common v0.2-alpha
+ */
+ @Override
+ public User get() { return contact; }
+
+ /**
+ * @return the {@link Operation}, which should be executed with the contact,
+ * this event corresponds with.
+ * @since Envoy Common v0.2-alpha
+ */
+ public Operation getOperationType() { return operationType; }
+}
diff --git a/src/main/java/envoy/event/ContactsRequest.java b/src/main/java/envoy/event/ContactsRequest.java
new file mode 100644
index 0000000..04abcfd
--- /dev/null
+++ b/src/main/java/envoy/event/ContactsRequest.java
@@ -0,0 +1,32 @@
+package envoy.event;
+
+/**
+ * Project: envoy-common
+ * File: ContactsRequest.java
+ * Created: 05.02.2020
+ *
+ * @author Maximilian Käfer
+ * @since Envoy Common v0.2-alpha
+ */
+public class ContactsRequest implements Event {
+
+ private final String request;
+
+ private static final long serialVersionUID = -7969312055630533627L;
+
+ /**
+ * Initializes a {@link ContactsRequest}.
+ *
+ * @param request the string, which is entered by the client to request
+ * corresponding clients as contacts from the server.
+ * @since Envoy Common v0.2-alpha
+ */
+ public ContactsRequest(String request) { this.request = request; }
+
+ /**
+ * @return the request string
+ * @since Envoy Common v0.2-alpha
+ */
+ @Override
+ public String get() { return request; }
+}
From efe5fd30ce84f98b7932707908569e48cf06a60e Mon Sep 17 00:00:00 2001
From: DieGurke <55625494+DieGurke@users.noreply.github.com>
Date: Sat, 8 Feb 2020 13:44:05 +0100
Subject: [PATCH 2/6] Removed user id from Contacts
---
src/main/java/envoy/data/Contacts.java | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/src/main/java/envoy/data/Contacts.java b/src/main/java/envoy/data/Contacts.java
index bd19102..12846ac 100644
--- a/src/main/java/envoy/data/Contacts.java
+++ b/src/main/java/envoy/data/Contacts.java
@@ -13,7 +13,6 @@ import java.util.List;
*/
public class Contacts implements Serializable {
- private final long userId;
private final List contacts;
private static final long serialVersionUID = 136970804968152871L;
@@ -25,20 +24,13 @@ public class Contacts implements Serializable {
* @param contacts the contact list
* @since Envoy Common v0.2-alpha
*/
- public Contacts(long userId, List contacts) {
- this.userId = userId;
+ public Contacts(List contacts) {
this.contacts = contacts;
}
@Override
public String toString() { return String.format("Contacts[%s]", contacts); }
- /**
- * @return the ID of the user this contacts belong to
- * @since Envoy Common v0.2-alpha
- */
- public long getUserId() { return userId; }
-
/**
* @return a list of users messages can be sent to
* @since Envoy Common v0.2-alpha
From 06b8594f427674fd3e0229941c5019c2018acec8 Mon Sep 17 00:00:00 2001
From: DieGurke <55625494+DieGurke@users.noreply.github.com>
Date: Sun, 9 Feb 2020 23:58:09 +0100
Subject: [PATCH 3/6] Adjusted ContactsRequest
---
src/main/java/envoy/event/ContactsRequest.java | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/main/java/envoy/event/ContactsRequest.java b/src/main/java/envoy/event/ContactsRequest.java
index 04abcfd..00d593d 100644
--- a/src/main/java/envoy/event/ContactsRequest.java
+++ b/src/main/java/envoy/event/ContactsRequest.java
@@ -1,5 +1,7 @@
package envoy.event;
+import envoy.data.User;
+
/**
* Project: envoy-common
* File: ContactsRequest.java
@@ -11,6 +13,7 @@ package envoy.event;
public class ContactsRequest implements Event {
private final String request;
+ private final User client;
private static final long serialVersionUID = -7969312055630533627L;
@@ -21,7 +24,10 @@ public class ContactsRequest implements Event {
* corresponding clients as contacts from the server.
* @since Envoy Common v0.2-alpha
*/
- public ContactsRequest(String request) { this.request = request; }
+ public ContactsRequest(String request, User client) {
+ this.request = request;
+ this.client = client;
+ }
/**
* @return the request string
@@ -29,4 +35,9 @@ public class ContactsRequest implements Event {
*/
@Override
public String get() { return request; }
+
+ /**
+ * @return returns the client, which sent this request
+ */
+ public User getClient() { return client; }
}
From 4edfc781393ae0d90e0f4190d0eaf23792e228c8 Mon Sep 17 00:00:00 2001
From: kske
Date: Mon, 10 Feb 2020 21:44:20 +0100
Subject: [PATCH 4/6] Small refactoring
---
src/main/java/envoy/data/Contacts.java | 9 +--
.../java/envoy/event/ContactOperation.java | 50 --------------
.../envoy/event/ContactOperationEvent.java | 69 +++++++++++++++++++
.../envoy/event/ContactSearchRequest.java | 33 +++++++++
.../java/envoy/event/ContactsRequest.java | 43 ------------
5 files changed, 105 insertions(+), 99 deletions(-)
delete mode 100644 src/main/java/envoy/event/ContactOperation.java
create mode 100644 src/main/java/envoy/event/ContactOperationEvent.java
create mode 100644 src/main/java/envoy/event/ContactSearchRequest.java
delete mode 100644 src/main/java/envoy/event/ContactsRequest.java
diff --git a/src/main/java/envoy/data/Contacts.java b/src/main/java/envoy/data/Contacts.java
index 12846ac..c86c1fc 100644
--- a/src/main/java/envoy/data/Contacts.java
+++ b/src/main/java/envoy/data/Contacts.java
@@ -7,26 +7,23 @@ import java.util.List;
* Project: envoy-common
* File: Contacts.java
* Created: 02.01.2020
- *
+ *
* @author Kai S. K. Engelbart
* @since Envoy Common v0.2-alpha
*/
public class Contacts implements Serializable {
- private final List contacts;
+ private final List contacts;
private static final long serialVersionUID = 136970804968152871L;
/**
* Creates an instance of {@link Contacts}.
*
- * @param userId the ID of the user this contacts belong to
* @param contacts the contact list
* @since Envoy Common v0.2-alpha
*/
- public Contacts(List contacts) {
- this.contacts = contacts;
- }
+ public Contacts(List contacts) { this.contacts = contacts; }
@Override
public String toString() { return String.format("Contacts[%s]", contacts); }
diff --git a/src/main/java/envoy/event/ContactOperation.java b/src/main/java/envoy/event/ContactOperation.java
deleted file mode 100644
index 1a5a108..0000000
--- a/src/main/java/envoy/event/ContactOperation.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package envoy.event;
-
-import envoy.data.User;
-
-/**
- * Project: envoy-common
- * File: ContactOperation.java
- * Created: 05.02.2020
- *
- * @author Maximilian Käfer
- * @since Envoy Common v0.2-alpha
- */
-public class ContactOperation implements Event {
-
- public enum Operation {
- ADD, REMOVE;
- }
-
- private final User contact;
- private final Operation operationType;
-
- private static final long serialVersionUID = -1166652868189511553L;
-
- /**
- * Initializes a {@link ContacsOperation}.
- *
- * @param operationType the {@link Operation} which should be executed on the
- * {@link contact}.
- * @since Envoy Common v0.2-alpha
- */
- public ContactOperation(User contact, Operation operationType) {
- this.contact = contact;
- this.operationType = operationType;
- }
-
- /**
- * @return the {@link User}, which should be added/removed from the contacts
- * list.
- * @since Envoy Common v0.2-alpha
- */
- @Override
- public User get() { return contact; }
-
- /**
- * @return the {@link Operation}, which should be executed with the contact,
- * this event corresponds with.
- * @since Envoy Common v0.2-alpha
- */
- public Operation getOperationType() { return operationType; }
-}
diff --git a/src/main/java/envoy/event/ContactOperationEvent.java b/src/main/java/envoy/event/ContactOperationEvent.java
new file mode 100644
index 0000000..643e04b
--- /dev/null
+++ b/src/main/java/envoy/event/ContactOperationEvent.java
@@ -0,0 +1,69 @@
+package envoy.event;
+
+import envoy.data.User;
+
+/**
+ * Signifies the modification of a contact list.
+ *
+ * Project: envoy-common
+ * File: ContactOperationEvent.java
+ * Created: 05.02.2020
+ *
+ * @author Maximilian Käfer
+ * @since Envoy Common v0.2-alpha
+ */
+public class ContactOperationEvent implements Event {
+
+ /**
+ * Specifies the operation performed on a contact list.
+ *
+ * Project: envoy-common
+ * File: ContactOperationEvent.java
+ * Created: 05.02.2020
+ *
+ * @author Maximilian Käfer
+ * @since Envoy Common v0.2-alpha
+ */
+ public enum Operation {
+
+ /**
+ * Adds a user to the contact list.
+ */
+ ADD,
+
+ /**
+ * Removes a user from the contact list.
+ */
+ REMOVE;
+ }
+
+ private final User contact;
+ private final Operation operationType;
+
+ private static final long serialVersionUID = -1166652868189511553L;
+
+ /**
+ * Initializes a {@link ContactOperationEvent}.
+ *
+ * @param contact the user on which the operation is performed
+ * @param operationType the type of operation to perform
+ * @since Envoy Common v0.2-alpha
+ */
+ public ContactOperationEvent(User contact, Operation operationType) {
+ this.contact = contact;
+ this.operationType = operationType;
+ }
+
+ /**
+ * @return the user to perform an operation on
+ * @since Envoy Common v0.2-alpha
+ */
+ @Override
+ public User get() { return contact; }
+
+ /**
+ * @return the type of operation to perform
+ * @since Envoy Common v0.2-alpha
+ */
+ public Operation getOperationType() { return operationType; }
+}
diff --git a/src/main/java/envoy/event/ContactSearchRequest.java b/src/main/java/envoy/event/ContactSearchRequest.java
new file mode 100644
index 0000000..701c1dc
--- /dev/null
+++ b/src/main/java/envoy/event/ContactSearchRequest.java
@@ -0,0 +1,33 @@
+package envoy.event;
+
+/**
+ * Requests a contact search from the server.
+ *
+ * Project: envoy-common
+ * File: ContactSearchRequest.java
+ * Created: 05.02.2020
+ *
+ * @author Maximilian Käfer
+ * @since Envoy Common v0.2-alpha
+ */
+public class ContactSearchRequest implements Event {
+
+ private final String searchPhrase;
+
+ private static final long serialVersionUID = -7969312055630533627L;
+
+ /**
+ * Initializes a {@link ContactSearchRequest}.
+ *
+ * @param searchPhrase the search phrase to use in the contact search
+ * @since Envoy Common v0.2-alpha
+ */
+ public ContactSearchRequest(String searchPhrase) { this.searchPhrase = searchPhrase; }
+
+ /**
+ * @return the search phrase
+ * @since Envoy Common v0.2-alpha
+ */
+ @Override
+ public String get() { return searchPhrase; }
+}
diff --git a/src/main/java/envoy/event/ContactsRequest.java b/src/main/java/envoy/event/ContactsRequest.java
deleted file mode 100644
index 00d593d..0000000
--- a/src/main/java/envoy/event/ContactsRequest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package envoy.event;
-
-import envoy.data.User;
-
-/**
- * Project: envoy-common
- * File: ContactsRequest.java
- * Created: 05.02.2020
- *
- * @author Maximilian Käfer
- * @since Envoy Common v0.2-alpha
- */
-public class ContactsRequest implements Event {
-
- private final String request;
- private final User client;
-
- private static final long serialVersionUID = -7969312055630533627L;
-
- /**
- * Initializes a {@link ContactsRequest}.
- *
- * @param request the string, which is entered by the client to request
- * corresponding clients as contacts from the server.
- * @since Envoy Common v0.2-alpha
- */
- public ContactsRequest(String request, User client) {
- this.request = request;
- this.client = client;
- }
-
- /**
- * @return the request string
- * @since Envoy Common v0.2-alpha
- */
- @Override
- public String get() { return request; }
-
- /**
- * @return returns the client, which sent this request
- */
- public User getClient() { return client; }
-}
From 189432e798153533e500e89c1d540cfe65b02f0a Mon Sep 17 00:00:00 2001
From: kske
Date: Tue, 11 Feb 2020 16:53:41 +0100
Subject: [PATCH 5/6] Made Event an abstract class, added
ContactSearchResult
---
.../envoy/event/ContactOperationEvent.java | 16 +++-------
.../envoy/event/ContactSearchRequest.java | 13 ++------
.../java/envoy/event/ContactSearchResult.java | 28 +++++++++++++++++
src/main/java/envoy/event/Event.java | 30 +++++++++++++++++--
.../envoy/event/HandshakeRejectionEvent.java | 15 ++--------
.../java/envoy/event/IdGeneratorRequest.java | 2 +-
.../envoy/event/MessageStatusChangeEvent.java | 14 ++-------
.../envoy/event/UserStatusChangeEvent.java | 18 ++++-------
8 files changed, 74 insertions(+), 62 deletions(-)
create mode 100644 src/main/java/envoy/event/ContactSearchResult.java
diff --git a/src/main/java/envoy/event/ContactOperationEvent.java b/src/main/java/envoy/event/ContactOperationEvent.java
index 643e04b..7410e65 100644
--- a/src/main/java/envoy/event/ContactOperationEvent.java
+++ b/src/main/java/envoy/event/ContactOperationEvent.java
@@ -12,7 +12,7 @@ import envoy.data.User;
* @author Maximilian Käfer
* @since Envoy Common v0.2-alpha
*/
-public class ContactOperationEvent implements Event {
+public class ContactOperationEvent extends Event {
/**
* Specifies the operation performed on a contact list.
@@ -37,8 +37,7 @@ public class ContactOperationEvent implements Event {
REMOVE;
}
- private final User contact;
- private final Operation operationType;
+ private final Operation operationType;
private static final long serialVersionUID = -1166652868189511553L;
@@ -50,17 +49,10 @@ public class ContactOperationEvent implements Event {
* @since Envoy Common v0.2-alpha
*/
public ContactOperationEvent(User contact, Operation operationType) {
- this.contact = contact;
- this.operationType = operationType;
+ super(contact);
+ this.operationType = operationType;
}
- /**
- * @return the user to perform an operation on
- * @since Envoy Common v0.2-alpha
- */
- @Override
- public User get() { return contact; }
-
/**
* @return the type of operation to perform
* @since Envoy Common v0.2-alpha
diff --git a/src/main/java/envoy/event/ContactSearchRequest.java b/src/main/java/envoy/event/ContactSearchRequest.java
index 701c1dc..4076265 100644
--- a/src/main/java/envoy/event/ContactSearchRequest.java
+++ b/src/main/java/envoy/event/ContactSearchRequest.java
@@ -10,9 +10,7 @@ package envoy.event;
* @author Maximilian Käfer
* @since Envoy Common v0.2-alpha
*/
-public class ContactSearchRequest implements Event {
-
- private final String searchPhrase;
+public class ContactSearchRequest extends Event {
private static final long serialVersionUID = -7969312055630533627L;
@@ -22,12 +20,5 @@ public class ContactSearchRequest implements Event {
* @param searchPhrase the search phrase to use in the contact search
* @since Envoy Common v0.2-alpha
*/
- public ContactSearchRequest(String searchPhrase) { this.searchPhrase = searchPhrase; }
-
- /**
- * @return the search phrase
- * @since Envoy Common v0.2-alpha
- */
- @Override
- public String get() { return searchPhrase; }
+ public ContactSearchRequest(String searchPhrase) { super(searchPhrase); }
}
diff --git a/src/main/java/envoy/event/ContactSearchResult.java b/src/main/java/envoy/event/ContactSearchResult.java
new file mode 100644
index 0000000..03fd681
--- /dev/null
+++ b/src/main/java/envoy/event/ContactSearchResult.java
@@ -0,0 +1,28 @@
+package envoy.event;
+
+import java.util.List;
+
+import envoy.data.User;
+
+/**
+ * Contains a list of {@link User}s for which a search was performed.
+ *
+ * Project: envoy-common
+ * File: ContactSearchResult.java
+ * Created: 11 Feb 2020
+ *
+ * @author Kai S. K. Engelbart
+ * @since Envoy Common v0.2-alpha
+ */
+public class ContactSearchResult extends Event> {
+
+ private static final long serialVersionUID = -8934154116102031561L;
+
+ /**
+ * Creates an instance of {@link ContactSearchResult}.
+ *
+ * @param users the users found during the search
+ */
+ public ContactSearchResult(List users) { super(users); }
+
+}
diff --git a/src/main/java/envoy/event/Event.java b/src/main/java/envoy/event/Event.java
index 3be9d9c..064ceaa 100644
--- a/src/main/java/envoy/event/Event.java
+++ b/src/main/java/envoy/event/Event.java
@@ -11,10 +11,36 @@ import java.io.Serializable;
* @param the type of the Event
* @since Envoy v0.2-alpha
*/
-public interface Event extends Serializable {
+public abstract class Event implements Serializable {
+
+ protected final T value;
+
+ private static final long serialVersionUID = 4673659457380399167L;
+
+ protected Event(T value) { this.value = value; }
/**
* @return the data associated with this event
*/
- default T get() { return null; }
+ public T get() { return value; }
+
+ @Override
+ public String toString() { return String.format("%s[value=%s]%n", this.getClass().getSimpleName(), value); }
+
+ /**
+ * Serves as a super class for events that do not carry a value.
+ *
+ * Project: envoy-common
+ * File: Event.java
+ * Created: 11 Feb 2020
+ *
+ * @author Kai S. K. Engelbart
+ * @since Envoy Common v0.2-alpha
+ */
+ public static abstract class Valueless extends Event {
+
+ private static final long serialVersionUID = -9019362144094097997L;
+
+ protected Valueless() { super(null); }
+ }
}
diff --git a/src/main/java/envoy/event/HandshakeRejectionEvent.java b/src/main/java/envoy/event/HandshakeRejectionEvent.java
index aca655e..8c71ffa 100644
--- a/src/main/java/envoy/event/HandshakeRejectionEvent.java
+++ b/src/main/java/envoy/event/HandshakeRejectionEvent.java
@@ -11,9 +11,7 @@ package envoy.event;
* @author Kai S. K. Engelbart
* @since Envoy Common v0.3-alpha
*/
-public class HandshakeRejectionEvent implements Event {
-
- private final String reason;
+public class HandshakeRejectionEvent extends Event {
private static final long serialVersionUID = -8723270093452609197L;
@@ -22,7 +20,7 @@ public class HandshakeRejectionEvent implements Event {
*
* @since Envoy Common v0.3-alpha
*/
- public HandshakeRejectionEvent() { this(""); }
+ public HandshakeRejectionEvent() { super(""); }
/**
* Creates an instance of {@link HandshakeRejectionEvent}.
@@ -30,12 +28,5 @@ public class HandshakeRejectionEvent implements Event {
* @param reason the reason why the handshake was rejected
* @since Envoy Common v0.3-alpha
*/
- public HandshakeRejectionEvent(String reason) { this.reason = reason; }
-
- /**
- * @return the reason why the handshake was rejected
- * @since Envoy Common v0.3-alpha
- */
- @Override
- public String get() { return reason; }
+ public HandshakeRejectionEvent(String reason) { super(""); }
}
diff --git a/src/main/java/envoy/event/IdGeneratorRequest.java b/src/main/java/envoy/event/IdGeneratorRequest.java
index 885f40d..fe7871d 100644
--- a/src/main/java/envoy/event/IdGeneratorRequest.java
+++ b/src/main/java/envoy/event/IdGeneratorRequest.java
@@ -11,7 +11,7 @@ package envoy.event;
* @author Kai S. K. Engelbart
* @since Envoy Common v0.3-alpha
*/
-public class IdGeneratorRequest implements Event {
+public class IdGeneratorRequest extends Event.Valueless {
private static final long serialVersionUID = 1431107413883364583L;
}
diff --git a/src/main/java/envoy/event/MessageStatusChangeEvent.java b/src/main/java/envoy/event/MessageStatusChangeEvent.java
index a696c36..d7e7e4a 100644
--- a/src/main/java/envoy/event/MessageStatusChangeEvent.java
+++ b/src/main/java/envoy/event/MessageStatusChangeEvent.java
@@ -12,10 +12,9 @@ import envoy.data.Message;
* @author Kai S. K. Engelbart
* @since Envoy Common v0.2-alpha
*/
-public class MessageStatusChangeEvent implements Event {
+public class MessageStatusChangeEvent extends Event {
private final long id;
- private final Message.MessageStatus status;
private final Date date;
private static final long serialVersionUID = 4566145392192761313L;
@@ -30,8 +29,8 @@ public class MessageStatusChangeEvent implements Event {
* @since Envoy Common v0.2-alpha
*/
public MessageStatusChangeEvent(long id, Message.MessageStatus status, Date date) {
+ super(status);
this.id = id;
- this.status = status;
this.date = date;
}
@@ -43,13 +42,6 @@ public class MessageStatusChangeEvent implements Event {
*/
public MessageStatusChangeEvent(Message message) { this(message.getId(), message.getStatus(), new Date()); }
- /**
- * @return the status of the {@link Message} this event is related to
- * @since Envoy Common v0.2-alpha
- */
- @Override
- public Message.MessageStatus get() { return status; }
-
/**
* @return the ID of the {@link Message} this event is related to
* @since Envoy Common v0.2-alpha
@@ -63,5 +55,5 @@ public class MessageStatusChangeEvent implements Event {
public Date getDate() { return date; }
@Override
- public String toString() { return String.format("MessageStatusChangeEvent[id=%d,status=%s,date=%s]", id, status, date); }
+ public String toString() { return String.format("MessageStatusChangeEvent[id=%d,status=%s,date=%s]", id, value, date); }
}
diff --git a/src/main/java/envoy/event/UserStatusChangeEvent.java b/src/main/java/envoy/event/UserStatusChangeEvent.java
index 1e47952..ed6e79f 100644
--- a/src/main/java/envoy/event/UserStatusChangeEvent.java
+++ b/src/main/java/envoy/event/UserStatusChangeEvent.java
@@ -11,10 +11,9 @@ import envoy.data.User.UserStatus;
* @author Leon Hofmeister
* @since Envoy Common v0.2-alpha
*/
-public class UserStatusChangeEvent implements Event {
+public class UserStatusChangeEvent extends Event {
- private final long id;
- private final User.UserStatus status;
+ private final long id;
private static final long serialVersionUID = 4566145392192761313L;
@@ -27,8 +26,8 @@ public class UserStatusChangeEvent implements Event {
* @since Envoy Common v0.2-alpha
*/
public UserStatusChangeEvent(long id, User.UserStatus status) {
- this.id = id;
- this.status = status;
+ super(status);
+ this.id = id;
}
/**
@@ -39,13 +38,6 @@ public class UserStatusChangeEvent implements Event {
*/
public UserStatusChangeEvent(User user) { this(user.getId(), user.getStatus()); }
- /**
- * @return the status of the {@link User} this event is related to
- * @since Envoy Common v0.2-alpha
- */
- @Override
- public User.UserStatus get() { return status; }
-
/**
* @return the ID of the {@link User} this event is related to
* @since Envoy Common v0.2-alpha
@@ -53,5 +45,5 @@ public class UserStatusChangeEvent implements Event {
public long getId() { return id; }
@Override
- public String toString() { return String.format("UserStatusChangeEvent[id=%d,status=%s]", id, status); }
+ public String toString() { return String.format("UserStatusChangeEvent[id=%d,status=%s]", id, value); }
}
From 810df972ccdacdff78ab487a7ed4b839cf822759 Mon Sep 17 00:00:00 2001
From: kske
Date: Wed, 12 Feb 2020 05:58:40 +0100
Subject: [PATCH 6/6] Clean-up, improved generic type usage in EventBus
Fixes #13
---
.../java/envoy/event/ContactSearchResult.java | 2 +-
src/main/java/envoy/event/Event.java | 2 +-
src/main/java/envoy/event/EventBus.java | 49 +++++++++----------
src/main/java/envoy/event/EventHandler.java | 18 -------
.../envoy/event/HandshakeRejectionEvent.java | 2 +-
5 files changed, 26 insertions(+), 47 deletions(-)
delete mode 100644 src/main/java/envoy/event/EventHandler.java
diff --git a/src/main/java/envoy/event/ContactSearchResult.java b/src/main/java/envoy/event/ContactSearchResult.java
index 03fd681..929ee30 100644
--- a/src/main/java/envoy/event/ContactSearchResult.java
+++ b/src/main/java/envoy/event/ContactSearchResult.java
@@ -22,7 +22,7 @@ public class ContactSearchResult extends Event> {
* Creates an instance of {@link ContactSearchResult}.
*
* @param users the users found during the search
+ * @since Envoy Common v0.2-alpha
*/
public ContactSearchResult(List users) { super(users); }
-
}
diff --git a/src/main/java/envoy/event/Event.java b/src/main/java/envoy/event/Event.java
index 064ceaa..9d42bf5 100644
--- a/src/main/java/envoy/event/Event.java
+++ b/src/main/java/envoy/event/Event.java
@@ -25,7 +25,7 @@ public abstract class Event implements Serializable {
public T get() { return value; }
@Override
- public String toString() { return String.format("%s[value=%s]%n", this.getClass().getSimpleName(), value); }
+ public String toString() { return String.format("%s[value=%s]", this.getClass().getSimpleName(), value); }
/**
* Serves as a super class for events that do not carry a value.
diff --git a/src/main/java/envoy/event/EventBus.java b/src/main/java/envoy/event/EventBus.java
index f2e5c9f..146fb58 100644
--- a/src/main/java/envoy/event/EventBus.java
+++ b/src/main/java/envoy/event/EventBus.java
@@ -1,18 +1,15 @@
package envoy.event;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.function.Consumer;
/**
- * This class handles events by allowing {@link EventHandler} object to register
- * themselves and then be notified about certain events dispatched by the event
- * bus.
+ * This class handles events by allowing event handlers to register themselves
+ * and then be notified about certain events dispatched by the event bus.
*
* The event bus is a singleton and can be used across the entire application to
* guarantee the propagation of events.
- *
+ *
* Project: envoy-common
* File: EventBus.java
* Created: 04.12.2019
@@ -23,14 +20,13 @@ import java.util.Map;
public class EventBus {
/**
- * Contains all {@link EventHandler} instances registered at this
- * {@link EventBus} as values mapped to by their supported {@link Event}
- * classes.
+ * Contains all event handler instances registered at this event bus as values
+ * mapped to by their supported event classes.
*/
- private Map>, List> handlers = new HashMap<>();
+ private Map>, List>>> handlers = new HashMap<>();
/**
- * The singleton instance of this {@link EventBus} that is used across the
+ * The singleton instance of this event bus that is used across the
* entire application.
*/
private static EventBus eventBus = new EventBus();
@@ -43,39 +39,40 @@ public class EventBus {
private EventBus() {}
/**
- * @return the singleton instance of the {@link EventBus}
+ * @return the singleton instance of the event bus
* @since Envoy v0.2-alpha
*/
public static EventBus getInstance() { return eventBus; }
/**
- * Registers an {@link EventHandler} to be notified when a
- * {@link Event} of a certain type is dispatched.
+ * Registers an event handler to be notified when an
+ * event of a certain type is dispatched.
*
- * @param eventClass the class which the {@link EventHandler} is subscribed to
- * @param handler the {@link EventHandler} to register
+ * @param the type of event values to notify the handler about
+ * @param eventClass the class which the event handler is subscribing to
+ * @param handler the event handler to register
* @since Envoy v0.2-alpha
*/
- public void register(Class extends Event>> eventClass, EventHandler handler) {
+ @SuppressWarnings("unchecked")
+ public > void register(Class eventClass, Consumer handler) {
if (!handlers.containsKey(eventClass)) handlers.put(eventClass, new ArrayList<>());
- handlers.get(eventClass).add(handler);
+ handlers.get(eventClass).add((Consumer>) handler);
}
/**
- * Dispatches a {@link Event} to every {@link EventHandler} subscribed to it.
+ * Dispatches an event to every event handler subscribed to it.
*
* @param event the {@link Event} to dispatch
* @since Envoy v0.2-alpha
*/
public void dispatch(Event> event) {
- handlers.keySet().stream().filter(event.getClass()::isAssignableFrom).map(handlers::get).flatMap(List::stream).forEach(h -> h.handle(event));
+ handlers.keySet().stream().filter(event.getClass()::isAssignableFrom).map(handlers::get).flatMap(List::stream).forEach(h -> h.accept(event));
}
/**
- * @return a map of all {@link EventHandler} instances currently registered at
- * this {@link EventBus} with the {@link Event} classes they are
- * subscribed to as keys
+ * @return a map of all event handler instances currently registered at this
+ * event bus with the event classes they are subscribed to as keys
* @since Envoy v0.2-alpha
*/
- public Map>, List> getHandlers() { return handlers; }
+ public Map>, List>>> getHandlers() { return handlers; }
}
diff --git a/src/main/java/envoy/event/EventHandler.java b/src/main/java/envoy/event/EventHandler.java
deleted file mode 100644
index f842476..0000000
--- a/src/main/java/envoy/event/EventHandler.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package envoy.event;
-
-/**
- * Project: envoy-common
- * File: EventHandler.java
- * Created: 04.12.2019
- *
- * @author Kai S. K. Engelbart
- */
-public interface EventHandler {
-
- /**
- * Consumes an event dispatched by the event bus.
- *
- * @param event The event dispatched by the event bus, only of supported type
- */
- void handle(Event> event);
-}
diff --git a/src/main/java/envoy/event/HandshakeRejectionEvent.java b/src/main/java/envoy/event/HandshakeRejectionEvent.java
index 8c71ffa..5d58aa0 100644
--- a/src/main/java/envoy/event/HandshakeRejectionEvent.java
+++ b/src/main/java/envoy/event/HandshakeRejectionEvent.java
@@ -28,5 +28,5 @@ public class HandshakeRejectionEvent extends Event {
* @param reason the reason why the handshake was rejected
* @since Envoy Common v0.3-alpha
*/
- public HandshakeRejectionEvent(String reason) { super(""); }
+ public HandshakeRejectionEvent(String reason) { super(reason); }
}