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/03 14:40:02 UTC
svn commit: rev 22498 - in avalon/trunk: . central/system central/system/build planet/facilities planet/facilities/finder/impl/src/main/java/org planet/facilities/finder/impl/src/main/java/org/apache planet/facilities/finder/impl/src/main/java/org/apache/avalon planet/facilities/finder/impl/src/main/java/org/apache/avalon/finder planet/facilities/finder/impl/src/main/java/org/apache/avalon/finder/impl runtime runtime/util tools tools/magic/src/main/org/apache/avalon/tools tools/magic/src/main/org/apache/avalon/tools/model tools/magic/src/main/org/apache/avalon/tools/tasks
Author: mcconnell
Date: Sat Jul 3 05:40:01 2004
New Revision: 22498
Added:
avalon/trunk/planet/facilities/finder/impl/src/main/java/org/
avalon/trunk/planet/facilities/finder/impl/src/main/java/org/apache/
avalon/trunk/planet/facilities/finder/impl/src/main/java/org/apache/avalon/
avalon/trunk/planet/facilities/finder/impl/src/main/java/org/apache/avalon/finder/
avalon/trunk/planet/facilities/finder/impl/src/main/java/org/apache/avalon/finder/impl/
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java
Modified:
avalon/trunk/build.xml
avalon/trunk/central/system/build/standard.xml
avalon/trunk/central/system/index.xml
avalon/trunk/planet/facilities/index.xml
avalon/trunk/runtime/index.xml
avalon/trunk/runtime/util/build.xml
avalon/trunk/tools/ (props changed)
avalon/trunk/tools/index.xml
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Definition.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Plugin.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java
Log:
Initial cut on a gump module generation task (after doing a "ant setup", invoke "ant gump" and take a look at the gump.xml output file.
Modified: avalon/trunk/build.xml
==============================================================================
--- avalon/trunk/build.xml (original)
+++ avalon/trunk/build.xml Sat Jul 3 05:40:01 2004
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<project name="runtime" default="install" basedir="."
+<project name="avalon" default="install" basedir="."
xmlns:x="antlib:org.apache.avalon.tools">
<available property="magic.available" classname="org.apache.avalon.tools.model.Home"/>
@@ -43,6 +43,25 @@
#--------------------------------------------------------------------------------
</echo>
<fail message="Bootstrap resources not present."/>
+ </target>
+
+ <target name="gump">
+ <x:home/>
+ <x:gump name="Magic" description="Magic Test Module"
+ public="true" filename="gump.xml">
+ <x:url href="http://avalon.apache.org/magic"/>
+ <x:svn href="https://svn.apache.org/repos/asf/avalon/trunk"/>
+ <x:license file="central/system/license/LICENSE.TXT"/>
+ </x:gump>
+ </target>
+
+ <target name="execute">
+ <property name="gump.build-id" value="123456"/>
+ <property name="gump.target" value="runtime/composition/api"/>
+ <echo>BASDIR: ${basedir}</echo>
+ <echo>TARGET: ${gump.target}</echo>
+
+ <ant dir="." antfile="central/system/build/gump.xml" inheritrefs="false"/>
</target>
</project>
Modified: avalon/trunk/central/system/build/standard.xml
==============================================================================
--- avalon/trunk/central/system/build/standard.xml (original)
+++ avalon/trunk/central/system/build/standard.xml Sat Jul 3 05:40:01 2004
@@ -46,6 +46,8 @@
<target name="site" depends="javadoc,xdoc"/>
<target name="dist" depends="install,site"/>
+
+ <target name="gump" depends="install"/>
</project>
Modified: avalon/trunk/central/system/index.xml
==============================================================================
--- avalon/trunk/central/system/index.xml (original)
+++ avalon/trunk/central/system/index.xml Sat Jul 3 05:40:01 2004
@@ -16,6 +16,7 @@
<info>
<group>avalon</group>
<name>site</name>
+ <type>doc</type>
</info>
<dependencies>
<include key="avalon-runtime" runtime="false" build="false" test="false"/>
Modified: avalon/trunk/planet/facilities/index.xml
==============================================================================
--- avalon/trunk/planet/facilities/index.xml (original)
+++ avalon/trunk/planet/facilities/index.xml Sat Jul 3 05:40:01 2004
@@ -354,15 +354,6 @@
<resource>
<info>
<group>geronimo-spec</group>
- <name>geronimo-spec-jms</name>
- <version>DEV</version>
- <type>jar</type>
- </info>
- </resource>
-
- <resource>
- <info>
- <group>geronimo-spec</group>
<name>geronimo-spec-jta</name>
<version>DEV</version>
<type>jar</type>
Modified: avalon/trunk/runtime/index.xml
==============================================================================
--- avalon/trunk/runtime/index.xml (original)
+++ avalon/trunk/runtime/index.xml Sat Jul 3 05:40:01 2004
@@ -46,6 +46,15 @@
</info>
</resource>
+ <resource>
+ <info>
+ <group>geronimo-spec</group>
+ <name>geronimo-spec-jms</name>
+ <version>DEV</version>
+ <type>jar</type>
+ </info>
+ </resource>
+
<!--
Avalon LogKit.
-->
@@ -57,11 +66,10 @@
<version>2.0.0</version>
</info>
<dependencies>
- <include key="avalonx-supplemental" build="false" test="false"/>
+ <include key="mailapi" runtime="false"/>
<include key="log4j" runtime="false"/>
<include key="servletapi" runtime="false"/>
- <include key="mailapi" runtime="false"/>
- <include key="jms" runtime="false"/>
+ <include key="geronimo-spec-jms" runtime="false"/>
</dependencies>
</project>
@@ -766,6 +774,7 @@
<group>avalon</group>
<name>runtime</name>
<version>3.3.1</version>
+ <type>doc</type>
<status>SNAPSHOT</status>
</info>
<dependencies>
@@ -789,7 +798,7 @@
<include key="log4j" runtime="false"/>
<include key="servletapi"/>
<include key="mailapi"/>
- <include key="jms"/>
+ <include key="geronimo-spec-jms"/>
</dependencies>
</project>
Modified: avalon/trunk/runtime/util/build.xml
==============================================================================
--- avalon/trunk/runtime/util/build.xml (original)
+++ avalon/trunk/runtime/util/build.xml Sat Jul 3 05:40:01 2004
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<project name="test" default="install" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
+<project name="avalon-util" default="install" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
<property file="build.properties"/>
<import file="${project.system}/build/reactor.xml"/>
Modified: avalon/trunk/tools/index.xml
==============================================================================
--- avalon/trunk/tools/index.xml (original)
+++ avalon/trunk/tools/index.xml Sat Jul 3 05:40:01 2004
@@ -46,6 +46,7 @@
<info>
<group>avalon/tools</group>
<name>avalon-tools-magic</name>
+ <type>jar</type>
</info>
<dependencies>
<include key="ant"/>
@@ -59,6 +60,7 @@
Avalon eXternal Supplemental.
-->
+ <!--
<project basedir="supplemental">
<info>
<group>avalonx/supplemental</group>
@@ -66,6 +68,7 @@
<version>1.0</version>
</info>
</project>
+ -->
<resource>
<info>
@@ -74,15 +77,9 @@
<version>1.3.1</version>
<type>jar</type>
</info>
- </resource>
-
- <resource>
- <info>
- <group>avalonx/supplemental</group>
- <name>jms</name>
- <version>1.1</version>
- <type>jar</type>
- </info>
+ <gump>
+ <alias>javamail</alias>
+ </gump>
</resource>
</index>
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml Sat Jul 3 05:40:01 2004
@@ -22,6 +22,7 @@
<taskdef name="property" classname="org.apache.avalon.tools.tasks.PropertyTask"/>
<taskdef name="replicate" classname="org.apache.avalon.tools.tasks.ReplicateTask"/>
<taskdef name="block" classname="org.apache.avalon.tools.tasks.BlockTask"/>
+ <taskdef name="gump" classname="org.apache.avalon.tools.tasks.GumpTask"/>
<typedef name="path" classname="org.apache.avalon.tools.model.MagicPath"/>
</antlib>
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Definition.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Definition.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Definition.java Sat Jul 3 05:40:01 2004
@@ -31,15 +31,22 @@
{
private ResourceRef[] m_plugins;
private File m_basedir;
+ private String m_path;
public Definition(
- final Home home, final String key, final File basedir, final Info info,
- final ResourceRef[] resources, final ResourceRef[] plugins )
+ final Home home, final String key, final File basedir, final String path, final Info info,
+ final Gump gump, final ResourceRef[] resources, final ResourceRef[] plugins )
{
- super( home, key, info, resources );
+ super( home, key, info, gump, resources );
m_basedir = basedir;
m_plugins = plugins;
+ m_path = path;
+ }
+
+ public String getBasePath()
+ {
+ return m_path;
}
public File getBaseDir()
Added: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java
==============================================================================
--- (empty file)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java Sat Jul 3 05:40:01 2004
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.tools.model;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Project info.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
+ */
+public class Gump
+{
+ public static final Gump NULL_GUMP = new Gump( null );
+
+ private String m_alias;
+
+ public Gump( final String alias )
+ {
+ m_alias = alias;
+ }
+
+ /**
+ * Gump alias name.
+ */
+ public String getAlias()
+ {
+ return m_alias;
+ }
+}
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java Sat Jul 3 05:40:01 2004
@@ -42,7 +42,7 @@
}
final String protocol = id.substring( 0, i );
final String spec = id.substring( i+1 );
- return Info.create( protocol, spec);
+ return Info.create( protocol, spec );
}
public static Info create( final String type, final String id )
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Plugin.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Plugin.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Plugin.java Sat Jul 3 05:40:01 2004
@@ -31,11 +31,11 @@
private final ListenerDef[] m_listeners;
public Plugin(
- final Home home, final String key, final File basedir, final Info info,
- final ResourceRef[] resources, final ResourceRef[] plugins,
+ final Home home, final String key, final File basedir, final String path, final Info info,
+ final Gump gump, final ResourceRef[] resources, final ResourceRef[] plugins,
final TaskDef[] tasks, final ListenerDef[] listeners )
{
- super( home, key, basedir, info, resources, plugins );
+ super( home, key, basedir, path, info, gump, resources, plugins );
m_tasks = tasks;
m_listeners = listeners;
}
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java Sat Jul 3 05:40:01 2004
@@ -40,21 +40,28 @@
private final String m_key;
private Info m_info;
+ private Gump m_gump;
private ResourceRef[] m_resources;
private Home m_home;
public Resource( final Home home, final Info info )
{
- this( home, null, info, EMPTY_REFS );
+ this( home, null, info, Gump.NULL_GUMP, EMPTY_REFS );
}
public Resource(
- final Home home, final String key, final Info info, final ResourceRef[] resources )
+ final Home home, final String key, final Info info, Gump gump, final ResourceRef[] resources )
{
m_key = key;
m_info = info;
m_resources = resources;
m_home = home;
+ m_gump = gump;
+ }
+
+ public Gump getGump()
+ {
+ return m_gump;
}
public String getKey()
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java Sat Jul 3 05:40:01 2004
@@ -45,9 +45,12 @@
final Info info =
createInfo( ElementHelper.getChild( element, "info" ) );
+ final Gump gump =
+ createGump( ElementHelper.getChild( element, "gump" ) );
final String key = getDefinitionKey( element, info );
- final File basedir = getBasedir( anchor, element );
+ final String path = element.getAttribute( "basedir" );
+ final File basedir = getBasedir( anchor, path );
final ResourceRef[] resources =
createResourceRefs(
@@ -60,7 +63,7 @@
if( tag.equals( "project" ) )
{
return new Definition(
- home, key, basedir, info, resources, plugins );
+ home, key, basedir, path, info, gump, resources, plugins );
}
else if( tag.equals( "plugin" ) )
{
@@ -70,7 +73,7 @@
getListenerDefs(
ElementHelper.getChild( element, "listeners" ) );
return new Plugin(
- home, key, basedir, info, resources, plugins,
+ home, key, basedir, path, info, gump, resources, plugins,
tasks, listeners );
}
else
@@ -85,22 +88,27 @@
{
final Info info =
createInfo( ElementHelper.getChild( element, "info" ) );
+ final Gump gump =
+ createGump( ElementHelper.getChild( element, "gump" ) );
final String key = getDefinitionKey( element, info );
final ResourceRef[] resources =
createResourceRefs(
ElementHelper.getChild( element, "dependencies" ) );
- return new Resource( home, key, info, resources );
+ return new Resource( home, key, info, gump, resources );
}
public static Definition createDefinition( final Home home, final Element element, final File anchor )
{
final Info info =
createInfo( ElementHelper.getChild( element, "info" ) );
+ final Gump gump =
+ createGump( ElementHelper.getChild( element, "gump" ) );
final String key = getDefinitionKey( element, info );
- final File basedir = getBasedir( anchor, element );
+ final String path = element.getAttribute( "basedir" );
+ final File basedir = getBasedir( anchor, path );
final ResourceRef[] resources =
createResourceRefs(
@@ -114,7 +122,7 @@
if( tag.equals( "project" ) )
{
return new Definition(
- home, key, basedir, info, resources, plugins );
+ home, key, basedir, path, info, gump, resources, plugins );
}
else if( tag.equals( "plugin" ) )
{
@@ -123,7 +131,7 @@
final ListenerDef[] listeners =
getListenerDefs( ElementHelper.getChild( element, "listeners" ) );
return new Plugin(
- home, key, basedir, info, resources, plugins, tasks, listeners );
+ home, key, basedir, path, info, gump, resources, plugins, tasks, listeners );
}
else
{
@@ -160,9 +168,8 @@
return refs;
}
- private static File getBasedir( final File anchor, final Element element )
+ private static File getBasedir( final File anchor, final String path )
{
- final String path = element.getAttribute( "basedir" );
if( null == path )
{
final String error =
@@ -226,6 +233,14 @@
{
return new Info( group, name, version, type, false );
}
+ }
+
+ public static Gump createGump( final Element info )
+ {
+ final String alias =
+ ElementHelper.getValue(
+ ElementHelper.getChild( info, "alias" ) );
+ return new Gump( alias );
}
private static ResourceRef[] createResourceRefs( final Element element )
Added: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java
==============================================================================
--- (empty file)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java Sat Jul 3 05:40:01 2004
@@ -0,0 +1,487 @@
+/*
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.tools.tasks;
+
+import org.apache.avalon.tools.model.Definition;
+import org.apache.avalon.tools.model.ResourceRef;
+import org.apache.avalon.tools.model.Info;
+import org.apache.avalon.tools.model.Resource;
+import org.apache.avalon.tools.model.Plugin.ListenerDef;
+import org.apache.avalon.tools.model.Plugin.TaskDef;
+import org.apache.avalon.tools.model.Plugin;
+import org.apache.avalon.tools.model.Policy;
+import org.apache.avalon.tools.model.Home;
+import org.apache.avalon.tools.model.Context;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.FileOutputStream;
+import java.io.File;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Create meta-data for a block.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
+ */
+public class GumpTask extends SystemTask
+{
+ public static class Href
+ {
+ private String m_href;
+
+ public void setHref( String href )
+ {
+ m_href = href;
+ }
+
+ public String getHref()
+ {
+ return m_href;
+ }
+ }
+
+ public static class FileHolder
+ {
+ private String m_file;
+
+ public void setFile( String file )
+ {
+ m_file = file;
+ }
+
+ public String getFile()
+ {
+ return m_file;
+ }
+ }
+
+ public static class License extends FileHolder
+ {
+ }
+
+ public static class Template extends FileHolder
+ {
+ private String m_target = "gump";
+
+ public void setTarget( String target )
+ {
+ m_target = target;
+ }
+
+ public String getTarget()
+ {
+ return m_target;
+ }
+ }
+
+ public static class Url extends Href
+ {
+ }
+
+ public static class Cvs extends Href
+ {
+ }
+
+ public static class Svn extends Href
+ {
+ }
+
+ private String m_name;
+ private String m_filename;
+ private String m_description;
+ private Url m_url;
+ private Cvs m_cvs;
+ private Svn m_svn;
+ private License m_license;
+ private Template m_template = new Template();
+ private boolean m_public = false;
+
+ public void setName( String name )
+ {
+ m_name = name;
+ }
+
+ public void setFilename( String filename )
+ {
+ m_filename = filename;
+ }
+
+ public void setDescription( String description )
+ {
+ m_description = description;
+ }
+
+ public void setPublic( boolean flag )
+ {
+ m_public = flag;
+ }
+
+ public Url createUrl()
+ {
+ if( null == m_url )
+ {
+ m_url = new Url();
+ return m_url;
+ }
+ else
+ {
+ throw new BuildException( "Multiple url entries not allowed." );
+ }
+ }
+
+ public Svn createSvn()
+ {
+ if( null == m_svn )
+ {
+ if( null == m_cvs )
+ {
+ m_svn = new Svn();
+ return m_svn;
+ }
+ else
+ {
+ throw new BuildException( "Cannot declare both cvs and svn." );
+ }
+ }
+ else
+ {
+ throw new BuildException( "Multiple svn entries not allowed." );
+ }
+ }
+
+ public Cvs createCvs()
+ {
+ if( null == m_cvs )
+ {
+ if( null == m_cvs )
+ {
+ m_cvs = new Cvs();
+ return m_cvs;
+ }
+ else
+ {
+ throw new BuildException( "Cannot declare both cvs and svn." );
+ }
+ }
+ else
+ {
+ throw new BuildException( "Multiple cvs entries not allowed." );
+ }
+ }
+
+ public License createLicense()
+ {
+ if( null == m_license )
+ {
+ m_license = new License();
+ return m_license;
+ }
+ else
+ {
+ throw new BuildException( "Multiple license entries not allowed." );
+ }
+ }
+
+ public Template createTemplate()
+ {
+ return m_template;
+ }
+
+
+ private File getFile()
+ {
+ if( null != m_filename )
+ {
+ final Project project = getProject();
+ return Context.getFile( project.getBaseDir(), m_filename );
+ }
+ else
+ {
+ return new File( getContext().getDeliverablesDirectory(), "gump.xml" );
+ }
+ }
+
+ public void execute()
+ {
+ try
+ {
+ final File file = getFile();
+ file.getParentFile().mkdirs();
+ file.createNewFile();
+ final OutputStream output = new FileOutputStream( file );
+ final Writer writer = new OutputStreamWriter( output );
+
+ try
+ {
+ writeHeader( writer );
+ writeModule( writer );
+ writer.flush();
+ }
+ finally
+ {
+ closeStream( output );
+ }
+ }
+ catch( Throwable e )
+ {
+ throw new BuildException( e );
+ }
+ }
+
+ private String getName()
+ {
+ if( null != m_name )
+ {
+ return m_name;
+ }
+ else
+ {
+ return getProject().getName();
+ }
+ }
+
+ protected void writeModule( final Writer writer )
+ throws IOException
+ {
+ Home home = getHome();
+ Project project = getProject();
+ String name = getName();
+
+ writer.write( "\n\n<module name=\"" + name + "\">" );
+ writer.write( "\n\n <url href=\"" + m_url.getHref() + "\"/>" );
+
+ if( null != m_description )
+ {
+ writer.write( "\n <description>" );
+ writer.write( m_description );
+ writer.write( "</description>" );
+ }
+
+ if( null != m_svn )
+ {
+ writer.write( "\n <svn href=\"" + m_svn.getHref() + "\"/>" );
+ }
+ else if( null != m_svn )
+ {
+ writer.write( "\n <cvs href=\"" + m_cvs.getHref() + "\"/>" );
+ }
+
+ Definition[] definitions = home.getDefinitions();
+ for( int i=0; i<definitions.length; i++ )
+ {
+ Definition def = definitions[i];
+ writeProject( writer, def );
+ }
+
+ writer.write( "\n\n</module>\n" );
+ }
+
+ /**
+ * Write the XML header.
+ * @param writer the writer
+ * @throws IOException if unable to write xml
+ */
+ private void writeHeader( final Writer writer )
+ throws IOException
+ {
+ writer.write( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" );
+ writer.write( "\n" );
+ writer.write( "\n<!--" );
+ writer.write( "\n#" );
+ writer.write( "\n# Copyright 2004 Apache Software Foundation " );
+ writer.write( "\n# Licensed under the Apache License, Version 2.0 (the \"License\"); " );
+ writer.write( "\n# you may not use this file except in compliance with the License. " );
+ writer.write( "\n# You may obtain a copy of the License at " );
+ writer.write( "\n# " );
+ writer.write( "\n# http://www.apache.org/licenses/LICENSE-2.0 " );
+ writer.write( "\n# " );
+ writer.write( "\n# Unless required by applicable law or agreed to in writing, software " );
+ writer.write( "\n# distributed under the License is distributed on an \"AS IS\" BASIS, " );
+ writer.write( "\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or " );
+ writer.write( "\n# implied. " );
+ writer.write( "\n# " );
+ writer.write( "\n# See the License for the specific language governing permissions and " );
+ writer.write( "\n# limitations under the License. " );
+ writer.write( "\n# " );
+ writer.write( "\n# NOTE: The content of this file is automatically generated by Magic." );
+ writer.write( "\n# http://avalon.apache.org/" );
+ writer.write( "\n#" );
+ writer.write( "\n-->" );
+ writer.write( "\n" );
+ }
+
+ /**
+ * Write the XML project definition.
+ * @param writer the writer
+ * @param definition the project definition
+ * @throws IOException if unable to write xml
+ */
+ private void writeProject( final Writer writer, Definition definition )
+ throws IOException
+ {
+ String path = definition.getBaseDir().getCanonicalPath();
+ int j = getProject().getBaseDir().toString().length();
+ String basedir = path.substring( j+1 ).replace( '\\', '/' );
+
+ writer.write(
+ "\n\n <project name=\"" + definition.getKey() + "\">" );
+
+ if( null != m_license )
+ {
+ String license = m_license.getFile();
+ writer.write(
+ "\n <license name=\"" + license + "\"/>" );
+ }
+
+ final ResourceRef[] refs =
+ definition.getResourceRefs( Policy.ANY, ResourceRef.ANY, true );
+
+ String template = m_template.getFile();
+ String target = m_template.getTarget();
+
+ writer.write(
+ "\n <ant basedir=\"" + basedir + "\"" );
+ if( null != template )
+ {
+ writer.write(
+ "\n buildfile=\"" + template + "\"" );
+ }
+ if( null != target )
+ {
+ writer.write(
+ " target=\"" + target + "\"" );
+ }
+ writer.write( ">" );
+
+ writer.write(
+ "\n <!-- for magic -->" );
+ writer.write(
+ "\n <property name=\"gump.signature\" value=\"@@DATE@@\"/>" );
+
+ boolean flag = false;
+ for( int i=0; i<refs.length; i++ )
+ {
+ Resource resource = getHome().getResource( refs[i] );
+ if( !(resource instanceof Definition) )
+ {
+ if( !flag )
+ {
+ flag = true;
+ writer.write(
+ "\n <!-- external references -->" );
+ }
+ String key = resource.getKey();
+ String alias = getKeyForResource( resource );
+ writer.write(
+ "\n <depend property=\"gump.resource." + key
+ + "\" project=\"" + alias
+ + "\"/>" );
+ }
+ }
+
+ writer.write( "\n <!-- end for -->" );
+
+ flag = false;
+ writer.write( "\n </ant>" );
+ for( int i=0; i<refs.length; i++ )
+ {
+ Resource resource = getHome().getResource( refs[i] );
+ if( resource instanceof Definition )
+ {
+ if( !flag )
+ {
+ flag = true;
+ writer.write( "\n <!-- for gump -->" );
+ }
+ String key = resource.getKey();
+ writer.write(
+ "\n <depend project=\"" + key + "\"/>" );
+ }
+ }
+
+ if( flag )
+ {
+ writer.write( "\n <!-- end for -->" );
+ }
+
+ writer.write(
+ "\n <home nested=\""
+ + basedir + "/target/deliverables\"/>" );
+
+ String name = definition.getInfo().getName();
+ String type = definition.getInfo().getType();
+ if( "jar".equals( type ) || "bar".equals( type ) )
+ {
+ writer.write(
+ "\n <jar name=\"" + type + "s/"
+ + name + "-@@DATE@@.jar\"/>" );
+ }
+ if( "plugin".equals( type ) )
+ {
+ writer.write(
+ "\n <jar name=\"jars/"
+ + name + "-@@DATE@@.jar\"/>" );
+ }
+ else if( "doc".equals( type ) )
+ {
+ writer.write(
+ "\n <!-- doc output is relative to the module root -->" );
+ }
+
+ writer.write( "\n <nag to=\"dev@avalon.apache.org\"" );
+ writer.write( "\n from=\"Magic Integration <dev@avalon.apache.org>\"/>" );
+
+ writer.write( "\n </project>" );
+ }
+
+ private String getKeyForResource( Resource resource )
+ {
+ final String alias = resource.getGump().getAlias();
+ if( null != alias )
+ {
+ return alias;
+ }
+ else
+ {
+ return resource.getKey();
+ }
+ }
+
+ private void closeStream( final OutputStream output )
+ {
+ if( null != output )
+ {
+ try
+ {
+ output.close();
+ }
+ catch( IOException e )
+ {
+ // ignore
+ }
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org