aboutsummaryrefslogtreecommitdiffstats
path: root/language-web/src/main/java/tools/refinery/language/web/xtext/XtextWebSocketOkResponse.java
diff options
context:
space:
mode:
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.java41
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
3import java.util.Objects; 3import java.util.Objects;
4 4
5import org.eclipse.xtext.web.server.IServiceResult;
6import org.eclipse.xtext.web.server.IUnwrappableServiceResult;
7
5import com.google.gson.annotations.SerializedName; 8import com.google.gson.annotations.SerializedName;
6 9
7public final class XtextWebSocketOkResponse implements XtextWebSocketResponse { 10public 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}