From afabd75c4009cbc0f784bbf1f7a74b1ec083a7f6 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Do, 29 Sep 2022 15:54:31 +0200
Subject: [PATCH] exercise
---
src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java | 27 +++++++++++++++++++++++++++
src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java | 24 ++++++++++++++++++++++++
2 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java
new file mode 100644
index 0000000..7bfe6d6
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java
@@ -0,0 +1,27 @@
+package de.gedoplan.seminar.sbt.di.exercise.aop;
+
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.LongAdder;
+import java.util.stream.Collectors;
+
+@Component
+public class MethodCounter {
+
+ private ConcurrentMap<String, LongAdder> methodCounts = new ConcurrentHashMap<>();
+
+
+ protected void increase(String methodName) {
+ methodCounts.computeIfAbsent(methodName,s -> new LongAdder())
+ .increment();
+ }
+
+ public Map<String,Long> getMethodCounts() {
+ return methodCounts.entrySet().stream()
+ .collect(Collectors.toMap(Map.Entry::getKey,e -> e.getValue().longValue()));
+
+ }
+}
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java
new file mode 100644
index 0000000..5890ffa
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java
@@ -0,0 +1,24 @@
+package de.gedoplan.seminar.sbt.di.exercise.rest;
+
+import de.gedoplan.seminar.sbt.di.exercise.aop.MethodCounter;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("methodCount")
+public class MethodCountResource {
+
+ private final MethodCounter methodCounter;
+
+ public MethodCountResource(MethodCounter methodCounter) {
+ this.methodCounter = methodCounter;
+ }
+
+ @GetMapping
+ public Map<String, Long> getMethodCounts() {
+ return methodCounter.getMethodCounts();
+ }
+}
--
Gitblit v1.7.1