[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