Enhancements for the aai-common library
[aai/aai-common.git] / aai-aaf-auth / src / main / java / org / onap / aai / aaf / filters / PayloadBufferingRequestWrapper.java
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+package org.onap.aai.aaf.filters;
 
-package org.onap.aai.logging;
+import org.apache.commons.io.IOUtils;
+import org.onap.aaf.cadi.BufferedServletInputStream;
 
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.pattern.ClassicConverter;
-import ch.qos.logback.classic.spi.ILoggingEvent;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
 
-public class EcompErrorCategory extends ClassicConverter {
+/**
+ * This class buffers the payload of the servlet request. The reason is that we access the payload multiple times,
+ * which is not supported by the request per se.
+ */
 
-    @Override
-    public String convert(ILoggingEvent event) {
+class PayloadBufferingRequestWrapper extends HttpServletRequestWrapper {
 
-        final Level lev = event.getLevel();
-        final String defaultCategory = "WARN";
+    private byte[] buffer;
 
-        if ((Level.WARN).equals(lev)) {
-            return (defaultCategory);
-        } else if ((Level.ERROR).equals(lev)) {
-            return ("ERROR");
-        }
-        return (defaultCategory);
+    PayloadBufferingRequestWrapper(HttpServletRequest req) throws IOException {
+        super(req);
+        this.buffer = IOUtils.toByteArray(req.getInputStream());
+    }
+
+    @Override
+    public ServletInputStream getInputStream() {
+        ByteArrayInputStream bais = new ByteArrayInputStream(this.buffer);
+        return new BufferedServletInputStream(bais);
     }
 }