diff options
Diffstat (limited to 'language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java')
-rw-r--r-- | language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java b/language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java index 4ef1768b..aa453544 100644 --- a/language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java +++ b/language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java | |||
@@ -2,24 +2,46 @@ package tools.refinery.language.web.xtext; | |||
2 | 2 | ||
3 | import java.util.Objects; | 3 | import java.util.Objects; |
4 | 4 | ||
5 | import org.eclipse.xtext.web.server.IServiceResult; | ||
6 | import org.eclipse.xtext.web.server.IUnwrappableServiceResult; | ||
7 | |||
5 | import com.google.gson.annotations.SerializedName; | 8 | import com.google.gson.annotations.SerializedName; |
6 | 9 | ||
7 | public final class XtextWebSocketOkResponse implements XtextWebSocketResponse { | 10 | public final class XtextWebSocketOkResponse implements XtextWebSocketResponse { |
8 | private String id; | 11 | private String id; |
9 | 12 | ||
13 | private int index; | ||
14 | |||
10 | @SerializedName("response") | 15 | @SerializedName("response") |
11 | private Object responseData; | 16 | private Object responseData; |
12 | 17 | ||
13 | @Override | 18 | public XtextWebSocketOkResponse(String id, int index, Object responseData) { |
19 | super(); | ||
20 | this.id = id; | ||
21 | this.index = index; | ||
22 | this.responseData = responseData; | ||
23 | } | ||
24 | |||
25 | public XtextWebSocketOkResponse(XtextWebSocketRequest request, int index, IServiceResult result) { | ||
26 | this(request.getId(), index, maybeUnwrap(result)); | ||
27 | } | ||
28 | |||
14 | public String getId() { | 29 | public String getId() { |
15 | return id; | 30 | return id; |
16 | } | 31 | } |
17 | 32 | ||
18 | @Override | ||
19 | public void setId(String id) { | 33 | public void setId(String id) { |
20 | this.id = id; | 34 | this.id = id; |
21 | } | 35 | } |
22 | 36 | ||
37 | public int getIndex() { | ||
38 | return index; | ||
39 | } | ||
40 | |||
41 | public void setIndex(int index) { | ||
42 | this.index = index; | ||
43 | } | ||
44 | |||
23 | public Object getResponseData() { | 45 | public Object getResponseData() { |
24 | return responseData; | 46 | return responseData; |
25 | } | 47 | } |
@@ -30,7 +52,7 @@ public final class XtextWebSocketOkResponse implements XtextWebSocketResponse { | |||
30 | 52 | ||
31 | @Override | 53 | @Override |
32 | public int hashCode() { | 54 | public int hashCode() { |
33 | return Objects.hash(id, responseData); | 55 | return Objects.hash(id, index, responseData); |
34 | } | 56 | } |
35 | 57 | ||
36 | @Override | 58 | @Override |
@@ -42,11 +64,20 @@ public final class XtextWebSocketOkResponse implements XtextWebSocketResponse { | |||
42 | if (getClass() != obj.getClass()) | 64 | if (getClass() != obj.getClass()) |
43 | return false; | 65 | return false; |
44 | XtextWebSocketOkResponse other = (XtextWebSocketOkResponse) obj; | 66 | XtextWebSocketOkResponse other = (XtextWebSocketOkResponse) obj; |
45 | return Objects.equals(id, other.id) && Objects.equals(responseData, other.responseData); | 67 | return Objects.equals(id, other.id) && index == other.index && Objects.equals(responseData, other.responseData); |
46 | } | 68 | } |
47 | 69 | ||
48 | @Override | 70 | @Override |
49 | public String toString() { | 71 | public String toString() { |
50 | return "XtextWebSocketResponse [id=" + id + ", responseData=" + responseData + "]"; | 72 | return "XtextWebSocketOkResponse [id=" + id + ", index=" + index + ", responseData=" + responseData + "]"; |
73 | } | ||
74 | |||
75 | private static Object maybeUnwrap(IServiceResult result) { | ||
76 | if (result instanceof IUnwrappableServiceResult unwrappableServiceResult | ||
77 | && unwrappableServiceResult.getContent() != null) { | ||
78 | return unwrappableServiceResult.getContent(); | ||
79 | } else { | ||
80 | return result; | ||
81 | } | ||
51 | } | 82 | } |
52 | } | 83 | } |