Skip to content

Commit 24d94a2

Browse files
committed
Add counter interceptor
1 parent 904b8fd commit 24d94a2

File tree

4 files changed

+89
-2
lines changed

4 files changed

+89
-2
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package br.com.spring.restful.component;
2+
3+
import java.util.HashMap;
4+
5+
import org.springframework.stereotype.Component;
6+
7+
@Component
8+
public class TriggerCounter {
9+
10+
private final HashMap<String, Integer> counter = new HashMap<String, Integer>();
11+
12+
public void increment(String api) {
13+
Integer value = counter.get(api);
14+
if (value != null) {
15+
value++;
16+
}
17+
else {
18+
value = 1;
19+
}
20+
counter.put(api, value);
21+
}
22+
23+
public HashMap<String, Integer> getCounter() {
24+
return counter;
25+
}
26+
27+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package br.com.spring.restful.config;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
6+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7+
8+
import br.com.spring.restful.interceptor.CounterInterceptor;
9+
10+
@Configuration
11+
public class InterceptorConfig implements WebMvcConfigurer {
12+
13+
@Autowired
14+
private CounterInterceptor counterInterceptor;
15+
16+
@Override
17+
public void addInterceptors(InterceptorRegistry registry) {
18+
registry.addInterceptor(counterInterceptor);
19+
// TODO add token interceptor
20+
// TODO exception handler
21+
}
22+
23+
}
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
11
package br.com.spring.restful.controllers;
22

3+
import java.util.Map;
4+
5+
import org.springframework.beans.factory.annotation.Autowired;
36
import org.springframework.web.bind.annotation.GetMapping;
47
import org.springframework.web.bind.annotation.RestController;
58

9+
import br.com.spring.restful.component.TriggerCounter;
610

711
@RestController
812
public class MainController {
913

10-
@GetMapping(value="/")
14+
@Autowired
15+
TriggerCounter counter;
16+
17+
@GetMapping(value = "/")
1118
public String index() {
12-
return "Welcome to Todo List REST API!";
19+
return "Welcome to Todo List REST API!";
20+
}
21+
22+
@GetMapping(value = "/counters")
23+
public Map<String, Integer> getCounters() {
24+
return counter.getCounter();
1325
}
1426

1527
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package br.com.spring.restful.interceptor;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import javax.servlet.http.HttpServletResponse;
5+
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Component;
8+
import org.springframework.web.servlet.HandlerInterceptor;
9+
10+
import br.com.spring.restful.component.TriggerCounter;
11+
12+
@Component
13+
public class CounterInterceptor implements HandlerInterceptor {
14+
15+
@Autowired
16+
TriggerCounter triggerCounter;
17+
18+
@Override
19+
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
20+
throws Exception {
21+
triggerCounter.increment(request.getMethod() + ":" + request.getRequestURI());
22+
return HandlerInterceptor.super.preHandle(request, response, handler);
23+
}
24+
25+
}

0 commit comments

Comments
 (0)