New Optimization Policy
[policy/engine.git] / ONAP-PAP-REST / src / main / java / org / onap / policy / pap / xacml / rest / XACMLPapServlet.java
index 9564acc..1acec1b 100644 (file)
@@ -46,7 +46,7 @@ import java.util.Scanner;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.CopyOnWriteArrayList;
-import javax.json.JsonException;
+
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
 import javax.persistence.PersistenceException;
@@ -792,7 +792,6 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                } else {
                        PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doGet)");
                }
-               try {
                        loggingContext.metricStarted();
                        XACMLRest.dumpRequest(request);
                        loggingContext.metricEnded();
@@ -907,7 +906,18 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                                                request.getRemoteHost().equals(request.getLocalAddr())) {
                                        // Return status information - basically all the groups
                                        loggingContext.setServiceName("PAP.getGroups");
-                                       Set<OnapPDPGroup> groups = papEngine.getOnapPDPGroups();
+                                       Set<OnapPDPGroup> groups = null;
+                                       try {
+                                           groups = papEngine.getOnapPDPGroups();
+                                       } catch(PAPException e) {
+                                           LOGGER.debug(e);
+                                           PolicyLogger.error(MessageCodes.ERROR_UNKNOWN, e, "XACMLPapServlet", " GET exception");
+                                           loggingContext.transactionEnded();
+                                           PolicyLogger.audit("Transaction Failed - See Error.log");
+                                           setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
+                                           im.endTransaction();
+                                           return;
+                                       }
                                        // convert response object to JSON and include in the response
                                        mapperWriteValue(new ObjectMapper(), response,  groups);
                                        response.setHeader("content-type", "application/json");
@@ -984,15 +994,6 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                                PolicyLogger.audit("Transaction Failed - See Error.log");
                                setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message);
                        }
-               }  catch (PAPException e) {
-                       LOGGER.debug(e);
-                       PolicyLogger.error(MessageCodes.ERROR_UNKNOWN, e, "XACMLPapServlet", " GET exception");
-                       loggingContext.transactionEnded();
-                       PolicyLogger.audit("Transaction Failed - See Error.log");
-                       setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
-                       im.endTransaction();
-                       return;
-               }
                loggingContext.transactionEnded();
                PolicyLogger.audit("Transaction Ended");
                im.endTransaction();
@@ -1017,24 +1018,26 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                        im.startTransaction();
                        loggingContext.metricEnded();
                        PolicyLogger.metrics("XACMLPapServlet doPut im startTransaction");
-               } catch(AdministrativeStateException e) {
-                   String message = "PUT interface called for PAP " + papResourceName + 
-                           " but it has an Administrative state of " + im.getStateManager().getAdminState() +
-                           "\n Exception Message: " + e.getMessage();
-                   logMessage(e, message, loggingContext, response);
-                   return;
-               } catch(StandbyStatusException e) {
-                   String message = "PUT interface called for PAP " + papResourceName + 
-                           " but it has a Standby Status of " + im.getStateManager().getStandbyStatus() +
-                           "\n Exception Message: " + e.getMessage();
-                   logMessage(e, message, loggingContext, response);
-                   return;
                } catch (IntegrityMonitorException e) {
-                   String message = "PUT interface called for PAP " + papResourceName +
-                           " but an exception occurred" +
-                           "\n Exception Message: " + e.getMessage();
-                   logMessage(e, message, loggingContext, response);
-                   return;
+                       String message = "PUT interface called for PAP " + papResourceName;
+                       if (e instanceof AdministrativeStateException) {
+                               message += " but it has an Administrative state of "
+                                       + im.getStateManager().getAdminState();
+                       } else if (e instanceof StandbyStatusException) {
+                               message += " but it has a Standby Status of "
+                                       + im.getStateManager().getStandbyStatus();
+                       } else {
+                               message += " but an exception occurred";
+
+                       }
+                       message += "\n Exception Message: " + e.getMessage();
+
+                       LOGGER.info(message, e);
+                       PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message);
+                       loggingContext.transactionEnded();
+                       PolicyLogger.audit("Transaction Failed - See Error.log");
+                       setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message);
+                       return;
                }
 
                loggingContext.metricStarted();
@@ -1892,7 +1895,16 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                                } else {
                                        // request is for top-level properties about all groups
                                        loggingContext.setServiceName("AC:PAP.getAllGroups");
-                                       Set<OnapPDPGroup> groups = papEngine.getOnapPDPGroups();
+                                       Set<OnapPDPGroup> groups = null;
+                                       try {
+                                           groups = papEngine.getOnapPDPGroups();
+                                       } catch(PAPException e) {
+                                           PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC Get exception");
+                                           loggingContext.transactionEnded();
+                                           PolicyLogger.audit("Transaction Failed - See Error.log");
+                                           setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
+                                           return;
+                                       }
                                        // convert response object to JSON and include in the response
                                        mapperWriteValue(new ObjectMapper(), response,  groups);
                                        if (LOGGER.isDebugEnabled()) {
@@ -2039,7 +2051,12 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                                LOGGER.info("JSON request from AC: " + json);
                                // convert Object sent as JSON into local object
                                ObjectMapper mapper = new ObjectMapper();
-                               Object objectFromJSON = mapper.readValue(json, StdPDP.class);
+                               Object objectFromJSON = null;
+                               try {
+                                   objectFromJSON = mapper.readValue(json, StdPDP.class);
+                               } catch(Exception e) {
+                                   LOGGER.error(e);
+                               }
                                if (pdpId == null ||
                                                objectFromJSON == null ||
                                                ! (objectFromJSON instanceof StdPDP) ||
@@ -2144,7 +2161,12 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                                LOGGER.info("JSON request from AC: " + json);
                                // convert Object sent as JSON into local object
                                ObjectMapper mapper = new ObjectMapper();
-                               Object objectFromJSON  = mapper.readValue(json, StdPDPGroup.class);
+                               Object objectFromJSON = null;
+                               try {
+                                   objectFromJSON  = mapper.readValue(json, StdPDPGroup.class);
+                               } catch(Exception e) {
+                                   LOGGER.error(e);
+                               }
                                if (objectFromJSON == null || ! (objectFromJSON instanceof StdPDPGroup) ||
                                                ! ((StdPDPGroup)objectFromJSON).getId().equals(group.getId())) {
                                        PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + group.getId() + " objectFromJSON="+objectFromJSON);
@@ -2209,14 +2231,6 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                        PolicyLogger.audit("Transaction Failed - See Error.log");
                        setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
                        return;
-               } catch (IOException | JsonException e) {
-                   LOGGER.debug(e);
-                   acPutTransaction.rollbackTransaction();
-                   PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC PUT exception");
-                   loggingContext.transactionEnded();
-                   PolicyLogger.audit("Transaction Failed - See Error.log");
-                   setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
-                   return;
                }
        }
        
@@ -2828,21 +2842,24 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
                        PolicyLogger.audit("Transaction Failed - See Error.log");
                        response.setStatus(HttpServletResponse.SC_OK);
                        return;
-               }catch (ForwardProgressException e){
-                   String message = "GET:/pap/test called and PAP " + papResourceName + " is not making forward progress."
-                           + " Exception Message: " + e.getMessage();
-                   logMessage(e, message, loggingContext, response);
-                   return;
-               }catch (AdministrativeStateException e){
-                   String message = "GET:/pap/test called and PAP " + papResourceName + " Administrative State is LOCKED."
-                           + " Exception Message: " + e.getMessage();
-                   logMessage(e, message, loggingContext, response);
-                   return;
-               }catch (StandbyStatusException e){
-                   String message = "GET:/pap/test called and PAP " + papResourceName + " Standby Status is NOT PROVIDING SERVICE."
-                           + " Exception Message: " + e.getMessage();
-                   logMessage(e, message, loggingContext, response);
-                   return;
+               }catch (ForwardProgressException | AdministrativeStateException | StandbyStatusException e){
+                       String submsg;
+                       if (e instanceof ForwardProgressException) {
+                               submsg = " is not making forward progress.";
+                       } else if (e instanceof AdministrativeStateException) {
+                               submsg = " Administrative State is LOCKED.";
+                       } else {
+                               submsg = " Standby Status is NOT PROVIDING SERVICE.";
+                       }
+
+                       String message = "GET:/pap/test called and PAP " + papResourceName + submsg
+                                       + " Exception Message: " + e.getMessage();
+                       LOGGER.info(message, e);
+                       PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message);
+                       loggingContext.transactionEnded();
+                       PolicyLogger.audit("Transaction Failed - See Error.log");
+                       setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message);
+                       return;
                }catch (Exception e) {
                        //A subsystem is not making progress, is locked, standby or is not responding
                        String eMsg = e.getMessage();
@@ -3017,12 +3034,4 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList
        public static void setMsPolicyName(String msPolicyName) {
                XACMLPapServlet.msPolicyName = msPolicyName;
        }
-       
-       private void logMessage(Exception e, String message, ONAPLoggingContext loggingContext, HttpServletResponse response) {
-           LOGGER.info(message, e);
-           PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message);
-           loggingContext.transactionEnded();
-           PolicyLogger.audit("Transaction Failed - See Error.log");
-           setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message);
-       }
-}
+}
\ No newline at end of file