Skip to content

Commit 5a356a7

Browse files
committed
minor refactoring
1 parent b5a813a commit 5a356a7

File tree

5 files changed

+117
-38
lines changed

5 files changed

+117
-38
lines changed

src/main/java/in/erail/model/ReqestEvent.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ public class ReqestEvent {
2222
private Map<String, String[]> mMultiValueQueryStringParameters;
2323
private Map<String, String> mPathParameters;
2424
private Map<String, String> mStageVariables;
25-
private Map mRequestContext;
25+
@SuppressWarnings("rawtypes")
26+
private Map mRequestContext;
2627
private byte[] mBody = new byte[0];
2728
private boolean mIsBase64Encoded = false;
2829

@@ -98,11 +99,13 @@ public void setStageVariables(Map<String, String> pStageVariables) {
9899
this.mStageVariables = pStageVariables;
99100
}
100101

101-
public Map getRequestContext() {
102+
@SuppressWarnings("rawtypes")
103+
public Map getRequestContext() {
102104
return mRequestContext;
103105
}
104106

105-
public void setRequestContext(Map pRequestContext) {
107+
@SuppressWarnings("rawtypes")
108+
public void setRequestContext(Map pRequestContext) {
106109
this.mRequestContext = pRequestContext;
107110
}
108111

Lines changed: 102 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package in.erail.model;
22

3+
import com.google.common.base.Preconditions;
34
import com.google.common.net.HttpHeaders;
45
import com.google.common.net.MediaType;
6+
import io.vertx.reactivex.core.MultiMap;
7+
import java.util.Arrays;
8+
import java.util.Collections;
59
import java.util.HashMap;
610
import java.util.Map;
11+
import java.util.Optional;
712

813
/**
914
*
@@ -14,10 +19,14 @@ public class ResponseEvent {
1419
private Map<String, String>[] mCookies;
1520
private boolean mIsBase64Encoded = true;
1621
private int mStatusCode = 200;
17-
private Map<String, String> mHeaders;
18-
private Map<String, String[]> mMultiValueHeaders;
22+
private MultiMap mMultiValueHeaders;
1923
private byte[] mBody = new byte[0];
2024

25+
public ResponseEvent() {
26+
mMultiValueHeaders = MultiMap.caseInsensitiveMultiMap();
27+
mMultiValueHeaders.add(HttpHeaders.CONTENT_TYPE, MediaType.JAVASCRIPT_UTF_8.toString());
28+
}
29+
2130
public boolean isIsBase64Encoded() {
2231
return mIsBase64Encoded;
2332
}
@@ -34,17 +43,6 @@ public void setStatusCode(int pStatusCode) {
3443
this.mStatusCode = pStatusCode;
3544
}
3645

37-
public Map<String, String> getHeaders() {
38-
if (mHeaders == null) {
39-
mHeaders = new HashMap<>();
40-
}
41-
return mHeaders;
42-
}
43-
44-
public void setHeaders(Map<String, String> pHeaders) {
45-
this.mHeaders = pHeaders;
46-
}
47-
4846
public byte[] getBody() {
4947
return mBody;
5048
}
@@ -53,30 +51,110 @@ public void setBody(byte[] pBody) {
5351
this.mBody = pBody;
5452
}
5553

54+
public Map<String, String>[] getCookies() {
55+
return mCookies;
56+
}
57+
58+
public void setCookies(Map<String, String>[] pCookies) {
59+
this.mCookies = pCookies;
60+
}
61+
62+
public void setMultiValueHeaders(Map<String, String[]> pValue) {
63+
Preconditions.checkNotNull(pValue);
64+
65+
if (pValue.isEmpty()) {
66+
return;
67+
}
68+
69+
mMultiValueHeaders
70+
= pValue
71+
.entrySet()
72+
.stream()
73+
.reduce(MultiMap.caseInsensitiveMultiMap(), (a, v) -> {
74+
Optional
75+
.ofNullable(v.getValue())
76+
.map(t -> Arrays.stream(t))
77+
.orElse(Arrays.stream(new String[0]))
78+
.forEach((t) -> a.add(v.getKey(), t));
79+
return a;
80+
}, (a, b) -> {
81+
a.addAll(b);
82+
return a;
83+
});
84+
}
85+
5686
public Map<String, String[]> getMultiValueHeaders() {
57-
if (mMultiValueHeaders == null) {
58-
mMultiValueHeaders = new HashMap<>();
87+
88+
Map<String, String[]> result
89+
= mMultiValueHeaders
90+
.names()
91+
.stream()
92+
.reduce(new HashMap<>(), (a, v) -> {
93+
a.put(v, mMultiValueHeaders.getAll(v).toArray(new String[0]));
94+
return a;
95+
}, (a, b) -> {
96+
a.putAll(b);
97+
return a;
98+
});
99+
100+
return Collections.unmodifiableMap(result);
101+
}
102+
103+
public void setHeaders(Map<String, String> pValue) {
104+
Preconditions.checkNotNull(pValue);
105+
106+
if (pValue.isEmpty()) {
107+
return;
59108
}
60-
return mMultiValueHeaders;
109+
110+
mMultiValueHeaders
111+
= pValue
112+
.entrySet()
113+
.stream()
114+
.reduce(MultiMap.caseInsensitiveMultiMap(), (a, v) -> {
115+
Optional
116+
.ofNullable(v.getValue())
117+
.ifPresent(t -> a.add(v.getKey(), t));
118+
return a;
119+
}, (a, b) -> {
120+
a.addAll(b);
121+
return a;
122+
});
61123
}
62124

63-
public void setMultiValueHeaders(Map<String, String[]> pMultiValueHeaders) {
64-
this.mMultiValueHeaders = pMultiValueHeaders;
125+
public Map<String, String> getHeaders() {
126+
127+
Map<String, String> result
128+
= mMultiValueHeaders
129+
.names()
130+
.stream()
131+
.reduce(new HashMap<>(), (a, v) -> {
132+
a.put(v, mMultiValueHeaders.get(v));
133+
return a;
134+
}, (a, b) -> {
135+
a.putAll(b);
136+
return a;
137+
});
138+
139+
return Collections.unmodifiableMap(result);
65140
}
66141

67-
public Map<String, String>[] getCookies() {
68-
return mCookies;
142+
public void setContentType(String pContentType) {
143+
if (mMultiValueHeaders.contains(HttpHeaders.CONTENT_TYPE)) {
144+
mMultiValueHeaders.remove(HttpHeaders.CONTENT_TYPE);
145+
}
146+
mMultiValueHeaders.add(HttpHeaders.CONTENT_TYPE, pContentType);
69147
}
70148

71-
public void setCookies(Map<String, String>[] pCookies) {
72-
this.mCookies = pCookies;
149+
public void setContentType(MediaType pMediaType) {
150+
setContentType(pMediaType.toString());
73151
}
74152

75153
public void addHeader(String pHeaderName, String pMediaType) {
76-
getHeaders().put(HttpHeaders.CONTENT_TYPE, pMediaType);
154+
mMultiValueHeaders.add(HttpHeaders.CONTENT_TYPE, pMediaType);
77155
}
78156

79157
public void addHeader(String pHeaderName, MediaType pMediaType) {
80-
getHeaders().put(HttpHeaders.CONTENT_TYPE, pMediaType.toString());
158+
addHeader(HttpHeaders.CONTENT_TYPE, pMediaType.toString());
81159
}
82160
}

src/main/java/in/erail/route/OpenAPI3RouteBuilder.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import in.erail.model.ReqestEvent;
1717
import in.erail.model.ResponseEvent;
1818
import io.netty.handler.codec.http.HttpHeaderNames;
19-
import io.netty.handler.codec.http.HttpResponseStatus;
2019
import io.vertx.core.eventbus.DeliveryOptions;
2120
import io.vertx.core.http.HttpMethod;
2221
import io.vertx.core.json.JsonObject;
@@ -26,12 +25,10 @@
2625
import io.vertx.reactivex.ext.web.RoutingContext;
2726
import io.vertx.reactivex.ext.web.api.contract.openapi3.OpenAPI3RouterFactory;
2827
import in.erail.service.RESTService;
29-
import io.vertx.core.json.JsonArray;
3028
import io.vertx.reactivex.core.buffer.Buffer;
3129
import io.vertx.reactivex.ext.web.Cookie;
3230
import java.util.Arrays;
3331
import java.util.HashMap;
34-
import java.util.Iterator;
3532
import java.util.Optional;
3633

3734
/**
@@ -161,12 +158,13 @@ public HttpServerResponse buildResponseFromReply(JsonObject pReplyResponse, Rout
161158

162159
pContext.response().setStatusCode(response.getStatusCode());
163160

164-
Map<String,String>[] cookies = Optional.ofNullable(response.getCookies()).orElse(new Map[0]);
161+
@SuppressWarnings("unchecked")
162+
Map<String,String>[] cookies = Optional.ofNullable(response.getCookies()).orElse(new Map[0]);
165163

166164
Arrays
167165
.stream(cookies)
168166
.map((t) -> {
169-
Optional cookieName = Optional.ofNullable(t.get(Json.Cookie.NAME));
167+
Optional<String> cookieName = Optional.ofNullable(t.get(Json.Cookie.NAME));
170168
if (cookieName.isPresent()) {
171169
Cookie c = Cookie.cookie((String) cookieName.get(), "");
172170
Optional.ofNullable(t.get(Json.Cookie.VALUE)).ifPresent(v -> c.setValue(v));

src/test/java/in/erail/model/ResponseEventTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package in.erail.model;
22

3-
import io.vertx.core.json.JsonObject;
43
import org.junit.Assert;
5-
import org.junit.Test;
4+
5+
import io.vertx.core.json.JsonObject;
66

77
/**
88
*
@@ -34,7 +34,7 @@ public void testMapping() {
3434
ResponseEvent response = new ResponseEvent();
3535

3636
response.setBody("Testing".getBytes());
37-
response.getHeaders().put("a", "b");
37+
response.addHeader("a", "b");
3838

3939
JsonObject json = JsonObject.mapFrom(response);
4040
Assert.assertEquals(result, json);

src/test/java/in/erail/service/BinaryBodyService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import com.google.common.base.Strings;
44
import com.google.common.net.HttpHeaders;
55
import com.google.common.net.MediaType;
6+
7+
import in.erail.model.ReqestEvent;
8+
import in.erail.model.ResponseEvent;
69
import in.erail.test.TestConstants;
710
import io.vertx.core.buffer.Buffer;
811
import io.vertx.core.json.JsonObject;
912
import io.vertx.reactivex.core.eventbus.Message;
10-
import static in.erail.common.FrameworkConstants.RoutingContext.*;
11-
import in.erail.model.ReqestEvent;
12-
import in.erail.model.ResponseEvent;
1313

1414
/**
1515
*

0 commit comments

Comments
 (0)