[jboss-svn-commits] JBL Code SVN: r34120 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/definition/rule and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 22 18:53:01 EDT 2010


Author: mark.proctor at jboss.com
Date: 2010-07-22 18:53:01 -0400 (Thu, 22 Jul 2010)
New Revision: 34120

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/definition/rule/Query.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/rule/impl/RuleImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
   labs/jbossrules/trunk/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
Log:
JBRULES-2374 Queries couldn't be removed from knowledge base.
-Queries should now be removeable

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -4,6 +4,7 @@
 
 import org.drools.definition.KnowledgePackage;
 import org.drools.definition.process.Process;
+import org.drools.definition.rule.Query;
 import org.drools.definition.rule.Rule;
 import org.drools.definition.type.FactType;
 import org.drools.event.knowledgebase.KnowledgeBaseEventManager;
@@ -91,12 +92,30 @@
                     String ruleName);
     
     /**
+     * Returns a reference to the Rule identified by the given package and rule names.
+     * 
+     * @param packageName the package name to which the rule belongs to.
+     * @param ruleName the name of the rule.
+     * 
+     * @return the Rule object or null if not found.
+     */
+    Query getQuery( String packageName, 
+                  String queryName );
+    /**
+     * Remove a rule from the specified package.
+     * @param packageName
+     * @param ruleName
+     */
+    void removeQuery(String packageName,
+                    String queryName);    
+    
+    /**
      * Remove a function from the specified package.
      * @param packageName
      * @param ruleName
      */
     void removeFunction(String packageName,
-                    String ruleName);
+                        String ruleName);
 
     /**
      * Returns the FactType identified by the given package and type names.

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/definition/rule/Query.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/definition/rule/Query.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/definition/rule/Query.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -0,0 +1,65 @@
+package org.drools.definition.rule;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.drools.definition.KnowledgeDefinition;
+
+/**
+ * Public Query interface for runtime query inspection.
+ */
+public interface Query
+    extends
+    KnowledgeDefinition {
+
+    /**
+     * Returns the package name (namespace) this query is tied to.
+     *  
+     * @return the package name.
+     */
+    String getPackageName();
+    
+    /**
+     * Returns this query's name.
+     * 
+     * @return the query name
+     */
+    String getName();
+
+    /**
+     * Returns an immutable Map<String key, Object value> of all meta data attributes associated with 
+     * this query object.
+     * 
+     * @return an immutable Map<String key, Object value> of meta data attributes.
+     */
+    Map<String, Object> getMetaData();
+
+    /**
+     * This method is deprecated. Please use {@link Query#getMetaAttributes()} instead.
+     * 
+     * @return a collection with all the meta attribute keys associated with this Query.
+     * @deprecated
+     */
+    @Deprecated
+    Collection<String> listMetaAttributes();
+    
+    /**
+     * Returns an immutable Map<String key, String value> of all meta attributes associated with this query object.
+     * 
+     * @return an immutable Map<String key, String value> of meta attributes.
+     * @deprecated
+     */
+    @Deprecated
+    Map<String, Object> getMetaAttributes();
+
+    /**
+     * Returns the value of the meta attribute identified by the "key"
+     * 
+     * @param key the meta attribute key
+     * 
+     * @return the meta attribute value or null if there is no value for that key.
+     * @deprecated
+     */
+    @Deprecated
+    String getMetaAttribute(final String key);
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -71,20 +71,53 @@
         RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
 
-        //ruleBase = SerializationHelper.serializeObject( ruleBase );
+        ruleBase = SerializationHelper.serializeObject( ruleBase );
         StatefulSession session = ruleBase.newStatefulSession();
 
         final Cheese stilton = new Cheese( "stinky",
                                            5 );
         session.insert( stilton );
-        //        session = SerializationHelper.getSerialisedStatefulSession( session,
-        //                                                                    ruleBase );
+                session = SerializationHelper.getSerialisedStatefulSession( session,
+                                                                            ruleBase );
         final QueryResults results = session.getQueryResults( "simple query" );
         assertEquals( 1,
                       results.size() );
 
     }
     
+
+    public void testQueryRemoval() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "simple_query_test.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+
+        ruleBase = SerializationHelper.serializeObject( ruleBase );
+        StatefulSession session = ruleBase.newStatefulSession();
+
+        final Cheese stilton = new Cheese( "stinky",
+                                           5 );
+        session.insert( stilton );
+                session = SerializationHelper.getSerialisedStatefulSession( session,
+                                                                            ruleBase );
+        QueryResults results = session.getQueryResults( "simple query" );
+        assertEquals( 1,
+                      results.size() );
+
+        assertNotNull( ruleBase.getPackage( "org.drools.test" ).getRule( "simple query" ) );
+        
+        ruleBase.removeQuery( "org.drools.test", "simple query" );
+       
+        assertNull( ruleBase.getPackage( "org.drools.test" ).getRule( "simple query" ) );
+       
+        results = session.getQueryResults( "simple query" );
+        assertEquals( 0,
+                      results.size() );       
+
+    }    
+    
     public void testQuery2() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Query.drl" ) ) );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -178,4 +178,10 @@
         // TODO Auto-generated method stub
         return null;
     }
+
+    public void removeQuery(String packageName,
+                            String queryName) {
+        // TODO Auto-generated method stub
+        
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -129,6 +129,14 @@
      */
     void removeRule(String packageName,
                     String ruleName);
+    
+    /**
+     * Remove a specific Query in a Package
+     * @param packageName
+     * @param ruleName
+     */
+    void removeQuery(String packageName,
+                     String queryName);    
 
     /**
      * Removes a specific function in a specific package.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -759,6 +759,11 @@
             unlock();
         }
     }
+    
+    public void removeQuery(final String packageName,
+                           final String ruleName) {
+        removeRule(packageName, ruleName);
+    }
 
     public void removeRule(final String packageName,
                            final String ruleName) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/rule/impl/RuleImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/rule/impl/RuleImpl.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/definitions/rule/impl/RuleImpl.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -3,9 +3,10 @@
 import java.util.Collection;
 import java.util.Map;
 
+import org.drools.definition.rule.Query;
 import org.drools.rule.Rule;
 
-public class RuleImpl implements org.drools.definition.rule.Rule {
+public class RuleImpl implements org.drools.definition.rule.Rule, Query {
 	private Rule rule;
 	
 	public RuleImpl(Rule rule) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -20,6 +20,7 @@
 import org.drools.common.InternalRuleBase;
 import org.drools.definition.KnowledgePackage;
 import org.drools.definition.process.Process;
+import org.drools.definition.rule.Query;
 import org.drools.definition.rule.Rule;
 import org.drools.definition.type.FactType;
 import org.drools.definitions.impl.KnowledgePackageImp;
@@ -189,6 +190,12 @@
         this.ruleBase.removeRule( packageName,
                                   ruleName );
     }
+    
+    public void removeQuery(String packageName,
+                            String queryName) {
+        this.ruleBase.removeQuery( packageName,
+                                   queryName );
+    }    
 
     public void removeFunction(String packageName,
                            String ruleName) {
@@ -227,6 +234,12 @@
                         String ruleName) {
         return this.ruleBase.getPackage( packageName ).getRule( ruleName );
     }
+    
+    public Query getQuery(String packageName,
+                          String queryName) {
+        return this.ruleBase.getPackage( packageName ).getRule( queryName );
+    }
+    
 
     public static class KnowledgeBaseEventListenerWrapper
         implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -215,16 +215,20 @@
 
     public void removeRule(Package pkg,
                            Rule rule) {
-        final String consequenceName = rule.getConsequence().getClass().getName();
-
-        // check for compiled code and remove if present.
-        if ( remove( consequenceName ) ) {
-            removeClasses( rule.getLhs() );
-
-            // Now remove the rule class - the name is a subset of the consequence name
-            String sufix = StringUtils.ucFirst( rule.getConsequence().getName() ) + "ConsequenceInvoker";
-            remove( consequenceName.substring( 0,
-                                               consequenceName.indexOf( sufix ) ) );
+        
+        if ( !(rule instanceof Query) ) {
+            // Query's don't have a consequence, so skip those
+            final String consequenceName = rule.getConsequence().getClass().getName();
+    
+            // check for compiled code and remove if present.
+            if ( remove( consequenceName ) ) {
+                removeClasses( rule.getLhs() );
+    
+                // Now remove the rule class - the name is a subset of the consequence name
+                String sufix = StringUtils.ucFirst( rule.getConsequence().getName() ) + "ConsequenceInvoker";
+                remove( consequenceName.substring( 0,
+                                                   consequenceName.indexOf( sufix ) ) );
+            }
         }
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -57,7 +57,8 @@
     Externalizable,
     Wireable,
     Dialectable,
-    org.drools.definition.rule.Rule {
+    org.drools.definition.rule.Rule,
+    org.drools.definition.rule.Query {
     /**
      *
      */

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-07-22 22:04:02 UTC (rev 34119)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-07-22 22:53:01 UTC (rev 34120)
@@ -11,6 +11,7 @@
 import org.drools.command.SetVariableCommand;
 import org.drools.definition.KnowledgePackage;
 import org.drools.definition.process.Process;
+import org.drools.definition.rule.Query;
 import org.drools.definition.rule.Rule;
 import org.drools.definition.type.FactType;
 import org.drools.event.knowledgebase.KnowledgeBaseEventListener;
@@ -91,6 +92,12 @@
         // TODO Auto-generated method stub
         return null;
     }
+    
+    public Query getQuery(String packageName,
+                        String   queryName) {
+        // TODO Auto-generated method stub
+        return null;
+    }    
 
     public StatefulKnowledgeSession newStatefulKnowledgeSession() {
         return newStatefulKnowledgeSession( null,
@@ -161,7 +168,13 @@
         // TODO Auto-generated method stub
 
     }
+    
+    public void removeQuery(String packageName,
+                           String queryName) {
+        // TODO Auto-generated method stub
 
+    }    
+
     public void addEventListener(KnowledgeBaseEventListener listener) {
         // TODO Auto-generated method stub
 



More information about the jboss-svn-commits mailing list