From e7d09831122841390b36555c28a762d66d41a562 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Di, 04 Okt 2022 14:38:49 +0200
Subject: [PATCH] exercise09

---
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java |    2 ++
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java           |    9 +++++++++
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/Counted.java                 |   11 +++++++++++
 3 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/Counted.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/Counted.java
new file mode 100644
index 0000000..e7d586e
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/Counted.java
@@ -0,0 +1,11 @@
+package de.gedoplan.seminar.sbt.di.exercise.aop;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Counted {
+}
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
index 7bfe6d6..0769733 100644
--- 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
@@ -1,5 +1,8 @@
 package de.gedoplan.seminar.sbt.di.exercise.aop;
 
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -8,6 +11,7 @@
 import java.util.concurrent.atomic.LongAdder;
 import java.util.stream.Collectors;
 
+@Aspect
 @Component
 public class MethodCounter {
 
@@ -24,4 +28,9 @@
                 .collect(Collectors.toMap(Map.Entry::getKey,e -> e.getValue().longValue()));
 
     }
+
+    @AfterReturning("@annotation(Counted)")
+    protected void count(JoinPoint joinPoint) {
+        increase(joinPoint.getSignature().getName());
+    }
 }
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java
index ff9a7e1..7e42b1a 100644
--- a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java
@@ -1,5 +1,6 @@
 package de.gedoplan.seminar.sbt.di.exercise.service;
 
+import de.gedoplan.seminar.sbt.di.exercise.aop.Counted;
 import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
 import de.gedoplan.seminar.sbt.di.exercise.repository.CocktailRepository;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -20,6 +21,7 @@
         this.filters = filters;
     }
 
+    @Counted
     @Override
     public List<Cocktail> findAll() {
         return cocktailRepository.findAll().stream()

--
Gitblit v1.7.1