[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