CVS: jcontainer/loom/engine/src/java/org/jcontainer/loom/components/configuration/merger ConfigurationMerger.java,1.4,1.5

Peter Donald <pdonald-yCVjj/[email protected]> Mon, 26 Jan 2004 20:46:23 -0600
Newsgroups gmane.comp.java.jcontainer.cvs
Message-ID <[email protected]>
Update of /cvsroot/jcontainer/jcontainer/loom/engine/src/java/org/jcontainer/loom/components/configuration/merger
In directory hogshead.codehaus.org:/tmp/cvs-serv7964/loom/engine/src/java/org/jcontainer/loom/components/configuration/merger

Modified Files:
	ConfigurationMerger.java 
Log Message:
Make sure children are added in the correct order

Index: ConfigurationMerger.java
===================================================================
RCS file: /cvsroot/jcontainer/jcontainer/loom/engine/src/java/org/jcontainer/loom/components/configuration/merger/ConfigurationMerger.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ConfigurationMerger.java	3 Dec 2003 10:44:40 -0000	1.4
+++ ConfigurationMerger.java	27 Jan 2004 02:42:51 -0000	1.5
@@ -88,6 +88,7 @@
 
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import org.jcontainer.dna.Configuration;
 import org.jcontainer.dna.ConfigurationException;
@@ -154,21 +155,20 @@
         final Configuration[] lc = layer.getChildren();
         final Configuration[] bc = base.getChildren();
         final Set baseUsed = new HashSet();
+        final List toMergeUsed = new ArrayList();
 
         for( int i = 0; i < lc.length; i++ )
         {
-            final Configuration mergeWith = getMergePartner( lc[ i ],
-                                                             layer,
-                                                             base );
+            final Configuration mergeWith =
+                getMergePartner( lc[ i ], layer, base );
 
             if( null == mergeWith )
             {
-                merged.addChild( lc[ i ] );
+                toMergeUsed.add( lc[ i ] );
             }
             else
             {
-                merged.addChild( merge( lc[ i ], mergeWith ) );
-
+                toMergeUsed.add( merge( lc[ i ], mergeWith ) );
                 baseUsed.add( mergeWith );
             }
         }
@@ -180,6 +180,12 @@
                 merged.addChild( bc[ i ] );
             }
         }
+
+        final int count = toMergeUsed.size();
+        for( int i = 0; i < count; i++ )
+        {
+            merged.addChild( (Configuration)toMergeUsed.get( i ) );
+        }
     }
 
     private static Configuration getMergePartner( final Configuration toMerge,
@@ -300,11 +306,12 @@
             }
             else
             {
-                String v = children[ i ].getAttribute( attribute, null );
+                final String v =
+                    children[ i ].getAttribute( attribute, null );
 
                 if( v != null )
                 {
-                    if( ( value == null ) || v.equals( value ) )
+                    if( (value == null) || v.equals( value ) )
                     {
                         // it's a match
                         list.add( children[ i ] );