11package in .erail .model ;
22
3+ import com .google .common .base .Preconditions ;
34import com .google .common .net .HttpHeaders ;
45import com .google .common .net .MediaType ;
6+ import io .vertx .reactivex .core .MultiMap ;
7+ import java .util .Arrays ;
8+ import java .util .Collections ;
59import java .util .HashMap ;
610import 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}
0 commit comments