3535import java .io .OutputStream ;
3636import java .nio .charset .StandardCharsets ;
3737import java .util .Base64 ;
38+ import java .util .Objects ;
3839
3940public abstract class AbstractHttpRequestResponseHandler implements IHttpRequestResponseHandler {
4041
4142 protected final Logger logger = LoggerFactory .getLogger (getClass ().getName ());
4243
4344 protected final ObjectMapper mapper ;
4445
45- public AbstractHttpRequestResponseHandler (ObjectMapper mapper ) {
46+ public AbstractHttpRequestResponseHandler (final ObjectMapper mapper ) {
4647 this .mapper = mapper ;
4748 }
4849
49- public void handleRequest (IHttpRequestResponse httpRequestResponse ) throws IOException {
50+ public void handleRequest (final IHttpRequestResponse httpRequestResponse ) throws IOException {
5051
51- long start = System .currentTimeMillis ();
52+ final var start = System .currentTimeMillis ();
5253 try {
53- UsernamePasswordRoles credentials = getRequiredCredentials (httpRequestResponse );
54+ final var credentials = getRequiredCredentials (httpRequestResponse );
5455 if (credentials != null ) {
5556 if (!handleBasicHttpAuthentication (credentials , httpRequestResponse )) {
5657 return ;
@@ -104,34 +105,34 @@ public void handleRequest(IHttpRequestResponse httpRequestResponse) throws IOExc
104105 }
105106 }
106107
107- protected void handleHttpGet (IHttpRequestResponse request ) throws HttpException , IOException {
108+ protected void handleHttpGet (final IHttpRequestResponse request ) throws HttpException , IOException {
108109 sendNotFoundResponse (request );
109110 }
110111
111- protected void handleHttpPost (IHttpRequestResponse request ) throws HttpException , IOException {
112+ protected void handleHttpPost (final IHttpRequestResponse request ) throws HttpException , IOException {
112113 sendNotFoundResponse (request );
113114 }
114115
115- protected void sendUnsupportedOperationRequest (IHttpRequestResponse request ) throws IOException {
116+ protected void sendUnsupportedOperationRequest (final IHttpRequestResponse request ) throws IOException {
116117 writeASCIIResponse (request ,
117118 HttpConstants .SC_METHOD_NOT_ALLOWED ,
118119 Html .getErrorMessage (HttpConstants .SC_METHOD_NOT_ALLOWED , "Method not allowed" ));
119120 }
120121
121- protected void sendNotFoundResponse (IHttpRequestResponse request ) throws IOException {
122+ protected void sendNotFoundResponse (final IHttpRequestResponse request ) throws IOException {
122123 writeHTMLResponse (request ,
123124 HttpConstants .SC_NOT_FOUND ,
124125 Html .getErrorMessage (HttpConstants .SC_NOT_FOUND , "Resource Not found" ));
125126 }
126127
127- protected void sendBadRequestResponse (IHttpRequestResponse request , String message ) throws IOException {
128+ protected void sendBadRequestResponse (final IHttpRequestResponse request , final String message ) throws IOException {
128129 logger .info ("resource not found {}" , request );
129130 writeHTMLResponse (request ,
130131 HttpConstants .SC_BAD_REQUEST ,
131132 Html .getErrorMessage (HttpConstants .SC_BAD_REQUEST , message ));
132133 }
133134
134- protected void sendRedirect (IHttpRequestResponse request , String resourceUri ) throws IOException {
135+ protected void sendRedirect (final IHttpRequestResponse request , final String resourceUri ) throws IOException {
135136 try {
136137 logger .info ("sending client side redirect to {}" , resourceUri );
137138 request .addResponseHeader (HttpConstants .LOCATION_HEADER , resourceUri );
@@ -141,48 +142,48 @@ protected void sendRedirect(IHttpRequestResponse request, String resourceUri) th
141142 }
142143 }
143144
144- protected void writeASCIIResponse (IHttpRequestResponse request , int responseCode , String message )
145+ protected void writeASCIIResponse (final IHttpRequestResponse request , final int responseCode , final String message )
145146 throws IOException {
146147 writeResponseInternal (request ,
147148 responseCode ,
148149 HttpConstants .PLAIN_MIME_TYPE ,
149150 message != null ? message .getBytes (StandardCharsets .UTF_8 ) : new byte [0 ]);
150151 }
151152
152- protected void writeHTMLResponse (IHttpRequestResponse request , int responseCode , String html ) throws IOException {
153+ protected void writeHTMLResponse (final IHttpRequestResponse request , final int responseCode , final String html ) throws IOException {
153154 writeResponseInternal (request ,
154155 responseCode ,
155156 HttpConstants .HTML_MIME_TYPE ,
156157 html != null ? html .getBytes (StandardCharsets .UTF_8 ) : new byte [0 ]);
157158 }
158159
159- protected void writeJSONResponse (IHttpRequestResponse request , int responseCode , byte [] bytes ) throws IOException {
160+ protected void writeJSONResponse (final IHttpRequestResponse request , final int responseCode , final byte [] bytes ) throws IOException {
160161 writeResponseInternal (request , responseCode , HttpConstants .JSON_MIME_TYPE , bytes );
161162 }
162163
163- protected void writeJSONBeanResponse (IHttpRequestResponse request , int responseCode , Object bean )
164+ protected void writeJSONBeanResponse (final IHttpRequestResponse request , final int responseCode , final Object bean )
164165 throws IOException {
165166 writeJSONResponse (request , responseCode , mapper .writeValueAsBytes (bean ));
166167 }
167168
168- protected void writeMessageBeanResponse (IHttpRequestResponse request , int responseCode , Message message )
169+ protected void writeMessageBeanResponse (final IHttpRequestResponse request , final int responseCode , final Message message )
169170 throws IOException {
170171 writeJSONResponse (request , responseCode , mapper .writeValueAsBytes (message ));
171172 }
172173
173- protected void writeStreamResponse (IHttpRequestResponse request , int responseCode , String mimeType , InputStream is )
174+ protected void writeStreamResponse (final IHttpRequestResponse request , final int responseCode , final String mimeType , final InputStream is )
174175 throws IOException {
175- ByteArrayOutputStream baos = new ByteArrayOutputStream (1024 );
176- byte [] buf = new byte [1024 ];
176+ final var baos = new ByteArrayOutputStream (1024 );
177+ final var buf = new byte [1024 ];
177178 int length ;
178179 while ((length = is .read (buf )) != -1 ) {
179180 baos .write (buf , 0 , length );
180181 }
181- byte [] bytes = baos .toByteArray ();
182+ final var bytes = baos .toByteArray ();
182183 writeResponseInternal (request , responseCode , mimeType , bytes );
183184 }
184185
185- protected void writeResponseInternal (IHttpRequestResponse request , int responseCode , String mimeType , byte [] bytes )
186+ protected void writeResponseInternal (final IHttpRequestResponse request , final int responseCode , final String mimeType , final byte [] bytes )
186187 throws IOException {
187188 OutputStream os = null ;
188189 try {
@@ -198,7 +199,7 @@ protected void writeResponseInternal(IHttpRequestResponse request, int responseC
198199 }
199200 }
200201
201- protected void writeSimpleOKResponse (IHttpRequestResponse request ) throws IOException {
202+ protected void writeSimpleOKResponse (final IHttpRequestResponse request ) throws IOException {
202203 try {
203204 request .setResponseContentType (HttpConstants .PLAIN_MIME_TYPE , StandardCharsets .UTF_8 );
204205 request .sendResponseHeaders (HttpConstants .SC_OK , 0 );
@@ -207,28 +208,27 @@ protected void writeSimpleOKResponse(IHttpRequestResponse request) throws IOExce
207208 }
208209 }
209210
210- protected void writeDataFromResource (IHttpRequestResponse requestResponse , String resourcePath ) throws IOException {
211+ protected void writeDataFromResource (final IHttpRequestResponse requestResponse , final String resourcePath ) throws IOException {
211212 InputStream is = loadClasspathResource (resourcePath );
212213 logger .trace ("loading resource from cp '{}' exists ? {}" , resourcePath , is != null );
213214 if (is == null ) {
214215 sendNotFoundResponse (requestResponse );
215216 } else {
216- String fileName = Files .getFileName (resourcePath );
217- String ext = Files .getFileExtension (resourcePath );
218- String mimeType = HttpUtils .getMimeTypeFromFileExtension (ext );
217+ final var ext = Files .getFileExtension (resourcePath );
218+ final var mimeType = HttpUtils .getMimeTypeFromFileExtension (ext );
219219 writeStreamResponse (requestResponse , HttpConstants .SC_OK , mimeType , is );
220220 }
221221 }
222222
223- protected <T > T readRequestBody (IHttpRequestResponse requestResponse , Class <T > cls ) throws HttpInternalServerError {
223+ protected <T > T readRequestBody (final IHttpRequestResponse requestResponse , final Class <T > cls ) throws HttpInternalServerError {
224224 try {
225225 return mapper .readValue (requestResponse .getRequestBody (), cls );
226226 } catch (Exception e ) {
227227 throw new HttpInternalServerError ("error reading request body" , e );
228228 }
229229 }
230230
231- protected InputStream loadClasspathResource (String resource ) {
231+ protected InputStream loadClasspathResource (final String resource ) {
232232 logger .trace ("loading resource from path " + resource );
233233 InputStream is = AbstractHttpRequestResponseHandler .class .getClassLoader ().getResourceAsStream (resource );
234234 if (is == null ) {
@@ -237,30 +237,29 @@ protected InputStream loadClasspathResource(String resource) {
237237 return is ;
238238 }
239239
240- protected String getMandatoryParameter (IHttpRequestResponse requestResponse , String paramKey )
240+ protected String getMandatoryParameter (final IHttpRequestResponse requestResponse , final String paramKey )
241241 throws HttpBadRequestException {
242- String value = requestResponse .getParameter (paramKey );
242+ final var value = requestResponse .getParameter (paramKey );
243243 if (value == null ) {
244244 throw new HttpBadRequestException ("mandatory request parameter not available " + paramKey );
245245 }
246246 return value ;
247247 }
248248
249- protected String getParameter (IHttpRequestResponse requestResponse , String paramKey ) {
250- String value = requestResponse .getParameter (paramKey );
251- return value ;
249+ protected String getParameter (final IHttpRequestResponse requestResponse , final String paramKey ) {
250+ return requestResponse .getParameter (paramKey );
252251 }
253252
254253 protected boolean handleBasicHttpAuthentication (
255- UsernamePasswordRoles usernamePassword , IHttpRequestResponse httpRequestResponse ) throws IOException {
254+ final UsernamePasswordRoles usernamePassword ,
255+ final IHttpRequestResponse httpRequestResponse ) throws IOException {
256256
257257 String value = httpRequestResponse .getRequestHeader (HttpConstants .AUTH_HEADER );
258258 if (value != null ) {
259259 value = value .substring (value .lastIndexOf (" " ) + 1 );
260260 value = new String (Base64 .getDecoder ().decode (value ));
261- String [] userNamePassword = value .split (":" );
262- if (usernamePassword .getUserName ().equals (userNamePassword [0 ]) &&
263- usernamePassword .getPassword ().equals (userNamePassword [1 ])) {
261+ final var userNamePassword = value .split (":" );
262+ if (usernamePassword .getUserName ().equals (userNamePassword [0 ]) && Objects .deepEquals (usernamePassword .getPassword (), userNamePassword [1 ].getBytes (StandardCharsets .UTF_8 ))) {
264263 return true ;
265264 }
266265 }
@@ -274,7 +273,7 @@ protected boolean handleBasicHttpAuthentication(
274273 return false ;
275274 }
276275
277- protected UsernamePasswordRoles getRequiredCredentials (IHttpRequestResponse request ) {
276+ protected UsernamePasswordRoles getRequiredCredentials (final IHttpRequestResponse request ) {
278277 return null ;
279278 }
280279
@@ -288,23 +287,23 @@ public Message() {
288287
289288 }
290289
291- public Message (String message ) {
290+ public Message (final String message ) {
292291 this .message = message ;
293292 this .success = true ;
294293 }
295294
296- public Message (String title , String message ) {
295+ public Message (final String title , final String message ) {
297296 this .message = message ;
298297 this .title = title ;
299298 this .success = true ;
300299 }
301300
302- public Message (String message , boolean success ) {
301+ public Message (final String message , final boolean success ) {
303302 this .message = message ;
304303 this .success = success ;
305304 }
306305
307- public Message (String title , String message , boolean success ) {
306+ public Message (final String title , final String message , final boolean success ) {
308307 this .title = title ;
309308 this .message = message ;
310309 this .success = success ;
0 commit comments