Hendrik Jungnitsch
2022-09-29 afabd75c4009cbc0f784bbf1f7a74b1ec083a7f6
exercise
2 Dateien hinzugefügt
51 ■■■■■ Geänderte Dateien
src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java 27 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java 24 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java
Neue Datei
@@ -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()));
    }
}
src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java
Neue Datei
@@ -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();
    }
}