* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*
*******************************************************************************/
-package com.att.nsa.dmaap.util;\r
-\r
-import java.util.Map;\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-import org.apache.http.HttpStatus;\r
-import com.att.eelf.configuration.EELFLogger;\r
-import com.att.eelf.configuration.EELFManager;\r
-import org.json.JSONException;\r
-import org.json.JSONObject;\r
-import org.springframework.stereotype.Component;\r
-import org.onap.dmaap.dmf.mr.CambriaApiException;\r
-import org.onap.dmaap.dmf.mr.exception.DMaaPResponseCode;\r
-import org.onap.dmaap.dmf.mr.exception.ErrorResponse;\r
-import ajsc.beans.interceptors.AjscInterceptor;\r
-\r
-/**\r
- * AJSC Intercepter implementation of ContentLengthFilter\r
- */\r
-@Component\r
-public class ContentLengthInterceptor implements AjscInterceptor{\r
-\r
- \r
- private String defLength;\r
- //private Logger log = Logger.getLogger(ContentLengthInterceptor.class.toString());\r
- private static final EELFLogger log = EELFManager.getInstance().getLogger(ContentLengthInterceptor.class);\r
-\r
-\r
- /**\r
- * Intercepter method to intercept requests before processing\r
- */\r
- @Override\r
- public boolean allowOrReject(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse,\r
- Map map) throws Exception {\r
- \r
- log.info("inside Interceptor allowOrReject content length checking before pub/sub");\r
- \r
- JSONObject jsonObj = null;\r
- int requestLength = 0;\r
- setDefLength(System.getProperty("maxcontentlength"));\r
- try {\r
- // retrieving content length from message header\r
-\r
- if (null != httpservletrequest.getHeader("Content-Length")) {\r
- requestLength = Integer.parseInt(httpservletrequest.getHeader("Content-Length"));\r
- }\r
- // retrieving encoding from message header\r
- String transferEncoding = httpservletrequest.getHeader("Transfer-Encoding");\r
- // checking for no encoding, chunked and requestLength greater then\r
- // default length\r
- if (null != transferEncoding && !(transferEncoding.contains("chunked"))\r
- && (requestLength > Integer.parseInt(getDefLength()))) {\r
- jsonObj = new JSONObject().append("defaultlength", getDefLength())\r
- .append("requestlength", requestLength);\r
- log.error("message length is greater than default");\r
- throw new CambriaApiException(jsonObj);\r
- } \r
- else if (null == transferEncoding && (requestLength > Integer.parseInt(getDefLength()))) \r
- {\r
- jsonObj = new JSONObject().append("defaultlength", getDefLength()).append(\r
- "requestlength", requestLength);\r
- log.error("Request message is not chunked or request length is greater than default length");\r
- throw new CambriaApiException(jsonObj);\r
- \r
- \r
- } \r
- else \r
- {\r
- //chain.doFilter(req, res);\r
- return true;\r
- }\r
- \r
- } catch (CambriaApiException | NumberFormatException | JSONException e) {\r
- \r
- log.info("Exception obj--"+e);\r
+ package org.onap.dmaap.util;
+
+import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.http.HttpStatus;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.stereotype.Component;
+import org.onap.dmaap.dmf.mr.CambriaApiException;
+import org.onap.dmaap.dmf.mr.exception.DMaaPResponseCode;
+import org.onap.dmaap.dmf.mr.exception.ErrorResponse;
+import ajsc.beans.interceptors.AjscInterceptor;
+
+/**
+ * AJSC Intercepter implementation of ContentLengthFilter
+ */
+@Component
+public class ContentLengthInterceptor implements AjscInterceptor{
+
+
+ private String defLength;
+ //private Logger log = Logger.getLogger(ContentLengthInterceptor.class.toString());
+ private static final EELFLogger log = EELFManager.getInstance().getLogger(ContentLengthInterceptor.class);
+
+
+ /**
+ * Intercepter method to intercept requests before processing
+ */
+ @Override
+ public boolean allowOrReject(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse,
+ Map map) throws Exception {
+
+ log.info("inside Interceptor allowOrReject content length checking before pub/sub");
+
+ JSONObject jsonObj = null;
+ int requestLength = 0;
+ setDefLength(System.getProperty("maxcontentlength"));
+ try {
+ // retrieving content length from message header
+
+ if (null != httpservletrequest.getHeader("Content-Length")) {
+ requestLength = Integer.parseInt(httpservletrequest.getHeader("Content-Length"));
+ }
+ // retrieving encoding from message header
+ String transferEncoding = httpservletrequest.getHeader("Transfer-Encoding");
+ // checking for no encoding, chunked and requestLength greater then
+ // default length
+ if (null != transferEncoding && !(transferEncoding.contains("chunked"))
+ && (requestLength > Integer.parseInt(getDefLength()))) {
+ jsonObj = new JSONObject().append("defaultlength", getDefLength())
+ .append("requestlength", requestLength);
+ log.error("message length is greater than default");
+ throw new CambriaApiException(jsonObj);
+ }
+ else if (null == transferEncoding && (requestLength > Integer.parseInt(getDefLength())))
+ {
+ jsonObj = new JSONObject().append("defaultlength", getDefLength()).append(
+ "requestlength", requestLength);
+ log.error("Request message is not chunked or request length is greater than default length");
+ throw new CambriaApiException(jsonObj);
+
+
+ }
+ else
+ {
+ //chain.doFilter(req, res);
+ return true;
+ }
+
+ } catch (CambriaApiException | NumberFormatException | JSONException e) {
+
+ log.info("Exception obj--"+e);
log.error("message size is greater then default"+e.getMessage());
String messg=e.toString();
if(jsonObj!=null){
messg=jsonObj.toString();
- }\r
- ErrorResponse errRes = new ErrorResponse(HttpStatus.SC_REQUEST_TOO_LONG,\r
- DMaaPResponseCode.MSG_SIZE_EXCEEDS_MSG_LIMIT.getResponseCode(), System.getProperty("msg_size_exceeds")\r
- + messg);\r
- log.info(errRes.toString());\r
- \r
- \r
- map.put(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"test");\r
+ }
+ ErrorResponse errRes = new ErrorResponse(HttpStatus.SC_REQUEST_TOO_LONG,
+ DMaaPResponseCode.MSG_SIZE_EXCEEDS_MSG_LIMIT.getResponseCode(), System.getProperty("msg_size_exceeds")
+ + messg);
+ log.info(errRes.toString());
+
+
+ map.put(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"test");
httpservletresponse.setStatus(HttpStatus.SC_REQUEST_TOO_LONG);
- if(httpservletresponse.getOutputStream()!=null){\r
+ if(httpservletresponse.getOutputStream()!=null){
httpservletresponse.getOutputStream().write(errRes.toString().getBytes());
- }\r
- return false;\r
- }\r
-\r
- \r
- \r
- }\r
-\r
- \r
- /**\r
- * Get Default Content Length\r
- * @return defLength\r
- */\r
- public String getDefLength() {\r
- return defLength;\r
- }\r
- /**\r
- * Set Default Content Length\r
- * @param defLength\r
- */\r
- public void setDefLength(String defLength) {\r
- this.defLength = defLength;\r
- }\r
-\r
- \r
-\r
-}\r
+ }
+ return false;
+ }
+
+
+
+ }
+
+
+ /**
+ * Get Default Content Length
+ * @return defLength
+ */
+ public String getDefLength() {
+ return defLength;
+ }
+ /**
+ * Set Default Content Length
+ * @param defLength
+ */
+ public void setDefLength(String defLength) {
+ this.defLength = defLength;
+ }
+
+
+
+}