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/06/11 13:27:40 UTC
svn commit: rev 21087 - in avalon/trunk: central/system runtime/merlin/impl tools/project/src/main/org/apache/avalon/tools/event tools/project/src/main/org/apache/avalon/tools/home tools/project/src/main/org/apache/avalon/tools/project tools/project/src/main/org/apache/avalon/tools/project/builder tools/project/src/main/org/apache/avalon/tools/tasks tools/project/src/test
Author: mcconnell
Date: Fri Jun 11 04:27:39 2004
New Revision: 21087
Removed:
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/PluginRef.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ProjectRef.java
Modified:
avalon/trunk/central/system/index.xml
avalon/trunk/runtime/merlin/impl/build.properties
avalon/trunk/runtime/merlin/impl/build.xml
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/event/StandardListener.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Repository.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Definition.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Plugin.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Resource.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ResourceRef.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/builder/XMLDefinitionBuilder.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeclareTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/FilterTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JavacTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java
avalon/trunk/tools/project/src/test/index.xml
Log:
Refactoring of the project model to improve the handling of scoped runtime dependencies.
Modified: avalon/trunk/central/system/index.xml
==============================================================================
--- avalon/trunk/central/system/index.xml (original)
+++ avalon/trunk/central/system/index.xml Fri Jun 11 04:27:39 2004
@@ -106,12 +106,10 @@
<version>2.0.0</version>
</info>
<dependencies>
- <resources>
- <resourceref key="log4j" runtime="false"/>
- <resourceref key="servletapi" runtime="false"/>
- <resourceref key="mailapi" runtime="false"/>
- <resourceref key="jms" runtime="false"/>
- </resources>
+ <include key="log4j" runtime="false"/>
+ <include key="servletapi" runtime="false"/>
+ <include key="mailapi" runtime="false"/>
+ <include key="jms" runtime="false"/>
</dependencies>
</project>
@@ -126,9 +124,7 @@
<version>4.2.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logkit" runtime="false" test="false"/>
- </projects>
+ <include key="avalon-logkit" runtime="false" test="false"/>
</dependencies>
</project>
@@ -139,9 +135,7 @@
<version>4.2.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
+ <include key="avalon-framework-api"/>
</dependencies>
</project>
@@ -160,13 +154,11 @@
<info>
<group>avalon/util</group>
<name>avalon-util-configuration</name>
- <version>1.0-dev</version>
+ <version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- <projectref key="avalon-framework-impl"/>
- </projects>
+ <include key="avalon-framework-api"/>
+ <include key="avalon-framework-impl"/>
</dependencies>
</project>
@@ -185,9 +177,7 @@
<version>1.2.1</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-util-env"/>
- </projects>
+ <include key="avalon-util-env"/>
</dependencies>
</project>
@@ -230,9 +220,7 @@
<version>1.2.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-util-extension-api"/>
- </projects>
+ <include key="avalon-util-extension-api"/>
</dependencies>
</project>
@@ -243,9 +231,7 @@
<version>1.1.1</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
+ <include key="avalon-framework-api"/>
</dependencies>
</project>
@@ -260,10 +246,8 @@
<version>1.4.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- <projectref key="avalon-framework-impl" compile="false" test="true"/>
- </projects>
+ <include key="avalon-framework-api"/>
+ <include key="avalon-framework-impl" compile="false" test="true" runtime="false"/>
</dependencies>
</project>
@@ -274,9 +258,7 @@
<version>1.4.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-meta-api"/>
- </projects>
+ <include key="avalon-meta-api"/>
</dependencies>
</project>
@@ -287,11 +269,9 @@
<version>1.4.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-meta-spi"/>
- <projectref key="avalon-util-i18n"/>
- <projectref key="avalon-util-configuration"/>
- </projects>
+ <include key="avalon-meta-spi"/>
+ <include key="avalon-util-i18n"/>
+ <include key="avalon-util-configuration"/>
</dependencies>
</project>
@@ -302,12 +282,8 @@
<version>1.4.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-meta-impl"/>
- </projects>
- <resources>
- <resourceref key="qdox"/>
- </resources>
+ <include key="avalon-meta-impl"/>
+ <include key="qdox"/>
</dependencies>
<tasks>
<taskdef name="meta" class="org.apache.avalon.meta.info.ant.MetaTask"/>
@@ -324,13 +300,11 @@
<name>avalon-test-dynamics</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-impl"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-impl"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/playground">
@@ -339,14 +313,12 @@
<name>avalon-test-playground</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-impl"/>
- <projectref key="avalon-util-lifecycle"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-impl"/>
+ <include key="avalon-util-lifecycle"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/testa">
@@ -355,14 +327,12 @@
<name>avalon-test-testa</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- <projectref key="avalon-util-configuration"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-api"/>
+ <include key="avalon-util-configuration"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/testb">
@@ -371,13 +341,11 @@
<name>avalon-test-testb</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-api"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/testc">
@@ -386,13 +354,11 @@
<name>avalon-test-testc</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-api"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/testd">
@@ -401,13 +367,11 @@
<name>avalon-test-testd</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-api"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/teste">
@@ -416,13 +380,11 @@
<name>avalon-test-teste</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-api"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<project basedir="../../runtime/test/includes">
@@ -431,14 +393,12 @@
<name>avalon-test-includes</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-test-playground" build="false" runtime="false"/>
- <projectref key="avalon-test-testa" build="false" runtime="false"/>
- <projectref key="avalon-test-testb" build="false" runtime="false"/>
- <projectref key="avalon-test-testc" build="false" runtime="false"/>
- <projectref key="avalon-test-testd" build="false" runtime="false"/>
- <projectref key="avalon-test-teste" build="false" runtime="false"/>
- </projects>
+ <include key="avalon-test-playground" build="false" runtime="false"/>
+ <include key="avalon-test-testa" build="false" runtime="false"/>
+ <include key="avalon-test-testb" build="false" runtime="false"/>
+ <include key="avalon-test-testc" build="false" runtime="false"/>
+ <include key="avalon-test-testd" build="false" runtime="false"/>
+ <include key="avalon-test-teste" build="false" runtime="false"/>
</dependencies>
</project>
@@ -448,13 +408,11 @@
<name>avalon-test-components</name>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-framework-api"/>
- </projects>
- <plugins>
- <pluginref key="avalon-meta-tools"/>
- </plugins>
+ <include key="avalon-framework-api"/>
</dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
</project>
<!--
@@ -476,9 +434,7 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-repository-api"/>
- </projects>
+ <include key="avalon-repository-api"/>
</dependencies>
</project>
@@ -489,9 +445,7 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-repository-api"/>
- </projects>
+ <include key="avalon-repository-api"/>
</dependencies>
</project>
@@ -502,9 +456,7 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-repository-main" runtime="false"/>
- </projects>
+ <include key="avalon-repository-main" runtime="false"/>
</dependencies>
</project>
@@ -515,15 +467,13 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-repository-spi"/>
- <projectref key="avalon-repository-util"/>
- <projectref key="avalon-util-exception"/>
- <projectref key="avalon-util-env"/>
- <projectref key="avalon-util-i18n"/>
- <projectref key="avalon-util-criteria"/>
- <projectref key="avalon-util-defaults"/>
- </projects>
+ <include key="avalon-repository-spi"/>
+ <include key="avalon-repository-util"/>
+ <include key="avalon-util-exception"/>
+ <include key="avalon-util-env"/>
+ <include key="avalon-util-i18n"/>
+ <include key="avalon-util-criteria"/>
+ <include key="avalon-util-defaults"/>
</dependencies>
</project>
@@ -535,12 +485,8 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-repository-main"/>
- </projects>
- <resources>
- <resourceref key="commons-cli"/>
- </resources>
+ <include key="avalon-repository-main"/>
+ <include key="commons-cli"/>
</dependencies>
</project>
@@ -551,11 +497,9 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-repository-impl" test="false"/>
- <projectref key="avalon-repository-main"/>
- <projectref key="avalon-framework-impl" test="true"/>
- </projects>
+ <include key="avalon-repository-impl" test="false"/>
+ <include key="avalon-repository-main"/>
+ <include key="avalon-framework-impl" test="true"/>
</dependencies>
</project>
@@ -578,11 +522,9 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-api"/>
- <projectref key="avalon-repository-spi"/>
- <projectref key="avalon-framework-api"/>
- </projects>
+ <include key="avalon-logging-api"/>
+ <include key="avalon-repository-spi"/>
+ <include key="avalon-framework-api"/>
</dependencies>
</project>
@@ -593,10 +535,8 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-spi"/>
- <projectref key="avalon-repository-main" runtime="false"/>
- </projects>
+ <include key="avalon-logging-spi"/>
+ <include key="avalon-repository-main" runtime="false"/>
</dependencies>
</project>
@@ -607,12 +547,8 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-impl" runtime="false"/>
- </projects>
- <resources>
- <resourceref key="log4j"/>
- </resources>
+ <include key="avalon-logging-impl" runtime="false"/>
+ <include key="log4j"/>
</dependencies>
</project>
@@ -623,10 +559,8 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-spi" runtime="false"/>
- <projectref key="avalon-logkit"/>
- </projects>
+ <include key="avalon-logging-spi" runtime="false"/>
+ <include key="avalon-logkit"/>
</dependencies>
</project>
@@ -637,11 +571,9 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-logkit-api"/>
- <projectref key="avalon-logging-impl" runtime="false"/>
- <projectref key="avalon-util-configuration"/>
- </projects>
+ <include key="avalon-logging-logkit-api"/>
+ <include key="avalon-logging-impl" runtime="false"/>
+ <include key="avalon-util-configuration"/>
</dependencies>
</project>
@@ -652,10 +584,8 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-logkit-api" runtime="false"/>
- <projectref key="avalon-repository-main" runtime="false"/>
- </projects>
+ <include key="avalon-logging-logkit-api" runtime="false"/>
+ <include key="avalon-repository-main" runtime="false"/>
</dependencies>
</project>
@@ -666,10 +596,8 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-logkit-api" runtime="false"/>
- <projectref key="avalon-repository-main" runtime="false"/>
- </projects>
+ <include key="avalon-logging-logkit-api" runtime="false"/>
+ <include key="avalon-repository-main" runtime="false"/>
</dependencies>
</project>
@@ -680,10 +608,8 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-logkit-api" runtime="false"/>
- <projectref key="avalon-repository-main" runtime="false"/>
- </projects>
+ <include key="avalon-logging-logkit-api" runtime="false"/>
+ <include key="avalon-repository-main" runtime="false"/>
</dependencies>
</project>
@@ -694,17 +620,15 @@
<version>1.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-logging-logkit-impl" test="false"/>
- <projectref key="avalon-logging-log4j" test="false"/>
- <projectref key="avalon-logging-logkit-syslog" test="false"/>
- <projectref key="avalon-logging-logkit-socket" test="false"/>
- <projectref key="avalon-logging-logkit-datagram" test="false"/>
- <projectref key="avalon-repository-main"/>
- <projectref key="avalon-logging-impl"/>
- <projectref key="avalon-framework-impl"/>
- <projectref key="avalon-repository-test" build="false" test="false" runtime="false"/>
- </projects>
+ <include key="avalon-logging-logkit-impl" test="false"/>
+ <include key="avalon-logging-log4j" test="false"/>
+ <include key="avalon-logging-logkit-syslog" test="false"/>
+ <include key="avalon-logging-logkit-socket" test="false"/>
+ <include key="avalon-logging-logkit-datagram" test="false"/>
+ <include key="avalon-repository-main"/>
+ <include key="avalon-logging-impl"/>
+ <include key="avalon-framework-impl"/>
+ <include key="avalon-repository-test" build="false" test="false" runtime="false"/>
</dependencies>
</project>
@@ -719,12 +643,10 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-util-extension-api"/>
- <projectref key="avalon-repository-api"/>
- <projectref key="avalon-logging-spi"/>
- <projectref key="avalon-meta-api"/>
- </projects>
+ <include key="avalon-util-extension-api"/>
+ <include key="avalon-repository-api"/>
+ <include key="avalon-logging-api"/>
+ <include key="avalon-meta-api"/>
</dependencies>
</project>
@@ -735,9 +657,8 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-composition-api"/>
- </projects>
+ <include key="avalon-composition-api"/>
+ <include key="avalon-logging-spi"/>
</dependencies>
</project>
@@ -745,21 +666,19 @@
<info>
<group>avalon/composition</group>
<name>avalon-composition-impl</name>
- <version>2.0.1-dev</version>
+ <version>2.0.1</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-composition-spi"/>
- <projectref key="avalon-repository-main"/>
- <projectref key="avalon-meta-impl"/>
- <projectref key="avalon-util-configuration"/>
- <projectref key="avalon-util-extension-impl"/>
- <projectref key="avalon-util-lifecycle"/>
- <projectref key="avalon-logging-impl" build="false" test="true"/>
- <projectref key="avalon-test-dynamics" build="false" test="true" runtime="false"/>
- <projectref key="avalon-test-includes" build="false" test="true" runtime="false"/>
- <projectref key="avalon-logging-test" build="false" test="false" runtime="false"/>
- </projects>
+ <include key="avalon-composition-spi"/>
+ <include key="avalon-repository-main"/>
+ <include key="avalon-meta-impl"/>
+ <include key="avalon-util-configuration"/>
+ <include key="avalon-util-extension-impl"/>
+ <include key="avalon-util-lifecycle"/>
+ <include key="avalon-logging-impl" build="false" test="true"/>
+ <include key="avalon-test-dynamics" build="false" test="true" runtime="false"/>
+ <include key="avalon-test-includes" build="false" test="true" runtime="false"/>
+ <include key="avalon-logging-test" build="false" test="false" runtime="false"/>
</dependencies>
</project>
@@ -774,9 +693,7 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-composition-api"/>
- </projects>
+ <include key="avalon-composition-api"/>
</dependencies>
</project>
@@ -787,17 +704,15 @@
<version>2.0.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-util-lifecycle"/>
- <projectref key="avalon-util-i18n"/>
- <projectref key="avalon-util-defaults"/>
- <projectref key="avalon-repository-spi"/>
- <projectref key="avalon-composition-spi"/>
- <projectref key="avalon-composition-impl" build="false" test="true" runtime="false"/>
- <projectref key="avalon-activation-api"/>
- <projectref key="avalon-test-components" build="false" test="true" runtime="false"/>
- <projectref key="avalon-test-playground" build="false" test="true" runtime="false"/>
- </projects>
+ <include key="avalon-util-lifecycle"/>
+ <include key="avalon-util-i18n"/>
+ <include key="avalon-util-defaults"/>
+ <include key="avalon-repository-spi"/>
+ <include key="avalon-composition-spi"/>
+ <include key="avalon-composition-impl" build="false" test="true" runtime="false"/>
+ <include key="avalon-activation-api"/>
+ <include key="avalon-test-components" build="false" test="true" runtime="false"/>
+ <include key="avalon-test-playground" build="false" test="true" runtime="false"/>
</dependencies>
</project>
@@ -812,9 +727,7 @@
<version>3.3.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-composition-api"/>
- </projects>
+ <include key="avalon-composition-api"/>
</dependencies>
</project>
@@ -825,12 +738,18 @@
<version>3.3.0</version>
</info>
<dependencies>
- <projects>
- <projectref key="avalon-merlin-api"/>
- <projectref key="avalon-composition-impl"/>
- <projectref key="avalon-repository-main"/>
- <projectref key="avalon-util-configuration"/>
- </projects>
+ <include key="avalon-framework-api" tag="api"/>
+ <include key="avalon-util-extension-api" tag="api"/>
+ <include key="avalon-merlin-api" tag="api"/>
+ <include key="avalon-repository-api" tag="api"/>
+ <include key="avalon-util-lifecycle" tag="api"/>
+ <include key="avalon-meta-spi" tag="spi"/>
+ <include key="avalon-repository-spi" tag="spi"/>
+ <include key="avalon-logging-spi" tag="spi"/>
+ <include key="avalon-composition-spi" tag="spi"/>
+ <include key="avalon-composition-impl" tag="impl"/>
+ <include key="avalon-util-configuration" tag="impl"/>
+ <include key="avalon-repository-main" runtime="false"/>
</dependencies>
</project>
Modified: avalon/trunk/runtime/merlin/impl/build.properties
==============================================================================
--- avalon/trunk/runtime/merlin/impl/build.properties (original)
+++ avalon/trunk/runtime/merlin/impl/build.properties Fri Jun 11 04:27:39 2004
@@ -1,3 +1,6 @@
+
project.name = avalon-merlin-impl
project.src.main = java
project.home = ../../../central/system
+
+avalon.artifact.factory = org.apache.avalon.merlin.impl.DefaultFactory
Modified: avalon/trunk/runtime/merlin/impl/build.xml
==============================================================================
--- avalon/trunk/runtime/merlin/impl/build.xml (original)
+++ avalon/trunk/runtime/merlin/impl/build.xml Fri Jun 11 04:27:39 2004
@@ -8,7 +8,11 @@
<target name="init" depends="standard.init">
<x:filter key="avalon-logging-logkit-impl" feature="uri"
- token="AVALON-LOGGING-LOGKIT-SPEC"/>
+ token="LOGGING_IMPLEMENTATION"/>
+ <x:filter key="avalon-merlin-impl" feature="uri"
+ token="MERLIN_IMPLEMENTATION"/>
+ <x:filter key="avalon-activation-impl" feature="uri"
+ token="STANDARD_RUNTIME"/>
</target>
<target name="package" depends="standard.package">
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/event/StandardListener.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/event/StandardListener.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/event/StandardListener.java Fri Jun 11 04:27:39 2004
@@ -30,7 +30,7 @@
import org.apache.avalon.tools.home.Home;
import org.apache.avalon.tools.project.Definition;
-import org.apache.avalon.tools.project.PluginRef;
+import org.apache.avalon.tools.project.ResourceRef;
import org.apache.avalon.tools.project.Plugin;
/**
@@ -74,16 +74,6 @@
project.log( "project: " + getDefinition() );
project.log( "basedir: " + project.getBaseDir() );
project.log( BANNER );
-
- /*
- PluginRef[] refs = getDefinition().getPluginRefs();
- for( int i=0; i<refs.length; i++ )
- {
- PluginRef ref = refs[i];
- Plugin plugin = getHome().getPlugin( ref );
- project.log( "plugin ref: " + plugin );
- }
- */
}
private Task getTask()
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java Fri Jun 11 04:27:39 2004
@@ -49,10 +49,8 @@
import org.apache.avalon.tools.event.StandardListener;
import org.apache.avalon.tools.project.Definition;
-import org.apache.avalon.tools.project.ProjectRef;
import org.apache.avalon.tools.project.ResourceRef;
import org.apache.avalon.tools.project.Resource;
-import org.apache.avalon.tools.project.PluginRef;
import org.apache.avalon.tools.project.Plugin;
import org.apache.avalon.tools.project.builder.XMLDefinitionBuilder;
import org.apache.avalon.tools.util.ElementHelper;
@@ -138,6 +136,11 @@
return m_system;
}
+ public long getIndexLastModified()
+ {
+ return getIndexFile().lastModified();
+ }
+
public Repository getRepository()
{
return m_repository;
@@ -146,8 +149,13 @@
public Resource[] getResources()
{
return (Resource[]) m_resources.values().toArray( new Resource[0] );
+ }
+ public boolean isaDefinition( ResourceRef ref )
+ {
+ return ( getResource( ref ) instanceof Definition );
}
+
public Definition[] getDefinitions()
throws BuildException
{
@@ -164,18 +172,6 @@
return (Definition[]) list.toArray( new Definition[0] );
}
- public Plugin getPlugin( PluginRef ref )
- throws BuildException
- {
- return (Plugin) getDefinition( ref );
- }
-
- public Definition getDefinition( ProjectRef ref )
- throws BuildException
- {
- return getDefinition( ref.getKey() );
- }
-
public Resource getResource( ResourceRef ref )
throws BuildException
{
@@ -193,100 +189,46 @@
public Definition getDefinition( String key )
throws BuildException
{
- return getDefinition( key, true );
+ ResourceRef ref = new ResourceRef( key );
+ return getDefinition( ref );
}
- public Definition getDefinition( String key, boolean fail )
+ public Definition getDefinition( ResourceRef ref )
throws BuildException
{
- Resource def = (Resource) m_resources.get( key );
- if( null == def )
+ Resource resource = getResource( ref );
+ if( resource instanceof Definition )
{
- if( fail )
- {
- final String error =
- "Unknown definition [" + key + "]";
- throw new BuildException( error );
- }
+ return (Definition) resource;
}
else
{
- if( def instanceof Definition )
- {
- return (Definition) def;
- }
- else
- {
- if( fail )
- {
- final String error =
- "Key [" + key + "] is not project.";
- throw new BuildException( error );
- }
- }
+ final String error =
+ "Reference [" + ref + "] does not refer to a projects.";
+ throw new BuildException( error );
}
- return null;
}
- /*
- public void build( Definition definition )
- {
- Ant ant = (Ant) getProject().createTask( "ant" );
- Property property = ant.createProperty();
- property.setName( "urn:avalon.definition.key" );
- property.setValue( definition.getKey() );
- ant.setDir( definition.getBasedir() );
- ant.setInheritRefs( true );
- ant.init();
- ant.execute();
- }
-
- public Definition[] getBuildSequence( Definition definition )
+ public Plugin getPlugin( ResourceRef ref )
+ throws BuildException
{
- ArrayList visited = new ArrayList();
- ArrayList targets = new ArrayList();
- ProjectRef[] refs = definition.getProjectRefs();
- for( int i=0; i<refs.length; i++ )
+ Resource resource = getResource( ref );
+ if( resource instanceof Plugin )
{
- Definition def = getDefinition( refs[i] );
- getBuildSequence( visited, targets, def );
+ return (Plugin) resource;
+ }
+ else
+ {
+ final String error =
+ "Reference [" + ref + "] does not refer to a plugin.";
+ throw new BuildException( error );
}
- return (Definition[]) targets.toArray( new Definition[0] );
}
- */
//-------------------------------------------------------------
// internal
//-------------------------------------------------------------
- /*
- private void getBuildSequence( List visited, List targets, Definition definition )
- {
- if( visited.contains( definition ) ) return;
- visited.add( definition );
-
- ProjectRef[] refs = definition.getProjectRefs();
- for( int i=0; i<refs.length; i++ )
- {
- Definition def = getDefinition( refs[i] );
- if( visited.contains( def ) )
- {
- final String error =
- "Recursive reference identified in project: "
- + definition
- + " in dependency " + def + ".";
- throw new BuildException( error );
- }
- getBuildSequence( visited, targets, def );
- }
-
- if( !targets.contains( definition ) )
- {
- targets.add( definition );
- }
- }
- */
-
private void buildResourceList( Element resources )
{
if( null == resources ) return;
@@ -431,5 +373,59 @@
props.execute();
}
+ /*
+ public void build( Definition definition )
+ {
+ Ant ant = (Ant) getProject().createTask( "ant" );
+ Property property = ant.createProperty();
+ property.setName( "urn:avalon.definition.key" );
+ property.setValue( definition.getKey() );
+ ant.setDir( definition.getBasedir() );
+ ant.setInheritRefs( true );
+ ant.init();
+ ant.execute();
+ }
+
+ public Definition[] getBuildSequence( Definition definition )
+ {
+ ArrayList visited = new ArrayList();
+ ArrayList targets = new ArrayList();
+ ProjectRef[] refs = definition.getProjectRefs();
+ for( int i=0; i<refs.length; i++ )
+ {
+ Definition def = getDefinition( refs[i] );
+ getBuildSequence( visited, targets, def );
+ }
+ return (Definition[]) targets.toArray( new Definition[0] );
+ }
+ */
+
+ /*
+ private void getBuildSequence( List visited, List targets, Definition definition )
+ {
+ if( visited.contains( definition ) ) return;
+ visited.add( definition );
+
+ ProjectRef[] refs = definition.getProjectRefs();
+ for( int i=0; i<refs.length; i++ )
+ {
+ Definition def = getDefinition( refs[i] );
+ if( visited.contains( def ) )
+ {
+ final String error =
+ "Recursive reference identified in project: "
+ + definition
+ + " in dependency " + def + ".";
+ throw new BuildException( error );
+ }
+ getBuildSequence( visited, targets, def );
+ }
+
+ if( !targets.contains( definition ) )
+ {
+ targets.add( definition );
+ }
+ }
+ */
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Repository.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Repository.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Repository.java Fri Jun 11 04:27:39 2004
@@ -48,7 +48,6 @@
import org.apache.avalon.tools.util.ElementHelper;
import org.apache.avalon.tools.project.Definition;
import org.apache.avalon.tools.project.ResourceRef;
-import org.apache.avalon.tools.project.ProjectRef;
import org.apache.avalon.tools.project.Resource;
import org.apache.avalon.tools.project.Policy;
@@ -93,6 +92,86 @@
return m_hosts;
}
+ private File getCanonicalFile( File file ) throws BuildException
+ {
+ try
+ {
+ return file.getCanonicalFile();
+ }
+ catch( IOException ioe )
+ {
+ throw new BuildException( ioe );
+ }
+ }
+
+ private String[] getHostsSequence( Element element )
+ {
+ if( null == element )
+ {
+ return new String[0];
+ }
+
+ Element[] children =
+ ElementHelper.getChildren( element, "host" );
+ String[] list = new String[ children.length ];
+ for( int i=0; i<children.length; i++ )
+ {
+ Element child = children[i];
+ list[i] = ElementHelper.getValue( child );
+ }
+ return list;
+ }
+
+ private String getCachePath( Element element )
+ {
+ if( null != element )
+ {
+ String path = element.getAttribute( "dir" );
+ if( null != path )
+ {
+ return path;
+ }
+ }
+
+ return ".cache";
+ }
+
+ /*
+ public ResourceRef[] getShortResourceRefs( Definition def, int mode, int category )
+ {
+ ArrayList list = new ArrayList();
+ getShortResourceRefs( def, list, mode, category );
+ return (ResourceRef[]) list.toArray( new ResourceRef[0] );
+ }
+
+ private void getShortResourceRefs( Definition def, List list, int mode, int category )
+ {
+ ResourceRef[] refs = def.getResourceRefs();
+System.out.println( "short: " + def + ", " + category + ", " + refs.length );
+ for( int i=0; i<refs.length; i++ )
+ {
+ ResourceRef ref = refs[i];
+ if( !list.contains( ref ) )
+ {
+ Policy policy = ref.getPolicy();
+ if( policy.matches( mode ) )
+ {
+System.out.println( " candidate: " + ref + ", " + ref.matches( category ) );
+ if( ref.matches( category ) )
+ {
+ list.add( ref );
+ if( ref instanceof ProjectRef )
+ {
+ ProjectRef pr = (ProjectRef) ref;
+ Definition d = m_home.getDefinition( pr );
+ getShortResourceRefs( d, list, mode, ResourceRef.ANY );
+ }
+ }
+ }
+ }
+ }
+ }
+
public ResourceRef[] getResourceRefs( Definition def )
{
return getResourceRefs( def, Policy.ANY );
@@ -137,7 +216,9 @@
}
}
}
+ */
+ /*
public Path createPath( Project project, Definition def )
throws BuildException
{
@@ -176,7 +257,7 @@
Resource resource = m_home.getResource( ref );
try
{
- getResource( project, resource );
+ resource.getArtifact( project );
FileList file = getResourceFileList( project, resource );
path.addFilelist( file );
}
@@ -187,6 +268,12 @@
buffer.append( ": " );
buffer.append( resource.getInfo() );
}
+ if( resource instanceof Definition )
+ {
+ Defintion defintion = (Definition) resource;
+ Path projectPath = createPath( project, defintion, false, policy );
+ path.add( projectPath );
+ }
}
}
@@ -198,34 +285,6 @@
throw new BuildException( error );
}
- //
- // add each dependent project's path
- //
-
- ProjectRef[] projects = def.getProjectRefs();
- for( int i=0; i<projects.length; i++ )
- {
- ProjectRef ref = projects[i];
- if( ref.getPolicy().matches( policy ) )
- {
- Definition defintion = m_home.getDefinition( ref );
- Path projectPath = createPath( project, defintion, true, policy );
- File file = new File( getCacheDirectory(), defintion.getInfo().getPath() );
- if( file.exists() )
- {
- path.add( projectPath );
- }
- else
- {
- final String error =
- "Cannot construct a valid path for the project "
- + def + " because the dependent project "
- + defintion + " has not installed an artifact.";
- throw new BuildException( error );
- }
- }
- }
-
if( flag )
{
File file = new File( getCacheDirectory(), def.getInfo().getPath() );
@@ -257,6 +316,19 @@
}
}
+ private FileList getResourceFileList( Project project, Resource resource )
+ throws Exception
+ {
+ FileList list = new FileList();
+ list.setProject( project );
+ list.setDir( getCacheDirectory() );
+ String path = resource.getInfo().getPath();
+ list.setFiles( path );
+ return list;
+ }
+ */
+
+ /*
public File getResource( Project project, Resource resource )
throws Exception
{
@@ -303,59 +375,6 @@
return target;
}
+ */
- private FileList getResourceFileList( Project project, Resource resource )
- throws Exception
- {
- FileList list = new FileList();
- list.setProject( project );
- list.setDir( getCacheDirectory() );
- String path = resource.getInfo().getPath();
- list.setFiles( path );
- return list;
- }
-
- private File getCanonicalFile( File file ) throws BuildException
- {
- try
- {
- return file.getCanonicalFile();
- }
- catch( IOException ioe )
- {
- throw new BuildException( ioe );
- }
- }
-
- private String[] getHostsSequence( Element element )
- {
- if( null == element )
- {
- return new String[0];
- }
-
- Element[] children =
- ElementHelper.getChildren( element, "host" );
- String[] list = new String[ children.length ];
- for( int i=0; i<children.length; i++ )
- {
- Element child = children[i];
- list[i] = ElementHelper.getValue( child );
- }
- return list;
- }
-
- private String getCachePath( Element element )
- {
- if( null != element )
- {
- String path = element.getAttribute( "dir" );
- if( null != path )
- {
- return path;
- }
- }
-
- return ".cache";
- }
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Definition.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Definition.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Definition.java Fri Jun 11 04:27:39 2004
@@ -18,6 +18,14 @@
package org.apache.avalon.tools.project;
import java.io.File;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.FileSet;
+
+import org.apache.avalon.tools.home.Home;
/**
* Defintion of a project.
@@ -27,19 +35,17 @@
*/
public class Definition extends Resource
{
- private ProjectRef[] m_projects;
private ResourceRef[] m_resources;
- private PluginRef[] m_plugins;
+ private ResourceRef[] m_plugins;
private File m_basedir;
public Definition(
- String key, File basedir, Info info,
- ResourceRef[] resources, ProjectRef[] projects, PluginRef[] plugins )
+ Home home, String key, File basedir, Info info,
+ ResourceRef[] resources, ResourceRef[] plugins )
{
- super( key, info );
+ super( home, key, info );
m_basedir = basedir;
- m_projects = projects;
m_resources = resources;
m_plugins = plugins;
}
@@ -49,21 +55,67 @@
return m_basedir;
}
- public ProjectRef[] getProjectRefs()
+ public ResourceRef[] getResourceRefs()
{
- return m_projects;
+ return m_resources;
}
- public ResourceRef[] getResourceRefs()
+ public ResourceRef[] getResourceRefs( int mode, int tag, boolean flag )
{
- return m_resources;
+ ArrayList list = new ArrayList();
+//System.out.println( "#THIS " + this + ", mode: " + mode + ", tag: " + tag );
+ getResourceRefs( list, mode, tag, flag );
+ return (ResourceRef[]) list.toArray( new ResourceRef[0] );
+ }
+
+ protected void getResourceRefs( List list, int mode, int tag, boolean flag )
+ {
+ ResourceRef[] refs = getResourceRefs();
+ for( int i=0; i<refs.length; i++ )
+ {
+ ResourceRef ref = refs[i];
+ if( !list.contains( ref ) )
+ {
+//System.out.println( "#REF: " + ref + ", " + ref.getPolicy().matches( mode ) + ", " + ref.matches( tag ) );
+ Policy policy = ref.getPolicy();
+ if( policy.matches( mode ) && ref.matches( tag ) )
+ {
+ list.add( ref );
+ if( flag && getHome().isaDefinition( ref ) )
+ {
+ Definition def = getHome().getDefinition( ref );
+ def.getResourceRefs( list, mode, tag, flag );
+ }
+ }
+ }
+ }
}
- public PluginRef[] getPluginRefs()
+ public ResourceRef[] getPluginRefs()
{
return m_plugins;
}
+ public Path getPath( Project project, int mode )
+ {
+ if( null == project )
+ {
+ throw new NullPointerException( "project" );
+ }
+
+ Path path = new Path( project );
+ ResourceRef[] refs = getResourceRefs( mode, ResourceRef.ANY, true );
+ for( int i=0; i<refs.length; i++ )
+ {
+ ResourceRef ref = refs[i];
+ Resource resource = getHome().getResource( ref );
+ File file = resource.getArtifact( project );
+ path.createPathElement().setLocation( file );
+ }
+
+ return path;
+ }
+
public String toString()
{
return "[" + getInfo().getGroup() + "/" + getInfo().getName() + "]";
@@ -74,21 +126,15 @@
if( super.equals( other ) && ( other instanceof Definition ))
{
Definition def = (Definition) other;
- ProjectRef[] refs = getProjectRefs();
- ProjectRef[] refs2 = def.getProjectRefs();
+ ResourceRef[] refs = getResourceRefs();
+ ResourceRef[] references = def.getResourceRefs();
for( int i=0; i<refs.length; i++ )
{
- if( !refs[i].equals( refs2[i] ) ) return false;
+ if( !refs[i].equals( references[i] ) ) return false;
}
- ResourceRef[] resources = getResourceRefs();
- ResourceRef[] resources2 = def.getResourceRefs();
- for( int i=0; i<resources.length; i++ )
- {
- if( !resources[i].equals( resources2[i] ) ) return false;
- }
- PluginRef[] plugins = getPluginRefs();
- PluginRef[] plugins2 = def.getPluginRefs();
+ ResourceRef[] plugins = getPluginRefs();
+ ResourceRef[] plugins2 = def.getPluginRefs();
for( int i=0; i<plugins.length; i++ )
{
if( !plugins[i].equals( plugins2[i] ) ) return false;
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Plugin.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Plugin.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Plugin.java Fri Jun 11 04:27:39 2004
@@ -19,6 +19,8 @@
import java.io.File;
+import org.apache.avalon.tools.home.Home;
+
/**
* Defintion of a project.
*
@@ -30,11 +32,11 @@
private final TaskDef[] m_tasks;
public Plugin(
- String key, File basedir, Info info,
- ResourceRef[] resources, ProjectRef[] projects, PluginRef[] plugins,
+ Home home, String key, File basedir, Info info,
+ ResourceRef[] resources, ResourceRef[] plugins,
TaskDef[] tasks )
{
- super( key, basedir, info, resources, projects, plugins );
+ super( home, key, basedir, info, resources, plugins );
m_tasks = tasks;
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Resource.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Resource.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/Resource.java Fri Jun 11 04:27:39 2004
@@ -18,9 +18,17 @@
package org.apache.avalon.tools.project;
import java.io.File;
+import java.io.FileNotFoundException;
+import java.net.URL;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Get;
+
+import org.apache.avalon.tools.home.Home;
/**
- * Defintion of a project.
+ * Defintion of a resource.
*
* @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
* @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
@@ -29,16 +37,18 @@
{
private String m_key;
private Info m_info;
+ private Home m_home;
- public Resource( Info info )
+ public Resource( Home home, Info info )
{
- this( null, info );
+ this( home, null, info );
}
- public Resource( String key, Info info )
+ public Resource( Home home, String key, Info info )
{
m_key = key;
m_info = info;
+ m_home = home;
}
public String getKey()
@@ -49,6 +59,61 @@
public Info getInfo()
{
return m_info;
+ }
+
+ protected Home getHome()
+ {
+ return m_home;
+ }
+
+ public File getArtifact( Project project )
+ {
+ //
+ // TODO: add support for snapshot semantics
+ // based on a resource feature
+ //
+
+ String path = getInfo().getPath();
+ File cache = getHome().getRepository().getCacheDirectory();
+ File target = new File( cache, path );
+ if( target.exists() )
+ {
+ return target;
+ }
+ else
+ {
+ return get( project, target, path );
+ }
+ }
+
+ private File get( Project project, File target, String path )
+ {
+ target.getParentFile().mkdirs();
+ String[] hosts = getHome().getRepository().getHosts();
+ for( int i=0; i<hosts.length; i++ )
+ {
+ String host = hosts[i];
+ try
+ {
+ URL url = new URL( host );
+ URL source = new URL( url, path );
+
+ Get get = (Get) project.createTask( "get" );
+ get.setSrc( source );
+ get.setDest( target );
+ get.setIgnoreErrors( false );
+ get.setUseTimestamp( true );
+ get.setVerbose( false );
+ get.execute();
+
+ return target;
+ }
+ catch( Throwable e )
+ {
+ // ignore
+ }
+ }
+ throw new BuildException( new FileNotFoundException( path ) );
}
public String toString()
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ResourceRef.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ResourceRef.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ResourceRef.java Fri Jun 11 04:27:39 2004
@@ -25,39 +25,53 @@
*/
public class ResourceRef
{
+ public static final int ANY = -1;
+ public static final int API = 0;
+ public static final int SPI = 1;
+ public static final int IMPL = 2;
+
private String m_key;
private Policy m_policy;
- private String m_tag;
+ private int m_tag;
- public ResourceRef( String key )
+ public static int getCategory( String category )
{
- this( key, new Policy(), null );
- }
-
- public ResourceRef( String key, Policy policy, String tag )
- {
- m_key = key;
- m_policy = policy;
- if( null == tag )
+ if( "api".equals( category ) )
{
- m_tag = "impl";
+ return API;
}
- else if( "".equals( tag ) )
+ else if( "spi".equals( category ) )
{
- m_tag = "impl";
+ return SPI;
+ }
+ else if( "impl".equals( category ) )
+ {
+ return IMPL;
}
else
{
- m_tag = tag;
+ return ANY;
}
}
+ public ResourceRef( String key )
+ {
+ this( key, new Policy(), ANY );
+ }
+
+ public ResourceRef( String key, Policy policy, int tag )
+ {
+ m_key = key;
+ m_policy = policy;
+ m_tag = tag;
+ }
+
public String getKey()
{
return m_key;
}
- public String getTag()
+ public int getTag()
{
return m_tag;
}
@@ -65,6 +79,18 @@
public Policy getPolicy()
{
return m_policy;
+ }
+
+ public boolean matches( int category )
+ {
+ if(( ANY == category ) || ( ANY == m_tag ))
+ {
+ return true;
+ }
+ else
+ {
+ return ( m_tag == category );
+ }
}
public boolean equals( Object other )
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/builder/XMLDefinitionBuilder.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/builder/XMLDefinitionBuilder.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/builder/XMLDefinitionBuilder.java Fri Jun 11 04:27:39 2004
@@ -29,10 +29,10 @@
import org.apache.avalon.tools.util.ElementHelper;
import org.apache.avalon.tools.project.Info;
import org.apache.avalon.tools.project.Definition;
-import org.apache.avalon.tools.project.ProjectRef;
+//import org.apache.avalon.tools.project.ProjectRef;
import org.apache.avalon.tools.project.ResourceRef;
import org.apache.avalon.tools.project.Resource;
-import org.apache.avalon.tools.project.PluginRef;
+//import org.apache.avalon.tools.project.PluginRef;
import org.apache.avalon.tools.project.Plugin;
import org.apache.avalon.tools.project.Plugin.TaskDef;
import org.apache.avalon.tools.project.Policy;
@@ -53,7 +53,7 @@
Info info =
createInfo( ElementHelper.getChild( element, "info" ) );
String key = getDefinitionKey( element, info );
- return new Resource( key, info );
+ return new Resource( home, key, info );
}
public static Definition createDefinition( Home home, Element element, File anchor )
@@ -65,30 +65,26 @@
File basedir = getBasedir( anchor, element );
- Element deps = ElementHelper.getChild( element, "dependencies" );
-
ResourceRef[] resources =
createResourceRefs(
- ElementHelper.getChild( deps, "resources" ) );
+ ElementHelper.getChild( element, "dependencies" ) );
- ProjectRef[] projects =
- createProjectRefs(
- ElementHelper.getChild( deps, "projects" ) );
-
- PluginRef[] plugins =
+ ResourceRef[] plugins =
createPluginRefs(
- ElementHelper.getChild( deps, "plugins" ) );
+ ElementHelper.getChild( element, "plugins" ) );
final String tag = element.getTagName();
if( tag.equals( "project" ) )
{
- return new Definition( key, basedir, info, resources, projects, plugins );
+ return new Definition(
+ home, key, basedir, info, resources, plugins );
}
else if( tag.equals( "plugin" ) )
{
TaskDef[] tasks =
getTaskDefs( ElementHelper.getChild( element, "tasks" ) );
- return new Plugin( key, basedir, info, resources, projects, plugins, tasks );
+ return new Plugin(
+ home, key, basedir, info, resources, plugins, tasks );
}
else
{
@@ -173,48 +169,31 @@
private static ResourceRef[] createResourceRefs( Element element )
throws BuildException
{
- Element[] children = ElementHelper.getChildren( element, "resourceref" );
+ Element[] children = ElementHelper.getChildren( element, "include" );
ResourceRef[] refs = new ResourceRef[ children.length ];
-
for( int i=0; i<children.length; i++ )
{
Element child = children[i];
String key = child.getAttribute( "key" );
- String tag = child.getAttribute( "tag" );
+ int tag = ResourceRef.getCategory( child.getAttribute( "tag" ) );
Policy policy = createPolicy( child );
refs[i] = new ResourceRef( key, policy, tag );
}
return refs;
}
- private static ProjectRef[] createProjectRefs( Element element )
- throws BuildException
- {
- Element[] children = ElementHelper.getChildren( element, "projectref" );
- ProjectRef[] refs = new ProjectRef[ children.length ];
- for( int i=0; i<children.length; i++ )
- {
- Element child = children[i];
- String key = child.getAttribute( "key" );
- String tag = child.getAttribute( "tag" );
- Policy policy = createPolicy( child );
- refs[i] = new ProjectRef( key, policy, tag );
- }
- return refs;
- }
-
- private static PluginRef[] createPluginRefs( Element element )
+ private static ResourceRef[] createPluginRefs( Element element )
throws BuildException
{
- Element[] children = ElementHelper.getChildren( element, "pluginref" );
- PluginRef[] refs = new PluginRef[ children.length ];
+ Element[] children = ElementHelper.getChildren( element, "include" );
+ ResourceRef[] refs = new ResourceRef[ children.length ];
for( int i=0; i<children.length; i++ )
{
Element child = children[i];
String key = child.getAttribute( "key" );
- String tag = child.getAttribute( "tag" );
+ int tag = ResourceRef.getCategory( child.getAttribute( "tag" ) );
Policy policy = createPolicy( child, false, false, false );
- refs[i] = new PluginRef( key, policy, tag );
+ refs[i] = new ResourceRef( key, policy, tag );
}
return refs;
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java Fri Jun 11 04:27:39 2004
@@ -28,6 +28,7 @@
import java.util.Date;
import java.util.SimpleTimeZone;
import java.util.TimeZone;
+import java.util.List;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
@@ -60,7 +61,8 @@
public void execute() throws BuildException
{
String key = getContext().getKey();
- Definition def = getHome().getDefinition( key );
+ ResourceRef ref = new ResourceRef( key );
+ Definition def = getHome().getDefinition( ref );
File artifact = getArtifactFile( def );
m_factory = getProject().getProperty( FACTORY_KEY );
@@ -80,20 +82,24 @@
if( file.exists() )
{
+ //
+ // TODO : check if the index.xml was modified
+ //
+
if( file.lastModified() > artifact.lastModified() )
{
- return;
+ if( getHome().getIndexLastModified() < file.lastModified() )
+ {
+ return;
+ }
}
}
try
{
-
log( "Creating meta directive" );
-
file.createNewFile();
final OutputStream output = new FileOutputStream( file );
-
try
{
writeMetaDescriptor( output, def, artifact );
@@ -206,8 +212,8 @@
private void writeClasspath( final Writer writer, final Definition def )
throws IOException
{
- ResourceRef[] refs = getRuntimeRefs( def );
- ResourceRef[] apis = getRefs( refs, "api" );
+ ArrayList visited = new ArrayList();
+ ResourceRef[] apis = getQualifiedRefs( def, visited, ResourceRef.API );
if( apis.length > 0 )
{
writer.write( "\n" );
@@ -217,7 +223,7 @@
String lead = "avalon.artifact.dependency.api";
writeRefs( writer, apis, lead );
}
- ResourceRef[] spis = getRefs( refs, "spi" );
+ ResourceRef[] spis = getQualifiedRefs( def, visited, ResourceRef.SPI );
if( spis.length > 0 )
{
writer.write( "\n" );
@@ -228,7 +234,7 @@
writeRefs( writer, spis, lead );
}
- ResourceRef[] impl = getRefs( refs, "impl" );
+ ResourceRef[] impl = getQualifiedRefs( def, visited, ResourceRef.IMPL );
if( impl.length > 0 )
{
writer.write( "\n" );
@@ -240,33 +246,17 @@
}
}
- private ResourceRef[] getRuntimeRefs( final Definition def )
- {
- ArrayList list = new ArrayList();
- ResourceRef[] resources =
- getHome().getRepository().getResourceRefs( def, Policy.RUNTIME );
- for( int i=0; i<resources.length; i++ )
- {
- ResourceRef ref = resources[i];
- Policy policy = ref.getPolicy();
- if( policy.isRuntimeEnabled() )
- {
- list.add( ref );
- }
- }
- return (ResourceRef[]) list.toArray( new ResourceRef[0] );
- }
-
- private ResourceRef[] getRefs( final ResourceRef[] refs, String category )
+ private ResourceRef[] getQualifiedRefs( final Definition def, final List visited, int category )
{
ArrayList list = new ArrayList();
+ ResourceRef[] refs = def.getResourceRefs( Policy.RUNTIME, category, true );
for( int i=0; i<refs.length; i++ )
{
ResourceRef ref = refs[i];
- String tag = ref.getTag();
- if( category.equals( tag ) )
+ if( !visited.contains( ref ) )
{
list.add( ref );
+ visited.add( ref );
}
}
return (ResourceRef[]) list.toArray( new ResourceRef[0] );
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeclareTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeclareTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeclareTask.java Fri Jun 11 04:27:39 2004
@@ -179,7 +179,10 @@
{
writer.write( "\n <classpath>" );
final String pad = " ";
- ResourceRef[] resources = getHome().getRepository().getResourceRefs( def );
+ ResourceRef[] resources =
+ def.getResourceRefs( Policy.RUNTIME, ResourceRef.ANY, true );
+
+ // getHome().getRepository().getResourceRefs( def );
writeResourceRefs( writer, pad, resources );
writeResource( writer, pad, def );
writer.write( "\n </classpath>" );
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/FilterTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/FilterTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/FilterTask.java Fri Jun 11 04:27:39 2004
@@ -35,8 +35,6 @@
import org.apache.avalon.tools.project.Resource;
import org.apache.avalon.tools.project.Definition;
import org.apache.avalon.tools.project.ResourceRef;
-import org.apache.avalon.tools.project.ProjectRef;
-import org.apache.avalon.tools.project.PluginRef;
/**
* Build a set of projects taking into account dependencies within the
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java Fri Jun 11 04:27:39 2004
@@ -110,8 +110,10 @@
File classes = new File( m_test, "classes" );
mkDir( classes );
Definition definition = getHome().getDefinition( getKey() );
- Path classpath =
- getHome().getRepository().createPath( project, definition, Policy.TEST );
+ Path classpath = definition.getPath( project, Policy.TEST );
+
+ //Path classpath =
+ // getHome().getRepository().createPath( project, definition, Policy.TEST );
//
// add the project jar to the classpath for the compilation
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java Fri Jun 11 04:27:39 2004
@@ -35,6 +35,7 @@
import org.apache.avalon.tools.home.Context;
import org.apache.avalon.tools.home.Home;
import org.apache.avalon.tools.project.Definition;
+import org.apache.avalon.tools.project.ResourceRef;
/**
* Load a goal.
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JavacTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JavacTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JavacTask.java Fri Jun 11 04:27:39 2004
@@ -33,6 +33,7 @@
import org.apache.avalon.tools.home.Home;
import org.apache.avalon.tools.project.Definition;
import org.apache.avalon.tools.project.Policy;
+import org.apache.avalon.tools.project.ResourceRef;
/**
* Compile sources.
@@ -77,9 +78,10 @@
File classes = getContext().getBuildPath( BUILD_CLASSES_KEY );
mkDir( classes );
- Path classpath =
- getHome().getRepository().createPath(
- getProject(), getHome().getDefinition( getKey() ), Policy.BUILD );
+ ResourceRef ref = new ResourceRef( getKey() );
+ Definition definition = getHome().getDefinition( ref );
+ Path classpath = definition.getPath( project, Policy.BUILD );
+
compile( main, classes, classpath );
Copy copy = (Copy) getProject().createTask( "copy" );
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java Fri Jun 11 04:27:39 2004
@@ -84,14 +84,16 @@
Info info = Info.create( id );
Project project = getProject();
- Resource resource = new Resource( info );
- File file = getHome().getRepository().getResource( project, resource );
+ Resource resource = new Resource( getHome(), info );
+ File file = resource.getArtifact( project );
+
+ //File file = getHome().getRepository().getResource( project, resource );
//
// create a utility data object from the defintion
//
- AntLibData data = new AntLibData( getProject(), file );
+ AntLibData data = new AntLibData( getHome(), getProject(), file );
AntClassLoader classloader = project.createClassLoader( data.getPath() );
String spec = data.getInfo().getSpec();
@@ -126,7 +128,7 @@
private final Path m_path = new Path( project );
private final TaskDef[] m_tasks;
- public AntLibData( Project project, File file ) throws Exception
+ public AntLibData( Home home, Project project, File file ) throws Exception
{
Element root = ElementHelper.getRootElement( file );
Element infoElement = ElementHelper.getChild( root, "info" );
@@ -142,9 +144,10 @@
String type = child.getTagName();
String value = ElementHelper.getValue( child );
Info info = Info.create( type, value );
- Resource resource = new Resource( info );
- File jar =
- getHome().getRepository().getResource( project, resource );
+ Resource resource = new Resource( home, info );
+ File jar = resource.getArtifact( project );
+ //File jar =
+ // getHome().getRepository().getResource( project, resource );
m_path.createPathElement().setLocation( jar );
}
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java Fri Jun 11 04:27:39 2004
@@ -32,7 +32,7 @@
import org.apache.avalon.tools.home.Context;
import org.apache.avalon.tools.project.Definition;
-import org.apache.avalon.tools.project.PluginRef;
+import org.apache.avalon.tools.project.ResourceRef;
import org.apache.avalon.tools.project.Plugin;
/**
@@ -77,10 +77,10 @@
String key = getContext().getKey();
Definition def = getHome().getDefinition( key );
- PluginRef[] refs = def.getPluginRefs();
+ ResourceRef[] refs = def.getPluginRefs();
for( int i=0; i<refs.length; i++ )
{
- PluginRef ref = refs[i];
+ ResourceRef ref = refs[i];
Plugin plugin = getHome().getPlugin( ref );
String path = "plugin:" + plugin.getInfo().getSpec();
PluginTask task = new PluginTask();
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java Fri Jun 11 04:27:39 2004
@@ -42,9 +42,9 @@
import org.apache.avalon.tools.home.Context;
import org.apache.avalon.tools.home.Home;
+import org.apache.avalon.tools.project.Plugin;
import org.apache.avalon.tools.project.Definition;
-import org.apache.avalon.tools.project.ProjectRef;
-import org.apache.avalon.tools.project.PluginRef;
+import org.apache.avalon.tools.project.ResourceRef;
/**
* Build a set of projects taking into account dependencies within the
@@ -98,16 +98,9 @@
public void execute() throws BuildException
{
final Project project = getProject();
- log( "Finding project defintions." );
- long now = System.currentTimeMillis();
+ log( "Preparing build sequence." );
m_defs = getDefinitions();
- long discovery = System.currentTimeMillis() - now;
-
- log( "Discovery took: (" + discovery + " msecs.)" );
- log( "Build sequence for projects." );
final Definition[] defs = walkGraph();
- long graph = System.currentTimeMillis() - discovery - now;
- log( "Sequence established: (" + graph + " msecs.)" );
project.log( BANNER );
for( int i=0; i<defs.length; i++ )
{
@@ -190,24 +183,34 @@
private Definition[] getProviders( final Definition def )
{
final ArrayList list = new ArrayList();
- final ProjectRef[] refs = def.getProjectRefs();
+ final ResourceRef[] refs = def.getResourceRefs();
for( int i=0; i<refs.length; i++ )
{
- final Definition d = getHome().getDefinition( refs[i] );
- if( m_defs.contains( d ) )
+ ResourceRef ref = refs[i];
+ if( getHome().isaDefinition( ref ) )
{
- list.add( d );
+ final Definition d = getHome().getDefinition( ref );
+ if( m_defs.contains( d ) )
+ {
+ list.add( d );
+ }
}
}
- final PluginRef[] prefs = def.getPluginRefs();
- for( int i=0; i<prefs.length; i++ )
+
+ final ResourceRef[] plugins = def.getPluginRefs();
+ for( int i=0; i<plugins.length; i++ )
{
- final Definition d = getHome().getPlugin( prefs[i] );
- if( m_defs.contains( d ) )
+ ResourceRef ref = plugins[i];
+ if( getHome().isaDefinition( ref ) )
{
- list.add( d );
+ final Definition plugin = getHome().getPlugin( ref );
+ if( m_defs.contains( plugin ) )
+ {
+ list.add( plugin );
+ }
}
}
+
return (Definition[]) list.toArray( new Definition[0] );
}
@@ -265,7 +268,8 @@
final String key = getProjectName( dir );
if( null != key )
{
- list.add( getHome().getDefinition( key ) );
+ ResourceRef ref = new ResourceRef( key );
+ list.add( getHome().getDefinition( ref ) );
}
else
{
Modified: avalon/trunk/tools/project/src/test/index.xml
==============================================================================
--- avalon/trunk/tools/project/src/test/index.xml (original)
+++ avalon/trunk/tools/project/src/test/index.xml Fri Jun 11 04:27:39 2004
@@ -63,10 +63,10 @@
<type>jar</type>
</info>
<dependencies>
- <plugins>
- <pluginref key="demo"/>
- </plugins>
</dependencies>
+ <plugins>
+ <include key="demo"/>
+ </plugins>
</project>
<plugin basedir="projects/demo">
@@ -80,13 +80,9 @@
<taskdef name="hello" class="org.apache.avalon.demo.StandardDemo"/>
</tasks>
<dependencies>
- <resources>
- <resourceref key="avalon-framework-api"/>
- </resources>
- <projects>
- <projectref key="widget"/>
- <projectref key="gizmo"/>
- </projects>
+ <include key="avalon-framework-api" tag="api"/>
+ <include key="avalon-framework-impl"/>
+ <include key="widget" tag="spi"/>
</dependencies>
</plugin>
@@ -98,9 +94,7 @@
<type>jar</type>
</info>
<dependencies>
- <projects>
- <projectref key="gizmo"/>
- </projects>
+ <include key="gizmo"/>
</dependencies>
</project>
@@ -112,9 +106,7 @@
<type>jar</type>
</info>
<dependencies>
- <resources>
- <resourceref key="avalon-util-i18n"/>
- </resources>
+ <include key="avalon-util-i18n"/>
</dependencies>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org