From d98d4c9f564428ee9edd398675b27226645d7ef5 Mon Sep 17 00:00:00 2001 From: Parshad Patel Date: Wed, 2 Oct 2019 11:25:24 +0900 Subject: Fix NPE issue in epsdk-analytics Fix A "NullPointerException" could be thrown Either log or rethrow this exception Define a constant instead of duplicating this literal Replace the type specification in this constructor call with the diamond operator ("<>") Issue-ID: PORTAL-562 Change-Id: I51a8bb0feec5b63f82b19097d62a4977a020fdfe Signed-off-by: Parshad Patel --- .../system/fusion/web/RaptorController.java | 277 +++++++++++---------- 1 file changed, 141 insertions(+), 136 deletions(-) (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system') diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorController.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorController.java index 3fd2f1b8..8eda540d 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorController.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorController.java @@ -33,7 +33,7 @@ * * ============LICENSE_END============================================ * - * + * */ package org.onap.portalsdk.analytics.system.fusion.web; @@ -69,140 +69,145 @@ import com.fasterxml.jackson.databind.SerializationFeature; @RequestMapping("/") public class RaptorController extends RestrictedBaseController { - private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorController.class); - - @RequestMapping(value = { "/report" }, method = RequestMethod.GET) - public ModelAndView report(HttpServletRequest request) { - request.getSession().setAttribute("isEmbedded", false); - return new ModelAndView("report"); - } - - @RequestMapping(value = { "/reportDS1" }, method = RequestMethod.GET) - public ModelAndView reportDS1(HttpServletRequest request) { - request.getSession().setAttribute("isEmbedded", false); - return new ModelAndView("reportDS1"); - } - - @RequestMapping(value = { "/report_embedded" }, method = RequestMethod.GET) - public ModelAndView reportEmbedded(HttpServletRequest request) { - request.getSession().setAttribute("isEmbedded", true); - return new ModelAndView("report_embedded"); - } - - @RequestMapping(value = { "/report_sample" }, method = RequestMethod.GET) - public ModelAndView reportSample(HttpServletRequest request) { - return new ModelAndView("report_sample"); - } - - @RequestMapping(value = { "/report_import.htm" }, method = RequestMethod.GET) - public ModelAndView reportImport(HttpServletRequest request) throws IOException { - String viewName = "report_import"; - Action action = null; - String actionKey = "report.import"; - ServletContext servletContext = request.getSession().getServletContext(); - if (!Globals.isSystemInitialized()) { - Globals.initializeSystem(servletContext); - } - try { - action = Globals.getRaptorActionMapping().getAction(actionKey); - if (action == null) - throw new RaptorRuntimeException("Action not found"); - } catch (RaptorException e) { - logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action [" - + actionKey + "]. RaptorException: " + e.getMessage())); - viewName = new ErrorHandler().processFatalError(request, - new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey - + "]. Exception: " + e.getMessage())); - } - return new ModelAndView(viewName, "model", null); - } - - @RequestMapping(value = { "/report_wizard.htm" }, method = { RequestMethod.POST, RequestMethod.GET }) - public ModelAndView reportWizard(HttpServletRequest request, HttpServletResponse response) throws IOException { - String viewName = ""; - String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action")); - actionKey = nvl(actionKey, "report.run"); - Action action = null; - ServletContext servletContext = request.getSession().getServletContext(); - if (!Globals.isSystemInitialized()) { - Globals.initializeSystem(servletContext); - } - try { - action = Globals.getRaptorActionMapping().getAction(actionKey); - if (action == null) - throw new RaptorRuntimeException("Action not found"); - } catch (RaptorException e) { - logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action [" - + actionKey + "]. RaptorException: " + e.getMessage())); - viewName = (new ErrorHandler()).processFatalError(request, - new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey - + "]. Exception: " + e.getMessage())); - ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime(); - errorJSONRuntime.setErrormessage(e.toString()); - errorJSONRuntime.setStacktrace(getStackTrace(e)); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String jsonInString = ""; - try { - jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime); - } catch (Exception ex) { - ex.printStackTrace(); - - } - } - - try { - Class[] paramTypes = new Class[2]; - paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest"); - paramTypes[1] = Class.forName("java.lang.String"); - - Class handlerClass = Class.forName(action.getControllerClass()); - Object handler = handlerClass.newInstance(); - Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes); - - Object[] paramValues = new Object[2]; - paramValues[0] = request; - paramValues[1] = action.getJspName(); - viewName = (String) handlerMethod.invoke(handler, paramValues); - } catch (Exception e) { - logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action [" - + actionKey + "]. Exception: " + e.getMessage())); - viewName = (new ErrorHandler()).processFatalError(request, - new RaptorRuntimeException( - "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: " - + e.getMessage())); - - ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime(); - errorJSONRuntime.setErrormessage(e.toString()); - errorJSONRuntime.setStacktrace(getStackTrace(e)); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String jsonInString = ""; - try { - jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime); - } catch (Exception ex) { - ex.printStackTrace(); - - } - } - return new ModelAndView(viewName, "model", null); - } - - private String nvl(String s) { - return (s == null) ? "" : s; - } - - private String nvl(String s, String sDefault) { - return nvl(s).equals("") ? sDefault : s; - } - - public static String getStackTrace(Throwable aThrowable) { - Writer result = new StringWriter(); - PrintWriter printWriter = new PrintWriter(result); - aThrowable.printStackTrace(printWriter); - return result.toString(); - } + private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorController.class); + private static final String IS_EMBEDDED = "isEmbedded"; + private static final String ACTION_NOT_FOUND = "Action not found"; + + @RequestMapping(value = { "/report" }, method = RequestMethod.GET) + public ModelAndView report(HttpServletRequest request) { + request.getSession().setAttribute(IS_EMBEDDED, false); + return new ModelAndView("report"); + } + + @RequestMapping(value = { "/reportDS1" }, method = RequestMethod.GET) + public ModelAndView reportDS1(HttpServletRequest request) { + request.getSession().setAttribute(IS_EMBEDDED, false); + return new ModelAndView("reportDS1"); + } + + @RequestMapping(value = { "/report_embedded" }, method = RequestMethod.GET) + public ModelAndView reportEmbedded(HttpServletRequest request) { + request.getSession().setAttribute(IS_EMBEDDED, true); + return new ModelAndView("report_embedded"); + } + + @RequestMapping(value = { "/report_sample" }, method = RequestMethod.GET) + public ModelAndView reportSample(HttpServletRequest request) { + return new ModelAndView("report_sample"); + } + + @RequestMapping(value = { "/report_import.htm" }, method = RequestMethod.GET) + public ModelAndView reportImport(HttpServletRequest request) throws IOException { + String viewName = "report_import"; + Action action = null; + String actionKey = "report.import"; + ServletContext servletContext = request.getSession().getServletContext(); + if (!Globals.isSystemInitialized()) { + Globals.initializeSystem(servletContext); + } + try { + action = Globals.getRaptorActionMapping().getAction(actionKey); + if (action == null) + throw new RaptorRuntimeException(ACTION_NOT_FOUND); + } catch (RaptorException e) { + logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action [" + + actionKey + "]. RaptorException: " + e.getMessage())); + viewName = new ErrorHandler().processFatalError(request, + new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey + + "]. Exception: " + e.getMessage())); + } + return new ModelAndView(viewName, "model", null); + } + + @RequestMapping(value = { "/report_wizard.htm" }, method = { RequestMethod.POST, RequestMethod.GET }) + public ModelAndView reportWizard(HttpServletRequest request, HttpServletResponse response) throws IOException { + String viewName = ""; + String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action")); + actionKey = nvl(actionKey, "report.run"); + Action action = null; + ServletContext servletContext = request.getSession().getServletContext(); + if (!Globals.isSystemInitialized()) { + Globals.initializeSystem(servletContext); + } + try { + action = Globals.getRaptorActionMapping().getAction(actionKey); + if (action == null) { + throw new RaptorRuntimeException(ACTION_NOT_FOUND); + } + } catch (RaptorException e) { + logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action [" + + actionKey + "]. RaptorException: " + e.getMessage())); + viewName = (new ErrorHandler()).processFatalError(request, + new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey + + "]. Exception: " + e.getMessage())); + ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime(); + errorJSONRuntime.setErrormessage(e.toString()); + errorJSONRuntime.setStacktrace(getStackTrace(e)); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + String jsonInString = ""; + try { + jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime); + } catch (Exception ex) { + logger.debug(EELFLoggerDelegate.debugLogger, "Exception in JSON mapper", ex); + } + } + + try { + Class[] paramTypes = new Class[2]; + paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest"); + paramTypes[1] = Class.forName("java.lang.String"); + + if (action != null) { + Class handlerClass = Class.forName(action.getControllerClass()); + Object handler = handlerClass.newInstance(); + Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes); + + Object[] paramValues = new Object[2]; + paramValues[0] = request; + paramValues[1] = action.getJspName(); + viewName = (String) handlerMethod.invoke(handler, paramValues); + } else { + throw new RaptorRuntimeException(ACTION_NOT_FOUND); + } + } catch (Exception e) { + logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action [" + + actionKey + "]. Exception: " + e.getMessage())); + viewName = (new ErrorHandler()).processFatalError(request, + new RaptorRuntimeException( + "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: " + + e.getMessage())); + + ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime(); + errorJSONRuntime.setErrormessage(e.toString()); + errorJSONRuntime.setStacktrace(getStackTrace(e)); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + String jsonInString = ""; + try { + jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime); + } catch (Exception ex) { + logger.debug(EELFLoggerDelegate.debugLogger, "Exception in JSON mapper", ex); + } + } + return new ModelAndView(viewName, "model", null); + } + + private String nvl(String s) { + return (s == null) ? "" : s; + } + + private String nvl(String s, String sDefault) { + return nvl(s).equals("") ? sDefault : s; + } + + public static String getStackTrace(Throwable aThrowable) { + Writer result = new StringWriter(); + PrintWriter printWriter = new PrintWriter(result); + aThrowable.printStackTrace(printWriter); + return result.toString(); + } } -- cgit 1.2.3-korg