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