[POLICY-88] validation of query pre-execution 75/6075/3
authorJorge Hernandez <jh1730@att.com>
Wed, 19 Jul 2017 23:54:02 +0000 (18:54 -0500)
committerJorge Hernandez <jh1730@att.com>
Thu, 20 Jul 2017 13:56:24 +0000 (08:56 -0500)
Change-Id: Ie02de9aca434c3d80b9e34126990e3b9995747bb
Signed-off-by: Jorge Hernandez <jh1730@att.com>
policy-management/src/main/java/org/openecomp/policy/drools/controller/DroolsController.java
policy-management/src/main/java/org/openecomp/policy/drools/controller/internal/MavenDroolsController.java
policy-management/src/main/java/org/openecomp/policy/drools/controller/internal/NullDroolsController.java

index 5a5f312..251cef1 100644 (file)
@@ -23,6 +23,7 @@ package org.openecomp.policy.drools.controller;
 import java.util.List;
 import java.util.Map;
 
+import org.openecomp.policy.drools.core.PolicyContainer;
 import org.openecomp.policy.drools.event.comm.TopicSink;
 import org.openecomp.policy.drools.properties.Lockable;
 import org.openecomp.policy.drools.properties.Startable;
@@ -121,6 +122,11 @@ public interface DroolsController extends Startable, Lockable {
         */
        public String[] getRecentSinkEvents();
        
+       /**
+        * @return the underlying policy container
+        */
+       public PolicyContainer getContainer();
+       
        /**
         * Supports this encoder?
         * 
index bc57764..4eacbd1 100644 (file)
@@ -28,6 +28,8 @@ import java.util.Map;
 
 import org.apache.commons.collections4.queue.CircularFifoQueue;
 import org.drools.core.ClassObjectFilter;
+import org.kie.api.definition.KiePackage;
+import org.kie.api.definition.rule.Query;
 import org.kie.api.runtime.KieSession;
 import org.kie.api.runtime.rule.FactHandle;
 import org.kie.api.runtime.rule.QueryResults;
@@ -649,11 +651,10 @@ public class MavenDroolsController implements DroolsController {
        }
        
        /**
-        * gets the policy container
-        * @return the underlying container
+        * {@inheritDoc}
         */
        @JsonIgnore
-       protected PolicyContainer getContainer() {
+       public PolicyContainer getContainer() {
                return this.policyContainer;
        }
        
@@ -824,6 +825,18 @@ public class MavenDroolsController implements DroolsController {
                PolicySession session = getSession(sessionName);
                KieSession kieSession = session.getKieSession();
                
+               boolean found = false;
+               for (KiePackage kiePackage : kieSession.getKieBase().getKiePackages()) {
+                       for (Query q : kiePackage.getQueries()) {
+                               if (q.getName() != null && q.getName().equals(queryName)) {
+                                       found = true;
+                                       break;
+                               }
+                       }
+               }
+               if (!found)
+                       throw new IllegalArgumentException("Invalid Query Name: " + queryName);
+        
                List<Object> factObjects = new ArrayList<>();
                
                QueryResults queryResults = kieSession.getQueryResults(queryName, queryParams);
index 4019bee..7f5d466 100644 (file)
@@ -26,6 +26,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.openecomp.policy.drools.controller.DroolsController;
+import org.openecomp.policy.drools.core.PolicyContainer;
 import org.openecomp.policy.drools.event.comm.TopicSink;
 import org.openecomp.policy.drools.protocol.coders.TopicCoderFilterConfiguration;
 
@@ -152,7 +153,7 @@ public class NullDroolsController implements DroolsController {
        @Override
        public boolean deliver(TopicSink sink, Object event)
                        throws IllegalArgumentException, IllegalStateException, UnsupportedOperationException {
-               throw new IllegalArgumentException(this.getClass().getCanonicalName() + " invoked");
+               throw new IllegalStateException(this.getClass().getCanonicalName() + " invoked");
        }
 
        /**
@@ -162,6 +163,14 @@ public class NullDroolsController implements DroolsController {
        public Object[] getRecentSourceEvents() {
                return new String[0];
        }
+       
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public PolicyContainer getContainer() {
+               return null;
+       }
 
        /**
         * {@inheritDoc}
@@ -176,7 +185,7 @@ public class NullDroolsController implements DroolsController {
         */
        @Override
        public boolean ownsCoder(Class<? extends Object> coderClass, int modelHash) throws IllegalStateException {
-               throw new IllegalArgumentException(this.getClass().getCanonicalName() + " invoked");
+               throw new IllegalStateException(this.getClass().getCanonicalName() + " invoked");
        }
 
        /**
@@ -250,5 +259,4 @@ public class NullDroolsController implements DroolsController {
                                              boolean delete, Object... queryParams) {
                return new ArrayList<Object>();
        }
-
 }