\r
import com.att.eelf.configuration.EELFLogger;\r
import com.att.eelf.configuration.EELFManager;\r
+\r
import java.io.IOException;\r
import java.util.ArrayList;\r
import java.util.Collection;\r
import javax.servlet.ServletException;\r
import javax.servlet.http.HttpServletRequest;\r
import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.apache.commons.lang3.StringUtils;\r
import org.json.JSONArray;\r
import org.json.JSONException;\r
import org.json.JSONObject;\r
import org.json.JSONTokener;\r
+import org.onap.dmaap.datarouter.provisioning.utils.Poker;\r
import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;\r
import org.onap.dmaap.datarouter.provisioning.beans.IngressRoute;\r
import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs;\r
-import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
\r
/**\r
* This servlet handles redirects for the <publishURL> on the provisioning server, which is generated by the\r
* @version $Id: PublishServlet.java,v 1.8 2014/03/12 19:45:41 eby Exp $\r
*/\r
@SuppressWarnings("serial")\r
+\r
public class PublishServlet extends BaseServlet {\r
\r
private int nextNode;\r
private String provstring;\r
private List<IngressRoute> irt;\r
//Adding EELF Logger Rally:US664892\r
- private static EELFLogger eelflogger = EELFManager.getInstance()\r
- .getLogger("org.onap.dmaap.datarouter.provisioning.PublishServlet");\r
+ private static EELFLogger eelfLogger = EELFManager.getInstance()\r
+ .getLogger(PublishServlet.class);\r
private static final Object lock = new Object();\r
\r
\r
\r
@Override\r
public void doDelete(HttpServletRequest req, HttpServletResponse resp) {\r
- setIpAndFqdnForEelf("doDelete");\r
- eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
- redirect(req, resp);\r
+ setUpEelfForPublishServlet(req, "doDelete");\r
+ eelfLogger.info(EelfMsgs.ENTRY);\r
+ try {\r
+ eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID,\r
+ req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
+ redirect(req, resp);\r
+ } finally {\r
+ eelfLogger.info(EelfMsgs.EXIT);\r
+ }\r
}\r
\r
@Override\r
public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
- setIpAndFqdnForEelf("doGet");\r
- eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
- redirect(req, resp);\r
+ setUpEelfForPublishServlet(req, "doGet");\r
+ eelfLogger.info(EelfMsgs.ENTRY);\r
+ try {\r
+ eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID,\r
+ req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
+ redirect(req, resp);\r
+ } finally {\r
+ eelfLogger.info(EelfMsgs.EXIT);\r
+ }\r
}\r
\r
@Override\r
public void doPut(HttpServletRequest req, HttpServletResponse resp) {\r
- setIpAndFqdnForEelf("doPut");\r
- eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
- redirect(req, resp);\r
+ setUpEelfForPublishServlet(req, "doPut");\r
+ eelfLogger.info(EelfMsgs.ENTRY);\r
+ try {\r
+ eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID,\r
+ req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
+ redirect(req, resp);\r
+ } finally {\r
+ eelfLogger.info(EelfMsgs.EXIT);\r
+ }\r
}\r
\r
@Override\r
public void doPost(HttpServletRequest req, HttpServletResponse resp) {\r
- setIpAndFqdnForEelf("doPost");\r
- eelflogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));\r
- redirect(req, resp);\r
+ setUpEelfForPublishServlet(req, "doPost");\r
+ eelfLogger.info(EelfMsgs.ENTRY);\r
+ try {\r
+ eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF, req.getHeader(BEHALF_HEADER));\r
+ redirect(req, resp);\r
+ } finally {\r
+ eelfLogger.info(EelfMsgs.EXIT);\r
+ }\r
\r
}\r
\r
+ private void setUpEelfForPublishServlet(HttpServletRequest req, String method) {\r
+ if (StringUtils.isBlank(req.getHeader("X-ONAP-RequestID"))\r
+ || StringUtils.isBlank(req.getHeader("X-InvocationID"))) {\r
+ setIpFqdnForEelf(method);\r
+ } else {\r
+ setIpFqdnRequestIDandInvocationIDForEelf(method, req);\r
+ }\r
+ }\r
+\r
private void redirect(HttpServletRequest req, HttpServletResponse resp) {\r
try {\r
String[] nodes = getNodes();\r
: "Invalid request - Missing file ID.";\r
elr.setMessage(message);\r
elr.setResult(HttpServletResponse.SC_NOT_FOUND);\r
- eventlogger.info(elr);\r
+ eventlogger.error(elr.toString());\r
\r
resp.sendError(HttpServletResponse.SC_NOT_FOUND, message);\r
} else {\r
// Generate new URL\r
String nextnode = getRedirectNode(feedid, req);\r
- nextnode = nextnode + ":" + DB.getHttpsPort();\r
+ nextnode = nextnode + ":" + ProvRunner.getProvProperties().getProperty(\r
+ "org.onap.dmaap.datarouter.provserver.https.port", "8443");\r
String newurl = "https://" + nextnode + "/publish" + req.getPathInfo();\r
String qs = req.getQueryString();\r
if (qs != null) {\r
String message = "Redirected to: " + newurl;\r
elr.setMessage(message);\r
elr.setResult(HttpServletResponse.SC_MOVED_PERMANENTLY);\r
- eventlogger.info(elr);\r
+ eventlogger.info(elr.toString());\r
\r
resp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);\r
resp.setHeader("Location", newurl);\r
}\r
}\r
} catch (IOException ioe) {\r
- intlogger.error("IOException" + ioe.getMessage());\r
-\r
+ intlogger.error("PROV0151 PublishServlet.redirect: " + ioe.getMessage(), ioe);\r
}\r
}\r
\r
private String getRedirectNode(int feedid, HttpServletRequest req) {\r
// Check to see if the IRT needs to be updated\r
- Poker p = Poker.getPoker();\r
- String s = p.getProvisioningString();\r
+ Poker pkr = Poker.getPoker();\r
+ String str = pkr.getProvisioningString();\r
synchronized (lock) {\r
- if (irt == null || (s.length() != provstring.length()) || !s.equals(provstring)) {\r
+ if (irt == null || (str.length() != provstring.length()) || !str.equals(provstring)) {\r
// Provisioning string has changed -- update the IRT\r
- provstring = s;\r
+ provstring = str;\r
JSONObject jo = new JSONObject(new JSONTokener(provstring));\r
JSONArray ja = jo.getJSONArray("ingress");\r
List<IngressRoute> newlist = new ArrayList<>();\r
\r
// No IRT rule matches, do round robin of all active nodes\r
String[] nodes = getNodes();\r
- if (nextNode >= nodes.length) // The list of nodes may have grown/shrunk\r
- {\r
+ if (nextNode >= nodes.length) { // The list of nodes may have grown/shrunk\r
nextNode = 0;\r
}\r
return nodes[nextNode++];\r
}\r
return -1;\r
} catch (NumberFormatException | JSONException e) {\r
+ intlogger.debug("PROV0152 PublishServlet.checkPath: " + e.getMessage(), e);\r
return -1;\r
}\r
}\r