[PORTAL-16 PORTAL-18] Widget ms; staging
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / controller / MicroserviceProxyController.java
index 6724d4c..6313822 100644 (file)
-/*-\r
- * ================================================================================\r
- * ECOMP Portal\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ================================================================================\r
- */\r
-package org.openecomp.portalapp.portal.controller;\r
-\r
-import java.util.List;\r
-\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-\r
-import org.openecomp.portalapp.controller.EPUnRestrictedBaseController;\r
-import org.openecomp.portalapp.portal.domain.EPUser;\r
-import org.openecomp.portalapp.portal.domain.WidgetParameterResult;\r
-import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse;\r
-import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum;\r
-import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;\r
-import org.openecomp.portalapp.portal.service.MicroserviceProxyService;\r
-import org.openecomp.portalapp.util.EPUserUtils;\r
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
-import org.springframework.context.annotation.EnableAspectJAutoProxy;\r
-import org.springframework.web.bind.annotation.PathVariable;\r
-import org.springframework.web.bind.annotation.RequestMapping;\r
-import org.springframework.web.bind.annotation.RequestMethod;\r
-import org.springframework.web.bind.annotation.RestController;\r
-import org.springframework.web.client.HttpClientErrorException;\r
-\r
-import com.fasterxml.jackson.core.JsonProcessingException;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-\r
-@SuppressWarnings("unchecked")\r
-@RestController\r
-@org.springframework.context.annotation.Configuration\r
-@EnableAspectJAutoProxy\r
-@EPAuditLog\r
-public class MicroserviceProxyController extends EPUnRestrictedBaseController {\r
-\r
-       @Autowired\r
-       private MicroserviceProxyService microserviceProxyService;\r
-\r
-       EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MicroserviceProxyController.class);\r
-\r
-       @RequestMapping(value = { "/portalApi/microservice/proxy/{serviceId}" }, method = {\r
-                       RequestMethod.GET }, produces = "application/json")\r
-       public String getMicroserviceProxy(HttpServletRequest request, HttpServletResponse response,\r
-                       @PathVariable("serviceId") long serviceId) throws Exception {\r
-               EPUser user = EPUserUtils.getUserSession(request);\r
-               String answer = "";\r
-               try{\r
-                       answer = microserviceProxyService.proxyToDestination(serviceId, user, request);\r
-               }catch(HttpClientErrorException e){\r
-                       //Check whether the error message is valid JSON format\r
-                       boolean valid = true;\r
-                       ObjectMapper objectMapper = new ObjectMapper();\r
-                   try{ \r
-                       objectMapper.readTree(e.getResponseBodyAsString());\r
-                   } catch(JsonProcessingException exception){\r
-                       valid = false;\r
-                   }\r
-                   if(valid)\r
-                       return e.getResponseBodyAsString();\r
-                   else\r
-                       return "{\"error\":\""+ e.getResponseBodyAsString() +"\"}";\r
-               }\r
-               return answer;          \r
-       }\r
-       \r
-       @RequestMapping(value = { "/portalApi/microservice/proxy/parameter/{widgetId}" }, method = {\r
-                       RequestMethod.GET }, produces = "application/json")\r
-       public String getMicroserviceProxyByWidgetId(HttpServletRequest request, HttpServletResponse response,\r
-                       @PathVariable("widgetId") long widgetId) throws Exception {\r
-               EPUser user = EPUserUtils.getUserSession(request);\r
-               String answer = "";\r
-               try{\r
-                       answer = microserviceProxyService.proxyToDestinationByWidgetId(widgetId, user, request);\r
-               }catch(HttpClientErrorException e){\r
-                       //Check whether the error message is valid JSON format\r
-                       boolean valid = true;\r
-                       ObjectMapper objectMapper = new ObjectMapper();\r
-                   try{ \r
-                       objectMapper.readTree(e.getResponseBodyAsString());\r
-                   } catch(JsonProcessingException exception){\r
-                       valid = false;\r
-                   }\r
-                   if(valid)\r
-                       return e.getResponseBodyAsString();\r
-                   else\r
-                       return "{\"error\":\""+ e.getResponseBodyAsString() +"\"}";\r
-               }\r
-               return answer;          \r
-       }\r
-}\r
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * 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
+ * 
+ * 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.
+ * ================================================================================
+ */
+package org.openecomp.portalapp.portal.controller;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.openecomp.portalapp.controller.EPUnRestrictedBaseController;
+import org.openecomp.portalapp.portal.domain.EPUser;
+import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
+import org.openecomp.portalapp.portal.service.MicroserviceProxyService;
+import org.openecomp.portalapp.util.EPUserUtils;
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.HttpClientErrorException;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@SuppressWarnings("unchecked")
+@RestController
+@org.springframework.context.annotation.Configuration
+@EnableAspectJAutoProxy
+@EPAuditLog
+public class MicroserviceProxyController extends EPUnRestrictedBaseController {
+
+       @Autowired
+       private MicroserviceProxyService microserviceProxyService;
+
+       EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MicroserviceProxyController.class);
+
+       @RequestMapping(value = { "/portalApi/microservice/proxy/{serviceId}" }, method = {
+                       RequestMethod.GET }, produces = "application/json")
+       public String getMicroserviceProxy(HttpServletRequest request, HttpServletResponse response,
+                       @PathVariable("serviceId") long serviceId) throws Exception {
+               EPUser user = EPUserUtils.getUserSession(request);
+               String answer = "";
+               try {
+                       answer = microserviceProxyService.proxyToDestination(serviceId, user, request);
+               } catch (HttpClientErrorException e) {
+                       answer = e.getResponseBodyAsString();
+               }
+               return isValidJSON(answer) ? answer : "{\"error\":\"" + answer.replace(System.getProperty("line.separator"), "") + "\"}";
+       }
+
+       @RequestMapping(value = { "/portalApi/microservice/proxy/parameter/{widgetId}" }, method = {
+                       RequestMethod.GET }, produces = "application/json")
+       public String getMicroserviceProxyByWidgetId(HttpServletRequest request, HttpServletResponse response,
+                       @PathVariable("widgetId") long widgetId) throws Exception {
+               EPUser user = EPUserUtils.getUserSession(request);
+               String answer = "";
+               try {
+                       answer = microserviceProxyService.proxyToDestinationByWidgetId(widgetId, user, request);
+               } catch (HttpClientErrorException e) {
+                       answer = e.getResponseBodyAsString();
+               }
+               return isValidJSON(answer) ? answer : "{\"error\":\"" + answer.replace(System.getProperty("line.separator"), "") + "\"}";
+       }
+
+       /**
+        * Check whether the response is a valid JSON
+        * @param response
+        * @return true if the response is valid JSON, otherwise, false
+        */
+       private boolean isValidJSON(String response) {
+               try {
+                       final ObjectMapper mapper = new ObjectMapper();
+                       mapper.readTree(response);
+                       return true;
+               } catch (IOException e) {
+                       return false;
+               }
+       }
+}