[jboss-svn-commits] JBL Code SVN: r7023 - in labs/jbossrules/trunk: drools-compiler/src/main/resources/org/drools/semantics/java drools-compiler/src/test/java/org/drools/integrationtests drools-compiler/src/test/java/org/drools/integrationtests/waltz drools-compiler/src/test/java/org/drools/reteoo drools-compiler/src/test/java/org/drools/semantics/java drools-compiler/src/test/resources/org/drools/integrationtests/waltz drools-core/src/main/java/org/drools/base drools-core/src/main/java/org/drools/base/extractors drools-core/src/main/java/org/drools/facttemplates drools-core/src/main/java/org/drools/rule drools-core/src/main/java/org/drools/spi drools-core/src/test/java/org/drools/reteoo

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 23 13:39:01 EDT 2006


Author: tirelli
Date: 2006-10-23 13:36:46 -0400 (Mon, 23 Oct 2006)
New Revision: 7023

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ReteTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/waltz/ReteOOWaltzTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/semantics/java/AccumulateTemplateTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
Log:
Fixing integration tests

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg	2006-10-23 17:36:46 UTC (rev 7023)
@@ -64,7 +64,7 @@
                             org.drools.rule.Declaration[] declarations, 
                             org.drools.WorkingMemory workingMemory) throws Exception {                               
 
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].getValue( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
         <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
         
         return <ruleClassName>.<methodName>( 
@@ -93,8 +93,8 @@
                             org.drools.rule.Declaration declaration,
                             org.drools.rule.Declaration[] declarations, 
                             org.drools.WorkingMemory workingMemory) throws Exception {                               
-		<declarationType> <declaration.identifier> = (<declarationType>) declaration.getValue( object );
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].getValue( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
+		<declarationType> <declaration.identifier> = (<declarationType>) declaration.<declaration.extractor.nativeReadMethod.name>( object );
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
         <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
         
         return <ruleClassName>.<methodName>( 
@@ -127,7 +127,7 @@
                             org.drools.rule.Declaration[] declarations, 
                             org.drools.WorkingMemory workingMemory) throws Exception {                               
 
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].getValue( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
         <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
         
         return <ruleClassName>.<methodName>( 
@@ -160,7 +160,7 @@
                               org.drools.rule.Declaration[] innerDeclarations,
                               org.drools.WorkingMemory workingMemory) throws Exception {                               
 
-        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].getValue( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
+        <declarationTypes, declarations:{ type, declr| <type> <declr.identifier> = ( <type> ) declarations[<i0>].<declr.extractor.nativeReadMethod.name>( ( (org.drools.common.InternalFactHandle) tuple.get( declarations[<i0>] ) ).getObject() );<\n>}>
         <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
         
         return <ruleClassName>.<methodName>(
@@ -194,7 +194,7 @@
 
         <declarations, indexes:{ declr, index| org.drools.common.InternalFactHandle <declr.identifier>__Handle__ = ( org.drools.common.InternalFactHandle ) tuple.get( declarations[<index>] );<\n>}>
 
-        <declarationTypes, declarations, indexes :{ type, declr, index| <type> <declr.identifier> = ( <type> )  declarations[<index>].getValue( <declr.identifier>__Handle__.getObject() );<\n>}>
+        <declarationTypes, declarations, indexes :{ type, declr, index| <type> <declr.identifier> = ( <type> )  declarations[<index>].<declr.extractor.nativeReadMethod.name>( <declr.identifier>__Handle__.getObject() );<\n>}>
         
         <globalTypes, globals:{ type, identifier | <type> <identifier> = ( <type> ) workingMemory.getGlobal( "<identifier>" );<\n>}>    
         

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaRule.stg	2006-10-23 17:36:46 UTC (rev 7023)
@@ -23,7 +23,7 @@
     <initCode>
     for( java.util.Iterator it = matchingObjects.iterator(); it.hasNext(); ) {
       Object __itNextElem__ = it.next();
-      <innerDeclarations:{ declr | <declr.extractor.extractToClass.name> <declr.identifier> = (<declr.extractor.extractToClass.name>) innerDeclarations[<i0>].getValue( __itNextElem__ );}; separator="\n">
+      <innerDeclarations:{ declr | <declr.extractor.extractToClass.name> <declr.identifier> = (<declr.extractor.extractToClass.name>) innerDeclarations[<i0>].<declr.extractor.nativeReadMethod.name>( __itNextElem__ );}; separator="\n">
       <actionCode>
     }
     return ( <resultCode> );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1894,13 +1894,13 @@
         final Package pkg = builder.getPackage();
 
         org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
-        org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
+        //org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
         final RuleBase ruleBase = getRuleBase();
         //org.drools.reteoo.RuleBaseImpl ruleBase = new org.drools.reteoo.RuleBaseImpl();
         if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
             reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
-        } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase ) {
-            leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
+//        } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase ) {
+//            leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
         }
         ruleBase.addPackage( pkg );
         PackageBuilder builder2 = new PackageBuilder();
@@ -1961,27 +1961,27 @@
 
             assertEquals( 0,
                           workingMemory.getAgenda().getActivations().length );
-        } else if ( leapsRuleBase != null ) {
-            leapsRuleBase.removeRule( "org.drools.test",
-                                      "Who likes Stilton" );
-            assertEquals( 8,
-                          workingMemory.getAgenda().getActivations().length );
-
-            leapsRuleBase.removeRule( "org.drools.test",
-                                      "like cheese" );
-
-            final Cheese muzzarela = new Cheese( "muzzarela",
-                                                 5 );
-            workingMemory.assertObject( muzzarela );
-
-            assertEquals( 4,
-                          workingMemory.getAgenda().getActivations().length );
-
-            leapsRuleBase.removePackage( "org.drools.test" );
-
-            assertEquals( 0,
-                          workingMemory.getAgenda().getActivations().length );
-
+//        } else if ( leapsRuleBase != null ) {
+//            leapsRuleBase.removeRule( "org.drools.test",
+//                                      "Who likes Stilton" );
+//            assertEquals( 8,
+//                          workingMemory.getAgenda().getActivations().length );
+//
+//            leapsRuleBase.removeRule( "org.drools.test",
+//                                      "like cheese" );
+//
+//            final Cheese muzzarela = new Cheese( "muzzarela",
+//                                                 5 );
+//            workingMemory.assertObject( muzzarela );
+//
+//            assertEquals( 4,
+//                          workingMemory.getAgenda().getActivations().length );
+//
+//            leapsRuleBase.removePackage( "org.drools.test" );
+//
+//            assertEquals( 0,
+//                          workingMemory.getAgenda().getActivations().length );
+//
         }
     }
 
@@ -1995,13 +1995,13 @@
         final Package pkg = builder.getPackage();
 
         org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
-        org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
+//        org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
         final RuleBase ruleBase = getRuleBase();
         //org.drools.reteoo.RuleBaseImpl ruleBase = new org.drools.reteoo.RuleBaseImpl();
         if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
             reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
-        } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase ) {
-            leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
+//        } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase ) {
+//            leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
         }
         ruleBase.addPackage( pkg );
 
@@ -2026,25 +2026,25 @@
             reteooRuleBase.removePackage( "org.drools.test" );
             assertEquals( 0,
                           reteooRuleBase.getPackages().length );
-        } else if ( leapsRuleBase != null ) {
-            assertEquals( 1,
-                          leapsRuleBase.getPackages().length );
-            assertEquals( 4,
-                          leapsRuleBase.getPackages()[0].getRules().length );
-
-            leapsRuleBase.removeRule( "org.drools.test",
-                                      "Who likes Stilton" );
-            assertEquals( 3,
-                          leapsRuleBase.getPackages()[0].getRules().length );
-
-            leapsRuleBase.removeRule( "org.drools.test",
-                                      "like cheese" );
-            assertEquals( 2,
-                          leapsRuleBase.getPackages()[0].getRules().length );
-
-            leapsRuleBase.removePackage( "org.drools.test" );
-            assertEquals( 0,
-                          leapsRuleBase.getPackages().length );
+//        } else if ( leapsRuleBase != null ) {
+//            assertEquals( 1,
+//                          leapsRuleBase.getPackages().length );
+//            assertEquals( 4,
+//                          leapsRuleBase.getPackages()[0].getRules().length );
+//
+//            leapsRuleBase.removeRule( "org.drools.test",
+//                                      "Who likes Stilton" );
+//            assertEquals( 3,
+//                          leapsRuleBase.getPackages()[0].getRules().length );
+//
+//            leapsRuleBase.removeRule( "org.drools.test",
+//                                      "like cheese" );
+//            assertEquals( 2,
+//                          leapsRuleBase.getPackages()[0].getRules().length );
+//
+//            leapsRuleBase.removePackage( "org.drools.test" );
+//            assertEquals( 0,
+//                          leapsRuleBase.getPackages().length );
         }
     }
     
@@ -2490,12 +2490,12 @@
         final Package pkg = builder.getPackage();
 
         org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
-        org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
+//        org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
         final RuleBase ruleBase = getRuleBase();
         if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
             reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
-        } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase ) {
-            leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
+//        } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase ) {
+//            leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
         }
         ruleBase.addPackage( pkg );
         final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
@@ -2549,9 +2549,9 @@
         if ( reteooRuleBase != null ) {
             reteooRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
                                        ruleBase.getPackages()[0].getRules()[0].getName() );
-        } else if ( leapsRuleBase != null ) {
-            leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
-                                      ruleBase.getPackages()[0].getRules()[0].getName() );
+//        } else if ( leapsRuleBase != null ) {
+//            leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
+//                                      ruleBase.getPackages()[0].getRules()[0].getName() );
         }
 
         assertEquals( 0,
@@ -2589,9 +2589,9 @@
         if ( reteooRuleBase != null ) {
             reteooRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
                                        ruleBase.getPackages()[1].getRules()[0].getName() );
-        } else if ( leapsRuleBase != null ) {
-            leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
-                                      ruleBase.getPackages()[1].getRules()[0].getName() );
+//        } else if ( leapsRuleBase != null ) {
+//            leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
+//                                      ruleBase.getPackages()[1].getRules()[0].getName() );
         }
         assertEquals( 0,
                       ruleBase.getPackages()[0].getRules().length );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ReteTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ReteTest.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ReteTest.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -18,8 +18,6 @@
 
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
-import org.drools.leaps.LeapsRuleBase;
-import org.drools.reteoo.ReteooRuleBase;
 
 /** Run all the tests with the ReteOO engine implementation */
 public class ReteTest extends IntegrationCases {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/waltz/ReteOOWaltzTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/waltz/ReteOOWaltzTest.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/waltz/ReteOOWaltzTest.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -18,8 +18,6 @@
 
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
-import org.drools.leaps.LeapsRuleBase;
-import org.drools.reteoo.ReteooRuleBase;
 
 public class ReteOOWaltzTest extends Waltz {
     protected RuleBase getRuleBase() throws Exception {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -58,21 +58,6 @@
         final ReteooRuleBase ruleBase = (ReteooRuleBase) getRuleBase();
         ruleBase.addPackage( pkg );
 
-        if ( this.showRete ) {
-            final ReteooJungViewer viewer = new ReteooJungViewer( ruleBase );
-
-            javax.swing.SwingUtilities.invokeLater( new Runnable() {
-                public void run() {
-                    viewer.showGUI();
-                }
-            } );
-
-            while ( viewer.isRunning() ) {
-                Thread.yield();
-                Thread.sleep( 100 );
-            }
-        }
-
         if ( this.writeTree ) {
             writeRuleBase( ruleBase,
                            name );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/semantics/java/AccumulateTemplateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/semantics/java/AccumulateTemplateTest.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/semantics/java/AccumulateTemplateTest.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -10,6 +10,7 @@
 import org.antlr.stringtemplate.StringTemplateGroup;
 import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
 import org.drools.Cheese;
+import org.drools.Person;
 import org.drools.base.ClassFieldExtractor;
 import org.drools.base.ClassObjectType;
 import org.drools.rule.Declaration;
@@ -30,7 +31,7 @@
                                                                  AngleBracketTemplateLexer.class );
         StringTemplate accMethod = ruleGroup.getInstanceOf( "accumulateMethod" );
 
-        final String[] declarationTypes = new String[]{"String", "Integer"};
+        final String[] declarationTypes = new String[]{"String", "int"};
         final Declaration[] declarations = new Declaration[]{new Declaration( "name",
                                                                               null,
                                                                               null ), 
@@ -69,7 +70,7 @@
         accMethod.setAttribute( "resultCode",
                                 "x + 10" );
 
-//        System.out.println( accMethod.toString() );
+        System.out.println( accMethod.toString() );
     }
 
     public void testInvokerGeneration() {
@@ -77,11 +78,11 @@
                                                                  AngleBracketTemplateLexer.class );
         StringTemplate accMethod = ruleGroup.getInstanceOf( "accumulateInvoker" );
 
-        final String[] declarationTypes = new String[]{"String", "Integer"};
+        final String[] declarationTypes = new String[]{"String", "int"};
         final Declaration[] declarations = new Declaration[]{new Declaration( "name",
-                                                                              null,
+                                                                              new ClassFieldExtractor(Person.class, "name"),
                                                                               null ), new Declaration( "age",
-                                                                                                       null,
+                                                                                                       new ClassFieldExtractor(Person.class, "age"),
                                                                                                        null )};
         final String[] globals = new String[]{"aGlobal", "anotherGlobal"};
         final List globalTypes = Arrays.asList( new String[]{"String", "String"} );
@@ -105,6 +106,6 @@
         accMethod.setAttribute( "hashCode",
                                 new Integer(13) );
 
-//        System.out.println( accMethod.toString() );
+        System.out.println( accMethod.toString() );
     }
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl	2006-10-23 17:36:46 UTC (rev 7023)
@@ -45,8 +45,8 @@
 		$line : Line ( $p1:p1, $p2:p2 )
 	then 
 		System.out.println("Draw "+$p1+" "+$p2);
-		assert( new Edge ( $p1.intValue(), $p2.intValue(), false, Edge.NIL, false ) );
-		assert( new Edge ( $p2.intValue(), $p1.intValue(), false, Edge.NIL, false ) );
+		assert( new Edge ( $p1, $p2, false, Edge.NIL, false ) );
+		assert( new Edge ( $p2, $p1, false, Edge.NIL, false ) );
 		retract( $line ); 
 end
 
@@ -73,7 +73,7 @@
         $edge2: Edge( p1==$basePoint, $edge2P2:p2 != $edge1P2, joined == false )
         $edge3: Edge( p1==$basePoint, $edge3P2:p2 != $edge1P2, p2 != $edge2P2, joined == false )
 	then
-	    Junction junction = WaltzUtil.make_3_junction ( $basePoint.intValue(), $edge1P2.intValue(), $edge2P2.intValue(), $edge3P2.intValue() );
+	    Junction junction = WaltzUtil.make_3_junction ( $basePoint, $edge1P2, $edge2P2, $edge3P2 );
 	    assert( junction );
 	    $edge1.setJoined(true);
 	    $edge2.setJoined(true);
@@ -92,7 +92,7 @@
         $edge2: Edge( p1==$basePoint, $edge2P2:p2 != $edge1P2, joined == false )
         not Edge( p1==$basePoint, p2 != $edge1P2, p2 != $edge2P2 )
 	then
-	    assert( new Junction($edge1P2.intValue(), $edge2P2.intValue(), 0, $basePoint.intValue(), Junction.L) );
+	    assert( new Junction($edge1P2, $edge2P2, 0, $basePoint, Junction.L) );
 	    $edge1.setJoined(true);
 	    $edge2.setJoined(true);
 	    modify( $edge1 );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -18,6 +18,7 @@
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
+import java.lang.reflect.Method;
 
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldExtractor;
@@ -139,4 +140,8 @@
     public short getShortValue(final Object object) {
         return this.extractor.getShortValue( object );
     }
+    
+    public Method getNativeReadMethod() {
+        return this.extractor.getNativeReadMethod();
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -45,22 +45,38 @@
 
         if ( valueType == ValueType.NULL_TYPE ) {
             field = new ObjectFieldImpl( null );
+        } else if ( valueType == ValueType.PCHAR_TYPE ) {
+            field = new LongFieldImpl( value.charAt( 0 ) );
+        } else if ( valueType == ValueType.PBYTE_TYPE ) {
+            field = new LongFieldImpl( Long.parseLong( value ) );
+        } else if ( valueType == ValueType.PSHORT_TYPE ) {
+            field = new LongFieldImpl( Long.parseLong( value ) );
+        } else if ( valueType == ValueType.PINTEGER_TYPE ) {
+            field = new LongFieldImpl( Long.parseLong( stripNumericType( value ) ) );
+        } else if ( valueType == ValueType.PLONG_TYPE ) {
+            field = new LongFieldImpl( Long.parseLong( stripNumericType( value ) ) );
+        } else if ( valueType == ValueType.PFLOAT_TYPE ) {
+            field = new DoubleFieldImpl( Float.parseFloat( stripNumericType( value ) ) );
+        } else if ( valueType == ValueType.PDOUBLE_TYPE ) {
+            field = new DoubleFieldImpl( Double.parseDouble( stripNumericType( value ) ) );
+        } else if ( valueType == ValueType.PBOOLEAN_TYPE ) {
+            field = new BooleanFieldImpl( Boolean.valueOf( value ).booleanValue() );
         } else if ( valueType == ValueType.CHAR_TYPE ) {
-            field = new LongFieldImpl( value.charAt( 0 ) );
+            field = new ObjectFieldImpl( new Character( value.charAt( 0 ) ) );
         } else if ( valueType == ValueType.BYTE_TYPE ) {
-            field = new LongFieldImpl( Long.parseLong( value ) );
+            field = new ObjectFieldImpl( new Byte( value ) );
         } else if ( valueType == ValueType.SHORT_TYPE ) {
-            field = new LongFieldImpl( Long.parseLong( value ) );
+            field = new ObjectFieldImpl( new Short( value ) );
         } else if ( valueType == ValueType.INTEGER_TYPE ) {
-            field = new LongFieldImpl( Long.parseLong( stripNumericType( value ) ) );
+            field = new ObjectFieldImpl( new Integer( stripNumericType( value ) ) );
         } else if ( valueType == ValueType.LONG_TYPE ) {
-            field = new LongFieldImpl( Long.parseLong( stripNumericType( value ) ) );
+            field = new ObjectFieldImpl( new Long( stripNumericType( value ) ) );
         } else if ( valueType == ValueType.FLOAT_TYPE ) {
-            field = new DoubleFieldImpl( Float.parseFloat( stripNumericType( value ) ) );
+            field = new ObjectFieldImpl( new Float( stripNumericType( value ) ) );
         } else if ( valueType == ValueType.DOUBLE_TYPE ) {
-            field = new DoubleFieldImpl( Double.parseDouble( stripNumericType( value ) ) );
+            field = new ObjectFieldImpl( new Double( stripNumericType( value ) ) );
         } else if ( valueType == ValueType.BOOLEAN_TYPE ) {
-            field = new BooleanFieldImpl( Boolean.valueOf( value ).booleanValue() );
+            field = new ObjectFieldImpl( Boolean.valueOf( value ) );
         } else if ( valueType == ValueType.STRING_TYPE ) {
             field = new ObjectFieldImpl( value.intern() );
         } else if ( valueType == ValueType.DATE_TYPE ) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -16,6 +16,8 @@
 
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -68,5 +70,13 @@
     public short getShortValue(final Object object) {
         throw new RuntimeDroolsException( "Conversion to short not supported from boolean" );
     }
+    
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getBooleanValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -16,6 +16,8 @@
 
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -68,5 +70,13 @@
     public short getShortValue(final Object object) {
         return getByteValue( object );
     }
+    
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getByteValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -22,29 +24,36 @@
     }
 
     public byte getByteValue(final Object object) {
-        throw new RuntimeDroolsException( "Conversion to byte not supported from char" );
+        return (byte) getCharValue( object );
     }
 
     public abstract char getCharValue(Object object);
 
     public double getDoubleValue(final Object object) {
-        throw new RuntimeDroolsException( "Conversion to double not supported from char" );
+        return (double) getCharValue( object );
     }
 
     public float getFloatValue(final Object object) {
-        throw new RuntimeDroolsException( "Conversion to float not supported from char" );
+        return (float) getCharValue( object );
     }
 
     public int getIntValue(final Object object) {
-        throw new RuntimeDroolsException( "Conversion to int not supported from char" );
+        return (int) getCharValue( object );
     }
 
     public long getLongValue(final Object object) {
-        throw new RuntimeDroolsException( "Conversion to long not supported from char" );
+        return (long) getCharValue( object );
     }
 
     public short getShortValue(final Object object) {
-        throw new RuntimeDroolsException( "Conversion to short not supported from char" );
+        return (short) getCharValue( object );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getCharValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -48,4 +50,11 @@
         return (short) getDoubleValue( object );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getDoubleValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -48,4 +50,11 @@
         return (short) getFloatValue( object );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getFloatValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -48,4 +50,11 @@
         return (short) getIntValue( object );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getIntValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -48,4 +50,11 @@
         return (short) getLongValue( object );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getLongValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -95,4 +97,11 @@
         throw new RuntimeDroolsException( "Conversion to short not supported from " + value.getClass().getName() );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.base.extractors;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.BaseClassFieldExtractor;
 
@@ -48,4 +50,11 @@
 
     public abstract short getShortValue(Object object);
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getShortValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,8 @@
 package org.drools.facttemplates;
 
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
 import org.drools.base.ValueType;
 import org.drools.spi.FieldExtractor;
 
@@ -64,4 +67,13 @@
     public short getShortValue(final Object object) {
         return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).shortValue();
     }
+    
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
+    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -20,12 +20,14 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.reteoo.ReteTuple;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.PredicateExpression;
 
 public class PredicateConstraint
     implements
-    BetaNodeFieldConstraint {
+    BetaNodeFieldConstraint,
+    AlphaNodeFieldConstraint {
 
     /**
      * 
@@ -129,17 +131,32 @@
         return new PredicateContextEntry();
     }
 
+    public boolean isAllowed(Object object,
+                             InternalWorkingMemory workingMemory) {
+        try {
+            return this.expression.evaluate( object,
+                                             null,
+                                             declaration,
+                                             requiredDeclarations,
+                                             workingMemory );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException( "Exception executing predicate " + this.expression,
+                                              e );
+        }
+    }
+
     public boolean isAllowedCachedLeft(ContextEntry context,
                                        Object object) {
         try {
             PredicateContextEntry ctx = (PredicateContextEntry) context;
             return this.expression.evaluate( object,
-                                      ctx.leftTuple,
-                                      declaration,
-                                      requiredDeclarations,
-                                      ctx.workingMemory );
+                                             ctx.leftTuple,
+                                             declaration,
+                                             requiredDeclarations,
+                                             ctx.workingMemory );
         } catch ( Exception e ) {
-            throw new RuntimeDroolsException("Exception executing predicate "+this.expression, e);
+            throw new RuntimeDroolsException( "Exception executing predicate " + this.expression,
+                                              e );
         }
     }
 
@@ -148,12 +165,13 @@
         try {
             PredicateContextEntry ctx = (PredicateContextEntry) context;
             return this.expression.evaluate( ctx.rightObject,
-                                      tuple,
-                                      declaration,
-                                      requiredDeclarations,
-                                      ctx.workingMemory );
+                                             tuple,
+                                             declaration,
+                                             requiredDeclarations,
+                                             ctx.workingMemory );
         } catch ( Exception e ) {
-            throw new RuntimeDroolsException("Exception executing predicate "+this.expression, e);
+            throw new RuntimeDroolsException( "Exception executing predicate " + this.expression,
+                                              e );
         }
     }
 
@@ -163,7 +181,7 @@
         public ReteTuple             leftTuple;
         public Object                rightObject;
         public InternalWorkingMemory workingMemory;
-        
+
         private ContextEntry         entry;
 
         public PredicateContextEntry() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -17,8 +17,10 @@
  */
 
 import org.drools.RuntimeDroolsException;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.reteoo.ReteTuple;
 import org.drools.rule.ReturnValueRestriction.ReturnValueContextEntry;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Evaluator;
 import org.drools.spi.FieldExtractor;
@@ -26,7 +28,8 @@
 
 public class ReturnValueConstraint
     implements
-    BetaNodeFieldConstraint {
+    BetaNodeFieldConstraint,
+    AlphaNodeFieldConstraint {
 
     /**
      * 
@@ -108,6 +111,20 @@
         return this.restriction.getContextEntry();
     }
 
+    public boolean isAllowed(Object object,
+                             InternalWorkingMemory workingMemory) {
+        try {
+            return this.restriction.isAllowed( this.fieldExtractor,
+                                               object,
+                                               null,
+                                               workingMemory );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException( "Exception executing ReturnValue constraint " + this.restriction +
+                                              " : "+e.getMessage(),
+                                              e );
+        }
+    }
+
     public boolean isAllowedCachedLeft(ContextEntry context,
                                        Object object) {
         try {
@@ -117,7 +134,8 @@
                                                ctx.getTuple(),
                                                ctx.getWorkingMemory() );
         } catch ( Exception e ) {
-            throw new RuntimeDroolsException( "Exception executing ReturnValue constraint " + this.restriction,
+            throw new RuntimeDroolsException( "Exception executing ReturnValue constraint " + this.restriction +
+                                              " : "+e.getMessage(),
                                               e );
         }
     }
@@ -131,9 +149,11 @@
                                                tuple,
                                                ctx.getWorkingMemory() );
         } catch ( Exception e ) {
-            throw new RuntimeDroolsException( "Exception executing ReturnValue constraint " + this.restriction,
+            throw new RuntimeDroolsException( "Exception executing ReturnValue constraint " + this.restriction +
+                                              " : "+e.getMessage(),
                                               e );
         }
     }
 
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -121,8 +121,8 @@
     public int hashCode() {
         final int PRIME = 31;
         int result = 1;
-        result = this.evaluator.hashCode();
-        result = this.expression.hashCode();
+        result = PRIME * result + this.evaluator.hashCode();
+        result = PRIME * result + ( ( this.expression != null ) ? this.expression.hashCode() : 0 );
         result = PRIME * result + ReturnValueRestriction.hashCode( this.requiredDeclarations );
         return result;
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -1,5 +1,7 @@
 package org.drools.spi;
 
+import java.lang.reflect.Method;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
@@ -112,4 +114,12 @@
         throw new RuntimeDroolsException( "Conversion to short not supported for type: " + object.getClass() );
     }
 
+    public Method getNativeReadMethod() {
+        try {
+            return this.getClass().getDeclaredMethod( "getValue", new Class[] { Object.class } );
+        } catch ( Exception e ) {
+            throw new RuntimeDroolsException("This is a bug. Please report to development team: "+e.getMessage(), e);
+        }
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -17,6 +17,7 @@
  */
 
 import java.io.Serializable;
+import java.lang.reflect.Method;
 
 import org.drools.base.ValueType;
 
@@ -45,5 +46,7 @@
     public ValueType getValueType();
 
     public Class getExtractToClass();
+    
+    public Method getNativeReadMethod();
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java	2006-10-23 14:49:57 UTC (rev 7022)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java	2006-10-23 17:36:46 UTC (rev 7023)
@@ -18,7 +18,6 @@
 
 import java.util.Collection;
 import java.util.LinkedList;
-import java.util.List;
 
 import junit.framework.Assert;
 
@@ -88,9 +87,9 @@
 
         // check memories are empty
         assertEquals( 0,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 0,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
     }
 
     /* (non-Javadoc)
@@ -101,8 +100,7 @@
     }
 
     public void testUpdateNewNode() {
-        this.node.updateNewNode( this.workingMemory,
-                                 this.context );
+        this.node.updateSink( this.sink, this.context, this.workingMemory );
         Assert.assertEquals( "No tuple should be propagated",
                              0,
                              this.sink.getAsserted().size() );
@@ -121,41 +119,13 @@
         final MockTupleSink otherSink = new MockTupleSink();
 
         this.node.addTupleSink( otherSink );
-        this.node.updateNewNode( this.workingMemory,
-                                 this.context );
+        this.node.updateSink( otherSink, this.context, this.workingMemory );
 
         Assert.assertEquals( "Two tuples should have been propagated",
                              2,
                              otherSink.getAsserted().size() );
     }
 
-    public void testGetPropagatedTuples() {
-
-        this.node.assertTuple( new ReteTuple( this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" ) ),
-                               this.context,
-                               this.workingMemory );
-        this.node.assertTuple( new ReteTuple( this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" ) ),
-                               this.context,
-                               this.workingMemory );
-
-        Assert.assertEquals( "Two tuples should have been propagated",
-                             2,
-                             this.sink.getAsserted().size() );
-
-        final Tuple t1 = (Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0];
-        final Tuple t2 = (Tuple) ((Object[]) this.sink.getAsserted().get( 1 ))[0];
-
-        final List propagated = this.node.getPropagatedTuples( this.workingMemory,
-                                                         this.sink );
-        Assert.assertEquals( "Wrong Tuple propagated",
-                             t1,
-                             propagated.get( 0 ) );
-        Assert.assertEquals( "Wrong Tuple propagated",
-                             t2,
-                             propagated.get( 1 ) );
-
-    }
-
     public void testAssertTuple() {
         final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
         final ReteTuple tuple0 = new ReteTuple( f0 );
@@ -166,9 +136,9 @@
                                this.workingMemory );
         // check memories 
         assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 0,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         Assert.assertTrue( "An empty collection should be propagated",
                            ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0]).get( 1 )).getObject()).isEmpty() );
 
@@ -180,12 +150,11 @@
                                this.context,
                                this.workingMemory );
         assertEquals( 2,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         Assert.assertTrue( "An empty collection should be propagated",
                            ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 1 ))[0]).get( 1 )).getObject()).isEmpty() );
 
-        final ReteTuple tuple = (ReteTuple) this.memory.getLeftTupleMemory().iterator( this.workingMemory,
-                                                                                       f0 ).next();
+        final ReteTuple tuple = (ReteTuple) this.memory.getTupleMemory().iterator( ).next();
         assertEquals( tuple0,
                       tuple );
         assertEquals( tuple1,
@@ -215,9 +184,9 @@
                                this.workingMemory );
         // check memories 
         assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 2,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         Assert.assertEquals( "Wrong number of elements in matching objects list ",
                              2,
                              ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0]).get( 1 )).getObject()).size() );
@@ -228,13 +197,12 @@
                                this.context,
                                this.workingMemory );
         assertEquals( 2,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         Assert.assertEquals( "Wrong number of elements in matching objects list ",
                              2,
                              ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 1 ))[0]).get( 1 )).getObject()).size() );
 
-        final ReteTuple tuple = (ReteTuple) this.memory.getLeftTupleMemory().iterator( this.workingMemory,
-                                                                                       f0 ).next();
+        final ReteTuple tuple = (ReteTuple) this.memory.getTupleMemory().iterator( ).next();
         assertEquals( tuple0,
                       tuple );
         assertEquals( tuple1,
@@ -245,36 +213,6 @@
                              this.sink.getAsserted().size() );
     }
 
-    public void testModifyTuple() {
-        final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
-
-        final ReteTuple tuple0 = new ReteTuple( f0 );
-
-        // assert tuple, should add one to left memory
-        this.node.assertTuple( tuple0,
-                               this.context,
-                               this.workingMemory );
-        // check memories 
-        assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
-        assertEquals( 0,
-                      this.memory.getRightObjectMemory().size() );
-        Assert.assertTrue( "An empty collection should be propagated",
-                           ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0]).get( 1 )).getObject()).isEmpty() );
-
-        this.node.modifyTuple( tuple0,
-                               this.context,
-                               this.workingMemory );
-        assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
-        assertEquals( 1,
-                      this.sink.getRetracted().size() );
-        assertEquals( 2,
-                      this.sink.getAsserted().size() );
-        Assert.assertTrue( "An empty collection should be propagated",
-                           ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 1 ))[0]).get( 1 )).getObject()).isEmpty() );
-    }
-
     public void testRetractTuple() {
         final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
 
@@ -286,9 +224,9 @@
                                this.workingMemory );
         // check memories 
         assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 0,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         Assert.assertTrue( "An empty collection should be propagated",
                            ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0]).get( 1 )).getObject()).isEmpty() );
 
@@ -296,7 +234,7 @@
                                 this.context,
                                 this.workingMemory );
         assertEquals( 0,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 1,
                       this.sink.getRetracted().size() );
         assertEquals( 1,
@@ -316,7 +254,7 @@
 
         // check memory 
         assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 1,
                       this.sink.getAsserted().size() );
         Assert.assertTrue( "An empty collection should be propagated",
@@ -326,7 +264,7 @@
                                 this.context,
                                 this.workingMemory );
         assertEquals( 1,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         assertEquals( 2,
                       this.sink.getAsserted().size() );
         Assert.assertEquals( "Wrong number of elements in matching objects list ",
@@ -338,7 +276,7 @@
                                 this.workingMemory );
 
         assertEquals( 2,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         assertEquals( 3,
                       this.sink.getAsserted().size() );
         Assert.assertEquals( "Wrong number of elements in matching objects list ",
@@ -347,57 +285,6 @@
 
     }
 
-    public void testModifyObject() {
-        final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
-        final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );
-
-        final ReteTuple tuple0 = new ReteTuple( f0 );
-
-        this.node.assertObject( f0,
-                                this.context,
-                                this.workingMemory );
-        this.node.assertObject( f1,
-                                this.context,
-                                this.workingMemory );
-
-        // assert tuple, should add one to left memory
-        this.node.assertTuple( tuple0,
-                               this.context,
-                               this.workingMemory );
-        // check memories 
-        assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
-        assertEquals( 2,
-                      this.memory.getRightObjectMemory().size() );
-        assertEquals( 1,
-                      this.sink.getAsserted().size() );
-        assertEquals( 0,
-                      this.sink.getRetracted().size() );
-        Assert.assertEquals( "Wrong number of elements in matching objects list ",
-                             2,
-                             ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0]).get( 1 )).getObject()).size() );
-
-        // assert tuple, should add left memory 
-        this.node.modifyObject( f0,
-                                this.context,
-                                this.workingMemory );
-        assertEquals( 2,
-                      this.memory.getRightObjectMemory().size() );
-        assertEquals( 2,
-                      this.sink.getAsserted().size() );
-        assertEquals( 1,
-                      this.sink.getRetracted().size() );
-        Assert.assertEquals( "Wrong number of elements in matching objects list ",
-                             2,
-                             ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 1 ))[0]).get( 1 )).getObject()).size() );
-
-        final Tuple tuple = (Tuple) this.memory.getLeftTupleMemory().iterator( this.workingMemory,
-                                                                               f0 ).next();
-        assertEquals( tuple0,
-                      tuple );
-
-    }
-
     public void testRetractObject() {
         final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
         final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );
@@ -411,7 +298,7 @@
                                 this.context,
                                 this.workingMemory );
         assertEquals( 2,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
 
         // assert tuple, should add one to left memory
         this.node.assertTuple( tuple0,
@@ -420,7 +307,7 @@
 
         // check memory 
         assertEquals( 1,
-                      this.memory.getLeftTupleMemory().size() );
+                      this.memory.getTupleMemory().size() );
         assertEquals( 0,
                       this.sink.getRetracted().size() );
         assertEquals( 1,
@@ -433,7 +320,7 @@
                                  this.context,
                                  this.workingMemory );
         assertEquals( 1,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         assertEquals( 1,
                       this.sink.getRetracted().size() );
         assertEquals( 2,
@@ -446,7 +333,7 @@
                                  this.context,
                                  this.workingMemory );
         assertEquals( 0,
-                      this.memory.getRightObjectMemory().size() );
+                      this.memory.getObjectMemory().size() );
         assertEquals( 2,
                       this.sink.getRetracted().size() );
         assertEquals( 3,
@@ -457,31 +344,6 @@
 
     }
 
-    public void testAttach() throws Exception {
-        assertEquals( 15,
-                      this.node.getId() );
-
-        assertLength( 0,
-                      this.objectSource.getObjectSinksAsList() );
-
-        assertLength( 0,
-                      this.tupleSource.getTupleSinks() );
-
-        this.node.attach();
-
-        assertLength( 1,
-                      this.objectSource.getObjectSinksAsList() );
-
-        assertLength( 1,
-                      this.tupleSource.getTupleSinks() );
-
-        assertSame( this.node,
-                    this.objectSource.getObjectSinks().getLastObjectSink() );
-
-        assertSame( this.node,
-                    this.tupleSource.getTupleSinks().get( 0 ) );
-    }
-
     public void testMemory() {
         final ReteooWorkingMemory workingMemory = new ReteooWorkingMemory( 1,
                                                                            (ReteooRuleBase) RuleBaseFactory.newRuleBase() );




More information about the jboss-svn-commits mailing list