Kenmegne
7 days ago 1bc8864f134272c4bf23a9b05831803a423a4771
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.megatim.apifdxweb.service.impl.filters;
 
import com.megatim.apifdxweb.tools.AppContext;
import com.megatim.fdxcommons.core.ifaces.interceptor.AfterUserAction;
import com.megatim.fdxcommons.core.ifaces.interceptor.InterceptorHandler;
import com.megatim.fdxcommons.model.log.ContainerContextDto;
import com.megatim.fdxcommons.model.log.UserActionLog;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Provider;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.cdi.CdiCamelContext;
 
/**
 *
 * @author ASUS
 */
@Provider
public class AfterUserActionFilter implements ContainerResponseFilter {
 
    @Context
    private ResourceInfo resourceInfo;
 
    @Inject
    private InterceptorHandler handler;
 
    @Inject
    private CdiCamelContext camelContext;
 
    @Context
    private SecurityContext securityContext;
 
    @Context
    private UriInfo uriInfo;
 
    @Context
    private HttpServletRequest servletRequest;
 
    @Inject
    private AfterUserAction afterAction;
 
    @Override
    public void filter(ContainerRequestContext crc, ContainerResponseContext crc1) throws IOException {
        try {
 
            UserActionLog log = afterAction.filter(getContainerContext(crc, crc1));
            if (log != null) {
                ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
                producerTemplate.asyncSendBody("direct:" + AppContext.API_USER_ACTION_DIRECT, log);
            }
 
        } catch (Exception ex) {
            Logger.getLogger(AfterUserActionFilter.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
        }
 
    }
 
    private ContainerContextDto getContainerContext(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) {
        ContainerContextDto containerContext = new ContainerContextDto();
 
        containerContext.setContainerRequestContext(containerRequestContext);
        containerContext.setContainerResponseContext(containerResponseContext);
        containerContext.setHttpServletRequest(servletRequest);
        containerContext.setUriInfo(uriInfo);
        containerContext.setResourceInfo(resourceInfo);
        containerContext.setSecurityContext(securityContext);
 
        return containerContext;
    }
}