diff --git a/redaction-service-v1/redaction-service-server-v1/pom.xml b/redaction-service-v1/redaction-service-server-v1/pom.xml
index 0ac78f12..41036d0f 100644
--- a/redaction-service-v1/redaction-service-server-v1/pom.xml
+++ b/redaction-service-v1/redaction-service-server-v1/pom.xml
@@ -93,6 +93,7 @@
com.iqser.red.commons
metric-commons
+ 1.7.0
diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/Application.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/Application.java
index cfd44b4c..38de3d24 100644
--- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/Application.java
+++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/Application.java
@@ -9,7 +9,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
-import com.iqser.red.commons.spring.DefaultWebMvcConfiguration;
import com.iqser.red.service.redaction.v1.server.client.RulesClient;
import com.iqser.red.service.redaction.v1.server.multitenancy.AsyncConfig;
import com.iqser.red.service.redaction.v1.server.multitenancy.MultiTenancyMessagingConfiguration;
@@ -19,7 +18,7 @@ import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettin
import io.micrometer.core.aop.TimedAspect;
import io.micrometer.core.instrument.MeterRegistry;
-@Import({MultiTenancyWebConfiguration.class, AsyncConfig.class, MultiTenancyMessagingConfiguration.class})
+@Import({MultiTenancyWebConfiguration.class, AsyncConfig.class, MultiTenancyMessagingConfiguration.class, MetricsConfiguration.class})
@EnableFeignClients(basePackageClasses = RulesClient.class)
@EnableConfigurationProperties(RedactionServiceSettings.class)
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/MetricsConfiguration.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/MetricsConfiguration.java
new file mode 100644
index 00000000..cf26924c
--- /dev/null
+++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/MetricsConfiguration.java
@@ -0,0 +1,26 @@
+package com.iqser.red.service.redaction.v1.server;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import com.iqser.gin4.commons.metrics.MetricCommonsConfiguration;
+import com.iqser.gin4.commons.metrics.meters.FunctionTimerFactory;
+import com.iqser.gin4.commons.metrics.meters.FunctionTimerValues;
+
+@Configuration
+@Import({MetricCommonsConfiguration.class})
+public class MetricsConfiguration {
+
+ private static final String REDACTMANAGER_ANALYZE_PAGEWISE_METRIC_NAME = "redactmanager_analyze.pagewise";
+
+
+ @Bean
+ @Qualifier(REDACTMANAGER_ANALYZE_PAGEWISE_METRIC_NAME)
+ public FunctionTimerValues redactmanagerAnalyzePagewise(FunctionTimerFactory factory) {
+
+ return factory.create(REDACTMANAGER_ANALYZE_PAGEWISE_METRIC_NAME);
+ }
+
+}
diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java
index 2a54e3ad..b036e85a 100644
--- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java
+++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java
@@ -8,13 +8,13 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.kie.api.runtime.KieContainer;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
+import com.iqser.gin4.commons.metrics.meters.FunctionTimerValues;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult;
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribute;
@@ -53,10 +53,8 @@ import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettin
import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService;
import io.micrometer.core.annotation.Timed;
-import io.micrometer.core.instrument.FunctionTimer;
-import io.micrometer.core.instrument.MeterRegistry;
import lombok.AccessLevel;
-import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j;
@@ -64,8 +62,11 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
+@RequiredArgsConstructor
public class AnalyzeService {
+ private static final String REDACTMANAGER_ANALYZE_PAGEWISE_METRIC_NAME = "redactmanager_analyze.pagewise";
+
DictionaryService dictionaryService;
DroolsExecutionService droolsExecutionService;
EntityRedactionService entityRedactionService;
@@ -80,50 +81,8 @@ public class AnalyzeService {
ImageService imageService;
ImportedRedactionService importedRedactionService;
SectionFinder sectionFinder;
- PagewiseCounter analyzeCounter = new PagewiseCounter();
-
- @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
- public AnalyzeService(DictionaryService dictionaryService,
- DroolsExecutionService droolsExecutionService,
- EntityRedactionService entityRedactionService,
- RedactionLogCreatorService redactionLogCreatorService,
- RedactionStorageService redactionStorageService,
- PdfSegmentationService pdfSegmentationService,
- RedactionChangeLogService redactionChangeLogService,
- LegalBasisClient legalBasisClient,
- RedactionServiceSettings redactionServiceSettings,
- SectionTextBuilderService sectionTextBuilderService,
- SectionGridCreatorService sectionGridCreatorService,
- ImageService imageService,
- ImportedRedactionService importedRedactionService,
- SectionFinder sectionFinder,
- MeterRegistry meterRegistry) {
-
- this.dictionaryService = dictionaryService;
- this.droolsExecutionService = droolsExecutionService;
- this.entityRedactionService = entityRedactionService;
- this.redactionLogCreatorService = redactionLogCreatorService;
- this.redactionStorageService = redactionStorageService;
- this.pdfSegmentationService = pdfSegmentationService;
- this.redactionChangeLogService = redactionChangeLogService;
- this.legalBasisClient = legalBasisClient;
- this.redactionServiceSettings = redactionServiceSettings;
- this.sectionTextBuilderService = sectionTextBuilderService;
- this.sectionGridCreatorService = sectionGridCreatorService;
- this.imageService = imageService;
- this.importedRedactionService = importedRedactionService;
- this.sectionFinder = sectionFinder;
-
- // This is just here as an example of how to do a timer with a counter.
- // For a full implementation this should be moved to a common helper class.
- FunctionTimer.builder("redactmanager_analyze.pagewise", //
- analyzeCounter, //
- PagewiseCounter::getTotalPageCount, //
- PagewiseCounter::getTotalTimeMillis, //
- TimeUnit.MILLISECONDS) //
- .register(meterRegistry);
- }
+ FunctionTimerValues redactmanagerAnalyzePagewiseValues;
@Timed("redactmanager_analyzeDocumentStructure")
@@ -296,7 +255,7 @@ public class AnalyzeService {
long duration = System.currentTimeMillis() - startTime;
- analyzeCounter.increase(text.getNumberOfPages(), duration);
+ redactmanagerAnalyzePagewiseValues.increase(text.getNumberOfPages(), duration);
return AnalyzeResult.builder()
.dossierId(analyzeRequest.getDossierId())
@@ -347,21 +306,4 @@ public class AnalyzeService {
return SimplifiedText.builder().numberOfPages(numberOfPages).sectionTexts(sectionTexts).build();
}
-
- @FieldDefaults(level = AccessLevel.PRIVATE)
- @Getter
- private static final class PagewiseCounter {
-
- long totalPageCount;
- long totalTimeMillis;
-
-
- public void increase(long pageCount, long durationMillis) {
-
- totalPageCount += pageCount;
- totalTimeMillis += durationMillis;
- }
-
- }
-
}