Convert Sparky to Spring-Boot
[aai/sparky-be.git] / sparkybe-onap-service / src / main / java / org / onap / aai / sparky / search / filters / FilterProcessor.java
@@ -1,22 +1,26 @@
 /**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
+ * ============LICENSE_START===================================================
+ * SPARKY (AAI UI service)
+ * ============================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ============================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * ============LICENSE_END=========================================================
+ * ============LICENSE_END=====================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
  */
 package org.onap.aai.sparky.search.filters;
 
@@ -24,19 +28,16 @@ import java.util.ArrayList;
 import java.util.List;
 
 import javax.json.JsonObject;
+import javax.servlet.http.HttpServletRequest;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.component.restlet.RestletConstants;
 import org.onap.aai.cl.api.Logger;
 import org.onap.aai.cl.eelf.LoggerFactory;
 import org.onap.aai.sparky.logging.AaiUiMsgs;
+import org.onap.aai.sparky.logging.util.ServletUtils;
 import org.onap.aai.sparky.search.filters.entity.UiFilterEntity;
 import org.onap.aai.sparky.search.filters.entity.UiFiltersEntity;
 import org.onap.aai.sparky.viewandinspect.config.SparkyConstants;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.MediaType;
-import org.restlet.data.Status;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -65,13 +66,9 @@ public class FilterProcessor {
   }
 
   public void getFiltersWithValues(Exchange exchange) {
-    Response response = exchange.getIn().getHeader(RestletConstants.RESTLET_RESPONSE, Response.class);
-
-    Request request = exchange.getIn().getHeader(RestletConstants.RESTLET_REQUEST, Request.class);
-
-    /* Disables automatic Apache Camel Restlet component logging which prints out an undesirable log entry
-       which includes client (e.g. browser) information */
-    request.setLoggable(false);
+    
+    HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class);
+    ServletUtils.setUpMdcContext(exchange, request);
     
     UiFiltersEntity viewFiltersList = null;
     boolean wasErrorDuringFilterDiscovery = false;
@@ -94,7 +91,14 @@ public class FilterProcessor {
       }
     } catch(Exception exc) {
       LOG.error(AaiUiMsgs.ERROR_GENERIC, "FilterProcessor failed to get filter list due to error = " + exc.getMessage());
-      wasErrorDuringFilterDiscovery = true;
+      
+      exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 500);
+      
+      exchange.getOut().setBody(
+          ServletUtils.generateJsonErrorResponse("FilterProcessor failed to get filter list due to error = " + exc.getMessage()),
+          String.class);
+      
+      return;
     }
     
     boolean wasErrorDuringValueSearch = false;
@@ -110,24 +114,30 @@ public class FilterProcessor {
           UiFiltersEntity responseFiltersList = filteredSearchHelper.doFilterEnumeration(filterIds);
           
           JsonObject finalResponse = UiFiltersEntityConverter.convertUiFiltersEntityToUnifiedFilterResponse(responseFiltersList);
-          
-          response.setStatus(Status.SUCCESS_OK);
-          response.setEntity(finalResponse.toString(), MediaType.APPLICATION_JSON);
-          exchange.getOut().setBody(response);
+          exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 200);
+          exchange.getOut().setBody(finalResponse.toString());
         } else {
           wasErrorDuringValueSearch = true;
         }
       } catch(Exception exc) {
         LOG.error(AaiUiMsgs.ERROR_GENERIC, "FilterProcessor failed to generate valid unifiedFilterRequest response due to error, " + exc.getMessage());
-        response.setStatus(Status.SERVER_ERROR_INTERNAL);
+
+        exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 500);
+
+        exchange.getOut().setBody(
+            ServletUtils.generateJsonErrorResponse("FilterProcessor failed to generate valid unifiedFilterRequest response due to error = " + exc.getMessage()),
+            String.class);
+        
+        return;
       }
     } 
     
     // In the case of an error we want to respond with a valid empty response
     if(wasErrorDuringFilterDiscovery || wasErrorDuringValueSearch) {
-      response.setStatus(Status.SUCCESS_OK);
-      response.setEntity(UiFiltersEntityConverter.generateEmptyResponse().toString(), MediaType.APPLICATION_JSON);
-      exchange.getOut().setBody(response);
+      //response.setStatus(Status.SUCCESS_OK);
+      //response.setEntity(UiFiltersEntityConverter.generateEmptyResponse().toString(), MediaType.APPLICATION_JSON);
+      exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 404);
+      exchange.getOut().setBody(UiFiltersEntityConverter.generateEmptyResponse().toString());
     }
   }