Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import com.google.gwt.json.client.JSONObject;
- import JsonBuilder from https://pastebin.com/SvJtCYee;
- public class Event {
- public final String token;
- public final EventTypes.EventType eventType;
- public final String payload;
- public final Date createdAt; // java.time (introduced in Java8) is not supported by GWT
- public Event(String token, EventTypes.EventType eventType, String payload, Date createdAt) {
- this.token = token;
- this.eventType = eventType;
- this.payload = payload;
- this.createdAt = createdAt;
- }
- public JSONObject toJson() {
- return new JsonBuilder().put("token", token).put("eventType", eventType).put("payload", payload).put("createdAt", createdAt).build();
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Event event = (Event) o;
- return token.equals(event.token) &&
- eventType.equals(event.eventType) &&
- payload.equals(event.payload) &&
- createdAt.equals(event.createdAt);
- }
- @Override
- public int hashCode() {
- return Objects.hash(token, eventType, payload, createdAt);
- }
- @Override
- public String toString() {
- return "Event{" +
- "token='" + token + '\'' +
- ", eventType=" + eventType +
- ", payload='" + payload + '\'' +
- ", createdAt=" + createdAt +
- '}';
- }
- public static Optional<Event> fromJson(JSONObject json) {
- return EventTypes.unapply(json.get("eventType").isString().stringValue()).map(eventType -> {
- final String token = json.get("token").isString().stringValue();
- final String payload = json.get("payload").isString().stringValue();
- final Date createdAt = new Date(json.get("createdAt").isString().stringValue());
- return new Event(token, eventType, payload, createdAt);
- });
- }
- }
- // EventType
- import java.util.*;
- public class EventTypes {
- public static class EventType {
- @Override public boolean equals(Object obj) {return getClass() == obj.getClass();}
- @Override public String toString() {return getClass().getSimpleName();}
- }
- public final static class Event1 extends EventType {}
- public final static class Event2 extends EventType {}
- public final static class Event3 extends EventType {}
- public static Optional<EventType> unapply(String s) {
- return getAll().stream().filter(eventType -> eventType.getClass().getSimpleName().equals(s)).findFirst();
- }
- public static List<EventType> getAll() {
- return Arrays.asList( // note that "getDeclaredClasses()" is not supported in GWT
- new Event1(),
- new Event2(),
- new Event3()
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement