svn commit: rev 22457 - avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks

[email protected]
Newsgroups gmane.comp.jakarta.avalon.cvs
Message-ID <[email protected]>
Author: mcconnell
Date: Fri Jul  2 01:04:47 2004
New Revision: 22457

Modified:
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java
Log:
Improve handling of nested element in a component directive.

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java	Fri Jul  2 01:04:47 2004
@@ -67,7 +67,8 @@
     {
         private String m_classname;
         private String m_profile;
-        private Context m_context;
+        private boolean m_context = false;
+        private ArrayList m_children = new ArrayList();
 
         public void setClass( final String classname )
         {
@@ -91,22 +92,31 @@
 
         public Context createContext()
         {
-            if( null == m_context )
+            if( m_context )
             {
-                m_context = new Context();
-                return m_context;
+                Context context = new Context();
+                m_children.add( context );
+                m_context = true;
+                return context;
             }
             else
             {
                 final String error = 
-                  "Context entry already defined!";
+                  "Context entry already set!";
                 throw new BuildException( error );
             }
         }
 
-        public Context getContext()
+        public Object[] getChildren()
         {
-            return m_context;
+            return m_children.toArray();
+        }
+
+        public Dependency createDependency()
+        {
+            final Dependency dep = new Dependency();
+            m_children.add( dep );
+            return dep;
         }
     }
 
@@ -179,7 +189,7 @@
         }
     }
 
-    public static class Entry extends Constructor
+    public static class Entry extends Param
     {
         private String m_key;
 
@@ -233,8 +243,30 @@
         }
     }
 
-    public static class Constructor extends Param
+    public static class Dependency
     {
+        private String m_key;
+        private String m_source;
+
+        public void setKey( final String key )
+        {
+            m_key = key;
+        }
+
+        public String getKey()
+        {
+            return m_key;
+        }
+
+        public void setSource( final String source )
+        {
+            m_source = source;
+        }
+
+        public String getSource()
+        {
+            return m_source;
+        }
     }
 
     private String m_target;
@@ -412,15 +444,28 @@
         {
             writer.write( " profile=\"" + component.getProfile() + "\"" );
         }
-        if( null != component.getContext() )
+
+        Object[] children = component.getChildren();
+        if( children.length == 0 )
         {
-            writer.write( ">" );
-            writeContext( writer, component.getContext() );
-            writer.write( "\n  </component>" );
+            writer.write( "/>" );
         }
         else
         {
-            writer.write( "/>" );
+            writer.write( ">" );
+            for( int i=0; i<children.length; i++ )
+            {
+                Object child = children[i];
+                if( child instanceof Context )
+                {
+                    writeContext( writer, (Context) child );
+                }
+                else if( child instanceof Dependency )
+                {
+                    writeDependency( writer, (Dependency) child );
+                }
+            }
+            writer.write( "\n  </component>" );
         }
     }
 
@@ -536,5 +581,14 @@
                 writer.write( "\n        </param>" ); 
             }
         }
+    }
+
+    private void writeDependency( final Writer writer, final Dependency dep )
+        throws IOException
+    {
+        writer.write( 
+          "\n    <dependency key=\"" 
+          + dep.getKey() + "\" source=\"" 
+          + dep.getSource() + "\"/>" );
     }
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.