Merge "Fix NodeServlet Vulnerabilities"
authorRam Koya <rk541m@att.com>
Thu, 20 Sep 2018 15:44:26 +0000 (15:44 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 20 Sep 2018 15:44:26 +0000 (15:44 +0000)
44 files changed:
datarouter-node/pom.xml
datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeUtils.java
datarouter-prov/pom.xml
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/DRFeedsServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/FeedServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/InternalServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Poker.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/RouteServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SubscribeServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SynchronizerTask.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Group.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Parameters.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/HttpServletUtils.java [new file with mode: 0644]
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LOGJSONObject.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/URLUtilities.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/reports/FeedReport.java
datarouter-prov/src/main/resources/provserver.properties
datarouter-prov/src/test/resources/h2Database.properties
datarouter-subscriber/pom.xml
datarouter-subscriber/src/main/java/org/onap/dmaap/datarouter/subscriber/SampleSubscriberServlet.java
datarouter-subscriber/src/main/java/org/onap/dmaap/datarouter/subscriber/SubscriberProps.java
docs/data-router/DataRouterUserGuide.rst [new file with mode: 0644]
docs/data-router/administration.rst [new file with mode: 0644]
docs/data-router/architecture.rst [new file with mode: 0644]
docs/data-router/configuration.rst [new file with mode: 0644]
docs/data-router/consumedapis.rst [new file with mode: 0644]
docs/data-router/data-router.rst
docs/data-router/delivery.rst [new file with mode: 0644]
docs/data-router/dr_arch.png [new file with mode: 0644]
docs/data-router/humaninterfaces.rst [new file with mode: 0644]
docs/data-router/logging.rst [new file with mode: 0644]
docs/data-router/release-notes.rst [new file with mode: 0644]
docs/index.rst
pom.xml
version.properties

index f9bdce6..29e3ce4 100755 (executable)
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.onap.dmaap.datarouter</groupId>
         <artifactId>parent</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.0.2-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>datarouter-node</artifactId>
index 4af4bd0..7ecbaaf 100644 (file)
@@ -257,7 +257,6 @@ public class NodeConfigManager implements DeliveryQueueHelper {
                 }
             }
         } catch (Exception e) {
-            e.printStackTrace();
             NodeUtils.setIpAndFqdnForEelf("fetchconfigs");
             eelflogger.error(EelfMsgs.MESSAGE_CONF_FAILED, e.toString());
             logger.error("NODE0306 Configuration failed " + e.toString() + " - try again later", e);
index e5eb2ed..b54068b 100644 (file)
@@ -68,18 +68,15 @@ public class NodeServlet extends HttpServlet {
         .getLogger("org.onap.dmaap.datarouter.node.NodeServlet");
 
     static {
-        try {
-            final String ws = "\\s*";
-            // assume that \\ and \" have been replaced by X
-            final String string = "\"[^\"]*\"";
-            //String string = "\"(?:[^\"\\\\]|\\\\.)*\"";
-            final String number = "[+-]?(?:\\.\\d+|(?:0|[1-9]\\d*)(?:\\.\\d*)?)(?:[eE][+-]?\\d+)?";
-            final String value = "(?:" + string + "|" + number + "|null|true|false)";
-            final String item = string + ws + ":" + ws + value + ws;
-            final String object = ws + "\\{" + ws + "(?:" + item + "(?:" + "," + ws + item + ")*)?\\}" + ws;
-            MetaDataPattern = Pattern.compile(object, Pattern.DOTALL);
-        } catch (Exception e) {
-        }
+        final String ws = "\\s*";
+        // assume that \\ and \" have been replaced by X
+        final String string = "\"[^\"]*\"";
+        //String string = "\"(?:[^\"\\\\]|\\\\.)*\"";
+        final String number = "[+-]?(?:\\.\\d+|(?:0|[1-9]\\d*)(?:\\.\\d*)?)(?:[eE][+-]?\\d+)?";
+        final String value = "(?:" + string + "|" + number + "|null|true|false)";
+        final String item = string + ws + ":" + ws + value + ws;
+        final String object = ws + "\\{" + ws + "(?:" + item + "(?:" + "," + ws + item + ")*)?\\}" + ws;
+        MetaDataPattern = Pattern.compile(object, Pattern.DOTALL);
     }
 
     /**
index 01585d9..cc21992 100644 (file)
@@ -55,12 +55,6 @@ public class NodeUtils {
     private static EELFLogger eelfLogger = EELFManager.getInstance()
         .getLogger("org.onap.dmaap.datarouter.node.NodeUtils");
     private static Logger nodeUtilsLogger = Logger.getLogger("org.onap.dmaap.datarouter.node.NodeUtils");
-    private static SimpleDateFormat logDate;
-
-    static {
-        logDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-        logDate.setTimeZone(TimeZone.getTimeZone("GMT"));
-    }
 
     private NodeUtils() {
     }
@@ -243,6 +237,8 @@ public class NodeUtils {
      * Format a logging timestamp as yyyy-mm-ddThh:mm:ss.mmmZ
      */
     public static synchronized String logts(Date when) {
+        SimpleDateFormat logDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+        logDate.setTimeZone(TimeZone.getTimeZone("GMT"));
         return (logDate.format(when));
     }
 
index c9c0c2f..0bb5417 100755 (executable)
@@ -25,7 +25,7 @@
     <parent>\r
         <groupId>org.onap.dmaap.datarouter</groupId>\r
         <artifactId>parent</artifactId>\r
-        <version>1.0.1-SNAPSHOT</version>\r
+        <version>1.0.2-SNAPSHOT</version>\r
         <relativePath>../pom.xml</relativePath>\r
     </parent>\r
     <artifactId>datarouter-prov</artifactId>\r
         <datarouter.prov.image.name>onap/dmaap/datarouter-prov</datarouter.prov.image.name>\r
     </properties>\r
     <dependencies>\r
+        <dependency>\r
+            <groupId>xml-apis</groupId>\r
+            <artifactId>xml-apis</artifactId>\r
+            <version>${xml-apis.version}</version>\r
+        </dependency>\r
         <dependency>\r
             <groupId>dom4j</groupId>\r
             <artifactId>dom4j</artifactId>\r
index 047043b..3838cad 100755 (executable)
@@ -121,7 +121,6 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
     private static final int DEFAULT_POKETIMER2 = 30;
     private static final String DEFAULT_DOMAIN = "onap";
     private static final String DEFAULT_PROVSRVR_NAME = "dmaap-dr-prov";
-    private static final String RESEARCH_SUBNET = "10.42.0.0/16";
     private static final String STATIC_ROUTING_NODES = ""; //Adding new param for static Routing - Rally:US664862-1610
 
     /**
@@ -139,11 +138,11 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
     /**
      * The set of authorized addresses and networks; pulled from the DB (PROV_AUTH_ADDRESSES)
      */
-    private static Set<String> authorizedAddressesAndNetworks = new HashSet<String>();
+    private static Set<String> authorizedAddressesAndNetworks = new HashSet<>();
     /**
      * The set of authorized names; pulled from the DB (PROV_AUTH_SUBJECTS)
      */
-    private static Set<String> authorizedNames = new HashSet<String>();
+    private static Set<String> authorizedNames = new HashSet<>();
     /**
      * The FQDN of the initially "active" provisioning server in this Data Router ecosystem
      */
@@ -199,19 +198,13 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
     /**
      * The standard FQDN of the provisioning server in this Data Router ecosystem
      */
-    public static String provName = "feeds-drtr.web.att.com";
+    private static String provName = "feeds-drtr.web.att.com";
+
     /**
      * The standard FQDN of the ACTIVE provisioning server in this Data Router ecosystem
      */
-    public static String activeProvName = "feeds-drtr.web.att.com";
-    /**
-     * Special subnet that is allowed access to /internal
-     */
-    private static String researchSubnet = RESEARCH_SUBNET;
-    /**
-     * Special subnet that is allowed access to /internal to Lab Machine
-     */
-    private static String researchSubnet1 = RESEARCH_SUBNET;
+    private static String activeProvName = "feeds-drtr.web.att.com";
+
     private static String staticRoutingNodes = STATIC_ROUTING_NODES; //Adding new param for static Routing - Rally:US664862-1610
 
     /**
@@ -389,13 +382,6 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
             if (loopback != null && ip.equals(loopback)) {
                 return true;
             }
-            // Also allow the "special subnet" access
-            if (addressMatchesNetwork(ip, researchSubnet1)) {
-                return true;
-            }
-            if (addressMatchesNetwork(ip, researchSubnet)) {
-                return true;
-            }
         } catch (UnknownHostException e) {
             // ignore
         }
@@ -473,7 +459,6 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
         provDomain = getString(map, Parameters.PROV_DOMAIN, DEFAULT_DOMAIN);
         provName = getString(map, Parameters.PROV_NAME, DEFAULT_PROVSRVR_NAME);
         activeProvName = getString(map, Parameters.PROV_ACTIVE_NAME, provName);
-        researchSubnet = getString(map, Parameters.PROV_SPECIAL_SUBNET, RESEARCH_SUBNET);
         staticRoutingNodes = getString(map, Parameters.STATIC_ROUTING_NODES,
             ""); //Adding new param for static Routing - Rally:US664862-1610
         initialActivePod = getString(map, Parameters.ACTIVE_POD, "");
@@ -630,6 +615,13 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
         }
     }
 
+    public static String getProvName() {
+        return provName;
+    }
+
+    public static String getActiveProvName() {
+        return activeProvName;
+    }
 
     /**
      * Get an array of all node names in the DR network.
@@ -784,7 +776,7 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
     }
 
     private static Set<String> getSet(Map<String, String> map, String name) {
-        Set<String> set = new HashSet<String>();
+        Set<String> set = new HashSet<>();
         String s = map.get(name);
         if (s != null) {
             String[] pp = s.split("\\|");
@@ -807,7 +799,7 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
     public class ContentHeader {
 
         private String type = "";
-        private Map<String, String> map = new HashMap<String, String>();
+        private Map<String, String> map = new HashMap<>();
 
         ContentHeader() {
             this("", "1.0");
index 47156d2..d7da4dc 100644 (file)
@@ -41,6 +41,8 @@ import org.onap.dmaap.datarouter.provisioning.utils.JSONUtilities;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
+
 /**
  * This servlet handles provisioning for the &lt;drFeedsURL&gt; which is the URL on the provisioning server used to
  * create new feeds.  It supports POST to create new feeds, and GET to support the Feeds Collection Query function.
@@ -59,7 +61,7 @@ public class DRFeedsServlet extends ProxyServlet {
      * DELETE on the &lt;drFeedsURL&gt; -- not supported.
      */
     @Override
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doDelete");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         String message = "DELETE not allowed for the drFeedsURL.";
@@ -67,7 +69,7 @@ public class DRFeedsServlet extends ProxyServlet {
         elr.setMessage(message);
         elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
         eventlogger.info(elr);
-        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);
+        sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
     }
 
     /**
@@ -75,7 +77,7 @@ public class DRFeedsServlet extends ProxyServlet {
      * Queries</i> section in the <b>Provisioning API</b> document for details on how this method should be invoked.
      */
     @Override
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doGet");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         EventLogRecord elr = new EventLogRecord(req);
@@ -84,11 +86,15 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doGet(req, resp);
+            try {
+                super.doGet(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -97,7 +103,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         String path = req
@@ -107,7 +113,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -117,7 +123,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
 
@@ -133,14 +139,18 @@ public class DRFeedsServlet extends ProxyServlet {
                 elr.setMessage(message);
                 elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
                 eventlogger.info(elr);
-                resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+                sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             } else {
                 // send response
                 elr.setResult(HttpServletResponse.SC_OK);
                 eventlogger.info(elr);
                 resp.setStatus(HttpServletResponse.SC_OK);
                 resp.setContentType(FEEDFULL_CONTENT_TYPE);
-                resp.getOutputStream().print(feed.asJSONObject(true).toString());
+                try {
+                    resp.getOutputStream().print(feed.asJSONObject(true).toString());
+                } catch (IOException ioe) {
+                    eventlogger.error("IOException" + ioe.getMessage());
+                }
             }
         } else {
             // Display a list of URLs
@@ -160,7 +170,11 @@ public class DRFeedsServlet extends ProxyServlet {
             eventlogger.info(elr);
             resp.setStatus(HttpServletResponse.SC_OK);
             resp.setContentType(FEEDLIST_CONTENT_TYPE);
-            resp.getOutputStream().print(t);
+            try {
+                resp.getOutputStream().print(t);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
         }
     }
 
@@ -168,7 +182,7 @@ public class DRFeedsServlet extends ProxyServlet {
      * PUT on the &lt;drFeedsURL&gt; -- not supported.
      */
     @Override
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPut");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         String message = "PUT not allowed for the drFeedsURL.";
@@ -176,7 +190,7 @@ public class DRFeedsServlet extends ProxyServlet {
         elr.setMessage(message);
         elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
         eventlogger.info(elr);
-        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);
+        sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
     }
 
     /**
@@ -184,7 +198,7 @@ public class DRFeedsServlet extends ProxyServlet {
      * <b>Provisioning API</b> document for details on how this method should be invoked.
      */
     @Override
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPost");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));
         EventLogRecord elr = new EventLogRecord(req);
@@ -193,11 +207,15 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doPost(req, resp);
+            try {
+                super.doPost(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -206,7 +224,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         String path = req
@@ -216,7 +234,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // check content type is FEED_CONTENT_TYPE, version 1.0
@@ -227,7 +245,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -237,7 +255,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         JSONObject jo = getJSONfromInput(req);
@@ -246,7 +264,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (intlogger.isDebugEnabled()) {
@@ -258,7 +276,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_CONFLICT);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_CONFLICT, message);
+            sendResponseError(resp, HttpServletResponse.SC_CONFLICT, message, eventlogger);
             return;
         }
         Feed feed = null;
@@ -269,7 +287,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         feed.setPublisher(bhdr);    // set from X-ATT-DR-ON-BEHALF-OF header
@@ -281,7 +299,7 @@ public class DRFeedsServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
 
@@ -293,13 +311,17 @@ public class DRFeedsServlet extends ProxyServlet {
             resp.setStatus(HttpServletResponse.SC_CREATED);
             resp.setContentType(FEEDFULL_CONTENT_TYPE);
             resp.setHeader("Location", feed.getLinks().getSelf());
-            resp.getOutputStream().print(feed.asLimitedJSONObject().toString());
+            try {
+                resp.getOutputStream().print(feed.asLimitedJSONObject().toString());
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             provisioningDataChanged();
         } else {
             // Something went wrong with the INSERT
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
         }
     }
 }
index 3f8929e..d2452e7 100644 (file)
@@ -30,6 +30,7 @@ import java.io.InvalidObjectException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.json.JSONException;
 import org.json.JSONObject;
 import org.onap.dmaap.datarouter.authz.AuthorizationResponse;
 import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;
@@ -39,6 +40,8 @@ import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
+
 /**
  * This servlet handles provisioning for the &lt;feedURL&gt; which is generated by the provisioning
  * server to handle a particular feed. It supports DELETE to mark the feed as deleted,
@@ -59,7 +62,7 @@ public class FeedServlet extends ProxyServlet {
      * document for details on how this method should be invoked.
      */
     @Override
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doDelete");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER),getIdFromPath(req)+"");
         EventLogRecord elr = new EventLogRecord(req);
@@ -68,11 +71,15 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doDelete(req, resp);
+            try {
+                super.doDelete(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -81,7 +88,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         int feedid = getIdFromPath(req);
@@ -90,7 +97,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         Feed feed = Feed.getFeedById(feedid);
@@ -99,7 +106,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -109,7 +116,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
 
@@ -126,7 +133,7 @@ public class FeedServlet extends ProxyServlet {
             // Something went wrong with the UPDATE
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
         }
     }
     /**
@@ -135,7 +142,7 @@ public class FeedServlet extends ProxyServlet {
      * document for details on how this method should be invoked.
      */
     @Override
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doGet");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER),getIdFromPath(req)+"");
         EventLogRecord elr = new EventLogRecord(req);
@@ -144,11 +151,15 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doGet(req, resp);
+            try {
+                super.doGet(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -157,7 +168,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         int feedid = getIdFromPath(req);
@@ -166,7 +177,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         Feed feed = Feed.getFeedById(feedid);
@@ -175,7 +186,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -185,7 +196,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
 
@@ -194,7 +205,11 @@ public class FeedServlet extends ProxyServlet {
         eventlogger.info(elr);
         resp.setStatus(HttpServletResponse.SC_OK);
         resp.setContentType(FEEDFULL_CONTENT_TYPE);
-        resp.getOutputStream().print(feed.asJSONObject(true).toString());
+        try {
+            resp.getOutputStream().print(feed.asJSONObject(true).toString());
+        } catch (IOException ioe) {
+            eventlogger.error("IOException" + ioe.getMessage());
+        }
     }
     /**
      * PUT on the &lt;feedURL&gt; for a feed.
@@ -202,7 +217,7 @@ public class FeedServlet extends ProxyServlet {
      * document for details on how this method should be invoked.
      */
     @Override
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPut");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER),getIdFromPath(req)+"");
         EventLogRecord elr = new EventLogRecord(req);
@@ -211,11 +226,15 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doPut(req, resp);
+            try {
+                super.doPut(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -224,7 +243,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         int feedid = getIdFromPath(req);
@@ -233,7 +252,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         Feed oldFeed = Feed.getFeedById(feedid);
@@ -242,7 +261,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // check content type is FEED_CONTENT_TYPE, version 1.0
@@ -253,7 +272,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);
             return;
         }
         JSONObject jo = getJSONfromInput(req);
@@ -262,7 +281,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (intlogger.isDebugEnabled())
@@ -275,7 +294,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         feed.setFeedid(feedid);
@@ -287,7 +306,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (!oldFeed.getName().equals(feed.getName())) {
@@ -295,7 +314,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (!oldFeed.getVersion().equals(feed.getVersion())) {
@@ -303,7 +322,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -313,7 +332,7 @@ public class FeedServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
 
@@ -324,15 +343,23 @@ public class FeedServlet extends ProxyServlet {
             eventlogger.info(elr);
             resp.setStatus(HttpServletResponse.SC_OK);
             resp.setContentType(FEEDFULL_CONTENT_TYPE);
-            resp.getOutputStream().print(feed.asLimitedJSONObject().toString());
+            try {
+                resp.getOutputStream().print(feed.asLimitedJSONObject().toString());
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
 
 
             /**Change Owner ship of Feed //Adding for group feature:Rally US708115*/
             if (jo.has("changeowner") && subjectgroup != null) {
-                Boolean changeowner = (Boolean) jo.get("changeowner");
-                if (changeowner != null && changeowner.equals(true)) {
-                    feed.setPublisher(req.getHeader(BEHALF_HEADER));
-                    feed.changeOwnerShip();
+                try {
+                    Boolean changeowner = (Boolean) jo.get("changeowner");
+                    if (changeowner != null && changeowner.equals(true)) {
+                        feed.setPublisher(req.getHeader(BEHALF_HEADER));
+                        feed.changeOwnerShip();
+                    }
+                } catch (JSONException je) {
+                    eventlogger.error("JSONException" + je.getMessage());
                 }
             }
             /***End of change ownership*/
@@ -342,14 +369,14 @@ public class FeedServlet extends ProxyServlet {
             // Something went wrong with the UPDATE
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
         }
     }
     /**
      * POST on the &lt;feedURL&gt; -- not supported.
      */
     @Override
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPost");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));
         String message = "POST not allowed for the feedURL.";
@@ -357,6 +384,6 @@ public class FeedServlet extends ProxyServlet {
         elr.setMessage(message);
         elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
         eventlogger.info(elr);
-        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);
+        sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
     }
 }
index 8537ff4..96a9924 100644 (file)
@@ -26,18 +26,15 @@ package org.onap.dmaap.datarouter.provisioning;
 
 import java.io.IOException;
 import java.io.InvalidObjectException;
-import java.util.Collection;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.json.JSONObject;
-import org.onap.dmaap.datarouter.authz.AuthorizationResponse;
-import org.onap.dmaap.datarouter.provisioning.BaseServlet.ContentHeader;
 import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;
 import org.onap.dmaap.datarouter.provisioning.beans.Group;
-import org.onap.dmaap.datarouter.provisioning.beans.Subscription;
-import org.onap.dmaap.datarouter.provisioning.utils.JSONUtilities;
+
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
 
 /**
  * This servlet handles provisioning for the &lt;groups&gt; which is generated by the provisioning
@@ -53,13 +50,13 @@ public class GroupServlet extends ProxyServlet {
      * DELETE on the &lt;GRUPS&gt; -- not supported.
      */
     @Override
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
         String message = "DELETE not allowed for the GROUPS.";
         EventLogRecord elr = new EventLogRecord(req);
         elr.setMessage(message);
         elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
         eventlogger.info(elr);
-        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);
+        sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
     }
     /**
      * GET on the the list of groups to a feed/sub.
@@ -67,18 +64,22 @@ public class GroupServlet extends ProxyServlet {
      * document for details on how this method should be invoked.
      */
     @Override
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
         EventLogRecord elr = new EventLogRecord(req);
         String message = isAuthorizedForProvisioning(req);
         if (message != null) {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doGet(req, resp);
+            try {
+                super.doGet(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -87,7 +88,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
 
@@ -122,7 +123,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
 
@@ -132,7 +133,11 @@ public class GroupServlet extends ProxyServlet {
         eventlogger.info(elr);
         resp.setStatus(HttpServletResponse.SC_OK);
         resp.setContentType(GROUPFULL_CONTENT_TYPE);
-        resp.getOutputStream().print(gup.asJSONObject().toString());
+        try {
+            resp.getOutputStream().print(gup.asJSONObject().toString());
+        } catch (IOException ioe) {
+            eventlogger.error("IOException" + ioe.getMessage());
+        }
 
         // Display a list of Groups
         /*Collection<Group> list = Group.getGroupById(groupid);
@@ -149,18 +154,22 @@ public class GroupServlet extends ProxyServlet {
      * PUT on the &lt;GROUPS&gt; -- not supported.
      */
     @Override
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {
         EventLogRecord elr = new EventLogRecord(req);
         String message = isAuthorizedForProvisioning(req);
         if (message != null) {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doPut(req, resp);
+            try {
+                super.doPut(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -169,7 +178,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         int groupid = getIdFromPath(req);
@@ -178,7 +187,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         Group oldgup = Group.getGroupById(groupid);
@@ -187,7 +196,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -208,7 +217,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);
             return;
         }
         JSONObject jo = getJSONfromInput(req);
@@ -217,12 +226,12 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (intlogger.isDebugEnabled())
             intlogger.debug(jo.toString());
-        Group gup = null;
+        Group gup;
         try {
             gup = new Group(jo);
         } catch (InvalidObjectException e) {
@@ -230,17 +239,15 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         gup.setGroupid(oldgup.getGroupid());
-
-
         Group gb2 = Group.getGroupMatching(gup, oldgup.getGroupid());
         if (gb2 != null) {
             eventlogger.warn("PROV0011 Creating a duplicate Group: "+gup.getName());
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Duplicate Group:"+gup.getName());
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Duplicate Group:"+gup.getName(), eventlogger);
             return;
         }
 
@@ -251,13 +258,17 @@ public class GroupServlet extends ProxyServlet {
             eventlogger.info(elr);
             resp.setStatus(HttpServletResponse.SC_OK);
             resp.setContentType(GROUPFULL_CONTENT_TYPE);
-            resp.getOutputStream().print(gup.asJSONObject().toString());
+            try {
+                resp.getOutputStream().print(gup.asJSONObject().toString());
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             provisioningDataChanged();
         } else {
             // Something went wrong with the UPDATE
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
         }
     }
     /**
@@ -266,18 +277,22 @@ public class GroupServlet extends ProxyServlet {
      * document for details on how this method should be invoked.
      */
     @Override
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
         EventLogRecord elr = new EventLogRecord(req);
         String message = isAuthorizedForProvisioning(req);
         if (message != null) {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doPost(req, resp);
+            try {
+                super.doPost(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -286,7 +301,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         /*int feedid = getIdFromPath(req);
@@ -327,7 +342,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);
             return;
         }
         JSONObject jo = getJSONfromInput(req);
@@ -336,13 +351,13 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (intlogger.isDebugEnabled())
             intlogger.debug(jo.toString());
 
-        Group gup = null;
+        Group gup;
         try {
             gup = new Group(jo);
         } catch (InvalidObjectException e) {
@@ -350,7 +365,7 @@ public class GroupServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         //gup.setFeedid(feedid);
@@ -361,7 +376,7 @@ public class GroupServlet extends ProxyServlet {
         if (gb2 != null) {
             eventlogger.warn("PROV0011 Creating a duplicate Group: "+gup.getName());
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Duplicate Group:"+gup.getName());
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Duplicate Group:"+gup.getName(), eventlogger);
             return;
         }
 
@@ -373,13 +388,17 @@ public class GroupServlet extends ProxyServlet {
             eventlogger.info(elr);
             resp.setStatus(HttpServletResponse.SC_CREATED);
             resp.setContentType(GROUPFULL_CONTENT_TYPE);
-            resp.getOutputStream().print(gup.asJSONObject().toString());
+            try {
+                resp.getOutputStream().print(gup.asJSONObject().toString());
+            } catch (IOException ioe) {
+                eventlogger.error("IOException" + ioe.getMessage());
+            }
             provisioningDataChanged();
         } else {
             // Something went wrong with the INSERT
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
         }
     }
 }
index 61845ce..685d552 100644 (file)
@@ -51,6 +51,8 @@ import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
+
 /**
  * <p>
  * This servlet handles requests to URLs under /internal on the provisioning server. These include:
@@ -154,6 +156,7 @@ import com.att.eelf.configuration.EELFManager;
 @SuppressWarnings("serial")
 public class InternalServlet extends ProxyServlet {
 
+    private static final Object lock = new Object();
     private static Integer logseq = 0; // another piece of info to make log spool file names unique
     //Adding EELF Logger Rally:US664892
     private static EELFLogger eelflogger = EELFManager.getInstance()
@@ -164,7 +167,7 @@ public class InternalServlet extends ProxyServlet {
      * details on how this method should be invoked.
      */
     @Override
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doDelete");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         EventLogRecord elr = new EventLogRecord(req);
@@ -172,14 +175,18 @@ public class InternalServlet extends ProxyServlet {
             elr.setMessage("Unauthorized.");
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);
             return;
         }
 
         String path = req.getPathInfo();
         if (path.startsWith("/api/")) {
             if (isProxyOK(req) && isProxyServer()) {
-                super.doDelete(req, resp);
+                try {
+                    super.doDelete(req, resp);
+                } catch (IOException ioe) {
+                    intlogger.error("IOException" + ioe.getMessage());
+                }
                 return;
             }
             String key = path.substring(5);
@@ -196,13 +203,13 @@ public class InternalServlet extends ProxyServlet {
                         // Something went wrong with the DELETE
                         elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                         eventlogger.info(elr);
-                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+                        sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
                     }
                     return;
                 }
             }
         }
-        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");
+        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);
     }
 
     /**
@@ -210,14 +217,15 @@ public class InternalServlet extends ProxyServlet {
      * document for details on how this method should be invoked.
      */
     @Override
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doGet");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         String path = req.getPathInfo();
+        Properties props = (new DB()).getProperties();
         if (path.equals("/halt") && !req.isSecure()) {
             // request to halt the server - can ONLY come from localhost
             String remote = req.getRemoteAddr();
-            if (remote.equals("127.0.0.1")) {
+            if (remote.equals(props.getProperty("org.onap.dmaap.datarouter.provserver.localhost"))) {
                 intlogger.info("PROV0009 Request to HALT received.");
                 resp.setStatus(HttpServletResponse.SC_OK);
                 Main.shutdown();
@@ -233,7 +241,7 @@ public class InternalServlet extends ProxyServlet {
             elr.setMessage("Unauthorized.");
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);
             return;
         }
         if (path.equals("/fetchProv") && !req.isSecure()) {
@@ -245,8 +253,12 @@ public class InternalServlet extends ProxyServlet {
         }
         if (path.equals("/prov")) {
             if (isProxyOK(req) && isProxyServer()) {
-                if (super.doGetWithFallback(req, resp)) {
-                    return;
+                try {
+                    if (super.doGetWithFallback(req, resp)) {
+                        return;
+                    }
+                } catch (IOException ioe) {
+                    intlogger.error("IOException" + ioe.getMessage());
                 }
                 // fall back to returning the local data if the remote is unreachable
                 intlogger.info("Active server unavailable; falling back to local copy.");
@@ -254,18 +266,25 @@ public class InternalServlet extends ProxyServlet {
             Poker p = Poker.getPoker();
             resp.setStatus(HttpServletResponse.SC_OK);
             resp.setContentType(PROVFULL_CONTENT_TYPE2);
-            resp.getOutputStream().print(p.getProvisioningString());
+            try {
+                resp.getOutputStream().print(p.getProvisioningString());
+            } catch (IOException ioe) {
+                intlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         if (path.equals("/logs") || path.equals("/logs/")) {
             resp.setStatus(HttpServletResponse.SC_OK);
             resp.setContentType("application/json");
-            resp.getOutputStream().print(generateLogfileList().toString());
+            try {
+                resp.getOutputStream().print(generateLogfileList().toString());
+            } catch (IOException ioe) {
+                intlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
         if (path.startsWith("/logs/")) {
-            Properties p = (new DB()).getProperties();
-            String logdir = p.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir");
+            String logdir = props.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir");
             String logfile = path.substring(6);
             if (logdir != null && logfile != null && logfile.indexOf('/') < 0) {
                 File log = new File(logdir + "/" + logfile);
@@ -273,16 +292,24 @@ public class InternalServlet extends ProxyServlet {
                     resp.setStatus(HttpServletResponse.SC_OK);
                     resp.setContentType("text/plain");
                     Path logpath = Paths.get(log.getAbsolutePath());
-                    Files.copy(logpath, resp.getOutputStream());
+                    try {
+                        Files.copy(logpath, resp.getOutputStream());
+                    } catch (IOException ioe) {
+                        intlogger.error("IOException" + ioe.getMessage());
+                    }
                     return;
                 }
             }
-            resp.sendError(HttpServletResponse.SC_NO_CONTENT, "No file.");
+            sendResponseError(resp, HttpServletResponse.SC_NO_CONTENT, "No file.", eventlogger);
             return;
         }
         if (path.startsWith("/api/")) {
             if (isProxyOK(req) && isProxyServer()) {
-                super.doGet(req, resp);
+                try {
+                    super.doGet(req, resp);
+                } catch (IOException ioe) {
+                    intlogger.error("IOException" + ioe.getMessage());
+                }
                 return;
             }
             String key = path.substring(5);
@@ -291,7 +318,11 @@ public class InternalServlet extends ProxyServlet {
                 if (param != null) {
                     resp.setStatus(HttpServletResponse.SC_OK);
                     resp.setContentType("text/plain");
-                    resp.getOutputStream().print(param.getValue() + "\n");
+                    try {
+                        resp.getOutputStream().print(param.getValue() + "\n");
+                    } catch (IOException ioe) {
+                        intlogger.error("IOException" + ioe.getMessage());
+                    }
                     return;
                 }
             }
@@ -301,10 +332,14 @@ public class InternalServlet extends ProxyServlet {
             LogfileLoader lfl = LogfileLoader.getLoader();
             resp.setStatus(HttpServletResponse.SC_OK);
             resp.setContentType("text/plain");
-            resp.getOutputStream().print(lfl.getBitSet().toString());
+            try {
+                resp.getOutputStream().print(lfl.getBitSet().toString());
+            } catch (IOException ioe) {
+                intlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
-        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");
+        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);
     }
 
     /**
@@ -312,7 +347,7 @@ public class InternalServlet extends ProxyServlet {
      * details on how this method should be invoked.
      */
     @Override
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPut");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         EventLogRecord elr = new EventLogRecord(req);
@@ -320,13 +355,17 @@ public class InternalServlet extends ProxyServlet {
             elr.setMessage("Unauthorized.");
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);
             return;
         }
         String path = req.getPathInfo();
         if (path.startsWith("/api/")) {
             if (isProxyOK(req) && isProxyServer()) {
-                super.doPut(req, resp);
+                try {
+                    super.doPut(req, resp);
+                } catch (IOException ioe) {
+                    intlogger.error("IOException" + ioe.getMessage());
+                }
                 return;
             }
             String key = path.substring(5);
@@ -345,13 +384,13 @@ public class InternalServlet extends ProxyServlet {
                         // Something went wrong with the UPDATE
                         elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                         eventlogger.info(elr);
-                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+                        sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
                     }
                     return;
                 }
             }
         }
-        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");
+        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);
     }
 
     /**
@@ -360,7 +399,7 @@ public class InternalServlet extends ProxyServlet {
      */
     @SuppressWarnings("resource")
     @Override
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPost");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));
         EventLogRecord elr = new EventLogRecord(req);
@@ -368,14 +407,18 @@ public class InternalServlet extends ProxyServlet {
             elr.setMessage("Unauthorized.");
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);
             return;
         }
 
         String path = req.getPathInfo();
         if (path.startsWith("/api/")) {
             if (isProxyOK(req) && isProxyServer()) {
-                super.doPost(req, resp);
+                try {
+                    super.doPost(req, resp);
+                } catch (IOException ioe) {
+                    intlogger.error("IOException" + ioe.getMessage());
+                }
                 return;
             }
             String key = path.substring(5);
@@ -394,7 +437,7 @@ public class InternalServlet extends ProxyServlet {
                         // Something went wrong with the INSERT
                         elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                         eventlogger.info(elr);
-                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+                        sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
                     }
                     return;
                 }
@@ -412,7 +455,7 @@ public class InternalServlet extends ProxyServlet {
             }
             String spooldir = (new DB()).getProperties().getProperty("org.onap.dmaap.datarouter.provserver.spooldir");
             String spoolname = String.format("%d-%d-", System.currentTimeMillis(), Thread.currentThread().getId());
-            synchronized (logseq) {
+            synchronized (lock) {
                 // perhaps unnecessary, but it helps make the name unique
                 spoolname += logseq.toString();
                 logseq++;
@@ -433,8 +476,12 @@ public class InternalServlet extends ProxyServlet {
             long total = 0;
             long avail = 0;
             for (FileStore store : fs.getFileStores()) {
-                total += store.getTotalSpace();
-                avail += store.getUsableSpace();
+                try {
+                    total += store.getTotalSpace();
+                    avail += store.getUsableSpace();
+                } catch (IOException ioe) {
+                    intlogger.error("IOException" + ioe.getMessage());
+                }
             }
             try {
                 fs.close();
@@ -448,12 +495,16 @@ public class InternalServlet extends ProxyServlet {
             }
             Path tmppath = Paths.get(spooldir, spoolname);
             Path donepath = Paths.get(spooldir, "IN." + spoolname);
-            Files.copy(req.getInputStream(), Paths.get(spooldir, spoolname), StandardCopyOption.REPLACE_EXISTING);
-            Files.move(tmppath, donepath, StandardCopyOption.REPLACE_EXISTING);
-            elr.setResult(HttpServletResponse.SC_CREATED);
-            resp.setStatus(HttpServletResponse.SC_CREATED);
-            eventlogger.info(elr);
-            LogfileLoader.getLoader();    // This starts the logfile loader "task"
+            try {
+                Files.copy(req.getInputStream(), Paths.get(spooldir, spoolname), StandardCopyOption.REPLACE_EXISTING);
+                Files.move(tmppath, donepath, StandardCopyOption.REPLACE_EXISTING);
+                elr.setResult(HttpServletResponse.SC_CREATED);
+                resp.setStatus(HttpServletResponse.SC_CREATED);
+                eventlogger.info(elr);
+                LogfileLoader.getLoader();    // This starts the logfile loader "task"
+            } catch (IOException ioe) {
+                intlogger.error("IOException" + ioe.getMessage());
+            }
             return;
         }
 
@@ -467,23 +518,27 @@ public class InternalServlet extends ProxyServlet {
                 eventlogger.info(elr);
                 return;
             }
-            InputStream is = req.getInputStream();
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            int ch = 0;
-            while ((ch = is.read()) >= 0) {
-                bos.write(ch);
+            try {
+                InputStream is = req.getInputStream();
+                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                int ch;
+                while ((ch = is.read()) >= 0) {
+                    bos.write(ch);
+                }
+                RLEBitSet bs = new RLEBitSet(bos.toString());    // The set of records to retrieve
+                elr.setResult(HttpServletResponse.SC_OK);
+                resp.setStatus(HttpServletResponse.SC_OK);
+                resp.setContentType("text/plain");
+                LogRecord.printLogRecords(resp.getOutputStream(), bs);
+                eventlogger.info(elr);
+            } catch (IOException ioe) {
+                intlogger.error("IOException" + ioe.getMessage());
             }
-            RLEBitSet bs = new RLEBitSet(bos.toString());    // The set of records to retrieve
-            elr.setResult(HttpServletResponse.SC_OK);
-            resp.setStatus(HttpServletResponse.SC_OK);
-            resp.setContentType("text/plain");
-            LogRecord.printLogRecords(resp.getOutputStream(), bs);
-            eventlogger.info(elr);
             return;
         }
 
         elr.setResult(HttpServletResponse.SC_NOT_FOUND);
-        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");
+        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);
         eventlogger.info(elr);
     }
 
index f2c511c..563e6f7 100644 (file)
@@ -64,6 +64,8 @@ public class Poker extends TimerTask {
      */
     private static final String POKE_URL_TEMPLATE = "http://%s/internal/fetchProv";
 
+    private static final Object lock = new Object();
+
     /**
      * This is a singleton -- there is only one Poker object in the server
      */
@@ -109,7 +111,7 @@ public class Poker extends TimerTask {
      * @param t2 the second timer set the outer bound on how long to wait.  It cannot be reset.
      */
     public void setTimers(long t1, long t2) {
-        synchronized (thisPod) {
+        synchronized (lock) {
             if (timer1 == 0 || t1 > timer1) {
                 timer1 = t1;
             }
@@ -144,7 +146,7 @@ public class Poker extends TimerTask {
             if (timer1 > 0) {
                 long now = System.currentTimeMillis();
                 boolean fire = false;
-                synchronized (thisPod) {
+                synchronized (lock) {
                     if (now > timer1 || now > timer2) {
                         timer1 = timer2 = 0;
                         fire = true;
index 8d6bfcf..66a9d42 100755 (executable)
@@ -109,8 +109,7 @@ public class ProxyServlet extends BaseServlet {
         try (FileInputStream instream = new FileInputStream(new File(store))) {
             ks.load(instream, pass.toCharArray());
         } catch (FileNotFoundException fileNotFoundException) {
-            System.err.println("ProxyServlet: " + fileNotFoundException);
-            fileNotFoundException.printStackTrace();
+            intlogger.error("ProxyServlet: " + fileNotFoundException.getMessage());
         } catch (Exception x) {
             System.err.println("READING TRUSTSTORE: " + x);
         }
index d500bb3..0550276 100644 (file)
@@ -64,6 +64,7 @@ public class PublishServlet extends BaseServlet {
     private List<IngressRoute> irt;
     //Adding EELF Logger Rally:US664892
     private static EELFLogger eelflogger = EELFManager.getInstance().getLogger("org.onap.dmaap.datarouter.provisioning.PublishServlet");
+    private static final Object lock = new Object();
 
 
     @Override
@@ -138,7 +139,7 @@ public class PublishServlet extends BaseServlet {
         // Check to see if the IRT needs to be updated
         Poker p = Poker.getPoker();
         String s = p.getProvisioningString();
-        synchronized (provstring) {
+        synchronized (lock) {
             if (irt == null || (s.length() != provstring.length()) || !s.equals(provstring)) {
                 // Provisioning string has changed -- update the IRT
                 provstring = s;
index aa0d6f5..a9b22ec 100644 (file)
@@ -30,6 +30,7 @@ import java.util.Set;
 import javax.servlet.http.HttpServletRequest;\r
 import javax.servlet.http.HttpServletResponse;\r
 \r
+import org.json.JSONException;\r
 import org.json.JSONObject;\r
 import org.onap.dmaap.datarouter.provisioning.beans.Deleteable;\r
 import org.onap.dmaap.datarouter.provisioning.beans.EgressRoute;\r
@@ -39,6 +40,8 @@ import org.onap.dmaap.datarouter.provisioning.beans.Insertable;
 import org.onap.dmaap.datarouter.provisioning.beans.NetworkRoute;\r
 import org.onap.dmaap.datarouter.provisioning.beans.NodeClass;\r
 \r
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
+\r
 /**\r
  * <p>\r
  * This servlet handles requests to URLs under /internal/route/ on the provisioning server.\r
@@ -130,17 +133,21 @@ public class RouteServlet extends ProxyServlet {
      * DELETE route table entries by deleting part of the route table tree.\r
      */\r
     @Override\r
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {\r
         EventLogRecord elr = new EventLogRecord(req);\r
         if (!isAuthorizedForInternal(req)) {\r
             elr.setMessage("Unauthorized.");\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
             return;\r
         }\r
         if (isProxyOK(req) && isProxyServer()) {\r
-            super.doDelete(req, resp);\r
+            try {\r
+                super.doDelete(req, resp);\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException" + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
 \r
@@ -154,12 +161,12 @@ public class RouteServlet extends ProxyServlet {
                     int feedid = Integer.parseInt(parts[1]);\r
                     IngressRoute er = IngressRoute.getIngressRoute(feedid, parts[2], parts[3].replaceAll("!", "/"));\r
                     if (er == null) {\r
-                        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "The specified ingress route does not exist.");\r
+                        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified ingress route does not exist.", eventlogger);\r
                         return;\r
                     }\r
                     d = new Deleteable[] { er };\r
                 } catch (NumberFormatException e) {\r
-                    resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid feed ID in 'delete ingress' command.");\r
+                    sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid feed ID in 'delete ingress' command.", eventlogger);\r
                     return;\r
                 }\r
             } else if (parts.length == 2) {\r
@@ -169,11 +176,11 @@ public class RouteServlet extends ProxyServlet {
                     Set<IngressRoute> set = IngressRoute.getIngressRoutesForSeq(seq);\r
                     d = set.toArray(new Deleteable[0]);\r
                 } catch (NumberFormatException e) {\r
-                    resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid sequence number in 'delete ingress' command.");\r
+                    sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid sequence number in 'delete ingress' command.", eventlogger);\r
                     return;\r
                 }\r
             } else {\r
-                resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete ingress' command.");\r
+                sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete ingress' command.", eventlogger);\r
                 return;\r
             }\r
         } else if (parts[0].equals("egress")) {\r
@@ -183,16 +190,16 @@ public class RouteServlet extends ProxyServlet {
                     int subid = Integer.parseInt(parts[1]);\r
                     EgressRoute er = EgressRoute.getEgressRoute(subid);\r
                     if (er == null) {\r
-                        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "The specified egress route does not exist.");\r
+                        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified egress route does not exist.", eventlogger);\r
                         return;\r
                     }\r
                     d = new Deleteable[] { er };\r
                 } catch (NumberFormatException e) {\r
-                    resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid sub ID in 'delete egress' command.");\r
+                    sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid sub ID in 'delete egress' command.", eventlogger);\r
                     return;\r
                 }\r
             } else {\r
-                resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete egress' command.");\r
+                sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete egress' command.", eventlogger);\r
                 return;\r
             }\r
         } else if (parts[0].equals("network")) {\r
@@ -205,16 +212,16 @@ public class RouteServlet extends ProxyServlet {
                     );\r
                     d = new Deleteable[] { nr };\r
                 } catch (IllegalArgumentException e) {\r
-                    resp.sendError(HttpServletResponse.SC_NOT_FOUND, "The specified network route does not exist.");\r
+                    sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "The specified network route does not exist.", eventlogger);\r
                     return;\r
                 }\r
             } else {\r
-                resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete network' command.");\r
+                sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Invalid number of arguments in 'delete network' command.", eventlogger);\r
                 return;\r
             }\r
         }\r
         if (d == null) {\r
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");\r
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);\r
             return;\r
         }\r
         boolean rv = true;\r
@@ -231,24 +238,28 @@ public class RouteServlet extends ProxyServlet {
             // Something went wrong with the DELETE\r
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);\r
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);\r
         }\r
     }\r
     /**\r
      * GET route table entries from the route table tree specified by the URL path.\r
      */\r
     @Override\r
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
         EventLogRecord elr = new EventLogRecord(req);\r
         if (!isAuthorizedForInternal(req)) {\r
             elr.setMessage("Unauthorized.");\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
             return;\r
         }\r
         if (isProxyOK(req) && isProxyServer()) {\r
-            super.doGet(req, resp);\r
+            try {\r
+                super.doGet(req, resp);\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException" + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
 \r
@@ -256,7 +267,7 @@ public class RouteServlet extends ProxyServlet {
         if (!path.endsWith("/"))\r
             path += "/";\r
         if (!path.equals("/") && !path.equals("/ingress/") && !path.equals("/egress/") && !path.equals("/network/")) {\r
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");\r
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);\r
             return;\r
         }\r
 \r
@@ -283,7 +294,11 @@ public class RouteServlet extends ProxyServlet {
                 for (String key : jx.keySet()) {\r
                     sb.append(pfx);\r
                     sb.append("  \"").append(key).append("\": ");\r
-                    sb.append("\"").append(jx.getString(key)).append("\"");\r
+                    try {\r
+                        sb.append("\"").append(jx.getString(key)).append("\"");\r
+                    } catch (JSONException je) {\r
+                        eventlogger.error("JSONException" + je.getMessage());\r
+                    }\r
                     pfx = ",\n";\r
                 }\r
             }\r
@@ -305,38 +320,46 @@ public class RouteServlet extends ProxyServlet {
         sb.append("}\n");\r
         resp.setStatus(HttpServletResponse.SC_OK);\r
         resp.setContentType("application/json");\r
-        resp.getOutputStream().print(sb.toString());\r
+        try {\r
+            resp.getOutputStream().print(sb.toString());\r
+        } catch (IOException ioe) {\r
+            eventlogger.error("IOException" + ioe.getMessage());\r
+        }\r
     }\r
     /**\r
      * PUT on &lt;/internal/route/*&gt; -- not supported.\r
      */\r
     @Override\r
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {\r
         EventLogRecord elr = new EventLogRecord(req);\r
         if (!isAuthorizedForInternal(req)) {\r
             elr.setMessage("Unauthorized.");\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
             return;\r
         }\r
-        resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");\r
+        sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", eventlogger);\r
     }\r
     /**\r
      * POST - modify existing route table entries in the route table tree specified by the URL path.\r
      */\r
     @Override\r
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {\r
         EventLogRecord elr = new EventLogRecord(req);\r
         if (!isAuthorizedForInternal(req)) {\r
             elr.setMessage("Unauthorized.");\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized.");\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, "Unauthorized.", eventlogger);\r
             return;\r
         }\r
         if (isProxyOK(req) && isProxyServer()) {\r
-            super.doPost(req, resp);\r
+            try {\r
+                super.doPost(req, resp);\r
+            } catch (IOException ioe) {\r
+                intlogger.error("IOException" + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
         String path = req.getPathInfo();\r
@@ -358,7 +381,7 @@ public class RouteServlet extends ProxyServlet {
                 ins = new Insertable[] { new IngressRoute(seq, feedid, user, subnet, NodeClass.lookupNodeNames(nodepatt)) };\r
             } catch (Exception e) {\r
                 intlogger.info(e);\r
-                resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add ingress' command.");\r
+                sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add ingress' command.", intlogger);\r
                 return;\r
             }\r
         } else if (path.startsWith("/egress/")) {\r
@@ -367,14 +390,14 @@ public class RouteServlet extends ProxyServlet {
                 int subid = Integer.parseInt(req.getParameter("sub"));\r
                 EgressRoute er = EgressRoute.getEgressRoute(subid);\r
                 if (er != null) {\r
-                    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "An egress route already exists for that subscriber.");\r
+                    sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "An egress route already exists for that subscriber.", intlogger);\r
                     return;\r
                 }\r
                 String node = NodeClass.normalizeNodename(req.getParameter("node"));\r
                 ins = new Insertable[] { new EgressRoute(subid, node) };\r
             } catch (Exception e) {\r
                 intlogger.info(e);\r
-                resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add egress' command.");\r
+                sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add egress' command.", intlogger);\r
                 return;\r
             }\r
         } else if (path.startsWith("/network/")) {\r
@@ -384,7 +407,7 @@ public class RouteServlet extends ProxyServlet {
                 String nto   = req.getParameter("to");\r
                 String nvia  = req.getParameter("via");\r
                 if (nfrom == null || nto == null || nvia == null) {\r
-                    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing arguments in 'add network' command.");\r
+                    sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Missing arguments in 'add network' command.", intlogger);\r
                     return;\r
                 }\r
                 nfrom = NodeClass.normalizeNodename(nfrom);\r
@@ -393,19 +416,19 @@ public class RouteServlet extends ProxyServlet {
                 NetworkRoute nr = new NetworkRoute(nfrom, nto, nvia);\r
                 for (NetworkRoute route : NetworkRoute.getAllNetworkRoutes()) {\r
                     if (route.getFromnode() == nr.getFromnode() && route.getTonode() == nr.getTonode()) {\r
-                        resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Network route table already contains a route for "+nfrom+" and "+nto);\r
+                        sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Network route table already contains a route for " + nfrom + " and " + nto, intlogger);\r
                         return;\r
                     }\r
                 }\r
                 ins = new Insertable[] { nr };\r
             } catch (IllegalArgumentException e) {\r
                 intlogger.info(e);\r
-                resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add network' command.");\r
+                sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments in 'add network' command.", intlogger);\r
                 return;\r
             }\r
         }\r
         if (ins == null) {\r
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Bad URL.");\r
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, "Bad URL.", intlogger);\r
             return;\r
         }\r
         boolean rv = true;\r
@@ -422,7 +445,7 @@ public class RouteServlet extends ProxyServlet {
             // Something went wrong with the INSERT\r
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);\r
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, intlogger);\r
         }\r
     }\r
 }\r
index 4917402..b77062f 100755 (executable)
@@ -28,7 +28,6 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
-import java.sql.Statement;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
 import java.util.Calendar;\r
@@ -44,6 +43,8 @@ import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;
 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
 import org.onap.dmaap.datarouter.provisioning.utils.LOGJSONObject;\r
 \r
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
+\r
 /**\r
  * This Servlet handles requests to the &lt;Statistics API&gt; and  &lt;Statistics consilidated\r
  * resultset&gt;,\r
@@ -64,13 +65,13 @@ public class StatisticsServlet extends BaseServlet {
    * DELETE a logging URL -- not supported.\r
    */\r
   @Override\r
-  public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doDelete(HttpServletRequest req, HttpServletResponse resp) {\r
     String message = "DELETE not allowed for the logURL.";\r
     EventLogRecord elr = new EventLogRecord(req);\r
     elr.setMessage(message);\r
     elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);\r
     eventlogger.info(elr);\r
-    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);\r
+    sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
   }\r
 \r
   /**\r
@@ -78,24 +79,27 @@ public class StatisticsServlet extends BaseServlet {
    * <b>Statistics API</b> document for details on how this     method should be invoked.\r
    */\r
   @Override\r
-  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
 \r
     Map<String, String> map = buildMapFromRequest(req);\r
     if (map.get("err") != null) {\r
-      resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"));\r
+      sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"), eventlogger);\r
       return;\r
     }\r
     // check Accept: header??\r
 \r
     resp.setStatus(HttpServletResponse.SC_OK);\r
     resp.setContentType(LOGLIST_CONTENT_TYPE);\r
-    ServletOutputStream out = resp.getOutputStream();\r
 \r
     String outputType = "json";\r
     String feedids = null;\r
 \r
     if (req.getParameter("feedid") == null && req.getParameter("groupid") == null) {\r
-      out.print("Invalid request, Feedid or Group ID is required.");\r
+      try {\r
+        resp.getOutputStream().print("Invalid request, Feedid or Group ID is required.");\r
+      } catch (IOException ioe) {\r
+        eventlogger.error("IOException: " + ioe.getMessage());\r
+      }\r
     }\r
 \r
     if (req.getParameter("feedid") != null && req.getParameter("groupid") == null) {\r
@@ -114,10 +118,8 @@ public class StatisticsServlet extends BaseServlet {
         System.out.println("groupid1" + groupid1.toString());\r
 \r
 \r
-      } catch (NumberFormatException e) {\r
-        e.printStackTrace();\r
-      } catch (SQLException e) {\r
-        e.printStackTrace();\r
+      } catch (NumberFormatException | SQLException e) {\r
+        eventlogger.error(e.getMessage());\r
       }\r
     }\r
     if (req.getParameter("groupid") != null && req.getParameter("feedid") != null) {\r
@@ -135,10 +137,8 @@ public class StatisticsServlet extends BaseServlet {
         System.out.println("groupid1" + groupid1.toString());\r
 \r
 \r
-      } catch (NumberFormatException e) {\r
-        e.printStackTrace();\r
-      } catch (SQLException e) {\r
-        e.printStackTrace();\r
+      } catch (NumberFormatException | SQLException e) {\r
+        eventlogger.error(e.getMessage());\r
       }\r
     }\r
 \r
@@ -179,8 +179,11 @@ public class StatisticsServlet extends BaseServlet {
     if (req.getParameter("output_type") != null) {\r
       outputType = req.getParameter("output_type");\r
     }\r
-\r
-    this.getRecordsForSQL(map, outputType, out, resp);\r
+    try {\r
+      this.getRecordsForSQL(map, outputType, resp.getOutputStream(), resp);\r
+    } catch (IOException ioe) {\r
+      eventlogger.error("IOException: " + ioe.getMessage());\r
+    }\r
 \r
   }\r
 \r
@@ -288,7 +291,7 @@ public class StatisticsServlet extends BaseServlet {
           System.out.println("feedIds" + feedIds.toString());\r
       }\r
     } catch (SQLException e) {\r
-      e.printStackTrace();\r
+      eventlogger.error(e.getMessage());\r
     } finally {\r
       try {\r
         if (resultSet != null) {\r
@@ -299,7 +302,7 @@ public class StatisticsServlet extends BaseServlet {
           db.release(conn);\r
         }\r
       } catch (Exception e) {\r
-        e.printStackTrace();\r
+        eventlogger.error(e.getMessage());\r
       }\r
     }\r
     return feedIds;\r
@@ -399,26 +402,26 @@ public class StatisticsServlet extends BaseServlet {
    * PUT a Statistics URL -- not supported.\r
    */\r
   @Override\r
-  public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doPut(HttpServletRequest req, HttpServletResponse resp) {\r
     String message = "PUT not allowed for the StatisticsURL.";\r
     EventLogRecord elr = new EventLogRecord(req);\r
     elr.setMessage(message);\r
     elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);\r
     eventlogger.info(elr);\r
-    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);\r
+    sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
   }\r
 \r
   /**\r
    * POST a Statistics URL -- not supported.\r
    */\r
   @Override\r
-  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doPost(HttpServletRequest req, HttpServletResponse resp) {\r
     String message = "POST not allowed for the StatisticsURL.";\r
     EventLogRecord elr = new EventLogRecord(req);\r
     elr.setMessage(message);\r
     elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);\r
     eventlogger.info(elr);\r
-    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);\r
+    sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
   }\r
 \r
   private Map<String, String> buildMapFromRequest(HttpServletRequest req) {\r
@@ -543,10 +546,8 @@ public class StatisticsServlet extends BaseServlet {
       intlogger.debug(filterQuery);\r
       long start = System.currentTimeMillis();\r
       DB db = new DB();\r
-      ResultSet rs = null;\r
       try (Connection conn = db.getConnection()) {\r
-        try (PreparedStatement pst = conn.prepareStatement(filterQuery)) {\r
-          rs = pst.executeQuery();\r
+        try (ResultSet rs = conn.prepareStatement(filterQuery).executeQuery()) {\r
           if (outputType.equals("csv")) {\r
             resp.setContentType("application/octet-stream");\r
             Date date = new Date();\r
@@ -562,18 +563,15 @@ public class StatisticsServlet extends BaseServlet {
           }\r
         }\r
       } catch (SQLException e) {\r
-        e.printStackTrace();\r
+        eventlogger.error("SQLException:" + e);\r
       }\r
       intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");\r
     } catch (IOException e) {\r
       eventlogger.error("IOException - Generating JSON/CSV:" + e);\r
-      e.printStackTrace();\r
     } catch (JSONException e) {\r
       eventlogger.error("JSONException - executing SQL query:" + e);\r
-      e.printStackTrace();\r
     } catch (ParseException e) {\r
       eventlogger.error("ParseException - executing SQL query:" + e);\r
-      e.printStackTrace();\r
     }\r
   }\r
 }\r
index 21d391e..e8828f1 100644 (file)
@@ -42,6 +42,8 @@ import org.onap.dmaap.datarouter.provisioning.utils.JSONUtilities;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;
+
 /**
  * This servlet handles provisioning for the &lt;subscribeURL&gt; which is generated by the provisioning server to
  * handle the creation and inspection of subscriptions to a specific feed.
@@ -60,7 +62,7 @@ public class SubscribeServlet extends ProxyServlet {
      * DELETE on the &lt;subscribeUrl&gt; -- not supported.
      */
     @Override
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doDelete");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_SUBID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         String message = "DELETE not allowed for the subscribeURL.";
@@ -68,7 +70,7 @@ public class SubscribeServlet extends ProxyServlet {
         elr.setMessage(message);
         elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
         eventlogger.info(elr);
-        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);
+        sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
     }
 
     /**
@@ -76,7 +78,7 @@ public class SubscribeServlet extends ProxyServlet {
      * Query</i> section in the <b>Provisioning API</b> document for details on how this method should be invoked.
      */
     @Override
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doGet");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_SUBID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         EventLogRecord elr = new EventLogRecord(req);
@@ -85,11 +87,15 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doGet(req, resp);
+            try {
+                super.doGet(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException: " + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -98,7 +104,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         int feedid = getIdFromPath(req);
@@ -107,7 +113,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         Feed feed = Feed.getFeedById(feedid);
@@ -116,7 +122,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -126,7 +132,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
 
@@ -139,14 +145,18 @@ public class SubscribeServlet extends ProxyServlet {
         eventlogger.info(elr);
         resp.setStatus(HttpServletResponse.SC_OK);
         resp.setContentType(SUBLIST_CONTENT_TYPE);
-        resp.getOutputStream().print(t);
+        try {
+            resp.getOutputStream().print(t);
+        } catch (IOException ioe) {
+            eventlogger.error("IOException: " + ioe.getMessage());
+        }
     }
 
     /**
      * PUT on the &lt;subscribeUrl&gt; -- not supported.
      */
     @Override
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {
         setIpAndFqdnForEelf("doPut");
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_SUBID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");
         String message = "PUT not allowed for the subscribeURL.";
@@ -154,7 +164,7 @@ public class SubscribeServlet extends ProxyServlet {
         elr.setMessage(message);
         elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
         eventlogger.info(elr);
-        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);
+        sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);
     }
 
     /**
@@ -171,11 +181,15 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
         if (isProxyServer()) {
-            super.doPost(req, resp);
+            try {
+                super.doPost(req, resp);
+            } catch (IOException ioe) {
+                eventlogger.error("IOException: " + ioe.getMessage());
+            }
             return;
         }
         String bhdr = req.getHeader(BEHALF_HEADER);
@@ -184,7 +198,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         int feedid = getIdFromPath(req);
@@ -193,7 +207,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         Feed feed = Feed.getFeedById(feedid);
@@ -202,7 +216,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);
             return;
         }
         // Check with the Authorizer
@@ -212,7 +226,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);
             return;
         }
 
@@ -225,7 +239,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);
             return;
         }
         JSONObject jo = getJSONfromInput(req);
@@ -234,7 +248,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         if (intlogger.isDebugEnabled()) {
@@ -246,7 +260,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_CONFLICT);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_CONFLICT, message);
+            sendResponseError(resp, HttpServletResponse.SC_CONFLICT, message, eventlogger);
             return;
         }
         Subscription sub = null;
@@ -258,7 +272,7 @@ public class SubscribeServlet extends ProxyServlet {
             elr.setMessage(message);
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);
             return;
         }
         sub.setFeedid(feedid);
@@ -280,7 +294,11 @@ public class SubscribeServlet extends ProxyServlet {
             resp.setStatus(HttpServletResponse.SC_CREATED);
             resp.setContentType(SUBFULL_CONTENT_TYPE);
             resp.setHeader("Location", sub.getLinks().getSelf());
-            resp.getOutputStream().print(sub.asLimitedJSONObject().toString());
+            try {
+                resp.getOutputStream().print(sub.asLimitedJSONObject().toString());
+            } catch (IOException ioe) {
+                eventlogger.error("IOException: " + ioe.getMessage());
+            }
 
             provisioningDataChanged();
         } else {
@@ -288,7 +306,7 @@ public class SubscribeServlet extends ProxyServlet {
             activeSubs--;
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             eventlogger.info(elr);
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, eventlogger);
         }
     }
 }
index 3294580..3bfa750 100644 (file)
@@ -44,6 +44,8 @@ import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs;
 import com.att.eelf.configuration.EELFLogger;\r
 import com.att.eelf.configuration.EELFManager;\r
 \r
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
+\r
 /**\r
  * This servlet handles provisioning for the &lt;subscriptionURL&gt; which is generated by the provisioning server to\r
  * handle the inspection, modification, and deletion of a particular subscription to a feed. It supports DELETE to\r
@@ -66,7 +68,7 @@ public class SubscriptionServlet extends ProxyServlet {
      * the <b>Provisioning API</b> document for details on how this method should be invoked.\r
      */\r
     @Override\r
-    public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doDelete(HttpServletRequest req, HttpServletResponse resp) {\r
         setIpAndFqdnForEelf("doDelete");\r
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_SUBID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
         EventLogRecord elr = new EventLogRecord(req);\r
@@ -75,11 +77,15 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
         if (isProxyServer()) {\r
-            super.doDelete(req, resp);\r
+            try {\r
+                super.doDelete(req, resp);\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException: " + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
         String bhdr = req.getHeader(BEHALF_HEADER);\r
@@ -88,7 +94,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         int subid = getIdFromPath(req);\r
@@ -97,7 +103,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         Subscription sub = Subscription.getSubscriptionById(subid);\r
@@ -106,7 +112,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);\r
             return;\r
         }\r
         // Check with the Authorizer\r
@@ -116,7 +122,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
 \r
@@ -132,7 +138,7 @@ public class SubscriptionServlet extends ProxyServlet {
             // Something went wrong with the DELETE\r
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);\r
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, intlogger);\r
         }\r
     }\r
 \r
@@ -142,7 +148,7 @@ public class SubscriptionServlet extends ProxyServlet {
      * invoked.\r
      */\r
     @Override\r
-    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
         setIpAndFqdnForEelf("doGet");\r
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_SUBID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
         EventLogRecord elr = new EventLogRecord(req);\r
@@ -151,11 +157,15 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
         if (isProxyServer()) {\r
-            super.doGet(req, resp);\r
+            try {\r
+                super.doGet(req, resp);\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException: " + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
         String bhdr = req.getHeader(BEHALF_HEADER);\r
@@ -164,7 +174,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         int subid = getIdFromPath(req);\r
@@ -173,7 +183,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         Subscription sub = Subscription.getSubscriptionById(subid);\r
@@ -182,7 +192,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);\r
             return;\r
         }\r
         // Check with the Authorizer\r
@@ -192,7 +202,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
 \r
@@ -201,7 +211,11 @@ public class SubscriptionServlet extends ProxyServlet {
         eventlogger.info(elr);\r
         resp.setStatus(HttpServletResponse.SC_OK);\r
         resp.setContentType(SUBFULL_CONTENT_TYPE);\r
-        resp.getOutputStream().print(sub.asJSONObject(true).toString());\r
+        try {\r
+            resp.getOutputStream().print(sub.asJSONObject(true).toString());\r
+        } catch (IOException ioe) {\r
+            eventlogger.error("IOException: " + ioe.getMessage());\r
+        }\r
     }\r
 \r
     /**\r
@@ -209,7 +223,7 @@ public class SubscriptionServlet extends ProxyServlet {
      * the <b>Provisioning API</b> document for details on how this method should be invoked.\r
      */\r
     @Override\r
-    public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doPut(HttpServletRequest req, HttpServletResponse resp) {\r
         setIpAndFqdnForEelf("doPut");\r
         eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_SUBID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
         EventLogRecord elr = new EventLogRecord(req);\r
@@ -218,11 +232,15 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
         if (isProxyServer()) {\r
-            super.doPut(req, resp);\r
+            try {\r
+                super.doPut(req, resp);\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException: " + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
         String bhdr = req.getHeader(BEHALF_HEADER);\r
@@ -231,7 +249,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         int subid = getIdFromPath(req);\r
@@ -240,7 +258,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         Subscription oldsub = Subscription.getSubscriptionById(subid);\r
@@ -249,7 +267,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_NOT_FOUND);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_NOT_FOUND, message, eventlogger);\r
             return;\r
         }\r
         // Check with the Authorizer\r
@@ -259,7 +277,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
         // check content type is SUB_CONTENT_TYPE, version 1.0\r
@@ -270,7 +288,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);\r
             return;\r
         }\r
         JSONObject jo = getJSONfromInput(req);\r
@@ -279,7 +297,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         if (intlogger.isDebugEnabled()) {\r
@@ -293,7 +311,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         sub.setSubid(oldsub.getSubid());\r
@@ -306,7 +324,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
 \r
@@ -317,14 +335,22 @@ public class SubscriptionServlet extends ProxyServlet {
             eventlogger.info(elr);\r
             resp.setStatus(HttpServletResponse.SC_OK);\r
             resp.setContentType(SUBFULL_CONTENT_TYPE);\r
-            resp.getOutputStream().print(sub.asLimitedJSONObject().toString());\r
+            try {\r
+                resp.getOutputStream().print(sub.asLimitedJSONObject().toString());\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException: " + ioe.getMessage());\r
+            }\r
 \r
             /**Change Owner ship of Subscriber     Adding for group feature:Rally US708115*/\r
             if (jo.has("changeowner") && subjectgroup != null) {\r
-                Boolean changeowner = (Boolean) jo.get("changeowner");\r
-                if (changeowner != null && changeowner.equals(true)) {\r
-                    sub.setSubscriber(req.getHeader(BEHALF_HEADER));\r
-                    sub.changeOwnerShip();\r
+                try {\r
+                    Boolean changeowner = (Boolean) jo.get("changeowner");\r
+                    if (changeowner != null && changeowner.equals(true)) {\r
+                        sub.setSubscriber(req.getHeader(BEHALF_HEADER));\r
+                        sub.changeOwnerShip();\r
+                    }\r
+                } catch (JSONException je) {\r
+                    eventlogger.error("JSONException: " + je.getMessage());\r
                 }\r
             }\r
             /***End of change ownership*/\r
@@ -334,7 +360,7 @@ public class SubscriptionServlet extends ProxyServlet {
             // Something went wrong with the UPDATE\r
             elr.setResult(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG);\r
+            sendResponseError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, DB_PROBLEM_MSG, intlogger);\r
         }\r
     }\r
 \r
@@ -343,7 +369,7 @@ public class SubscriptionServlet extends ProxyServlet {
      * Schedule</i> section in the <b>Provisioning API</b> document for details on how this method should be invoked.\r
      */\r
     @Override\r
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {\r
 // OLD pre-3.0 code\r
 //        String message = "POST not allowed for the subscriptionURL.";\r
 //        EventLogRecord elr = new EventLogRecord(req);\r
@@ -360,11 +386,15 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
         if (isProxyServer()) {\r
-            super.doPost(req, resp);\r
+            try {\r
+                super.doPost(req, resp);\r
+            } catch (IOException ioe) {\r
+                eventlogger.error("IOException: " + ioe.getMessage());\r
+            }\r
             return;\r
         }\r
         String bhdr = req.getHeader(BEHALF_HEADER);\r
@@ -373,7 +403,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         final int subid = getIdFromPath(req);\r
@@ -382,7 +412,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         // check content type is SUBCNTRL_CONTENT_TYPE, version 1.0\r
@@ -393,7 +423,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message, eventlogger);\r
             return;\r
         }\r
         // Check with the Authorizer\r
@@ -403,7 +433,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_FORBIDDEN);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_FORBIDDEN, message, eventlogger);\r
             return;\r
         }\r
         JSONObject jo = getJSONfromInput(req);\r
@@ -412,7 +442,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
             return;\r
         }\r
         try {\r
@@ -434,7 +464,7 @@ public class SubscriptionServlet extends ProxyServlet {
             elr.setMessage(message);\r
             elr.setResult(HttpServletResponse.SC_BAD_REQUEST);\r
             eventlogger.info(elr);\r
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, message);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, message, eventlogger);\r
         }\r
     }\r
 \r
@@ -474,7 +504,6 @@ public class SubscriptionServlet extends ProxyServlet {
                 }\r
             } catch (Exception e) {\r
                 intlogger.warn("Caught exception in SubscriberNotifyThread: " + e);\r
-                e.printStackTrace();\r
             }\r
         }\r
     }\r
index e1eeb78..f9d0867 100644 (file)
@@ -302,7 +302,7 @@ public class SynchronizerTask extends TimerTask {
             String thisPod = myaddr.getHostName();
             Set<String> pods = new TreeSet<>(Arrays.asList(BaseServlet.getPods()));
             if (pods.contains(thisPod)) {
-                InetAddress pserver = InetAddress.getByName(BaseServlet.activeProvName);
+                InetAddress pserver = InetAddress.getByName(BaseServlet.getActiveProvName());
                 newstate = myaddr.equals(pserver) ? ACTIVE : STANDBY;
                 if (logger.isDebugEnabled() && System.currentTimeMillis() >= nextMsg) {
                     logger.debug("Active POD = " + pserver + ", Current state is " + stnames[newstate]);
index c08bce5..9c060d5 100644 (file)
@@ -72,8 +72,9 @@ public class Feed extends Syncable {
         try {\r
             DB db = new DB();\r
             Connection conn = db.getConnection();\r
-            try(Statement stmt = conn.createStatement()) {\r
-                try(ResultSet rs = stmt.executeQuery("select COUNT(*) from FEEDS where FEEDID = " + id)) {\r
+            try(PreparedStatement stmt = conn.prepareStatement("select COUNT(*) from FEEDS where FEEDID = ?")) {\r
+                stmt.setInt(1, id);\r
+                try(ResultSet rs = stmt.executeQuery()) {\r
                     if (rs.next()) {\r
                         count = rs.getInt(1);\r
                     }\r
index a460d64..91d6c1b 100644 (file)
@@ -133,14 +133,15 @@ public class Group extends Syncable {
     }\r
 \r
     public static Collection<String> getGroupsByClassfication(String classfication) {\r
-        List<String> list = new ArrayList<String>();\r
-        String sql = "select * from GROUPS where classification = '" + classfication + "'";\r
+        List<String> list = new ArrayList<>();\r
+        String sql = "select * from GROUPS where classification = ?";\r
         try {\r
             DB db = new DB();\r
             @SuppressWarnings("resource")\r
             Connection conn = db.getConnection();\r
-            try(Statement stmt = conn.createStatement()) {\r
-                try(ResultSet rs = stmt.executeQuery(sql)) {\r
+            try(PreparedStatement stmt = conn.prepareStatement(sql)) {\r
+                stmt.setString(1, classfication);\r
+                try(ResultSet rs = stmt.executeQuery()) {\r
                     while (rs.next()) {\r
                         int groupid = rs.getInt("groupid");\r
 \r
index 3e8c90b..b237821 100644 (file)
@@ -118,9 +118,9 @@ public class Parameters extends Syncable {
             DB db = new DB();\r
             @SuppressWarnings("resource")\r
             Connection conn = db.getConnection();\r
-            try(Statement stmt = conn.createStatement()) {\r
-                String sql = "select KEYNAME, VALUE from PARAMETERS where KEYNAME = '" + k + "'";\r
-                try(ResultSet rs = stmt.executeQuery(sql)) {\r
+            try(PreparedStatement stmt = conn.prepareStatement("select KEYNAME, VALUE from PARAMETERS where KEYNAME = ?")) {\r
+                stmt.setString(1, k);\r
+                try(ResultSet rs = stmt.executeQuery()) {\r
                     if (rs.next()) {\r
                         v = new Parameters(rs);\r
                     }\r
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/HttpServletUtils.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/HttpServletUtils.java
new file mode 100644 (file)
index 0000000..ce287f4
--- /dev/null
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright Â© 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+package org.onap.dmaap.datarouter.provisioning.utils;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+import org.apache.log4j.Logger;
+
+public class HttpServletUtils {
+    public static void sendResponseError(HttpServletResponse response, int errorCode, String message, Logger intlogger) {
+        try {
+            response.sendError(errorCode, message);
+        } catch (IOException ioe) {
+            intlogger.error("IOException" + ioe.getMessage());
+        }
+    }
+}
index dec3cc1..1518859 100644 (file)
@@ -1446,7 +1446,7 @@ public class LOGJSONObject {
         try {
             return this.toString(0);
         } catch (Exception e) {
-            return null;
+            return "";
         }
     }
 
@@ -1495,7 +1495,7 @@ public class LOGJSONObject {
      */
     @SuppressWarnings("unchecked")
     public static String valueToString(Object value) throws JSONException {
-        if (value == null || value.equals(null)) {
+        if (value == null) {
             return "null";
         }
         if (value instanceof JSONString) {
@@ -1601,7 +1601,7 @@ public class LOGJSONObject {
     @SuppressWarnings("unchecked")
     static final Writer writeValue(Writer writer, Object value,
                                    int indentFactor, int indent) throws JSONException, IOException {
-        if (value == null || value.equals(null)) {
+        if (value == null) {
             writer.write("null");
         } else if (value instanceof LOGJSONObject) {
             ((LOGJSONObject) value).write(writer, indentFactor, indent);
index 4576bd2..0c6afdd 100644 (file)
@@ -45,7 +45,7 @@ public class URLUtilities {
      * @return the URL\r
      */\r
     public static String generateFeedURL(int feedid) {\r
-        return "https://" + BaseServlet.provName + "/feed/" + feedid;\r
+        return "https://" + BaseServlet.getProvName() + "/feed/" + feedid;\r
     }\r
 \r
     /**\r
@@ -55,7 +55,7 @@ public class URLUtilities {
      * @return the URL\r
      */\r
     public static String generatePublishURL(int feedid) {\r
-        return "https://" + BaseServlet.provName + "/publish/" + feedid;\r
+        return "https://" + BaseServlet.getProvName() + "/publish/" + feedid;\r
     }\r
 \r
     /**\r
@@ -65,7 +65,7 @@ public class URLUtilities {
      * @return the URL\r
      */\r
     public static String generateSubscribeURL(int feedid) {\r
-        return "https://" + BaseServlet.provName + "/subscribe/" + feedid;\r
+        return "https://" + BaseServlet.getProvName() + "/subscribe/" + feedid;\r
     }\r
 \r
     /**\r
@@ -75,7 +75,7 @@ public class URLUtilities {
      * @return the URL\r
      */\r
     public static String generateFeedLogURL(int feedid) {\r
-        return "https://" + BaseServlet.provName + "/feedlog/" + feedid;\r
+        return "https://" + BaseServlet.getProvName() + "/feedlog/" + feedid;\r
     }\r
 \r
     /**\r
@@ -85,7 +85,7 @@ public class URLUtilities {
      * @return the URL\r
      */\r
     public static String generateSubscriptionURL(int subid) {\r
-        return "https://" + BaseServlet.provName + "/subs/" + subid;\r
+        return "https://" + BaseServlet.getProvName() + "/subs/" + subid;\r
     }\r
 \r
     /**\r
@@ -95,7 +95,7 @@ public class URLUtilities {
      * @return the URL\r
      */\r
     public static String generateSubLogURL(int subid) {\r
-        return "https://" + BaseServlet.provName + "/sublog/" + subid;\r
+        return "https://" + BaseServlet.getProvName() + "/sublog/" + subid;\r
     }\r
 \r
     /**\r
@@ -115,7 +115,7 @@ public class URLUtilities {
     public static String generatePeerLogsURL() {\r
         //Fixes for Itrack ticket - DATARTR-4#Fixing if only one Prov is configured, not to give exception to fill logs.\r
         String peerPodUrl = getPeerPodName();\r
-        if (peerPodUrl.equals("") || peerPodUrl==null) {\r
+        if (peerPodUrl == null || peerPodUrl.equals("")) {\r
             return "";\r
         }\r
 \r
index 4346a0e..fe9c460 100644 (file)
@@ -72,36 +72,12 @@ public class FeedReport extends ReportBase {
            try( PreparedStatement ps = conn.prepareStatement(SELECT_SQL)) {\r
                try (ResultSet rs = ps.executeQuery()) {\r
                    while (rs.next()) {\r
-                       if (alg1) {\r
-                           String date = rs.getString("date");\r
-                           String type = rs.getString("type");\r
-                           int feedid = rs.getInt("feedid");\r
-                           int subid = type.equals("del") ? rs.getInt("delivery_subid") : 0;\r
-                           int count = rs.getInt("count");\r
-                           sb.append(date + "," + type + "," + feedid + "," + subid + "," + count + "\n");\r
-                       } else {\r
-                           String date = rs.getString("date");\r
-                           JSONObject datemap = jo.optJSONObject(date);\r
-                           if (datemap == null) {\r
-                               datemap = new JSONObject();\r
-                               jo.put(date, datemap);\r
-                           }\r
-                           int feed = rs.getInt("FEEDID");\r
-                           JSONObject feedmap = datemap.optJSONObject("" + feed);\r
-                           if (feedmap == null) {\r
-                               feedmap = new JSONObject();\r
-                               feedmap.put("pubcount", 0);\r
-                               datemap.put("" + feed, feedmap);\r
-                           }\r
-                           String type = rs.getString("TYPE");\r
-                           int count = rs.getInt("count");\r
-                           if (type.equals("pub")) {\r
-                               feedmap.put("pubcount", count);\r
-                           } else if (type.equals("del")) {\r
-                               String subid = "" + rs.getInt("DELIVERY_SUBID");\r
-                               feedmap.put(subid, count);\r
-                           }\r
-                       }\r
+                       String date = rs.getString("date");\r
+                       String type = rs.getString("type");\r
+                       int feedid = rs.getInt("feedid");\r
+                       int subid = type.equals("del") ? rs.getInt("delivery_subid") : 0;\r
+                       int count = rs.getInt("count");\r
+                       sb.append(date + "," + type + "," + feedid + "," + subid + "," + count + "\n");\r
                    }\r
                }\r
            }\r
@@ -110,15 +86,9 @@ public class FeedReport extends ReportBase {
             e.printStackTrace();\r
         }\r
         logger.debug("Query time: " + (System.currentTimeMillis() - start) + " ms");\r
-        try {\r
-            PrintWriter os = new PrintWriter(outfile);\r
-            if (alg1) {\r
-                os.print("date,type,feedid,subid,count\n");\r
-                os.print(sb.toString());\r
-            } else {\r
-                os.println(toHTML(jo));\r
-            }\r
-            os.close();\r
+        try (PrintWriter os = new PrintWriter(outfile)) {\r
+            os.print("date,type,feedid,subid,count\n");\r
+            os.print(sb.toString());\r
         } catch (FileNotFoundException e) {\r
             System.err.println("File cannot be written: " + outfile);\r
         }\r
index 744bc9c..84218b9 100755 (executable)
@@ -42,6 +42,9 @@ org.onap.dmaap.datarouter.provserver.logretention        = 30
 # relaxation to accommodate OOM kubernetes deploy
 org.onap.dmaap.datarouter.provserver.isaddressauthenabled = false
 
+#Localhost address config
+org.onap.dmaap.datarouter.provserver.localhost = 127.0.0.1
+
 # Database access
 org.onap.dmaap.datarouter.db.driver   = org.mariadb.jdbc.Driver
 org.onap.dmaap.datarouter.db.url      = jdbc:mariadb://172.100.0.2:3306/datarouter
index 336af0e..a7ed3fa 100755 (executable)
@@ -27,4 +27,5 @@ org.onap.dmaap.datarouter.db.url                           = jdbc:h2:mem:test;DB
 org.onap.dmaap.datarouter.provserver.isaddressauthenabled  = true
 org.onap.dmaap.datarouter.provserver.https.relaxation      = false
 org.onap.dmaap.datarouter.provserver.accesslog.dir         = unit-test-logs
-org.onap.dmaap.datarouter.provserver.spooldir              = unit-test-logs/spool
\ No newline at end of file
+org.onap.dmaap.datarouter.provserver.spooldir              = unit-test-logs/spool
+org.onap.dmaap.datarouter.provserver.localhost             = 127.0.0.1
\ No newline at end of file
index cc1d486..87b82f1 100755 (executable)
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.onap.dmaap.datarouter</groupId>
         <artifactId>parent</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.0.2-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>datarouter-subscriber</artifactId>
index 58bc4c4..3842574 100644 (file)
@@ -38,8 +38,8 @@ public class SampleSubscriberServlet extends HttpServlet {
 
   private static Logger logger =
       Logger.getLogger("org.onap.dmaap.datarouter.subscriber.SampleSubscriberServlet");
-  private String outputDirectory;
-  private String basicAuth;
+  private static String outputDirectory;
+  private static String basicAuth;
 
   /**
    * Configure the SampleSubscriberServlet.
index 39ab166..329c06a 100644 (file)
@@ -26,9 +26,12 @@ package org.onap.dmaap.datarouter.subscriber;
 import java.io.IOException;
 import java.util.Properties;
 
+import org.apache.log4j.Logger;
+
 public class SubscriberProps {
 
     private static SubscriberProps instance = null;
+    private static Logger subLogger = Logger.getLogger("org.onap.dmaap.datarouter.subscriber.internal");
     private Properties properties;
 
     private SubscriberProps(String propsPath) throws IOException{
@@ -42,7 +45,7 @@ public class SubscriberProps {
             try {
                 instance = new SubscriberProps(propsPath);
             } catch (IOException ioe) {
-                ioe.printStackTrace();
+                subLogger.error("IO Exception: " + ioe.getMessage());
             }
         }
         return instance;
diff --git a/docs/data-router/DataRouterUserGuide.rst b/docs/data-router/DataRouterUserGuide.rst
new file mode 100644 (file)
index 0000000..8f7b9ef
--- /dev/null
@@ -0,0 +1,25 @@
+===========================
+Data Router (DR) User Guide
+===========================
+
+Standalone Mode
+---------------
+
+Installation
+============
+
+1. Find the datarouter project on the gerrit website: https://gerrit.onap.org/r/#/admin/projects/dmaap/datarouter
+
+2. Clone the repo onto your server using the clone command found on the datarouter page on gerrit.
+
+3. cd into the docker-compose directory and run docker-compose up.
+
+Configurations
+==============
+
+Using the Data Router
+---------------------
+
+For information on how to use the Data Router refer to the Data Router API guide at:
+
+    :ref:`data_router_api_guide`
\ No newline at end of file
diff --git a/docs/data-router/administration.rst b/docs/data-router/administration.rst
new file mode 100644 (file)
index 0000000..b050a1f
--- /dev/null
@@ -0,0 +1,14 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Administration
+==============
+
+
+Processes
+---------
+NA
+
+Actions
+-------
+NA
diff --git a/docs/data-router/architecture.rst b/docs/data-router/architecture.rst
new file mode 100644 (file)
index 0000000..b18f7bb
--- /dev/null
@@ -0,0 +1,25 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Architecture
+============
+
+
+Capabilities
+------------
+Data Router is a RESTful web service used for the transfer of data across networks any larger than a Message Router message (> 1Mb).
+
+Usage Scenarios
+---------------
+    Data Router endpoints are used to create/view/delete Feeds, Subscribers and Published files. Clients can use the Data Router endpoints
+    to publish a file to a feed and subscribe to this feed to receive the file.
+
+Interactions
+------------
+Data Router REST service uses the Data Router API to allow users to publish to and subscribe to a feed, in order to send and receive files.
+
+
+
+   |image0|
+
+   .. |image0| image:: dr_arch.png
diff --git a/docs/data-router/configuration.rst b/docs/data-router/configuration.rst
new file mode 100644 (file)
index 0000000..2a7096a
--- /dev/null
@@ -0,0 +1,7 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Configuration
+=============
+
+NA
\ No newline at end of file
diff --git a/docs/data-router/consumedapis.rst b/docs/data-router/consumedapis.rst
new file mode 100644 (file)
index 0000000..aa1a8bd
--- /dev/null
@@ -0,0 +1,7 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Consumed APIs
+=============
+
+Data Router does not consume any API
index ecce209..aaee385 100755 (executable)
@@ -1,10 +1,15 @@
+.. _data_router_api_guide:\r
+\r
 ==========================\r
 Data Router (DR) API Guide\r
 ==========================\r
 Introduction\r
 ------------\r
 \r
-The DataRouter(DR) provisioning API is an HTTPS-based, REST-like API for creating and managing DR feeds and subscriptions. The Data Routing System project is intended to provide a common framework by which data producers can make data available to data consumers and a way for potential consumers to find feeds with the data they require.\r
+The DataRouter(DR) provisioning API is an HTTPS-based, REST-like API for creating and managing DR feeds\r
+and subscriptions. The Data Routing System project is intended to provide a common framework by which\r
+data producers can make data available to data consumers and a way for potential consumers to find feeds\r
+with the data they require.\r
 \r
 \r
 HTTP Service APIs\r
diff --git a/docs/data-router/delivery.rst b/docs/data-router/delivery.rst
new file mode 100644 (file)
index 0000000..775841a
--- /dev/null
@@ -0,0 +1,32 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Delivery
+==============
+
+Data Router is comprised of a datarouter-provisioning container, a datarouter-node container and a mariadb container.
+
+.. blockdiag::
+
+
+   blockdiag layers {
+   orientation = portrait
+   MARIADB -> DR-PROV;
+   DR-PROV -> DR-NODE;
+   group l1 {
+       color = blue;
+       label = "dr-prov Container";
+       DR-PROV;
+       }
+   group l2 {
+       color = yellow;
+       label = "dr-node Container";
+       DR-NODE;
+       }
+   group l3 {
+       color = orange;
+       label = "MariaDb Container";
+       MARIADB;
+       }
+
+   }
diff --git a/docs/data-router/dr_arch.png b/docs/data-router/dr_arch.png
new file mode 100644 (file)
index 0000000..1655eda
Binary files /dev/null and b/docs/data-router/dr_arch.png differ
diff --git a/docs/data-router/humaninterfaces.rst b/docs/data-router/humaninterfaces.rst
new file mode 100644 (file)
index 0000000..71a2b73
--- /dev/null
@@ -0,0 +1,10 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Human Interfaces
+================
+
+Data Router does not have human interfaces
+
+
+
diff --git a/docs/data-router/logging.rst b/docs/data-router/logging.rst
new file mode 100644 (file)
index 0000000..ac6aa95
--- /dev/null
@@ -0,0 +1,25 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Logging
+=======
+
+
+Where to Access Information
+---------------------------
+Data Router uses logback framework to generate logs.
+
+Error / Warning Messages
+------------------------
+Currently Data Router does not have any unique error codes. However the following are the common HTTP error codes that
+could possibly occur in Data Router:
+
+    OK = 200 : The normal response from a successful update or get of a feed or subscription
+    CREATED = 201 : the normal response from successfully creating or subscribing to a feed.
+    NO_CONTENT = 204 : the normal response from a successful publish attempt and on successfully deleting a feed or subscription
+    MOVED_PERMANENTLY = 301 :the normal redirect response from prov to a publisher
+    BAD_REQUEST = 400: Usually indicates that either Json object in request body is incorrect in some way, or an Invalid parameter value was included in query string.
+    UNAUTHORIZED = 401 : Usually indicated either request was missing Authorization header, or indicates incorrect Username/password credentials
+    FORBIDDEN = 403 : Usually indicates the request originated from an unauthorized IP address, or that a client certificate was not a part of authorized list.
+    NOT_FOUND = 404 : Usually indicates an incorrect URI
+    METHOD_NOT_ALLOWED = 405 : Indicates an HTTP method is not accepted for given URI
\ No newline at end of file
diff --git a/docs/data-router/release-notes.rst b/docs/data-router/release-notes.rst
new file mode 100644 (file)
index 0000000..f69ea2c
--- /dev/null
@@ -0,0 +1,29 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Release-notes
+==============
+
+Version: 1.0.1
+--------------
+
+:Release Date: 2018-09-20
+
+
+New Features:
+
+ - Implements a RESTful HTTPS API for creating feeds to publish files to and subscribe to,
+   as well as perform CRUD operations on these feeds.
+ - Implements a RESTful HTTPS API for subscribing to feeds and perform CRUD operations on these subscriptions.
+ - Implements a RESTful HTTPS API for publishing to feeds and perform CRUD operations on these published files.
+
+
+
+Bug Fixes
+NA
+
+Known Issues
+NA
+
+Other
+NA
\ No newline at end of file
index f7dae49..99f0f28 100644 (file)
@@ -14,15 +14,24 @@ The DataRouter(DR)provisioning API is an HTTPS-based,REST-like API for creating
 HTTP Service APIs\r
 ------------------\r
 \r
-DMaaP Message Router utilizes an HTTP REST API to service all transactions. HTTP and REST standards are followed so\r
-clients as varied as CURL, Java applications and even Web Browsers will\r
-work to interact with the Data Router.\r
+DMaaP Data Router utilizes an HTTPS REST API to service all transactions. HTTPS and REST standards are followed so\r
+clients as varied as CURL, Java applications and even Web Browsers will work to interact with the Data Router.\r
 \r
 \r
 \r
 .. toctree::\r
-   :maxdepth: 3\r
+   :maxdepth: 1\r
    \r
-   data-router/data-router\r
+   data-router/data-router.rst\r
+   data-router/administration.rst\r
+   data-router/architecture.rst\r
+   data-router/configuration.rst\r
+   data-router/consumedapis.rst\r
+   data-router/DataRouterUserGuide.rst\r
+   data-router/delivery.rst\r
+   data-router/humaninterfaces.rst\r
+   data-router/logging.rst\r
+   data-router/release-notes.rst\r
+\r
 \r
 \r
diff --git a/pom.xml b/pom.xml
index afbbf92..17744ad 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
     <groupId>org.onap.dmaap.datarouter</groupId>
     <artifactId>parent</artifactId>
     <name>dmaap-datarouter</name>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.2-SNAPSHOT</version>
     <packaging>pom</packaging>
     <url>https://github.com/att/DMAAP_DATAROUTER</url>
     <parent>
@@ -49,6 +49,7 @@
         <jetty.websocket.version>8.2.0.v20160908</jetty.websocket.version>
         <javax.mail-api.version>1.5.5</javax.mail-api.version>
         <dom4j.version>1.6</dom4j.version>
+        <xml-apis.version>1.4.01</xml-apis.version>
         <thoughtworks.version>1.4.10</thoughtworks.version>
         <google.guava.version>26.0-jre</google.guava.version>
         <qos.logback.version>1.2.3</qos.logback.version>
index 30cdf7e..b042a35 100644 (file)
@@ -27,7 +27,7 @@
 \r
 major=1\r
 minor=0\r
-patch=1\r
+patch=2\r
 \r
 base_version=${major}.${minor}.${patch}\r
 \r