[jboss-svn-commits] JBL Code SVN: r5966 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: base reteoo

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 23 12:27:31 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-08-23 12:27:29 -0400 (Wed, 23 Aug 2006)
New Revision: 5966

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
Log:
JBRULES-410 More than one Query definition causes an incorrect Rete network to be built
-The attachQuery method now correctly uses attachNode.
-DroolsQuery now implements hashcode and equals methods.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java	2006-08-23 16:23:51 UTC (rev 5965)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java	2006-08-23 16:27:29 UTC (rev 5966)
@@ -28,4 +28,23 @@
         return this.name;
     }
 
+    public int hashCode() {
+        final int PRIME = 31;
+        int result = 1;
+        result = PRIME * result + ((name == null) ? 0 : name.hashCode());
+        return result;
+    }
+
+    public boolean equals(Object object) {
+        if (this == object) {
+            return true;
+        }
+        
+        if (object == null || getClass() != object.getClass()) {
+            return false;
+        }
+        
+        final DroolsQuery other = (DroolsQuery) object;
+        return name.equals(other.name);
+    }       
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-08-23 16:23:51 UTC (rev 5965)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-08-23 16:27:29 UTC (rev 5966)
@@ -335,43 +335,37 @@
     public BaseNode[] getTerminalNodes(final Rule rule) {
         return (BaseNode[]) this.rules.remove( rule );
     }
-
+    
     private void attachQuery(final String queryName) {
         // incrementing offset adjustment, since we are adding a new ObjectNodeType as our
         // first column
         this.currentOffsetAdjustment += 1;
-        final ClassObjectType queryObjectType = new ClassObjectType( DroolsQuery.class );
-        final ObjectTypeNode queryObjectTypeNode = new ObjectTypeNode( this.id++,
-                                                                       this.sinklistFactory.newObjectSinkList( ObjectTypeNode.class ),
-                                                                       queryObjectType,
-                                                                       this.rete );
-        queryObjectTypeNode.attach();
 
+        final ObjectSource objectTypeSource = attachNode( new ObjectTypeNode( this.id++,
+                                                                              this.sinklistFactory.newObjectSinkList( ObjectTypeNode.class ),
+                                                                              new ClassObjectType( DroolsQuery.class ),
+                                                                              this.rete ) );
+
         final ClassFieldExtractor extractor = new ClassFieldExtractor( DroolsQuery.class,
                                                                        "name" );
 
         final FieldValue field = FieldFactory.getFieldValue( queryName,
                                                              ValueType.STRING_TYPE );
 
-        final Evaluator evaluator = ValueType.STRING_TYPE.getEvaluator( Operator.EQUAL );
 
         final LiteralConstraint constraint = new LiteralConstraint( extractor,
-                                                                    evaluator,
+                                                                    ValueType.STRING_TYPE.getEvaluator( Operator.EQUAL ),
                                                                     field );
 
-        final AlphaNode alphaNode = new AlphaNode( this.id++,
-                                                   this.sinklistFactory.newObjectSinkList( AlphaNode.class ),
-                                                   constraint,
-                                                   queryObjectTypeNode );
-        alphaNode.attach();
+        final ObjectSource alphaNodeSource = attachNode( new AlphaNode( this.id++,
+                                                                        this.sinklistFactory.newObjectSinkList( AlphaNode.class ),
+                                                                        constraint,
+                                                                        objectTypeSource ) );
 
-        final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( this.id++,
-                                                                       alphaNode );
-        liaNode.attach();
+        this.tupleSource = attachNode( new LeftInputAdapterNode( this.id++,
+                                                                 alphaNodeSource ) );
+    }    
 
-        this.tupleSource = liaNode;
-    }
-
     private BetaNodeBinder attachColumn(final Column column,
                                         final GroupElement parent,
                                         final boolean removeIdentities) throws InvalidPatternException {




More information about the jboss-svn-commits mailing list