[jboss-svn-commits] JBL Code SVN: r11804 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 9 21:01:51 EDT 2007


Author: tirelli
Date: 2007-05-09 21:01:51 -0400 (Wed, 09 May 2007)
New Revision: 11804

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_RetractModifyWithFunction.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
Log:
JBRULES-811:

  * Adding methods to KnowledgeHelper to allow modify/retract of facts without passing the handler as a parameter.
  * Fixing bug in IdentityAssertMapComparator.hashcodeOf() calculation
  * Fixing bug in AbstractWorkingMemory logical override
  * Fixing KnowledgeHelperFix pattern replacement
  * Adding test case and fixing unit tests



Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -84,7 +84,7 @@
         final String text = TemplateInterpreter.evalToString( template,
                                                               vars );
 
-        System.out.println( text );
+        //System.out.println( text );
 
         final BufferedReader reader = new BufferedReader( new StringReader( text ) );
         String line = null;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -22,13 +22,13 @@
 public class KnowledgeHelperFixer {
 
     static String  KNOWLEDGE_HELPER_PFX = "";                               //could also be: "drools\\." for "classic" mode.
-    static Pattern MODIFY               = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "modify\\s*\\(([^)]+)\\)(.*)",
+    static Pattern MODIFY               = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "modify\\s*\\(([^)]+)\\)(\\s*;.*)",
                                                            Pattern.DOTALL );
-    static Pattern ASSERT               = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "assert\\s*\\((.*)\\)(.*)",
+    static Pattern ASSERT               = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "assert\\s*\\((.*)\\)(\\s*;.*)",
                                                            Pattern.DOTALL );
-    static Pattern ASSERT_LOGICAL       = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "assertLogical\\s*\\((.*)\\)(.*)",
+    static Pattern ASSERT_LOGICAL       = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "assertLogical\\s*\\((.*)\\)(\\s*;.*)",
                                                            Pattern.DOTALL );
-    static Pattern RETRACT              = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "retract\\s*\\(([^)]+)\\)(.*)",
+    static Pattern RETRACT              = Pattern.compile( "(.*)\\b" + KnowledgeHelperFixer.KNOWLEDGE_HELPER_PFX + "retract\\s*\\((.+)\\)(\\s*;.*)",
                                                            Pattern.DOTALL );
 
     /**
@@ -147,7 +147,7 @@
         }
 
         public String getReplacement(final String guts) {
-            return "drools.modifyObject(" + guts.trim() + "__Handle__, " + guts + ")";
+            return "drools.modifyObject( " + guts + " )";
         }
 
     }
@@ -163,7 +163,7 @@
         }
 
         public String getReplacement(final String guts) {
-            return "drools.retractObject(" + guts.trim() + "__Handle__)";
+            return "drools.retractObject( " + guts.trim() + " )";
         }
 
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -63,6 +63,7 @@
 import org.drools.TestParam;
 import org.drools.WorkingMemory;
 import org.drools.Cheesery.Maturity;
+import org.drools.common.AbstractWorkingMemory;
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
@@ -1505,9 +1506,9 @@
         assertEquals( 2,
                       IteratorToList.convert( workingMemory.iterateObjects() ).size() );
         assertEquals( bob,
+                      IteratorToList.convert( workingMemory.iterateObjects() ).get( 1 ) );
+        assertEquals( new Person( "help" ),
                       IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
-        assertEquals( new Person( "help" ),
-                      IteratorToList.convert( workingMemory.iterateObjects() ).get( 1 ) );
     }
 
     public void testEmptyRule() throws Exception {
@@ -2526,8 +2527,8 @@
         workingMemory.setGlobal( "list",
                                  list );
 
-        final Primitives p = new Primitives( );
-        p.setStringArray( new String[] { "test1", "test3" } );
+        final Primitives p = new Primitives();
+        p.setStringArray( new String[]{"test1", "test3"} );
         workingMemory.assertObject( p );
 
         workingMemory.fireAllRules();
@@ -2540,7 +2541,7 @@
         assertEquals( "ok2",
                       list.get( 1 ) );
     }
-    
+
     public void testCollectNodeSharing() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_collectNodeSharing.drl" ) ) );
@@ -2554,8 +2555,10 @@
         workingMemory.setGlobal( "results",
                                  list );
 
-        workingMemory.assertObject( new Cheese( "stilton", 10 ) );
-        workingMemory.assertObject( new Cheese( "brie", 15 ) );
+        workingMemory.assertObject( new Cheese( "stilton",
+                                                10 ) );
+        workingMemory.assertObject( new Cheese( "brie",
+                                                15 ) );
 
         workingMemory.fireAllRules();
 
@@ -2565,7 +2568,7 @@
         assertEquals( 2,
                       ((List) list.get( 0 )).size() );
     }
-    
+
     public void testNodeSharingNotExists() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_nodeSharingNotExists.drl" ) ) );
@@ -2579,7 +2582,6 @@
         workingMemory.setGlobal( "results",
                                  list );
 
-
         workingMemory.fireAllRules();
 
         assertEquals( 1,
@@ -2587,16 +2589,17 @@
 
         assertEquals( "rule1",
                       list.get( 0 ) );
-        
-        workingMemory.assertObject( new Cheese( "stilton", 10 ) );
+
+        workingMemory.assertObject( new Cheese( "stilton",
+                                                10 ) );
         workingMemory.fireAllRules();
-        
+
         assertEquals( 2,
                       list.size() );
 
         assertEquals( "rule2",
                       list.get( 1 ) );
-        
+
     }
 
     public void testNullBinding() throws Exception {
@@ -2612,7 +2615,7 @@
         workingMemory.setGlobal( "results",
                                  list );
 
-        workingMemory.assertObject( new Person("bob") );
+        workingMemory.assertObject( new Person( "bob" ) );
         workingMemory.assertObject( new Person( null ) );
 
         workingMemory.fireAllRules();
@@ -2622,6 +2625,38 @@
 
         assertEquals( "OK",
                       list.get( 0 ) );
-        
+
     }
+
+    public void testModifyRetractWithFunction() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_RetractModifyWithFunction.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final AbstractWorkingMemory workingMemory = (AbstractWorkingMemory) ruleBase.newStatefulSession();
+
+        final Cheese stilton = new Cheese( "stilton",
+                                           7 );
+        final Cheese muzzarella = new Cheese( "muzzarella",
+                                              9 );
+        final int sum = stilton.getPrice() + muzzarella.getPrice();
+        final FactHandle stiltonHandle = workingMemory.assertObject( stilton );
+        final FactHandle muzzarellaHandle = workingMemory.assertObject( muzzarella );
+
+        workingMemory.fireAllRules();
+
+        assertEquals( sum,
+                      stilton.getPrice() );
+        assertEquals( 1,
+                      workingMemory.getFactHandleMap().size() );
+        assertNotNull( workingMemory.getObject( stiltonHandle ) );
+        assertNotNull( workingMemory.getFactHandle( stilton ) );
+
+        assertNull( workingMemory.getObject( muzzarellaHandle ) );
+        assertNull( workingMemory.getFactHandle( muzzarella ) );
+
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -25,32 +25,32 @@
     private static final KnowledgeHelperFixer fixer = new KnowledgeHelperFixer();
 
     public void testAdd__Handle__Simple() {
-        String result = KnowledgeHelperFixerTest.fixer.fix( "modify(myObject )" );
-        assertEquals( "drools.modifyObject(myObject__Handle__, myObject)",
+        String result = KnowledgeHelperFixerTest.fixer.fix( "modify(myObject );" );
+        assertEquals( "drools.modifyObject( myObject );",
                       result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "modify ( myObject )" );
-        assertEquals( "drools.modifyObject(myObject__Handle__, myObject)",
+        result = KnowledgeHelperFixerTest.fixer.fix( "modify ( myObject );" );
+        assertEquals( "drools.modifyObject( myObject );",
                       result );
     }
 
     public void testAdd__Handle__withNewLines() {
-        final String result = KnowledgeHelperFixerTest.fixer.fix( "\n\t\n\tmodify(myObject )" );
-        assertEquals( "\n\t\n\tdrools.modifyObject(myObject__Handle__, myObject)",
+        final String result = KnowledgeHelperFixerTest.fixer.fix( "\n\t\n\tmodify(myObject );" );
+        assertEquals( "\n\t\n\tdrools.modifyObject( myObject );",
                       result );
     }
 
     public void testAdd__Handle__rComplex() {
         String result = KnowledgeHelperFixerTest.fixer.fix( "something modify(myObject ); other" );
-        assertEquals( "something drools.modifyObject(myObject__Handle__, myObject); other",
+        assertEquals( "something drools.modifyObject( myObject ); other",
                       result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "something modify (myObject )" );
-        assertEquals( "something drools.modifyObject(myObject__Handle__, myObject)",
+        result = KnowledgeHelperFixerTest.fixer.fix( "something modify (myObject );" );
+        assertEquals( "something drools.modifyObject( myObject );",
                       result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( " modify(myObject ) x" );
-        assertEquals( " drools.modifyObject(myObject__Handle__, myObject) x",
+        result = KnowledgeHelperFixerTest.fixer.fix( " modify(myObject ); x" );
+        assertEquals( " drools.modifyObject( myObject ); x",
                       result );
 
         //should not touch, as it is not a stand alone word
@@ -60,12 +60,12 @@
     }
 
     public void testMultipleMatches() {
-        String result = KnowledgeHelperFixerTest.fixer.fix( "modify(myObject) modify(myObject )" );
-        assertEquals( "drools.modifyObject(myObject__Handle__, myObject) drools.modifyObject(myObject__Handle__, myObject)",
+        String result = KnowledgeHelperFixerTest.fixer.fix( "modify(myObject); modify(myObject );" );
+        assertEquals( "drools.modifyObject( myObject ); drools.modifyObject( myObject );",
                       result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "xxx modify(myObject ) modify(myObject ) modify(yourObject ) yyy" );
-        assertEquals( "xxx drools.modifyObject(myObject__Handle__, myObject) drools.modifyObject(myObject__Handle__, myObject) drools.modifyObject(yourObject__Handle__, yourObject) yyy",
+        result = KnowledgeHelperFixerTest.fixer.fix( "xxx modify(myObject ); modify(myObject ); modify(yourObject ); yyy" );
+        assertEquals( "xxx drools.modifyObject( myObject ); drools.modifyObject( myObject ); drools.modifyObject( yourObject ); yyy",
                       result );
 
     }
@@ -85,12 +85,12 @@
     }
 
     public void testAllActionsMushedTogether() {
-        String result = KnowledgeHelperFixerTest.fixer.fix( "assert(myObject ) modify(ourObject);\t retract(herObject)" );
-        assertEquals( "drools.assertObject(myObject ) drools.modifyObject(ourObject__Handle__, ourObject);\t drools.retractObject(herObject__Handle__)",
+        String result = KnowledgeHelperFixerTest.fixer.fix( "assert(myObject ); modify(ourObject);\t retract(herObject);" );
+        assertEquals( "drools.assertObject(myObject ); drools.modifyObject( ourObject );\t drools.retractObject( herObject );",
                       result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "assert(myObject ) modify(ourObject);\t retract(herObject)\nassert(myObject) modify(ourObject);\t retract(herObject)" );
-        assertEquals( "drools.assertObject(myObject ) drools.modifyObject(ourObject__Handle__, ourObject);\t drools.retractObject(herObject__Handle__)\ndrools.assertObject(myObject) drools.modifyObject(ourObject__Handle__, ourObject);\t drools.retractObject(herObject__Handle__)",
+        result = KnowledgeHelperFixerTest.fixer.fix( "assert(myObject ); modify(ourObject);\t retract(herObject);\nassert(myObject); modify(ourObject);\t retract(herObject);" );
+        assertEquals( "drools.assertObject(myObject ); drools.modifyObject( ourObject );\t drools.retractObject( herObject);\ndrools.assertObject(myObject); drools.modifyObject( ourObject );\t drools.retractObject( herObject );",
                       result );
     }
 

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_RetractModifyWithFunction.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_RetractModifyWithFunction.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_RetractModifyWithFunction.drl	2007-05-10 01:01:51 UTC (rev 11804)
@@ -0,0 +1,29 @@
+package org.drools;
+ 
+function Cheese getMin(Cheese c1, Cheese c2) {
+ if (c1.getPrice() < c2.getPrice()) return c1;
+ else return c2;
+}
+
+rule "test modify"
+    salience 10
+    no-loop
+when
+	$c1 : Cheese( type == "stilton" )
+    $c2 : Cheese( type == "muzzarella" )
+then
+ 	Cheese x = getMin( $c1, $c2 );
+ 	x.setPrice( $c1.getPrice() + $c2.getPrice() );
+	modify( x );
+	// testing stuff after the ) ;
+end
+
+rule "test retract"
+when
+	$c1 : Cheese( type == "stilton" )
+	$c2 : Cheese( type == "muzzarella" )
+then
+    // stuff before the retract( getMin( $c1, $c2 ) );
+    retract( getMin( $c1, $c2 ) );
+    // stuff before the retract( getMin( $c1, $c2 ) );
+end

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -99,6 +99,18 @@
                                          this.activation );
     }
 
+    public void modifyObject( final Object object ) throws FactException {
+        FactHandle handle = this.workingMemory.getFactHandle( object );
+        if( handle == null ) {
+            throw new FactException("Modify error: handle not found for object: "+object+". Is it in the working memory?");
+        }
+        // only modify if this fact exists in the wm
+        this.workingMemory.modifyObject( handle,
+                                         object,
+                                         this.rule,
+                                         this.activation );
+    }
+
     public void retractObject(final FactHandle handle) throws FactException {
         this.workingMemory.retractObject( handle,
                                           true,
@@ -107,6 +119,18 @@
                                           this.activation );
     }
 
+    public void retractObject(final Object object) throws FactException {
+        FactHandle handle = this.workingMemory.getFactHandle( object );
+        if( handle == null ) {
+            throw new FactException("Retract error: handle not found for object: "+object+". Is it in the working memory?");
+        }
+        this.workingMemory.retractObject( handle,
+                                          true,
+                                          true,
+                                          this.rule,
+                                          this.activation );
+    }
+
     public Rule getRule() {
         return this.rule;
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -63,7 +63,6 @@
 import org.drools.util.ObjectHashMap;
 import org.drools.util.PrimitiveLongMap;
 import org.drools.util.AbstractHashTable.HashTableIterator;
-import org.drools.util.ObjectHashMap.ObjectEntry;
 import org.drools.util.concurrent.locks.Lock;
 import org.drools.util.concurrent.locks.ReentrantLock;
 
@@ -662,7 +661,19 @@
                             // existing handle
                             key.setStatus( EqualityKey.STATED );
                             handle = key.getFactHandle();
-                            handle.setObject( object );
+                            
+                            if ( this.ruleBase.getConfiguration().getAssertBehaviour() == AssertBehaviour.IDENTITY ) {
+                                // as assertMap may be using an "identity" equality comparator,
+                                // we need to remove the handle from the map, before replacing the object
+                                // and then re-add the handle. Otherwise we may end up with a leak.
+                                this.assertMap.remove( handle );
+                                handle.setObject( object );
+                                this.assertMap.put( handle, 
+                                                    handle, 
+                                                    false );
+                            } else {
+                                handle.setObject( object );
+                            }
                             return handle;
                         } else {
                             // override, then instantiate new handle for assertion

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -32,10 +32,14 @@
     }
 
     public int hashCodeOf(final Object obj) {
-        if ( obj instanceof FactHandle ) {
-            return rehash( ((InternalFactHandle) obj).getObjectHashCode() );
+        Object realObject = obj;
+        if ( realObject instanceof FactHandle ) {
+            realObject = ((InternalFactHandle) obj).getObject();
         }
-        return rehash( obj.hashCode() );
+        if ( realObject instanceof ShadowProxy ) {
+            realObject = ((ShadowProxy)realObject).getShadowedObject();
+        }
+        return rehash( System.identityHashCode( realObject ) );
     }
 
     public int rehash(int h) {
@@ -55,10 +59,13 @@
         if ( o1 instanceof FactHandle ) {
             return ((InternalFactHandle) o1).getObject() == ((InternalFactHandle) o2).getObject();
         }
-
+        Object left = o1;
+        if ( left instanceof ShadowProxy ) {
+            left = ((ShadowProxy)left).getShadowedObject();
+        }
         final InternalFactHandle handle = ((InternalFactHandle) o2);
 
-        return o1 == ((handle.isShadowFact()) ? ((ShadowProxy) handle.getObject()).getShadowedObject() : handle.getObject());
+        return left == ((handle.isShadowFact()) ? ((ShadowProxy) handle.getObject()).getShadowedObject() : handle.getObject());
     }
 
     public int compare(final Object o1,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2007-05-10 00:56:52 UTC (rev 11803)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2007-05-10 01:01:51 UTC (rev 11804)
@@ -76,8 +76,12 @@
     void modifyObject(FactHandle handle,
                       Object newObject) throws FactException;
 
+    void modifyObject( Object newObject ) throws FactException;
+
     void retractObject(FactHandle handle) throws FactException;
 
+    void retractObject(Object object) throws FactException;
+    
     public Object get(Declaration declaration);
 
     /**




More information about the jboss-svn-commits mailing list