Subversion Repositories SmartDukaan

Rev

Rev 33756 | Rev 33788 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
33756 ranu 1
package com.spice.profitmandi.web.interceptor;
2
 
3
import org.apache.logging.log4j.LogManager;
4
import org.apache.logging.log4j.Logger;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.cache.Cache;
7
import org.springframework.cache.CacheManager;
8
import org.springframework.stereotype.Component;
9
import org.springframework.web.servlet.HandlerInterceptor;
10
import org.springframework.web.servlet.ModelAndView;
11
 
12
import javax.servlet.http.HttpServletRequest;
13
import javax.servlet.http.HttpServletResponse;
14
 
15
@Component
16
public class PostInterceptor implements HandlerInterceptor {
17
 
18
    private static final Logger LOGGER = LogManager.getLogger(RoleInterceptor.class);
19
    @Autowired
20
    private CacheManager timeoutCacheManager;
21
 
22
    @Override
23
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)
24
            throws Exception {
25
    }
26
 
27
    @Override
28
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)
29
            throws Exception {
30
        LOGGER.info("request is received after : " + request.getRequestURL().toString());
31
    }
32
 
33
    @Override
34
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
35
        //LOGGER.info("request is received in post interceptor before [{}] with method [{}]", request.getRequestURL().toString(), request.getMethod());
36
        if ("POST".equalsIgnoreCase(request.getMethod())) {
37
            String idempotencyKey = request.getHeader("IdempotencyKey");
38
            if (idempotencyKey == null || idempotencyKey.isEmpty()) {
33761 ranu 39
//                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing idempotency token in header");
40
                return true;
33756 ranu 41
            }
42
 
43
            Cache cache = timeoutCacheManager.getCache("IdempotencyKey");
44
            if (cache != null) {
45
                if (cache.get(idempotencyKey) != null) {
46
                    response.setStatus(HttpServletResponse.SC_OK);
47
                    response.getWriter().write("Duplicate request. Idempotency Key already processed.");
48
                    return false;
49
                } else {
50
                    cache.put(idempotencyKey, "PROCESSED");
51
                    return true;
52
                }
53
            }
54
        }
55
        return true;
56
    }
57
 
58
 
59
}