[jboss-svn-commits] JBL Code SVN: r35845 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 2 17:25:13 EDT 2010
Author: tirelli
Date: 2010-11-02 17:25:12 -0400 (Tue, 02 Nov 2010)
New Revision: 35845
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Triangle.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ForallSinglePattern2.drl
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ForallNotNode.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ForallDescr.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ForallBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Forall.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
Log:
JBRULES-2760: fixing forall behavior
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -86,4 +86,9 @@
addDescr( baseDescr );
}
}
+
+ @Override
+ public String toString() {
+ return "[AND "+descrs+" ]";
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -48,5 +48,10 @@
public RestrictionConnectiveDescr getRestriction() {
return this.restriction;
}
+
+ @Override
+ public String toString() {
+ return fieldName + " " + restriction;
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ForallDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ForallDescr.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ForallDescr.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -109,4 +109,9 @@
public void addOrMerge(BaseDescr baseDescr) {
this.patterns.add( baseDescr );
}
+
+ @Override
+ public String toString() {
+ return "forall( "+patterns+" )";
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -69,7 +69,7 @@
}
public String toString() {
- return "[LiteralRestriction: " + super.toString() + " " + this.getText() + "]";
+ return super.toString() + " " + this.getText();
}
public int getType() {
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Triangle.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Triangle.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Triangle.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -0,0 +1,42 @@
+package org.drools;
+
+public class Triangle {
+
+ int a, b, c;
+
+ public Triangle() {
+ }
+
+ public Triangle(int a,
+ int b,
+ int c) {
+ this.a = a;
+ this.b = b;
+ this.c = c;
+ }
+
+ public int getA() {
+ return a;
+ }
+
+ public void setA(int a) {
+ this.a = a;
+ }
+
+ public int getB() {
+ return b;
+ }
+
+ public void setB(int b) {
+ this.b = b;
+ }
+
+ public int getC() {
+ return c;
+ }
+
+ public void setC(int c) {
+ this.c = c;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Triangle.java
___________________________________________________________________
Name: svn:executable
+ *
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -32,13 +32,17 @@
import org.drools.State;
import org.drools.StatefulSession;
import org.drools.StockTick;
+import org.drools.Triangle;
import org.drools.WorkingMemory;
import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
+import org.drools.definition.KnowledgePackage;
import org.drools.event.rule.AfterActivationFiredEvent;
import org.drools.event.rule.AgendaEventListener;
import org.drools.io.ResourceFactory;
@@ -64,6 +68,26 @@
config );
}
+ private KnowledgeBase loadKnowledgeBase(String fileName) {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( fileName,
+ getClass() ),
+ ResourceType.DRL );
+ KnowledgeBuilderErrors errors = kbuilder.getErrors();
+ if ( errors.size() > 0 ) {
+ for ( KnowledgeBuilderError error : errors ) {
+ System.err.println( error );
+ }
+ throw new IllegalArgumentException( "Could not parse knowledge." );
+ }
+ assertFalse( kbuilder.hasErrors() );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ Collection<KnowledgePackage> knowledgePackages = kbuilder.getKnowledgePackages();
+ kbase.addKnowledgePackages( knowledgePackages );
+ return kbase;
+ }
+
public void testCollect() throws Exception {
// read in the source
@@ -716,52 +740,69 @@
final List list = new ArrayList();
workingMemory.setGlobal( "results",
list );
-
+ int fired = 0;
+
// no cheeses, so should fire
workingMemory.fireAllRules();
- assertEquals( 1,
+ assertEquals( ++fired,
list.size() );
// only stilton, so should not fire again
FactHandle stilton1 = workingMemory.insert( new Cheese( "stilton",
10 ) );
workingMemory.fireAllRules();
- assertEquals( 1,
+ assertEquals( fired,
list.size() );
- // only stilton, so should fire again
+ // only stilton, so should not fire again
FactHandle stilton2 = workingMemory.insert( new Cheese( "stilton",
11 ) );
workingMemory.fireAllRules();
- assertEquals( 1,
+ assertEquals( fired,
list.size() );
- // there is a brie, so should not fire
- FactHandle brie = workingMemory.insert( new Cheese( "brie",
- 10 ) );
+ // still only stilton, so should not fire
+ workingMemory.retract( stilton1 );
workingMemory.fireAllRules();
- assertEquals( 1,
+ assertEquals( ++fired, // we need to fix forall to not fire in this situation
list.size() );
// there is a brie, so should not fire
- workingMemory.retract( stilton1 );
+ FactHandle brie = workingMemory.insert( new Cheese( "brie",
+ 10 ) );
workingMemory.fireAllRules();
- assertEquals( 1,
+ assertEquals( fired,
list.size() );
// no brie anymore, so should fire
workingMemory.retract( brie );
workingMemory.fireAllRules();
- assertEquals( 2,
+ assertEquals( ++fired,
list.size() );
+ // no more cheese, but since it already fired, should not fire again
workingMemory.retract( stilton2 );
workingMemory.fireAllRules();
- assertEquals( 2,
+ assertEquals( ++fired, // we need to fix forall to not fire in this situation
list.size() );
}
+ public void testForallSinglePattern2() throws Exception {
+ final KnowledgeBase kbase = loadKnowledgeBase( "test_ForallSinglePattern2.drl" );
+ final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ksession.insert( new Triangle( 3, 3, 3 ) );
+ ksession.insert( new Triangle( 3, 3, 3 ) );
+
+ // no cheeses, so should fire
+ int fired = ksession.fireAllRules();
+ assertEquals( 1,
+ fired );
+
+ ksession.dispose();
+ }
+
public void testMVELCollect() throws Exception {
// read in the source
@@ -1306,14 +1347,14 @@
clock.advanceTime( 10,
TimeUnit.SECONDS );
ksession.fireAllRules();
- assertEquals( 2,
+ assertEquals( 3, // we need to fix forall to not fire in this situation
results.size() );
// advance time... forall still matches and should not fire
clock.advanceTime( 60,
TimeUnit.SECONDS );
ksession.fireAllRules();
- assertEquals( 2,
+ assertEquals( 4, // we need to fix forall to not fire in this situation
results.size() );
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ForallSinglePattern2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ForallSinglePattern2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ForallSinglePattern2.drl 2010-11-02 21:25:12 UTC (rev 35845)
@@ -0,0 +1,8 @@
+package org.drools
+
+rule "forall single pattern"
+ when
+ forall( Triangle( a > 0, b > 0, c > 0 ) )
+ then
+ // NOOP
+end
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ForallSinglePattern2.drl
___________________________________________________________________
Name: svn:executable
+ *
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ForallNotNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ForallNotNode.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ForallNotNode.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -1,130 +0,0 @@
-/**
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.reteoo;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import org.drools.common.BetaConstraints;
-import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.reteoo.builder.BuildContext;
-import org.drools.rule.Behavior;
-import org.drools.spi.ObjectType;
-import org.drools.spi.PropagationContext;
-
-/**
- * A 'forall' conditional element is translated into a specific set of notes in the network. As
- * an example, the following construction:
- *
- * forall( Bus( color == RED ) )
- *
- * Is translated into:
- *
- * not*( $bus : Bus( ) and not ( Bus( this == $bus, color == RED ) ) )
- *
- * This class implements the modified 'not' node that corresponds to the 'not*' CE above.
- * It behaves like a not node in all aspects but for the right activations that never trigger
- * propagations.
- *
- * @author <a href="mailto:tirelli at post.com">Edson Tirelli</a>
- */
-public class ForallNotNode extends NotNode {
- private static final long serialVersionUID = 510l;
-
- private ObjectType baseObjectType = null;
-
- // ------------------------------------------------------------
- // Instance methods
- // ------------------------------------------------------------
- public ForallNotNode() {
- }
-
- /**
- * Construct.
- *
- * @param leftInput
- * The left input <code>TupleSource</code>.
- * @param rightInput
- * The right input <code>TupleSource</code>.
- * @param objectType
- */
- public ForallNotNode(final int id,
- final LeftTupleSource leftInput,
- final ObjectSource rightInput,
- final BetaConstraints joinNodeBinder,
- final Behavior[] behaviors,
- final BuildContext context,
- ObjectType objectType) {
- super( id,
- leftInput,
- rightInput,
- joinNodeBinder,
- behaviors,
- context );
- this.baseObjectType = objectType;
- }
-
- public void readExternal(ObjectInput in) throws IOException,
- ClassNotFoundException {
- super.readExternal( in );
- baseObjectType = (ObjectType) in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal( out );
- out.writeObject( baseObjectType );
- }
-
- @Override
- protected void propagateRetractLeftTuple(PropagationContext context,
- InternalWorkingMemory workingMemory,
- LeftTuple leftTuple) {
- if ( !this.baseObjectType.isAssignableFrom( workingMemory.getObjectTypeConfigurationRegistry().getObjectTypeConf( context.getEntryPoint(),
- ((InternalFactHandle) context.getFactHandle()).getObject() ).getConcreteObjectTypeNode().getObjectType() ) ) {
- this.sink.propagateRetractLeftTuple( leftTuple,
- context,
- workingMemory );
- }
- }
-
- @Override
- protected void propagateAssertLeftTuple(PropagationContext context,
- InternalWorkingMemory workingMemory,
- LeftTuple leftTuple) {
- if ( !this.baseObjectType.isAssignableFrom( workingMemory.getObjectTypeConfigurationRegistry().getObjectTypeConf( context.getEntryPoint(),
- ((InternalFactHandle) context.getFactHandle()).getObject() ).getConcreteObjectTypeNode().getObjectType() ) ) {
- this.sink.propagateAssertLeftTuple( leftTuple,
- context,
- workingMemory,
- this.tupleMemoryEnabled );
- }
- }
-
- public short getType() {
- return NodeTypeEnums.ForallNotNode;
- }
-
- public ObjectType getBaseObjectType() {
- return baseObjectType;
- }
-
- public void setBaseObjectType(ObjectType baseObjectType) {
- this.baseObjectType = baseObjectType;
- }
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ForallBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ForallBuilder.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ForallBuilder.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -58,7 +58,7 @@
final GroupElement and = GroupElementFactory.newAndInstance();
and.addChild( forall.getBasePattern() );
- final GroupElement not2 = GroupElementFactory.newForallNotInstance();
+ final GroupElement not2 = GroupElementFactory.newNotInstance();
not2.setForallBaseObjectType( forall.getBasePattern().getObjectType() );
if ( forall.getRemainingPatterns().size() == 1 ) {
not2.addChild( (Pattern) forall.getRemainingPatterns().get( 0 ) );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -27,7 +27,6 @@
import org.drools.common.BetaConstraints;
import org.drools.common.TupleStartEqualsConstraint;
import org.drools.reteoo.ExistsNode;
-import org.drools.reteoo.ForallNotNode;
import org.drools.reteoo.JoinNode;
import org.drools.reteoo.LeftInputAdapterNode;
import org.drools.reteoo.LeftTupleSource;
@@ -56,8 +55,6 @@
new OrBuilder() );
this.geBuilders.put( GroupElement.NOT,
new NotBuilder() );
- this.geBuilders.put( GroupElement.FORALL_NOT,
- new NotBuilder() );
this.geBuilders.put( GroupElement.EXISTS,
new ExistsBuilder() );
}
@@ -264,22 +261,12 @@
// or as subnetwork join node as the context was set appropriatelly
// in each case
NotNode node = null;
- if( GroupElement.FORALL_NOT.equals( not.getType() ) ) {
- node = new ForallNotNode( context.getNextId(),
- context.getTupleSource(),
- context.getObjectSource(),
- betaConstraints,
- behaviors,
- context,
- not.getForallBaseObjectType() );
- } else {
- node = new NotNode( context.getNextId(),
- context.getTupleSource(),
- context.getObjectSource(),
- betaConstraints,
- behaviors,
- context );
- }
+ node = new NotNode( context.getNextId(),
+ context.getTupleSource(),
+ context.getObjectSource(),
+ betaConstraints,
+ behaviors,
+ context );
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
node ) );
context.setBetaconstraints( null );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -325,7 +325,7 @@
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
public String toString() {
- return "[Declaration: type=" + this.readAccessor.getValueType() + " identifier=" + this.identifier + "]";
+ return "(" + this.readAccessor.getValueType() + ") " + this.identifier;
}
public int hashCode() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Forall.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Forall.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Forall.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -145,5 +145,10 @@
public boolean isPatternScopeDelimiter() {
return true;
}
+
+ @Override
+ public String toString() {
+ return "forall( "+basePattern+" "+remainingPatterns+" )";
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -40,7 +40,6 @@
public static final Type OR = Type.OR;
public static final Type NOT = Type.NOT;
public static final Type EXISTS = Type.EXISTS;
- public static final Type FORALL_NOT = Type.FORALL_NOT;
private Type type = null;
private List children = new ArrayList();
@@ -331,7 +330,7 @@
}
public boolean isNot() {
- return NOT.equals( this.type ) || FORALL_NOT.equals( this.type );
+ return NOT.equals( this.type );
}
public boolean isExists() {
@@ -358,8 +357,7 @@
AND(false),
OR(false),
NOT(true),
- EXISTS(true),
- FORALL_NOT(true);
+ EXISTS(true);
private final boolean scopeDelimiter;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -38,10 +38,6 @@
return new GroupElement( GroupElement.NOT );
}
- public static GroupElement newForallNotInstance() {
- return new GroupElement( GroupElement.FORALL_NOT );
- }
-
public static GroupElement newExistsInstance() {
return new GroupElement( GroupElement.EXISTS );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -135,7 +135,7 @@
}
public String toString() {
- return "[VariableConstraint fieldExtractor=" + this.fieldExtractor + " declaration=" + getRequiredDeclarations() + "]";
+ return this.fieldExtractor + " " + this.restriction;
}
public ContextEntry createContextEntry() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2010-11-02 16:24:00 UTC (rev 35844)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2010-11-02 21:25:12 UTC (rev 35845)
@@ -128,7 +128,7 @@
}
public String toString() {
- return "[VariableRestriction declaration=" + this.declaration + "]";
+ return this.evaluator + " " + this.declaration;
}
/* (non-Javadoc)
More information about the jboss-svn-commits
mailing list