Advertisement
mitrakov

GWT ADT Example

Oct 12th, 2019
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.94 KB | None | 0 0
  1. import java.util.*;
  2. import com.google.gwt.json.client.JSONObject;
  3. import JsonBuilder from https://pastebin.com/SvJtCYee;
  4.  
  5. public class Event {
  6.     public final String token;
  7.     public final EventTypes.EventType eventType;
  8.     public final String payload;
  9.     public final Date createdAt; // java.time (introduced in Java8) is not supported by GWT
  10.  
  11.     public Event(String token, EventTypes.EventType eventType, String payload, Date createdAt) {
  12.         this.token = token;
  13.         this.eventType = eventType;
  14.         this.payload = payload;
  15.         this.createdAt = createdAt;
  16.     }
  17.  
  18.     public JSONObject toJson() {
  19.         return new JsonBuilder().put("token", token).put("eventType", eventType).put("payload", payload).put("createdAt", createdAt).build();
  20.     }
  21.  
  22.     @Override
  23.     public boolean equals(Object o) {
  24.         if (this == o) return true;
  25.         if (o == null || getClass() != o.getClass()) return false;
  26.         Event event = (Event) o;
  27.         return token.equals(event.token) &&
  28.                 eventType.equals(event.eventType) &&
  29.                 payload.equals(event.payload) &&
  30.                 createdAt.equals(event.createdAt);
  31.     }
  32.  
  33.     @Override
  34.     public int hashCode() {
  35.         return Objects.hash(token, eventType, payload, createdAt);
  36.     }
  37.  
  38.     @Override
  39.     public String toString() {
  40.         return "Event{" +
  41.                 "token='" + token + '\'' +
  42.                 ", eventType=" + eventType +
  43.                 ", payload='" + payload + '\'' +
  44.                 ", createdAt=" + createdAt +
  45.                 '}';
  46.     }
  47.  
  48.     public static Optional<Event> fromJson(JSONObject json) {
  49.         return EventTypes.unapply(json.get("eventType").isString().stringValue()).map(eventType -> {
  50.             final String token = json.get("token").isString().stringValue();
  51.             final String payload = json.get("payload").isString().stringValue();
  52.             final Date createdAt = new Date(json.get("createdAt").isString().stringValue());
  53.             return new Event(token, eventType, payload, createdAt);
  54.         });
  55.     }
  56. }
  57.  
  58.  
  59.  
  60. // EventType
  61. import java.util.*;
  62.  
  63. public class EventTypes {
  64.     public static class EventType {
  65.         @Override public boolean equals(Object obj) {return getClass() == obj.getClass();}
  66.         @Override public String toString() {return getClass().getSimpleName();}
  67.     }
  68.     public final static class Event1 extends EventType {}
  69.     public final static class Event2 extends EventType {}
  70.     public final static class Event3 extends EventType {}
  71.  
  72.     public static Optional<EventType> unapply(String s) {
  73.         return getAll().stream().filter(eventType -> eventType.getClass().getSimpleName().equals(s)).findFirst();
  74.     }
  75.  
  76.     public static List<EventType> getAll() {
  77.         return Arrays.asList(            // note that "getDeclaredClasses()" is not supported in GWT
  78.             new Event1(),
  79.             new Event2(),
  80.             new Event3()
  81.         );
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement