[jboss-svn-commits] JBL Code SVN: r25246 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/lang/descr and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 12 12:56:02 EST 2009
Author: tirelli
Date: 2009-02-12 12:56:02 -0500 (Thu, 12 Feb 2009)
New Revision: 25246
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_PropertyChangeTypeDecl.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FactTemplateTypeConf.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeConf.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
Log:
JBRULES-1969: adding support to @propertyChangeSupport tag on type declaration
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -1048,6 +1048,10 @@
}
type.setExpirationOffset( timeParser.parse( expiration )[0].longValue() );
}
+
+ boolean dynamic = typeDescr.getMetaAttributes().containsKey( TypeDeclaration.ATTR_PROP_CHANGE_SUPPORT );
+ type.setDynamic( dynamic );
+
pkgRegistry.getPackage().addTypeDeclaration( type );
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -362,7 +362,7 @@
for (Map activeMetadata : declMetadaList) {
Entry activeEntry = (Entry) activeMetadata.entrySet().iterator()
.next();
- String chunkData = ((DroolsTree) activeEntry.getValue()).getText();
+ String chunkData = ((DroolsTree) activeEntry.getValue() != null ) ?((DroolsTree) activeEntry.getValue()).getText() : "()";
typeDeclr.addMetaAttribute(((DroolsTree) activeEntry.getKey())
.getText(), chunkData.substring(1, chunkData.length() - 1)
.trim());
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -25,6 +25,7 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -1449,7 +1450,7 @@
list.get( 0 ) );
}
- public void testPropertyChangeSupport() throws Exception {
+ public void testPropertyChangeSupportOldAPI() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_PropertyChange.drl" ) ) );
final Package pkg = builder.getPackage();
@@ -1489,6 +1490,44 @@
}
+ public void testPropertyChangeSupportNewAPI() throws Exception {
+ final KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add( ResourceFactory.newInputStreamResource( getClass().getResourceAsStream( "test_PropertyChangeTypeDecl.drl" ) ),
+ ResourceType.DRL );
+ final Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( pkgs );
+
+ kbase = SerializationHelper.serializeObject( kbase );
+
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+ final List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ final State state = new State( "initial" );
+ session.insert( state );
+ session.fireAllRules();
+
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
+
+ state.setFlag( true );
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
+
+ session.fireAllRules();
+ assertEquals( 2,
+ ((List) session.getGlobal( "list" )).size() );
+
+ state.setState( "finished" );
+
+ session.dispose();
+
+ }
+
public void testBigDecimal() throws Exception {
final PackageBuilder builder = new PackageBuilder();
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_PropertyChangeTypeDecl.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_PropertyChangeTypeDecl.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_PropertyChangeTypeDecl.drl 2009-02-12 17:56:02 UTC (rev 25246)
@@ -0,0 +1,16 @@
+package org.drools.test;
+
+import org.drools.State;
+
+global java.util.List list
+
+declare State
+ @propertyChangeSupport
+end
+
+rule simple
+ when
+ State( )
+ then
+ list.add("fired");
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -954,7 +954,10 @@
}
- if ( dynamic ) {
+ // if the dynamic parameter is true or if the
+ // user declared the fact type with the meta tag:
+ // @propertyChangeSupport
+ if ( dynamic || typeConf.isDynamic() ) {
addPropertyChangeListener( object );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -188,4 +188,8 @@
public TypeDeclaration getTypeDeclaration() {
return typeDecl;
}
+
+ public boolean isDynamic() {
+ return (typeDecl != null) ? typeDecl.isDynamic() : false;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FactTemplateTypeConf.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FactTemplateTypeConf.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FactTemplateTypeConf.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -125,4 +125,8 @@
return null;
}
+ public boolean isDynamic() {
+ return false;
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeConf.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeConf.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeConf.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -34,5 +34,7 @@
public boolean isEvent();
+ public boolean isDynamic();
+
public TypeDeclaration getTypeDeclaration();
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2009-02-12 17:16:21 UTC (rev 25245)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2009-02-12 17:56:02 UTC (rev 25246)
@@ -45,11 +45,12 @@
KnowledgeDefinition,
Externalizable {
- public static final String ATTR_CLASS = "class";
- public static final String ATTR_TEMPLATE = "template";
- public static final String ATTR_DURATION = "duration";
- public static final String ATTR_TIMESTAMP = "timestamp";
- public static final String ATTR_EXPIRE = "expires";
+ public static final String ATTR_CLASS = "class";
+ public static final String ATTR_TEMPLATE = "template";
+ public static final String ATTR_DURATION = "duration";
+ public static final String ATTR_TIMESTAMP = "timestamp";
+ public static final String ATTR_EXPIRE = "expires";
+ public static final String ATTR_PROP_CHANGE_SUPPORT = "propertyChangeSupport";
public static enum Role {
FACT, EVENT;
@@ -93,6 +94,7 @@
private FactTemplate typeTemplate;
private ClassDefinition typeClassDef;
private Resource resource;
+ private boolean dynamic;
private transient ObjectType objectType;
private long expirationOffset;
@@ -123,6 +125,7 @@
this.timestampExtractor = (InternalReadAccessor) in.readObject();
this.resource = (Resource) in.readObject();
this.expirationOffset = in.readLong();
+ this.dynamic = in.readBoolean();
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -138,6 +141,7 @@
out.writeObject( timestampExtractor );
out.writeObject( this.resource );
out.writeLong( expirationOffset );
+ out.writeBoolean( dynamic );
}
/**
@@ -218,7 +222,7 @@
if ( this.typeClassDef != null ) {
this.typeClassDef.setDefinedClass( this.typeClass );
}
- if( this.typeClass != null ) {
+ if ( this.typeClass != null ) {
this.typeClassName = this.typeClass.getName();
}
}
@@ -360,4 +364,12 @@
this.typeClassName = typeClassName;
}
+ public boolean isDynamic() {
+ return dynamic;
+ }
+
+ public void setDynamic(boolean dynamic) {
+ this.dynamic = dynamic;
+ }
+
}
More information about the jboss-svn-commits
mailing list