Report KieBase names in rules artifacts. 89/77789/1
authorJorge Hernandez <jorge.hernandez-herrero@att.com>
Mon, 4 Feb 2019 14:54:50 +0000 (08:54 -0600)
committerJorge Hernandez <jorge.hernandez-herrero@att.com>
Mon, 4 Feb 2019 14:54:50 +0000 (08:54 -0600)
The rule writer at design time can embed the domain base model(s) supported
at design time.

This information can be extracted at runtime to match a controller with the
domain/model functionality that it can support.

Change-Id: I7f7f1320d7d601d50949d0cd09bc48982c222333
Issue-ID: POLICY-1500
Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
policy-management/src/main/java/org/onap/policy/drools/controller/DroolsController.java
policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java
policy-management/src/main/java/org/onap/policy/drools/controller/internal/NullDroolsController.java
policy-management/src/test/java/org/onap/policy/drools/controller/internal/MavenDroolsControllerTest.java
policy-management/src/test/java/org/onap/policy/drools/controller/internal/NullDroolsControllerTest.java
policy-management/src/test/resources/echo.kmodule

index c582a1c..1e7b8c7 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * ============LICENSE_START=======================================================
- * policy-management
+ * ONAP
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -89,6 +89,13 @@ public interface DroolsController extends Startable, Lockable {
      */
     public List<String> getCanonicalSessionNames();
 
+    /**
+     * get base domains.
+     *
+     * @return list of base domains.
+     */
+    public List<String> getBaseDomainNames();
+
     /**
      * offers an event to this controller for processing.
      * 
index c707c8f..6e9f04e 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * ============LICENSE_START=======================================================
- * policy-management
+ * ONAP
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -704,6 +704,11 @@ public class MavenDroolsController implements DroolsController {
         return getSessionNames(false);
     }
 
+    @Override
+    public List<String> getBaseDomainNames() {
+        return new ArrayList<>(this.policyContainer.getKieContainer().getKieBaseNames());
+    }
+
     /**
      * provides the underlying core layer container sessions.
      * 
index 2aaef91..4556867 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * ============LICENSE_START=======================================================
- * policy-management
+ * ONAP
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.drools.controller.internal;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.onap.policy.common.endpoints.event.comm.TopicSink;
 import org.onap.policy.drools.controller.DroolsController;
 import org.onap.policy.drools.core.PolicyContainer;
@@ -100,6 +100,11 @@ public class NullDroolsController implements DroolsController {
         return new ArrayList<>();
     }
 
+    @Override
+    public List<String> getBaseDomainNames() {
+        return Collections.emptyList();
+    }
+
     @Override
     public boolean offer(String topic, String event) {
         return false;
index 5df6eb8..dce38f9 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -32,6 +32,7 @@ import org.onap.policy.drools.util.KieUtils;
 public class MavenDroolsControllerTest {
 
     public static final String JUNIT_ECHO_KSESSION = "echo";
+    public static final String JUNIT_ECHO_KBASE = "onap.policies.test";
     public static final String JUNIT_ECHO_KMODULE_DRL_PATH = "src/test/resources/echo.drl";
     public static final String JUNIT_ECHO_KMODULE_POM_PATH = "src/test/resources/echo.pom";
     public static final String JUNIT_ECHO_KMODULE_PATH = "src/test/resources/echo.kmodule";
@@ -55,17 +56,17 @@ public class MavenDroolsControllerTest {
     }
 
     @Test
-    public void stop() throws IOException, InterruptedException {
+    public void stop() throws InterruptedException {
         createDroolsController(10000L).stop();
     }
 
     @Test
-    public void shutdown() throws IOException, InterruptedException {
+    public void shutdown() throws InterruptedException {
         createDroolsController(10000L).shutdown();
     }
 
     @Test
-    public void lock() throws IOException, InterruptedException {
+    public void lock() throws InterruptedException {
         DroolsController controller = createDroolsController(30000L);
 
         controller.lock();
@@ -105,11 +106,13 @@ public class MavenDroolsControllerTest {
         /* courtesy timer to allow full initialization from local maven repository */
         Thread.sleep(courtesyStartTimeMs);
 
-        Assert.assertTrue(controller.getSessionNames().size() == 1);
+        Assert.assertEquals(1, controller.getSessionNames().size());
         Assert.assertEquals(JUNIT_ECHO_KSESSION, controller.getSessionNames().get(0));
-        Assert.assertTrue(controller.getCanonicalSessionNames().size() == 1);
+        Assert.assertEquals(1, controller.getCanonicalSessionNames().size());
         Assert.assertTrue(controller.getCanonicalSessionNames().get(0).contains(JUNIT_ECHO_KSESSION));
 
+        Assert.assertEquals(JUNIT_ECHO_KBASE, String.join(",", controller.getBaseDomainNames()));
+
         return controller;
     }
 }
index 09d9cae..8cb754c 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -98,6 +98,11 @@ public class NullDroolsControllerTest {
         Assert.assertNull(new NullDroolsController().getContainer());
     }
 
+    @Test
+    public void getDomains() {
+        Assert.assertTrue(new NullDroolsController().getBaseDomainNames().isEmpty());
+    }
+
     @Test(expected = IllegalStateException.class)
     public void ownsCoder() {
         new NullDroolsController().ownsCoder(null, 0);
index 437a91c..496f709 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
   ============LICENSE_START=======================================================
-  archetype-closed-loop-demo-rules
+  ONAP
   ================================================================================
-  Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+  Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
   ================================================================================
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@
   -->
 
 <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
-    <kbase name="kbEcho">
+    <kbase name="onap.policies.test">
         <ksession name="echo"/>
     </kbase>
 </kmodule>