You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2004/07/02 10:04:47 UTC
svn commit: rev 22457 - avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks
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() + "\"/>" );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org