Skip to content
Snippets Groups Projects
Commit 490fedb9 authored by Jonas Blatt's avatar Jonas Blatt :ant:
Browse files

Add initialization of verifier at application startup + Add verification process id

parent 4de47231
No related branches found
No related tags found
No related merge requests found
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...");
}
}
package de.unikoblenz.fgbks.core.dmn.verification; 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.utils.DmnService;
import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult; import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult;
import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet; import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet;
...@@ -104,7 +105,6 @@ public class DmnVerificationService { ...@@ -104,7 +105,6 @@ public class DmnVerificationService {
* @return a list of {@link VerificationType}s * @return a list of {@link VerificationType}s
*/ */
public List<VerificationType> getVerificationTypes() { public List<VerificationType> getVerificationTypes() {
initVerifier();
return Collections.unmodifiableList(verificationTypes); return Collections.unmodifiableList(verificationTypes);
} }
...@@ -115,11 +115,13 @@ public class DmnVerificationService { ...@@ -115,11 +115,13 @@ public class DmnVerificationService {
* @return a list of {@link ClassificationType}s * @return a list of {@link ClassificationType}s
*/ */
public List<ClassificationType> getVerificationClassificationTypes() { public List<ClassificationType> getVerificationClassificationTypes() {
initVerifier();
return Collections.unmodifiableList(verificationClassificationTypes); return Collections.unmodifiableList(verificationClassificationTypes);
} }
private void initVerifier() { /**
* Init the verification service instance.
*/
public void initVerifier() {
if (executor == null || verifierClasses == null) { if (executor == null || verifierClasses == null) {
LOGGER.info("Init verification."); LOGGER.info("Init verification.");
LOGGER.info("Creating thread pool with " + maxThreads + " threads."); LOGGER.info("Creating thread pool with " + maxThreads + " threads.");
...@@ -161,12 +163,13 @@ public class DmnVerificationService { ...@@ -161,12 +163,13 @@ public class DmnVerificationService {
} }
private Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> getConfigs( private Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> getConfigs(
String dmnXml) { String dmnXml, long verificationProcessId) {
Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> map = Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> map =
new ConcurrentHashMap<>(); new ConcurrentHashMap<>();
map.put( map.put(
DefaultConfiguration.class, DefaultConfiguration.class,
DefaultConfiguration.getBuilder() DefaultConfiguration.getBuilder()
.withVerificationProcessId(verificationProcessId)
.withDmnObjectContainer(dmnService.getDmnServiceFromXml(dmnXml)) .withDmnObjectContainer(dmnService.getDmnServiceFromXml(dmnXml))
.build()); .build());
return map; return map;
...@@ -174,12 +177,15 @@ public class DmnVerificationService { ...@@ -174,12 +177,15 @@ public class DmnVerificationService {
private VerifierResultSet generateWithFilter( private VerifierResultSet generateWithFilter(
String dmnXml, String typeName, String classificationName) { 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); Validate.notNull(dmnXml);
LOGGER.debug(dmnXml);
Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> configs = Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> configs =
getConfigs(dmnXml); getConfigs(dmnXml, verificationProcessId);
Builder resultBuilder = VerifierResultSet.getBuilder(); Builder resultBuilder = VerifierResultSet.getBuilder();
LOGGER.info("Looking for verifiers. Id: " + verificationProcessId);
List<Future<VerifierResult>> results = new ArrayList<>(verifierClasses.size()); List<Future<VerifierResult>> results = new ArrayList<>(verifierClasses.size());
for (Class<?> verifierClass : verifierClasses) { for (Class<?> verifierClass : verifierClasses) {
...@@ -214,6 +220,7 @@ public class DmnVerificationService { ...@@ -214,6 +220,7 @@ public class DmnVerificationService {
e.printStackTrace(); e.printStackTrace();
} }
}); });
LOGGER.info("Verification finished. Id: " + verificationProcessId);
return resultBuilder.build(); return resultBuilder.build();
} }
......
...@@ -78,7 +78,11 @@ public abstract class AbstractVerifier implements Verifier { ...@@ -78,7 +78,11 @@ public abstract class AbstractVerifier implements Verifier {
} }
private VerifierResult verify() { private VerifierResult verify() {
LOGGER.info("Starting verification " + getVerificationType().getName()); LOGGER.info(
"Starting verification "
+ getVerificationType().getName()
+ " Id: "
+ this.verifierConfig.getVerificationProcessId());
StopWatch watch = new StopWatch(); StopWatch watch = new StopWatch();
watch.start(); watch.start();
doVerification(); doVerification();
...@@ -87,9 +91,10 @@ public abstract class AbstractVerifier implements Verifier { ...@@ -87,9 +91,10 @@ public abstract class AbstractVerifier implements Verifier {
LOGGER.info( LOGGER.info(
"Verification " "Verification "
+ getVerificationType().getName() + getVerificationType().getName()
+ " finished. " + " finished. Id: "
+ "Time Elapsed: " + this.verifierConfig.getVerificationProcessId()
+ executionTime + " Time Elapsed: "
+ +executionTime
+ " ms"); + " ms");
return resultBuilder.withExecutionTime(executionTime).build(); return resultBuilder.withExecutionTime(executionTime).build();
} }
......
...@@ -7,6 +7,7 @@ public abstract class AbstractDmnVerifierConfig { ...@@ -7,6 +7,7 @@ public abstract class AbstractDmnVerifierConfig {
private HashMap<String, Object> configurationProperties; private HashMap<String, Object> configurationProperties;
private HashMap<String, Class<?>> configurationTypes; private HashMap<String, Class<?>> configurationTypes;
protected long verificationProcessId;
public <E> E getConfiguration(String key) { public <E> E getConfiguration(String key) {
return (E) configurationProperties.getOrDefault(key, null); return (E) configurationProperties.getOrDefault(key, null);
...@@ -16,6 +17,10 @@ public abstract class AbstractDmnVerifierConfig { ...@@ -16,6 +17,10 @@ public abstract class AbstractDmnVerifierConfig {
return configurationTypes.get(key); return configurationTypes.get(key);
} }
public long getVerificationProcessId() {
return verificationProcessId;
}
protected AbstractDmnVerifierConfig withConfigurationProperty(String key, Object value) { protected AbstractDmnVerifierConfig withConfigurationProperty(String key, Object value) {
configurationProperties.put(Validate.notNull(key), Validate.notNull(value)); configurationProperties.put(Validate.notNull(key), Validate.notNull(value));
configurationTypes.put(key, value.getClass()); configurationTypes.put(key, value.getClass());
......
...@@ -11,7 +11,6 @@ public class DefaultConfiguration extends AbstractDmnVerifierConfig { ...@@ -11,7 +11,6 @@ public class DefaultConfiguration extends AbstractDmnVerifierConfig {
public static final String KEY_SHARED_MAP = "sharedMap"; public static final String KEY_SHARED_MAP = "sharedMap";
protected DefaultConfiguration() { protected DefaultConfiguration() {
super();
super.withConfigurationProperty(KEY_SHARED_MAP, new ConcurrentHashMap<>(1024)); super.withConfigurationProperty(KEY_SHARED_MAP, new ConcurrentHashMap<>(1024));
} }
...@@ -26,6 +25,11 @@ public class DefaultConfiguration extends AbstractDmnVerifierConfig { ...@@ -26,6 +25,11 @@ public class DefaultConfiguration extends AbstractDmnVerifierConfig {
return this; return this;
} }
public Builder withVerificationProcessId(long verificationProcessId) {
value.verificationProcessId = verificationProcessId;
return this;
}
@Override @Override
protected void validate() { protected void validate() {
super.validate(); super.validate();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment