* 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);
}
}