Sonar fix in ecomp-portal-BE-common
[portal.git] / ecomp-portal-BE-common / src / main / java / org / onap / portalapp / portal / controller / AuxApiRequestMapperController.java
index fe2c349..969605c 100644 (file)
@@ -36,6 +36,8 @@
  */
 package org.onap.portalapp.portal.controller;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.annotations.ApiOperation;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -44,13 +46,13 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.jar.Attributes;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
 import org.onap.aaf.cadi.aaf.AAFPermission;
 import org.onap.portalapp.annotation.ApiVersion;
 import org.onap.portalapp.externalsystemapproval.model.ExternalSystemUser;
@@ -67,6 +69,8 @@ import org.onap.portalapp.portal.transport.EpNotificationItem;
 import org.onap.portalapp.portal.transport.FavoritesFunctionalMenuItemJson;
 import org.onap.portalapp.portal.transport.FunctionalMenuItem;
 import org.onap.portalapp.portal.transport.OnboardingApp;
+import org.onap.portalapp.validation.DataValidator;
+import org.onap.portalapp.validation.SecureString;
 import org.onap.portalsdk.core.domain.Role;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.onboarding.crossapi.PortalAPIResponse;
@@ -76,6 +80,7 @@ import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -85,18 +90,15 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import io.swagger.annotations.ApiOperation;
-
 @RestController
 @RequestMapping("/auxapi")
-@org.springframework.context.annotation.Configuration
+@Configuration
 @EnableAspectJAutoProxy
 @EPAuditLog
 public class AuxApiRequestMapperController implements ApplicationContextAware, BasicAuthenticationController {
 
        private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AuxApiRequestMapperController.class);
+       private DataValidator dataValidator = new DataValidator();
 
        ApplicationContext context = null;
        int minorVersion = 0;
@@ -108,6 +110,13 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/user/{loginId}" }, method = RequestMethod.GET, produces = "application/json")
        public String getUser(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable("loginId") String loginId) throws Exception {
+               if (loginId!=null){
+                       SecureString secureLoginId = new SecureString(loginId);
+                       if (!dataValidator.isValid(secureLoginId))
+                               return "Provided data is not valid";
+               }
+
+
                Map<String, Object> res = getMethod(request, response);
                String answer = null;
                try {
@@ -198,6 +207,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/function/{code}" }, method = RequestMethod.GET, produces = "application/json")
        public CentralV2RoleFunction getRoleFunction(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable("code") String code) throws Exception {
+               if (code!=null){
+                       SecureString secureCode = new SecureString(code);
+                       if (!dataValidator.isValid(secureCode))
+                               return new CentralV2RoleFunction();
+               }
+
                Map<String, Object> res = getMethod(request, response);
                CentralV2RoleFunction roleFunction = null;
                try {
@@ -213,15 +228,24 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/roleFunction" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> saveRoleFunction(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody String roleFunc) throws Exception {
-               PortalRestResponse<String> result = null;
+               if (roleFunc!=null){
+                       SecureString secureRoleFunc = new SecureString(roleFunc);
+                       if(!dataValidator.isValid(secureRoleFunc))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Provided data is not valid", "Failed");
+               }
+               Optional<PortalRestResponse<String>> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response, roleFunc);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "saveRoleFunction failed", new Exception("saveRoleFunction failed"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "saveRoleFunction failed", "Failed");
+                       }
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "saveRoleFunction failed", e);
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
+                       return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
                }
+               return result.get();
        }
 
        @SuppressWarnings("unchecked")
@@ -230,6 +254,13 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        public PortalRestResponse<String> deleteRoleFunction(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable("code") String code) throws Exception {
                PortalRestResponse<String> result = null;
+
+               if (code!=null){
+                       SecureString secureCode = new SecureString(code);
+                       if(!dataValidator.isValid(secureCode))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Provided data is not valid", "Failed");
+               }
+
                Map<String, Object> res = getMethod(request, response);
                try {
                        result = (PortalRestResponse<String>) invokeMethod(res, request, response, code);
@@ -252,7 +283,7 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        return result;
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "deleteRole failed", e);
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
+                       return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
                }
        }
 
@@ -276,6 +307,14 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        public String getEcompUser(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable("loginId") String loginId) throws Exception {
                Map<String, Object> res = getMethod(request, response);
+
+               if (loginId!=null){
+                       SecureString secureLoginId = new SecureString(loginId);
+
+                       if (!dataValidator.isValid(secureLoginId))
+                               return null;
+               }
+
                String answer = null;
                try {
                        answer = (String) invokeMethod(res, request, response, loginId);
@@ -319,6 +358,14 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/extendSessionTimeOuts" }, method = RequestMethod.POST)
        public Boolean extendSessionTimeOuts(HttpServletRequest request, HttpServletResponse response,
                        @RequestParam String sessionMap) throws Exception {
+
+               if (sessionMap!=null){
+                       SecureString secureSessionMap = new SecureString(sessionMap);
+                       if (!dataValidator.isValid(secureSessionMap)){
+                               return null;
+                       }
+               }
+
                Map<String, Object> res = getMethod(request, response);
                Boolean ans = null;
                try {
@@ -347,6 +394,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @ApiOperation(value = "Accepts data from partner applications with web analytics data.", response = PortalAPIResponse.class)
        public PortalAPIResponse storeAnalyticsScript(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody Analytics analyticsMap) throws Exception {
+
+               if (analyticsMap!=null){
+                       if (!dataValidator.isValid(analyticsMap))
+                               return new PortalAPIResponse(false, "analyticsScript is not valid");
+               }
+
                Map<String, Object> res = getMethod(request, response);
                PortalAPIResponse ans = new PortalAPIResponse(true, "error");
                try {
@@ -364,16 +417,19 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        "/v3/upload/portal/functions" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadFunctions(HttpServletRequest request, HttpServletResponse response)
                        throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadFunctions", new Exception("Failed to bulkUploadFunctions"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadFunctions", "Failed");
+                       }
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadFunctions failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
                }
-
+               return result.get();
        }
 
        @SuppressWarnings("unchecked")
@@ -381,11 +437,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/upload/portal/roles" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadRoles(HttpServletRequest request, HttpServletResponse response)
                        throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadRoles", new Exception("Failed to bulkUploadRoles"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadRoles", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -398,11 +458,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        "/v3/upload/portal/roleFunctions" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadRoleFunctions(HttpServletRequest request, HttpServletResponse response)
                        throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadRoleFunctions", new Exception("Failed to bulkUploadRoleFunctions"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadRoleFunctions", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoleFunctions failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -415,11 +479,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        "/v3/upload/portal/userRoles" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadUserRoles(HttpServletRequest request, HttpServletResponse response)
                        throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadUserRoles", new Exception("Failed to bulkUploadUserRoles"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadUserRoles", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadUserRoles failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -433,11 +501,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        "/v3/upload/portal/userRole/{roleId}" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadUsersSingleRole(HttpServletRequest request,
                        HttpServletResponse response, @PathVariable Long roleId) throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response, roleId);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadUsersSingleRole", new Exception("Failed to bulkUploadUsersSingleRole"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadUsersSingleRole", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadUsersSingleRole failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -450,11 +522,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        "/v3/upload/partner/functions" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadPartnerFunctions(HttpServletRequest request,
                        HttpServletResponse response) throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadPartnerRoleFunctions", new Exception("Failed to bulkUploadPartnerRoleFunctions"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadPartnerRoleFunctions", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadPartnerFunctions failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -467,11 +543,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/upload/partner/roles" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadPartnerRoles(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody List<Role> upload) throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response, upload);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadRoles", new Exception("Failed to bulkUploadRoles"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadRoles", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadPartnerRoles failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -484,11 +564,15 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
                        "/v3/upload/partner/roleFunctions" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> bulkUploadPartnerRoleFunctions(HttpServletRequest request,
                        HttpServletResponse response) throws Exception {
-               PortalRestResponse<String> result = null;
+               Optional<PortalRestResponse<String>> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalRestResponse<String>) invokeMethod(res, request, response);
-                       return result;
+                       result = Optional.ofNullable((PortalRestResponse<String>) invokeMethod(res, request, response));
+                       if (!result.isPresent()){
+                               logger.error(EELFLoggerDelegate.errorLogger, "Failed to bulkUploadPartnerRoleFunctions", new Exception("Failed to bulkUploadPartnerRoleFunctions"));
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadPartnerRoleFunctions", "Failed");
+                       }
+                       return result.get();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadPartnerRoleFunctions failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -715,6 +799,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/userProfile" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> postUserProfile(HttpServletRequest request,
                        @RequestBody ExternalSystemUser extSysUser, HttpServletResponse response) {
+
+               if (extSysUser!=null){
+                       if (!dataValidator.isValid(extSysUser))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "ExternalSystemUser is not valid", "Failed");
+               }
+
                PortalRestResponse<String> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
@@ -731,6 +821,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/userProfile" }, method = RequestMethod.PUT, produces = "application/json")
        public PortalRestResponse<String> putUserProfile(HttpServletRequest request,
                        @RequestBody ExternalSystemUser extSysUser, HttpServletResponse response) {
+
+               if (extSysUser!=null){
+                       if (!dataValidator.isValid(extSysUser))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "ExternalSystemUser is not valid", "Failed");
+               }
+
                PortalRestResponse<String> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
@@ -747,6 +843,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/userProfile" }, method = RequestMethod.DELETE, produces = "application/json")
        public PortalRestResponse<String> deleteUserProfile(HttpServletRequest request,
                        @RequestBody ExternalSystemUser extSysUser, HttpServletResponse response) {
+
+               if (extSysUser!=null){
+                       if (!dataValidator.isValid(extSysUser))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "ExternalSystemUser is not valid", "Failed");
+               }
+
                PortalRestResponse<String> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
@@ -763,6 +865,13 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/ticketevent" }, method = RequestMethod.POST)
        public PortalRestResponse<String> handleRequest(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody String ticketEventJson) throws Exception {
+
+               if (ticketEventJson!=null){
+                       SecureString secureTicketEventJson = new SecureString(ticketEventJson);
+                       if (!dataValidator.isValid(secureTicketEventJson))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "ticketEventJson is not valid", "Failed");
+               }
+
                PortalRestResponse<String> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
@@ -780,6 +889,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @ResponseBody
        public PortalRestResponse<String> postPortalAdmin(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody EPUser epUser) {
+
+               if (epUser!=null){
+                       if (!dataValidator.isValid(epUser))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "EPUser is not valid", "Failed");
+               }
+
                PortalRestResponse<String> result = null;
                Map<String, Object> res = getMethod(request, response);
                try {
@@ -812,6 +927,12 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @ResponseBody
        public PortalRestResponse<String> postOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody OnboardingApp newOnboardApp) {
+
+               if (newOnboardApp!=null){
+                       if (!dataValidator.isValid(newOnboardApp))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "OnboardingApp is not valid", "Failed");
+               }
+
                PortalRestResponse<String> result = new PortalRestResponse<>();
                Map<String, Object> res = getMethod(request, response);
                try {
@@ -830,7 +951,13 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @ResponseBody
        public PortalRestResponse<String> putOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable("appId") Long appId, @RequestBody OnboardingApp oldOnboardApp) {
-               PortalRestResponse<String> result = new PortalRestResponse<>();
+
+               if (oldOnboardApp!=null){
+                       if (!dataValidator.isValid(oldOnboardApp))
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "OnboardingApp is not valid", "Failed");
+               }
+
+               PortalRestResponse<String> result;
                Map<String, Object> res = getMethod(request, response);
                try {
                        result = (PortalRestResponse<String>) invokeMethod(res, request, response, appId, oldOnboardApp);
@@ -845,12 +972,16 @@ public class AuxApiRequestMapperController implements ApplicationContextAware, B
        @RequestMapping(value = { "/v3/publishNotification" }, method = RequestMethod.POST, produces = "application/json")
        @ResponseBody
        public PortalAPIResponse publishNotification(HttpServletRequest request,
-                       @RequestBody EpNotificationItem notificationItem, HttpServletResponse response) throws Exception {
-               PortalAPIResponse result = new PortalAPIResponse(true, "success");
+                       @RequestBody EpNotificationItem notificationItem, HttpServletResponse response) {
+
+               if (notificationItem!=null){
+                       if (!dataValidator.isValid(notificationItem))
+                               return new PortalAPIResponse(false, "EpNotificationItem is not valid");
+               }
+
                Map<String, Object> res = getMethod(request, response);
                try {
-                       result = (PortalAPIResponse) invokeMethod(res, request, response, notificationItem);
-                       return result;
+                       return (PortalAPIResponse) invokeMethod(res, request, response, notificationItem);
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "publishNotification failed", e);
                        return new PortalAPIResponse(false, e.getMessage());