-/*-\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
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the “License”);
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+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.databind.ObjectMapper;
+
+@RestController
+@org.springframework.context.annotation.Configuration
+@EnableAspectJAutoProxy
+@EPAuditLog
+public class MicroserviceProxyController extends EPUnRestrictedBaseController {
+
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MicroserviceProxyController.class);
+
+ @Autowired
+ private MicroserviceProxyService microserviceProxyService;
+
+ @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) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "isValidJSON failed", e);
+ return false;
+ }
+ }
+}