diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/AppLifecycleBean.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/AppLifecycleBean.java new file mode 100644 index 0000000000000000000000000000000000000000..0f5cfe1b086c5ede00c3023b734ff81387c31f99 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/AppLifecycleBean.java @@ -0,0 +1,28 @@ +package de.unikoblenz.fgbks.api; + +import de.unikoblenz.fgbks.core.dmn.verification.DmnVerificationService; +import io.quarkus.runtime.ShutdownEvent; +import io.quarkus.runtime.StartupEvent; +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.inject.Inject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@ApplicationScoped +public class AppLifecycleBean { + + private static final Logger LOGGER = LoggerFactory.getLogger("AppLifecycle"); + + @Inject + DmnVerificationService dmnVerificationService; + + void onStart(@Observes StartupEvent ev) { + LOGGER.info("The dmn verification application is starting..."); + dmnVerificationService.initVerifier(); + } + + void onStop(@Observes ShutdownEvent ev) { + LOGGER.info("The dmn verification application is stopping..."); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/DmnVerificationService.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/DmnVerificationService.java index 0d9ad88f06190b295e894ce2ba1687dd00ac7eca..7c59e3e2257216333ba47503063971830a4de7f3 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/DmnVerificationService.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/DmnVerificationService.java @@ -1,5 +1,6 @@ package de.unikoblenz.fgbks.core.dmn.verification; +import de.unikoblenz.fgbks.base.utils.UniqueIdGenerator; import de.unikoblenz.fgbks.core.dmn.utils.DmnService; import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult; import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet; @@ -104,7 +105,6 @@ public class DmnVerificationService { * @return a list of {@link VerificationType}s */ public List<VerificationType> getVerificationTypes() { - initVerifier(); return Collections.unmodifiableList(verificationTypes); } @@ -115,11 +115,13 @@ public class DmnVerificationService { * @return a list of {@link ClassificationType}s */ public List<ClassificationType> getVerificationClassificationTypes() { - initVerifier(); return Collections.unmodifiableList(verificationClassificationTypes); } - private void initVerifier() { + /** + * Init the verification service instance. + */ + public void initVerifier() { if (executor == null || verifierClasses == null) { LOGGER.info("Init verification."); LOGGER.info("Creating thread pool with " + maxThreads + " threads."); @@ -161,12 +163,13 @@ public class DmnVerificationService { } private Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> getConfigs( - String dmnXml) { + String dmnXml, long verificationProcessId) { Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> map = new ConcurrentHashMap<>(); map.put( DefaultConfiguration.class, DefaultConfiguration.getBuilder() + .withVerificationProcessId(verificationProcessId) .withDmnObjectContainer(dmnService.getDmnServiceFromXml(dmnXml)) .build()); return map; @@ -174,12 +177,15 @@ public class DmnVerificationService { private VerifierResultSet generateWithFilter( String dmnXml, String typeName, String classificationName) { - initVerifier(); + long verificationProcessId = UniqueIdGenerator.getNextId(); + LOGGER.info("Start verification process. Id: " + verificationProcessId); + LOGGER.info("Parsing dmn. Id: " + verificationProcessId); Validate.notNull(dmnXml); + LOGGER.debug(dmnXml); Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> configs = - getConfigs(dmnXml); + getConfigs(dmnXml, verificationProcessId); Builder resultBuilder = VerifierResultSet.getBuilder(); - + LOGGER.info("Looking for verifiers. Id: " + verificationProcessId); List<Future<VerifierResult>> results = new ArrayList<>(verifierClasses.size()); for (Class<?> verifierClass : verifierClasses) { @@ -214,6 +220,7 @@ public class DmnVerificationService { e.printStackTrace(); } }); + LOGGER.info("Verification finished. Id: " + verificationProcessId); return resultBuilder.build(); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java index 62c8e1fb96a9e2e0cad24b26f8dc307e3665f127..528b700a04e3fd77c962dc12cd081f82d32382b5 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java @@ -78,7 +78,11 @@ public abstract class AbstractVerifier implements Verifier { } private VerifierResult verify() { - LOGGER.info("Starting verification " + getVerificationType().getName()); + LOGGER.info( + "Starting verification " + + getVerificationType().getName() + + " Id: " + + this.verifierConfig.getVerificationProcessId()); StopWatch watch = new StopWatch(); watch.start(); doVerification(); @@ -87,9 +91,10 @@ public abstract class AbstractVerifier implements Verifier { LOGGER.info( "Verification " + getVerificationType().getName() - + " finished. " - + "Time Elapsed: " - + executionTime + + " finished. Id: " + + this.verifierConfig.getVerificationProcessId() + + " Time Elapsed: " + + +executionTime + " ms"); return resultBuilder.withExecutionTime(executionTime).build(); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractDmnVerifierConfig.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractDmnVerifierConfig.java index a606c58130f52d9ca15ff64b53b2883d3e24aae6..a9df7952fd76aac94853383e07d7ca635ffbb8ef 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractDmnVerifierConfig.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractDmnVerifierConfig.java @@ -7,6 +7,7 @@ public abstract class AbstractDmnVerifierConfig { private HashMap<String, Object> configurationProperties; private HashMap<String, Class<?>> configurationTypes; + protected long verificationProcessId; public <E> E getConfiguration(String key) { return (E) configurationProperties.getOrDefault(key, null); @@ -16,6 +17,10 @@ public abstract class AbstractDmnVerifierConfig { return configurationTypes.get(key); } + public long getVerificationProcessId() { + return verificationProcessId; + } + protected AbstractDmnVerifierConfig withConfigurationProperty(String key, Object value) { configurationProperties.put(Validate.notNull(key), Validate.notNull(value)); configurationTypes.put(key, value.getClass()); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java index 6a9f07475543d6c20447de0c6b5470c66f375895..a232e311c74859d7c299f13716e66c731e6e6f3e 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java @@ -11,7 +11,6 @@ public class DefaultConfiguration extends AbstractDmnVerifierConfig { public static final String KEY_SHARED_MAP = "sharedMap"; protected DefaultConfiguration() { - super(); super.withConfigurationProperty(KEY_SHARED_MAP, new ConcurrentHashMap<>(1024)); } @@ -26,6 +25,11 @@ public class DefaultConfiguration extends AbstractDmnVerifierConfig { return this; } + public Builder withVerificationProcessId(long verificationProcessId) { + value.verificationProcessId = verificationProcessId; + return this; + } + @Override protected void validate() { super.validate();