/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.fdxcommons.core.impl.interceptor; import com.megatim.fdxcommons.core.ifaces.interceptor.BeforeAction; import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Method; import java.util.stream.Collectors; import javax.enterprise.context.Dependent; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ResourceInfo; /** * * @author ASUS */ @Dependent public class BeforeActionImpl implements BeforeAction { @Override public void filter(ContainerRequestContext crc, ResourceInfo resourceInfo) { Method method = resourceInfo.getResourceMethod(); LoggingInterceptorBinding ann = method.getAnnotation(LoggingInterceptorBinding.class); if (crc.hasEntity() && ann != null && ann.shouldCopyData()) { InputStream inputStream = crc.getEntityStream(); String body = new BufferedReader(new InputStreamReader(inputStream)) .lines().collect(Collectors.joining("\n")); crc.setProperty("entity", body); // Replace the original input stream with a new one after reading it crc.setEntityStream(new ByteArrayInputStream(body.getBytes())); } } }