[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