From 712274e8d332181729c06c31dcf58d49f2a4d8f7 Mon Sep 17 00:00:00 2001 From: jhh Date: Tue, 9 Apr 2019 14:24:34 -0500 Subject: deploy and undeploy as audits. Change-Id: Iea1766d5d8075394e1dccc109f4477bd2c270c36 Issue-ID: POLICY-1624 Signed-off-by: jhh --- .../controller/internal/MavenDroolsController.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java') diff --git a/policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java b/policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java index 95b053fb..a9ab212b 100644 --- a/policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java +++ b/policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java @@ -27,7 +27,10 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import org.apache.commons.collections4.queue.CircularFifoQueue; +import org.checkerframework.checker.nullness.qual.NonNull; import org.drools.core.ClassObjectFilter; import org.kie.api.definition.KiePackage; import org.kie.api.definition.rule.Query; @@ -832,6 +835,15 @@ public class MavenDroolsController implements DroolsController { return factObjects; } + @Override + public List facts(@NonNull String sessionName, @NonNull Class clazz) { + return facts(sessionName, clazz.getCanonicalName(), false) + .stream() + .filter(clazz::isInstance) + .map(clazz::cast) + .collect(Collectors.toList()); + } + @Override public List factQuery(String sessionName, String queryName, String queriedEntity, boolean delete, Object... queryParams) { @@ -880,6 +892,33 @@ public class MavenDroolsController implements DroolsController { return factObjects; } + @Override + public boolean delete(@NonNull String sessionName, @NonNull T fact) { + String factClassName = fact.getClass().getName(); + + PolicySession session = getSession(sessionName); + KieSession kieSession = session.getKieSession(); + + Collection factHandles = kieSession.getFactHandles(new ClassObjectFilter(fact.getClass())); + for (FactHandle factHandle : factHandles) { + try { + if (Objects.equals(fact, kieSession.getObject(factHandle))) { + logger.info("Deleting {} from {}", factClassName, sessionName); + kieSession.delete(factHandle); + return true; + } + } catch (Exception e) { + logger.warn("Object cannot be retrieved from fact {}", factHandle, e); + } + } + return false; + } + + @Override + public boolean delete(@NonNull T fact) { + return this.getSessionNames().stream().map((ss) -> delete(ss, fact)).reduce(false, Boolean::logicalOr); + } + @Override public Class fetchModelClass(String className) { return ReflectionUtil.fetchClass(this.policyContainer.getClassLoader(), className); -- cgit 1.2.3-korg