incubator-easyant-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hi...@apache.org
Subject svn commit: r1071697 [26/42] - in /incubator/easyant: buildtypes/ buildtypes/trunk/ buildtypes/trunk/build-osgi-bundle-java/ buildtypes/trunk/build-osgi-bundle-java/src/ buildtypes/trunk/build-osgi-bundle-java/src/main/ buildtypes/trunk/build-osgi-bund...
Date Thu, 17 Feb 2011 17:01:56 GMT
Added: incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch (added)
+++ incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch Thu Feb 17 17:01:07 2011
@@ -0,0 +1,611 @@
+Index: ../antunit/docs/antunit.html
+===================================================================
+--- ../antunit/docs/antunit.html	(revision 645890)
++++ ../antunit/docs/antunit.html	Sat Apr 17 16:13:57 PDT 2010
+@@ -171,6 +171,53 @@
+     href="http://ant.apache.org/manual/CoreTypes/propertyset.html">&lt;propertyset&gt;</a>s
+     can be used to pass properties to the build files under test.</p>
+ 
++    <h4>reference</h4>
++
++    <p>One or more references may be passed to the antunit script.  For example, paths and filesets
++    can be defined once in the outer build script and passed through to multiple antunit scripts.</p>
++
++    <table border="1" cellpadding="2" cellspacing="0">
++      <tr>
++        <td valign="top"><b>Attribute</b></td>
++        <td valign="top"><b>Description</b></td>
++        <td align="center" valign="top"><b>Required</b></td>
++      </tr>
++      <tr>
++        <td valign="top">refid</td>
++        <td valign="top">The reference ID to inherit</td>
++        <td align="center" valign="middle" rowspan="2">Exactly one of these</td>
++      </tr>
++      <tr>
++        <td valign="top">regex</td>
++        <td valign="top">A regular expression identifying a group of reference IDs to inherit.</td>
++      </tr>
++      <tr>
++        <td valign="top">torefid</td>
++        <td valign="top">The ID of the reference in the test project.  </td>
++        <td align="center" valign="middle" width="25%">No.  If this reference appears inside
++        a <a href="#referenceset">&lt;referenceset&gt;</a> with a nested mapper element, the mapper
++        will be used to determine the target reference ID.  Otherwise, defaults to the source
++        reference ID.</td>
++      </tr>
++    </table>
++
++    <a name="referenceset"/><h4>referenceset</h4>
++
++    <p>References can be grouped inside a &lt;referenceset&gt; element for clarity.  Additionally, &lt;referenceset&gt;
++    elements may contain exactly one nested <a href="http://ant.apache.org/manual/CoreTypes/mapper.html">&lt;mapper&gt;</a> 
++    element, which defines how source reference IDs are translated into target reference IDs.  For example,
++
++<pre>
++  &lt;au:antunit&gt;
++    &lt;referenceset&gt;
++      &lt;reference refid="first.ref"/&gt;
++      &lt;reference refid="second.ref"/&gt;
++      &lt;mapper type="regexp" from="(.*)\.ref" to="mapped.ref.\1"/&gt;
++    &lt;/referenceset&gt;
++  &lt;/au:antunit&gt;
++</pre>
++    </p>
++
+     <h3>Examples</h3>
+ 
+     <p>This build file snippet (from src/etc/testcases/antunit/base.xml)</p>
+Index: ../antunit/src/etc/testcases/antunit/reference-mapper.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference-mapper.xml	Sat Apr 17 15:26:27 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference-mapper.xml	Sat Apr 17 15:26:27 PDT 2010
+@@ -0,0 +1,37 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements.  See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership.  The ASF licenses this file
++to you 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.
++-->
++
++<project name="reference-mapper-test" basedir="." default="all"
++  xmlns:au="antlib:org.apache.ant.antunit">
++
++  <target name="all">
++    <fail>Not a self-contained build file</fail>
++  </target>
++
++  <target name="testReferenceMapper">
++    <property name="ref.one" refid="first.mapped"/>
++    <au:assertEquals expected="${file.separator}first" actual="${ref.one}" />
++
++    <property name="ref.two" refid="second.mapped"/>
++    <au:assertEquals expected="${file.separator}second" actual="${ref.two}" />
++  </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/main/org/apache/ant/antunit/AntUnit.java
+===================================================================
+--- ../antunit/src/main/org/apache/ant/antunit/AntUnit.java	(revision 740452)
++++ ../antunit/src/main/org/apache/ant/antunit/AntUnit.java	Sat Apr 17 16:18:59 PDT 2010
+@@ -22,22 +22,19 @@
+ 
+ import java.io.File;
+ import java.io.IOException;
+-import java.util.ArrayList;
+-import java.util.Iterator;
+-import java.util.List;
+-import java.util.Map;
++import java.lang.reflect.Method;
++import java.util.*;
+ 
+-import org.apache.tools.ant.BuildEvent;
+-import org.apache.tools.ant.BuildException;
+-import org.apache.tools.ant.BuildListener;
+-import org.apache.tools.ant.MagicNames;
+-import org.apache.tools.ant.Project;
+-import org.apache.tools.ant.ProjectHelper;
+-import org.apache.tools.ant.Task;
++import org.apache.tools.ant.*;
++import org.apache.tools.ant.taskdefs.Ant;
++import org.apache.tools.ant.types.Mapper;
+ import org.apache.tools.ant.types.PropertySet;
+ import org.apache.tools.ant.types.ResourceCollection;
+ import org.apache.tools.ant.types.resources.FileResource;
+ import org.apache.tools.ant.types.resources.Union;
++import org.apache.tools.ant.util.FileNameMapper;
++import org.apache.tools.ant.util.regexp.RegexpMatcher;
++import org.apache.tools.ant.util.regexp.RegexpMatcherFactory;
+ 
+ /**
+  * Run every target whose name starts with "test" in a set of build files.
+@@ -112,6 +109,11 @@
+     private ArrayList propertySets = new ArrayList();
+ 
+     /**
++     * Holds references to be inherited by the test project
++     */
++    private ArrayList referenceSets = new ArrayList();
++
++    /**
+      * has a failure occured?
+      */
+     private int failures = 0;
+@@ -160,6 +162,23 @@
+     }
+ 
+     /**
++     * Add a set of inherited references.
++     */
++    public ReferenceSet createReferenceSet() {
++        ReferenceSet set = new ReferenceSet();
++        referenceSets.add(set);
++        return set;
++    }
++
++    /**
++     * Add an inherited reference
++     */
++    public void addReference(Reference reference) {
++        //wrap in a singleton reference set.
++        createReferenceSet().addReference(reference);
++    }
++
++    /**
+      * Set the name of a property to set if an error or failure occurs.
+      * @param s the name of the error property.
+      */
+@@ -311,6 +330,7 @@
+         p.initProperties();
+         p.setInputHandler(getProject().getInputHandler());
+         getProject().initSubProject(p);
++        //pass through inherited properties
+         for (Iterator outer = propertySets.iterator(); outer.hasNext(); ) {
+             PropertySet set = (PropertySet) outer.next();
+             Map props = set.getProperties();
+@@ -328,6 +348,16 @@
+                 }
+             }
+         }
++
++        //pass through inherited references.  this code is borrowed with significant
++        //modification from taskdefs.Ant in Ant core.  unfortunately the only way we
++        //can share the code directly would be to extend Ant (which might not be a
++        //bad idea?)
++        for (int i = 0; i < referenceSets.size(); ++i) {
++            ReferenceSet set = (ReferenceSet) referenceSets.get(i);
++            set.copyReferencesInto(p);
++        }
++
+         p.setUserProperty(MagicNames.ANT_FILE, f.getAbsolutePath());
+         attachListeners(f, p);
+ 
+@@ -407,6 +437,181 @@
+     }
+ 
+     /**
++     * Defines a collection of inherited {@link Reference references},
++     * with an optional nested {@link Mapper} that maps them to new reference IDs
++     * in the target project.
++     */
++    public class ReferenceSet {
++        /**
++         * references inherited from parent project by antunit scripts
++         */
++        private ArrayList references = new ArrayList();
++        /**
++         * maps source reference ID to target reference ID
++         */
++        private Mapper mapper;
++
++        public void addReference(Reference reference) {
++            references.add(reference);
++        }
++
++        public Mapper createMapper() {
++            if (mapper == null) {
++                return mapper = new Mapper(getProject());
++            } else {
++                throw new BuildException("Only one mapper element is allowed per referenceSet", getLocation());
++            }
++        }
++
++        /** configure a single mapper to translate reference IDs */
++        public void setMapper(String typeName, String from, String to) {
++            Mapper mapper = createMapper();
++            Mapper.MapperType type = new Mapper.MapperType();
++            type.setValue(typeName);
++
++            mapper.setType(type);
++            mapper.setFrom(from);
++            mapper.setTo(to);
++        }
++
++        /**
++         * Copy all identified references into the target project, applying any name
++         * mapping required by a nested mapper element.
++         */
++        public void copyReferencesInto(Project newProject) {
++            FileNameMapper mapper = this.mapper == null ? null : this.mapper.getImplementation();
++            HashSet matches = new HashSet();
++            Hashtable src = getProject().getReferences();
++
++            for (Iterator it = references.iterator(); it.hasNext(); ) {
++                Reference ref = (Reference) it.next();
++
++                matches.clear();
++                ref.addMatchingReferences(src, matches);
++
++                for (Iterator ids = matches.iterator(); ids.hasNext(); ) {
++                    String refid = (String) ids.next();
++                    String toRefid = ref.getToRefid();
++
++                    //transform the refid with the mapper if necessary
++                    if (mapper != null && toRefid == null) {
++                        String[] mapped = mapper.mapFileName(refid);
++                        if (mapped != null) {
++                            toRefid = mapped[0];
++                        }
++                    }
++                    if (toRefid == null) {
++                        toRefid = refid;
++                    }
++
++                    //clone the reference into the new project
++                    copyReference(refid, newProject, toRefid);
++                }
++            }
++        }
++
++        /**
++         * Try to clone and reconfigure the object referenced by oldkey in
++         * the parent project and add it to the new project with the key newkey.
++         * This protects the parent project from modification by the child project.
++         *
++         * <p>If we cannot clone it, copy the referenced object itself and
++         * keep our fingers crossed.</p>
++         * @param oldKey the reference id in the current project.
++         * @param newKey the reference id in the new project.
++         */
++        private void copyReference(String oldKey, Project newProject, String newKey) {
++            Object orig = getProject().getReference(oldKey);
++            if (orig == null) {
++                log("No object referenced by " + oldKey + ". Can't copy to "
++                    + newKey,
++                    Project.MSG_WARN);
++                return;
++            }
++
++            Class c = orig.getClass();
++            Object copy = orig;
++            try {
++                Method cloneM = c.getMethod("clone", new Class[0]);
++                if (cloneM != null) {
++                    copy = cloneM.invoke(orig, new Object[0]);
++                    log("Adding clone of reference " + oldKey, Project.MSG_DEBUG);
++                }
++            } catch (Exception e) {
++                // not Clonable
++            }
++
++
++            if (copy instanceof ProjectComponent) {
++                ((ProjectComponent) copy).setProject(newProject);
++            } else {
++                try {
++                    Method setProjectM =
++                        c.getMethod("setProject", new Class[] {Project.class});
++                    if (setProjectM != null) {
++                        setProjectM.invoke(copy, new Object[] {newProject});
++                    }
++                } catch (NoSuchMethodException e) {
++                    // ignore this if the class being referenced does not have
++                    // a set project method.
++                } catch (Exception e2) {
++                    String msg = "Error setting new project instance for "
++                        + "reference with id " + oldKey;
++                    throw new BuildException(msg, e2, getLocation());
++                }
++            }
++            newProject.addReference(newKey, copy);
++        }
++
++
++    }
++
++    public static class Reference extends Ant.Reference {
++
++        private String regex;
++        private RegexpMatcher matcher;
++
++        public String getRegex() {
++            return regex;
++        }
++
++        /**
++         * Set a regular expression to match references.
++         * @param regex
++         */
++        public void setRegex(String regex) {
++            this.regex = regex;
++            RegexpMatcherFactory matchMaker = new RegexpMatcherFactory();
++            matcher = matchMaker.newRegexpMatcher();
++            matcher.setPattern(regex);
++        }
++
++        /**
++         * Add to <code>dest</code> any reference IDs in <code>src</code> matching
++         * this reference descriptor
++         * @param src table of references to check
++         * @param dest set of reference IDs matching this reference pattern
++         */
++        public void addMatchingReferences(Hashtable src, Collection dest) {
++            String id = getRefId();
++            if (id != null) {
++                if (src.containsKey(id)) {
++                    dest.add(id);
++                }
++            } else if (matcher != null) {
++                for (Iterator it = src.keySet().iterator(); it.hasNext(); ) {
++                    String refid = (String)it.next();
++                    if (matcher.matches(refid)) {
++                        dest.add(refid);
++                    }
++                }
++            } else {
++                throw new BuildException("either the refid or regex attribute is required for reference elements");
++            }
++        }
++    }
++
++    /**
+      * Adapts AntUnitListener to BuildListener.
+      */
+     private class BuildToAntUnitListener implements BuildListener {
+Index: ../antunit/src/etc/testcases/antunit/reference-set.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference-set.xml	Mon Apr 12 20:53:47 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference-set.xml	Mon Apr 12 20:53:47 PDT 2010
+@@ -0,0 +1,42 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements.  See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership.  The ASF licenses this file
++to you 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.
++-->
++
++<project name="reference-set-test" basedir="." default="all"
++  xmlns:au="antlib:org.apache.ant.antunit">
++
++  <target name="all">
++    <fail>Not a self-contained build file</fail>
++  </target>
++
++  <target name="testReferenceSet">
++    <property name="ref.one" refid="first.ref"/>
++    <au:assertEquals expected="${file.separator}first" actual="${ref.one}" />
++
++    <property name="ref.three" refid="third.ref"/>
++    <au:assertEquals expected="${file.separator}third" actual="${ref.three}" />
++
++    <condition property="uninherited.is.set" value="true">
++      <isreference refid="second.ref"/>
++    </condition>
++    <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
++  </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/etc/testcases/antunit/reference-regex.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference-regex.xml	Mon Apr 12 20:53:47 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference-regex.xml	Mon Apr 12 20:53:47 PDT 2010
+@@ -0,0 +1,42 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements.  See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership.  The ASF licenses this file
++to you 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.
++-->
++
++<project name="reference-regex-test" basedir="." default="all"
++  xmlns:au="antlib:org.apache.ant.antunit">
++
++  <target name="all">
++    <fail>Not a self-contained build file</fail>
++  </target>
++
++  <target name="testReferenceRegex">
++      <property name="ref.one" refid="first.ref"/>
++      <au:assertEquals expected="${file.separator}first" actual="${ref.one}" />
++
++      <property name="ref.two" refid="second.ref"/>
++      <au:assertEquals expected="${file.separator}second" actual="${ref.two}" />
++
++      <condition property="uninherited.is.set" value="true">
++        <isreference refid="third.missing"/>
++      </condition>
++      <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
++  </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/tests/junit/org/apache/ant/antunit/AntUnitTest.java
+===================================================================
+--- ../antunit/src/tests/junit/org/apache/ant/antunit/AntUnitTest.java	(revision 737355)
++++ ../antunit/src/tests/junit/org/apache/ant/antunit/AntUnitTest.java	Sat Apr 17 15:27:51 PDT 2010
+@@ -107,7 +107,23 @@
+             System.setErr(savedErr);
+         }
+     }
+-    
++
++    public void testReference() {
++        executeTarget("testReference");
++    }
++    
++    public void testReferenceSet() {
++        executeTarget("testReferenceSet");
++    }
++
++    public void testReferenceRegex() {
++        executeTarget("testReferenceRegex");
++    }
++
++    public void testReferenceMapper() {
++        executeTarget("testReferenceMapper");
++    }
++
+     public static class HelloWorld {
+         public static void main(String[] args) {
+             System.out.println("HelloWorld");
+Index: ../antunit/src/etc/testcases/antunit/reference.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference.xml	Tue Apr 06 22:39:54 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference.xml	Tue Apr 06 22:39:54 PDT 2010
+@@ -0,0 +1,39 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements.  See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership.  The ASF licenses this file
++to you 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.
++-->
++
++<project name="reference-test" basedir="." default="all"
++  xmlns:au="antlib:org.apache.ant.antunit">
++
++  <target name="all">
++    <fail>Not a self-contained build file</fail>
++  </target>
++
++  <target name="testReference">
++    <property name="ref.string" refid="inherited.ref"/>
++    <au:assertEquals expected="${file.separator}some${path.separator}${file.separator}path${path.separator}${file.separator}value" actual="${ref.string}" />
++
++    <condition property="uninherited.is.set" value="true">
++      <isreference refid="uninherited.ref"/>
++    </condition>
++    <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
++  </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/etc/testcases/antunit.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit.xml	(revision 737355)
++++ ../antunit/src/etc/testcases/antunit.xml	Sat Apr 17 15:50:05 PDT 2010
+@@ -86,7 +86,56 @@
+       <au:plainlistener />
+     </au:antunit>  	
+   </target>
+- 
++
++  <target name="testReference">
++    <path id="inherited.ref" path="/some:/path:/value"/>
++    <path id="uninherited.ref" path="some:other:value"/>
++    <au:antunit>
++      <file file="antunit/reference.xml" />
++      <au:plainlistener />
++      <reference refid="inherited.ref"/>
++    </au:antunit>
++  </target>
++ 
++  <target name="testReferenceRegex">
++    <path id="first.ref" path="/first"/>
++    <path id="second.ref" path="/second"/>
++    <path id="third.missing" path="ignored"/>
++    <au:antunit>
++      <file file="antunit/reference-regex.xml" />
++      <au:plainlistener />
++      <reference regex=".*\.ref"/>
++    </au:antunit>
++  </target>
++
++  <target name="testReferenceSet">
++    <path id="first.ref" path="/first"/>
++    <path id="second.ref" path="/second"/>
++    <path id="third.ref" path="/third"/>
++    <au:antunit>
++      <file file="antunit/reference-set.xml" />
++      <au:plainlistener />
++      <referenceSet>
++        <reference refid="first.ref"/>
++        <reference refid="third.ref"/>
++      </referenceSet>
++    </au:antunit>
++  </target>
++
++  <target name="testReferenceMapper">
++    <path id="first.ref" path="/first"/>
++    <path id="second.ref" path="/second"/>
++    <au:antunit>
++      <file file="antunit/reference-mapper.xml" />
++      <au:plainlistener />
++      <referenceSet>
++        <reference refid="first.ref"/>
++        <reference refid="second.ref"/>
++        <mapper type="regexp" from="(.*)\.ref" to="\1.mapped"/>
++      </referenceSet>
++    </au:antunit>
++  </target>
++
+   <property name="reportsdir" location="../../../build/reports"/>
+   <target name="antunit-dir">
+     <mkdir dir="${reportsdir}"/>

Added: incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper (added)
+++ incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper Thu Feb 17 17:01:07 2011
@@ -0,0 +1 @@
+org.apache.easyant.core.ant.EasyAntProjectHelper
\ No newline at end of file

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2008-2010 the EasyAnt project
+
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<antlib xmlns:current="ant:current">
+	<taskdef name="path" classname="org.apache.easyant.tasks.PathTask"/>
+	<taskdef name="parameter" classname="org.apache.easyant.tasks.ParameterTask"/>
+	
+	<taskdef name="import" classname="org.apache.easyant.tasks.Import"/>
+	<taskdef name="loadmodule" classname="org.apache.easyant.tasks.LoadModule"/>
+	<taskdef name="submodule" classname="org.apache.easyant.tasks.SubModule"/>
+	<taskdef name="repreport" classname="org.apache.easyant.tasks.RepositoryReport"/>
+	<taskdef name="core-version" classname="org.apache.easyant.tasks.CoreRevisionCheckerTask"/>
+	<taskdef name="property" classname="org.apache.easyant.tasks.PropertyTask"/>
+	
+	<taskdef name="searchmodule" classname="org.apache.easyant.tasks.SearchModule"/>
+	
+	<taskdef name="configure-build-scoped-repository" classname="org.apache.easyant.tasks.ConfigureBuildScopedRepository"/> 
+	
+	<taskdef name="findclasspath" classname="org.apache.easyant.tasks.findclasspath.FindClasspathTask"/>
+	<typedef name="environment-strategy" classname="org.apache.easyant.tasks.findclasspath.EnvironmentStrategy"/>
+	<typedef name="project-dependency-strategy" classname="org.apache.easyant.tasks.findclasspath.ProjectDependencyStrategy"/>
+	<typedef name="basic-configuration-strategy" classname="org.apache.easyant.tasks.findclasspath.BasicConfigurationStrategy"/>
+	
+	
+	<taskdef name="registerartifact" classname="org.apache.easyant.tasks.RegisterArtifact"/>
+	<taskdef name="bindtarget" classname="org.apache.easyant.tasks.BindTarget"/>
+	
+
+	<taskdef name="checkresolver" classname="org.apache.easyant.tasks.CheckResolver"/>
+	<taskdef name="easyant" classname="org.apache.easyant.tasks.EasyAntRunner"/>
+	
+    <taskdef name="startmenu" classname="org.apache.easyant.tasks.menu.StartMenuTask"/>
+	<taskdef name="addmenuentry" classname="org.apache.easyant.tasks.menu.AddMenuEntryTask"/>
+	<taskdef name="registermenugenerator" classname="org.apache.easyant.tasks.menu.RegisterMenuGeneratorTask"/>
+	<typedef name="menuentry" classname="org.apache.easyant.tasks.menu.MenuEntry"/>
+    <taskdef name="endmenu" classname="org.apache.easyant.tasks.menu.EndMenuTask"/>
+
+	<presetdef name="include">
+		<current:import mode="include" />
+	</presetdef>
+	
+	<presetdef name="build">
+		<current:import organisation="org.apache.easyant.buildtypes"/>
+	</presetdef>
+	
+	<presetdef name="plugin">
+		<current:import mode="include" organisation="org.apache.easyant.plugins"/>
+	</presetdef>
+</antlib>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,39 @@
+<!--
+   Copyright 2008-2010 the EasyAnt project
+
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<ivysettings>
+	<settings defaultResolver="easyant-default-chain"/>
+	<caches defaultCacheDir="${user.home}/.easyant/easyant-cache" useOrigin="true" />
+	<typedef name="jar" classname="org.apache.easyant.core.ivy.resolvers.JarResolver"/>
+	<resolvers>
+		<jar name="easyant-core-modules">
+			<ivy pattern="${easyant.core.repo.url}/[organisation]/[module]/[revision]/[module].ivy"/>
+			<artifact pattern="${easyant.core.repo.url}/[organisation]/[module]/[revision]/[artifact](-[classifier]).[ext]"/>
+		</jar>
+		<filesystem name="easyant-shared-modules">
+			<ivy pattern="${user.home}/.easyant/repository/easyant-shared-modules/[organisation]/[module]/[revision]/[module].ivy"/>
+			<artifact pattern="${user.home}/.easyant/repository/easyant-shared-modules/[organisation]/[module]/[revision]/[artifact](-[classifier]).[ext]"/>
+		</filesystem>
+		<ibiblio name="public-maven" m2compatible="true"/> 
+		<chain name="easyant-default-chain" returnFirst="true">
+			<resolver ref="easyant-core-modules" />
+            <resolver ref="easyant-shared-modules"/>
+			<resolver ref="public-maven"/>
+		</chain>
+	</resolvers>
+</ivysettings>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,7 @@
+<ivysettings>
+	<property name="ivy.shared.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]" />
+	<property name="ivy.local.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]"/>
+	<caches useOrigin="true" defaultCacheDir="${user.home}/.easyant/project-cache" />
+	<include url="${ivy.default.settings.dir}/ivysettings.xml"/>
+	
+</ivysettings>
\ No newline at end of file

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd Thu Feb 17 17:01:07 2011
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2008-2010 the EasyAnt project
+
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	elementFormDefault="qualified">
+
+	<xs:element name="easyant-config">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ivysettings" minOccurs="0" maxOccurs="1">
+					<xs:complexType>
+						<xs:attribute name="file" type="xs:string" />
+						<xs:attribute name="url" type="xs:string" />
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="system-plugins" minOccurs="0"
+					maxOccurs="1">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="plugin" minOccurs="0" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:attribute name="mrid" type="xs:string" />
+									<xs:attribute name="organisation" type="xs:string" />
+									<xs:attribute name="org" type="xs:string" />
+									<xs:attribute name="module" type="xs:string" />
+									<xs:attribute name="revision" type="xs:string" />
+									<xs:attribute name="rev" type="xs:string" />
+									<xs:attribute name="as" type="xs:string" />
+									<xs:attribute name="mode" type="xs:string" />
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="properties" minOccurs="0" maxOccurs="1">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:attribute name="name" type="xs:string" />
+									<xs:attribute name="value" type="xs:string" />
+									<xs:attribute name="file" type="xs:string" />
+									<xs:attribute name="url" type="xs:string" />
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
\ No newline at end of file

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,32 @@
+<!--
+   Copyright 2008-2010 the EasyAnt project
+
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<ivysettings>
+	<include url="${easyant.default.ivysettings.url}"/>
+	<settings defaultResolver="easyant-extra-chain"/>
+	<resolvers>
+		<jar name="easyant-extra-modules">
+			<ivy pattern="${easyant.extramodules.repo.url}/[organisation]/[module]/[revision]/[module].ivy"/>
+			<artifact pattern="${easyant.extramodules.repo.url}/[organisation]/[module]/[revision]/[artifact](-[classifier]).[ext]"/>
+		</jar>
+		<chain name="easyant-extra-chain" returnFirst="true">
+			<resolver ref="easyant-extra-modules" />
+			<resolver ref="easyant-default-chain" />
+		</chain>
+	</resolvers>
+</ivysettings>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl Thu Feb 17 17:01:07 2011
@@ -0,0 +1,65 @@
+<!--
+   Copyright 2008-2010 the EasyAnt project
+
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text"/>
+<xsl:template match="/ivy-report">
+/* * directed graph dot input file. * * generated by ivy report */
+            digraph G {
+   	 "<xsl:value-of select="info/@organisation"/>-<xsl:value-of select="info/@module"/>" [label="<xsl:value-of select="info/@module"/>"];
+     <xsl:for-each select="dependencies/module">
+   	    "<xsl:value-of select="@organisation"/>-<xsl:value-of select="@name"/>" [label="<xsl:value-of select="@name"/>
+   	    	<xsl:for-each select="revision">
+                  <xsl:text>\n</xsl:text>
+                  <xsl:value-of select="@name"/><xsl:if test="@error"> (error)</xsl:if><xsl:if test="@evicted"> (evicted)</xsl:if>
+            </xsl:for-each>
+   	     <xsl:text>"];
+</xsl:text>
+      </xsl:for-each>
+      <xsl:apply-templates select="dependencies/module/revision[not(@evicted)]/easyant/imports/import">
+	      <xsl:with-param name="parent_organisation" select="dependencies/module/@organisation"/>
+	      <xsl:with-param name="parent_name" select="dependencies/module/@name"/>
+	      <xsl:with-param name="parent_revision" select="dependencies/module/@revision"/>
+      </xsl:apply-templates>
+  	  <xsl:text>}</xsl:text> 	      
+</xsl:template>
+
+<xsl:template match="import">
+<xsl:param name="parent_organisation"/>
+<xsl:param name="parent_name"/>
+<xsl:param name="parent_revision"/>
+<xsl:text>"</xsl:text>
+   	      <xsl:value-of select="@organisation"/>-<xsl:value-of select="@name"/>
+   	      <xsl:text>" -> "</xsl:text>
+   	      <xsl:value-of select="$parent_organisation"/>-<xsl:value-of select="$parent_name"/>
+   	      <xsl:text>" [label="</xsl:text>
+   	      		  <xsl:value-of select="$parent_revision"/>
+   	      <xsl:text>"]</xsl:text>
+   	      <xsl:text>;
+</xsl:text>
+
+      <xsl:apply-templates select="easyant/imports/import">
+      	  <xsl:with-param name="parent_organisation" select="@organisation"/>
+	      <xsl:with-param name="parent_name" select="@name"/>
+	      <xsl:with-param name="parent_revision" select="@revision"/>
+      </xsl:apply-templates>
+  
+</xsl:template>
+
+</xsl:stylesheet>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css Thu Feb 17 17:01:07 2011
@@ -0,0 +1,280 @@
+/* 
+ *  Copyright 2008-2010 the EasyAnt project
+ * 
+ *  See the NOTICE file distributed with this work for additional information
+ *  regarding copyright ownership. 
+ * 
+ *  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.
+ */
+ 
+body {
+	font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif;
+	font-size:small; 
+}
+
+div#logo {
+    float: right; 
+    padding-left: 10px; 
+    padding-bottom: 10px; 
+    background: white;
+    text-align: center;
+}
+
+#logo img {
+	border: 0;
+}
+
+div#date {
+	font-style:     italic;
+	padding-left:	60px;
+    padding-bottom: 40px; 
+}
+
+
+h1 {
+    margin-bottom:2px;
+    
+	border-color:#7A9437;
+	border-style:solid;
+	border-width:0 0 3px 0;
+}
+
+span#module {
+	color:#7A9437;
+	text-decoration:none;
+}
+
+span#organisation {
+	color:black;
+	text-decoration:none;
+}
+
+#confmenu {
+	color: #000;
+	border-bottom: 2px solid black;
+	margin: 12px 0px 0px 0px;
+	padding: 0px;
+	z-index: 1;
+	padding-left: 10px 
+}
+
+#confmenu li {
+	display: inline;
+	overflow: hidden;
+	list-style-type: none; 
+}
+
+#confmenu a, a.active {
+	color: #DEDECF;
+	background: #898B5E;
+	font: bold 1em "Trebuchet MS", Arial, sans-serif;
+	border: 2px solid black;
+	padding: 2px 5px 0px 5px;
+	text-decoration: none; 
+}
+
+/*
+background: #ABAD85 #CED4BD
+background: #DEE4CD
+ */
+
+#confmenu a.active {
+	color: #7A9437;
+	background: #DEE4CD;
+	border-bottom: 3px solid #DEE4CD;
+}
+
+#confmenu a:hover {
+	color: #fff;
+	background: #ADC09F; 
+}
+
+#confmenu a:visited {
+	color: #DEDECF; 
+}
+
+#confmenu a.active:visited {
+	color: #7A9437; 
+}
+
+#confmenu a.active:hover {
+	background: #DEE4CD;
+	color: #DEDECF; 
+}
+
+#content {
+	background: #DEE4CD;
+	padding: 20px;
+	border: 2px solid black;
+	border-top: none;
+	z-index: 2;	
+}
+
+#content a {
+	text-decoration: none;
+	color: #E8E9BE; 
+}
+
+#content a:hover { 
+  background: #898B5E; 
+}
+
+
+h2 {
+    margin-bottom:2px;
+    font-size:medium;
+    
+    border-color:#7A9437;
+    border-style:solid;
+    border-width:0 0 2px 0;
+}
+
+h3 {
+    margin-top:30px;
+    margin-bottom:2px;
+    padding: 5 5 5 0;
+    font-size: 24px;
+    border-style:solid;
+    border-width:0 0 2px 0;
+}
+
+h4 {
+    margin-bottom:2px;
+    margin-top:2px;
+    font-size:medium;
+    
+    border-color:#7A9437;
+    border-style:dashed;
+    border-width:0 0 1px 0;
+}
+
+h5 {
+    margin-bottom:2px;
+    margin-top:2px;
+    margin-left:20px;
+    font-size:medium;
+}
+
+span.resolved {
+	padding-left: 15px;
+	font-weight: 500;
+	font-size: small;
+}
+
+
+#content table  {
+	border-collapse:collapse;
+	width:90%;
+	margin:auto;
+	margin-top: 5px;
+}
+#content thead {
+	background-color:#CED4BD;
+	border:1px solid #7A9437;
+}
+#content tbody {
+	border-collapse:collapse;
+	background-color:#FFFFFF;
+	border:1px solid #7A9437;
+}
+
+#content th {
+	font-family:monospace;
+	border:1px solid #7A9437;
+	padding:5px;
+}
+
+#content td {
+	border:1px dotted #7A9437;
+	padding:0 3 0 3;
+}
+
+#content table a {
+	color:#7A9437;
+	text-decoration:none;
+}
+
+#content table a:hover {
+	background-color:#CED4BD;
+	color:#7A9437;
+}
+
+
+
+table.deps  {
+	border-collapse:collapse;
+	width:90%;
+	margin:auto;
+	margin-top: 5px;
+}
+
+table.deps thead {
+	background-color:#CED4BD;
+	border:1px solid #7A9437;
+}
+table.deps tbody {
+	border-collapse:collapse;
+	background-color:#FFFFFF;
+	border:1px solid #7A9437;
+}
+
+table.deps th {
+	font-family:monospace;
+	border:1px solid #7A9437;
+	padding:2;
+}
+
+table.deps td {
+	border:1px dotted #7A9437;
+	padding:0 3 0 3;
+}
+
+
+
+
+
+table.header  {
+	border:0;
+	width:90%;
+	margin:auto;
+	margin-top: 5px;
+}
+
+table.header thead {
+	border:0;
+}
+table.header tbody {
+	border:0;
+}
+table.header tr {
+	padding:0px;
+	border:0;
+}
+table.header td {
+	padding:0 3 0 3;
+	border:0;
+}
+
+td.title {
+    width:150px;
+    margin-right:15px;
+
+	font-size:small;
+	font-weight:700;
+}
+
+td.title:first-letter {
+	color:#7A9437;
+	background-color:transparent;
+}
+

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
------------------------------------------------------------------------------
    svn:mime-type = text/css

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl Thu Feb 17 17:01:07 2011
@@ -0,0 +1,861 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+   Copyright 2008-2010 the EasyAnt project
+
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<xsl:stylesheet version="1.0"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ea="antlib:org.apache.easyant">
+
+	<xsl:param name="confs" select="/ivy-report/info/@confs" />
+	<xsl:param name="extension" select="'xml'" />
+
+
+	<xsl:variable name="myorg" select="/ivy-report/info/@organisation" />
+	<xsl:variable name="mymod" select="/ivy-report/info/@module" />
+	<xsl:variable name="myconf" select="/ivy-report/info/@conf" />
+
+	<xsl:variable name="modules" select="/ivy-report/dependencies/module" />
+	<xsl:variable name="conflicts" select="$modules[count(revision) > 1]" />
+
+	<xsl:variable name="revisions" select="$modules/revision" />
+	<xsl:variable name="evicteds" select="$revisions[@evicted]" />
+	<xsl:variable name="downloadeds" select="$revisions[@downloaded='true']" />
+	<xsl:variable name="searcheds" select="$revisions[@searched='true']" />
+	<xsl:variable name="errors" select="$revisions[@error]" />
+
+	<xsl:variable name="artifacts" select="$revisions/artifacts/artifact" />
+	<xsl:variable name="cacheartifacts" select="$artifacts[@status='no']" />
+	<xsl:variable name="dlartifacts" select="$artifacts[@status='successful']" />
+	<xsl:variable name="faileds" select="$artifacts[@status='failed']" />
+	<xsl:variable name="artifactsok" select="$artifacts[@status!='failed']" />
+
+	<xsl:variable name="easyant" select="$revisions/easyant" />
+	<xsl:variable name="targets" select="$easyant/targets" />
+	<xsl:variable name="phases" select="$easyant/phases" />
+	<xsl:variable name="imports" select="$easyant/imports" />
+
+
+	<xsl:template name="calling">
+		<xsl:param name="org" />
+		<xsl:param name="mod" />
+		<xsl:param name="rev" />
+		<xsl:if
+			test="count($modules/revision/caller[(@organisation=$org and @name=$mod) and @callerrev=$rev]) = 0">
+			<table>
+				<tr>
+					<td>
+						No dependency
+    </td>
+				</tr>
+			</table>
+		</xsl:if>
+		<xsl:if
+			test="count($modules/revision/caller[(@organisation=$org and @name=$mod) and @callerrev=$rev]) > 0">
+			<table class="deps">
+				<thead>
+					<tr>
+						<th>Module</th>
+						<th>Revision</th>
+						<th>Status</th>
+						<th>Resolver</th>
+						<th>Default</th>
+						<th>Licenses</th>
+						<th>Size</th>
+						<th></th>
+					</tr>
+				</thead>
+				<tbody>
+					<xsl:for-each
+						select="$modules/revision/caller[(@organisation=$org and @name=$mod) and @callerrev=$rev]">
+						<xsl:call-template name="called">
+							<xsl:with-param name="callstack"
+								select="concat($org, string('/'), $mod)" />
+							<xsl:with-param name="indent" select="string('')" />
+							<xsl:with-param name="revision" select=".." />
+						</xsl:call-template>
+					</xsl:for-each>
+				</tbody>
+			</table>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template name="called">
+		<xsl:param name="callstack" />
+		<xsl:param name="indent" />
+		<xsl:param name="revision" />
+
+		<xsl:param name="organisation" select="$revision/../@organisation" />
+		<xsl:param name="module" select="$revision/../@name" />
+		<xsl:param name="rev" select="$revision/@name" />
+		<xsl:param name="resolver" select="$revision/@resolver" />
+		<xsl:param name="isdefault" select="$revision/@default" />
+		<xsl:param name="status" select="$revision/@status" />
+		<tr>
+			<td>
+				<xsl:element name="a">
+					<xsl:attribute name="href">#<xsl:value-of
+						select="$organisation" />-<xsl:value-of select="$module" /></xsl:attribute>
+					<xsl:value-of select="concat($indent, ' ')" />
+					<xsl:value-of select="$module" />
+					by
+					<xsl:value-of select="$organisation" />
+				</xsl:element>
+			</td>
+			<td>
+				<xsl:element name="a">
+					<xsl:attribute name="href">#<xsl:value-of
+						select="$organisation" />-<xsl:value-of select="$module" />-<xsl:value-of
+						select="$rev" /></xsl:attribute>
+					<xsl:value-of select="$rev" />
+				</xsl:element>
+			</td>
+			<td align="center">
+				<xsl:value-of select="$status" />
+			</td>
+			<td align="center">
+				<xsl:value-of select="$resolver" />
+			</td>
+			<td align="center">
+				<xsl:value-of select="$isdefault" />
+			</td>
+			<td align="center">
+				<xsl:call-template name="licenses">
+					<xsl:with-param name="revision" select="$revision" />
+				</xsl:call-template>
+			</td>
+			<td align="center">
+				<xsl:value-of
+					select="round(sum($revision/artifacts/artifact/@size) div 1024)" />
+				kB
+			</td>
+			<td align="center">
+				<xsl:call-template name="icons">
+					<xsl:with-param name="revision" select="$revision" />
+				</xsl:call-template>
+			</td>
+		</tr>
+		<xsl:if test="not($revision/@evicted)">
+			<xsl:if
+				test="not(contains($callstack, concat($organisation, string('/'), $module)))">
+				<xsl:for-each
+					select="$modules/revision/caller[(@organisation=$organisation and @name=$module) and @callerrev=$rev]">
+					<xsl:call-template name="called">
+						<xsl:with-param name="callstack"
+							select="concat($callstack, string('#'), $organisation, string('/'), $module)" />
+						<xsl:with-param name="indent"
+							select="concat($indent, string('---'))" />
+						<xsl:with-param name="revision" select=".." />
+					</xsl:call-template>
+				</xsl:for-each>
+			</xsl:if>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template name="licenses">
+		<xsl:param name="revision" />
+		<xsl:for-each select="$revision/license">
+			<span style="padding-right:3px;">
+				<xsl:if test="@url">
+					<xsl:element name="a">
+						<xsl:attribute name="href"><xsl:value-of
+							select="@url" /></xsl:attribute>
+						<xsl:value-of select="@name" />
+					</xsl:element>
+				</xsl:if>
+				<xsl:if test="not(@url)">
+					<xsl:value-of select="@name" />
+				</xsl:if>
+			</span>
+		</xsl:for-each>
+	</xsl:template>
+
+	<xsl:template name="icons">
+		<xsl:param name="revision" />
+		<xsl:if test="$revision/@searched = 'true'">
+			<img src="http://ant.apache.org/ivy/images/searched.gif" alt="searched"
+				title="required a search in repository" />
+		</xsl:if>
+		<xsl:if test="$revision/@downloaded = 'true'">
+			<img src="http://ant.apache.org/ivy/images/downloaded.gif" alt="downloaded"
+				title="downloaded from repository" />
+		</xsl:if>
+		<xsl:if test="$revision/@evicted">
+			<xsl:element name="img">
+				<xsl:attribute name="src">http://ant.apache.org/ivy/images/evicted.gif</xsl:attribute>
+				<xsl:attribute name="alt">evicted</xsl:attribute>
+				<xsl:attribute name="title">evicted by <xsl:for-each
+					select="$revision/evicted-by"><xsl:value-of select="@rev" /> </xsl:for-each></xsl:attribute>
+			</xsl:element>
+		</xsl:if>
+		<xsl:if test="$revision/@error">
+			<xsl:element name="img">
+				<xsl:attribute name="src">http://ant.apache.org/ivy/images/error.gif</xsl:attribute>
+				<xsl:attribute name="alt">error</xsl:attribute>
+				<xsl:attribute name="title">error: <xsl:value-of
+					select="$revision/@error" /></xsl:attribute>
+			</xsl:element>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template name="error">
+		<xsl:param name="organisation" />
+		<xsl:param name="module" />
+		<xsl:param name="revision" />
+		<xsl:param name="error" />
+		<tr>
+			<td>
+				<xsl:element name="a">
+					<xsl:attribute name="href">#<xsl:value-of
+						select="$organisation" />-<xsl:value-of select="$module" /></xsl:attribute>
+					<xsl:value-of select="$module" />
+					by
+					<xsl:value-of select="$organisation" />
+				</xsl:element>
+			</td>
+			<td>
+				<xsl:element name="a">
+					<xsl:attribute name="href">#<xsl:value-of
+						select="$organisation" />-<xsl:value-of select="$module" />-<xsl:value-of
+						select="$revision" /></xsl:attribute>
+					<xsl:value-of select="$revision" />
+				</xsl:element>
+			</td>
+			<td>
+				<xsl:value-of select="$error" />
+			</td>
+		</tr>
+	</xsl:template>
+
+	<xsl:template name="confs">
+		<xsl:param name="configurations" />
+
+		<xsl:if test="contains($configurations, ',')">
+			<xsl:call-template name="conf">
+				<xsl:with-param name="conf"
+					select="normalize-space(substring-before($configurations,','))" />
+			</xsl:call-template>
+			<xsl:call-template name="confs">
+				<xsl:with-param name="configurations"
+					select="substring-after($configurations,',')" />
+			</xsl:call-template>
+		</xsl:if>
+		<xsl:if test="not(contains($configurations, ','))">
+			<xsl:call-template name="conf">
+				<xsl:with-param name="conf"
+					select="normalize-space($configurations)" />
+			</xsl:call-template>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template name="conf">
+		<xsl:param name="conf" />
+
+		<li>
+			<xsl:element name="a">
+				<xsl:if test="$conf = $myconf">
+					<xsl:attribute name="class">active</xsl:attribute>
+				</xsl:if>
+				<xsl:attribute name="href"><xsl:value-of select="$myorg" />-<xsl:value-of
+					select="$mymod" />-<xsl:value-of select="$conf" />.<xsl:value-of
+					select="$extension" /></xsl:attribute>
+				<xsl:value-of select="$conf" />
+			</xsl:element>
+		</li>
+	</xsl:template>
+
+	<xsl:template name="date">
+		<xsl:param name="date" />
+
+		<xsl:value-of select="substring($date,1,4)" />
+		-
+		<xsl:value-of select="substring($date,5,2)" />
+		-
+		<xsl:value-of select="substring($date,7,2)" />
+		<xsl:value-of select="' '" />
+		<xsl:value-of select="substring($date,9,2)" />
+		:
+		<xsl:value-of select="substring($date,11,2)" />
+		:
+		<xsl:value-of select="substring($date,13)" />
+	</xsl:template>
+
+
+	<xsl:template match="/ivy-report">
+
+		<html>
+			<head>
+				<title>
+					Ivy report ::
+					<xsl:value-of select="info/@module" />
+					by
+					<xsl:value-of select="info/@organisation" />
+					::
+					<xsl:value-of select="info/@conf" />
+				</title>
+				<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+				<meta http-equiv="content-language" content="en" />
+				<meta name="robots" content="index,follow" />
+				<link rel="stylesheet" type="text/css" href="easyant-report.css" />
+			</head>
+			<body>
+				<div id="logo">
+					<a href="http://ant.apache.org/ivy/">
+						<img src="http://ant.apache.org/ivy/logo.png" />
+					</a>
+				</div>
+				<h1>
+					<xsl:element name="a">
+						<xsl:attribute name="name"><xsl:value-of
+							select="info/@organisation" />-<xsl:value-of select="info/@module" /></xsl:attribute>
+					</xsl:element>
+					<span id="module">
+						<xsl:value-of select="info/@module" />
+					</span>
+					by
+					<span id="organisation">
+						<xsl:value-of select="info/@organisation" />
+					</span>
+				</h1>
+				<div id="date">
+					resolved on
+					<xsl:call-template name="date">
+						<xsl:with-param name="date" select="info/@date" />
+					</xsl:call-template>
+				</div>
+				<ul id="confmenu">
+					<xsl:call-template name="confs">
+						<xsl:with-param name="configurations" select="$confs" />
+					</xsl:call-template>
+				</ul>
+
+				<div id="content">
+					<h2>Dependencies Stats</h2>
+					<table class="header">
+						<tr>
+							<td class="title">Modules</td>
+							<td class="value">
+								<xsl:value-of select="count($modules)" />
+							</td>
+						</tr>
+						<tr>
+							<td class="title">Revisions</td>
+							<td class="value">
+								<xsl:value-of select="count($revisions)" />
+								(
+								<xsl:value-of select="count($searcheds)" />
+								searched
+								<img src="http://ant.apache.org/ivy/images/searched.gif"
+									alt="searched"
+									title="module revisions which required a search with a dependency resolver to be resolved" />
+								,
+								<xsl:value-of select="count($downloadeds)" />
+								downloaded
+								<img src="http://ant.apache.org/ivy/images/downloaded.gif"
+									alt="downloaded"
+									title="module revisions for which ivy file was downloaded by dependency resolver" />
+								,
+								<xsl:value-of select="count($evicteds)" />
+								evicted
+								<img src="http://ant.apache.org/ivy/images/evicted.gif" alt="evicted"
+									title="module revisions which were evicted by others" />
+								,
+								<xsl:value-of select="count($errors)" />
+								errors
+								<img src="http://ant.apache.org/ivy/images/error.gif" alt="error"
+									title="module revisions on which error occured" />
+								)
+							</td>
+						</tr>
+						<tr>
+							<td class="title">Artifacts</td>
+							<td class="value">
+								<xsl:value-of select="count($artifacts)" />
+								(
+								<xsl:value-of select="count($dlartifacts)" />
+								downloaded,
+								<xsl:value-of select="count($faileds)" />
+								failed)
+							</td>
+						</tr>
+						<tr>
+							<td class="title">Artifacts size</td>
+							<td class="value">
+								<xsl:value-of select="round(sum($artifacts/@size) div 1024)" />
+								kB
+								(
+								<xsl:value-of select="round(sum($dlartifacts/@size) div 1024)" />
+								kB downloaded,
+								<xsl:value-of select="round(sum($cacheartifacts/@size) div 1024)" />
+								kB in cache)
+							</td>
+						</tr>
+					</table>
+
+					<xsl:if test="count($errors) > 0">
+						<h2>Errors</h2>
+						<table class="errors">
+							<thead>
+								<tr>
+									<th>Module</th>
+									<th>Revision</th>
+									<th>Error</th>
+								</tr>
+							</thead>
+							<tbody>
+								<xsl:for-each select="$errors">
+									<xsl:call-template name="error">
+										<xsl:with-param name="organisation" select="../@organisation" />
+										<xsl:with-param name="module" select="../@name" />
+										<xsl:with-param name="revision" select="@name" />
+										<xsl:with-param name="error" select="@error" />
+									</xsl:call-template>
+								</xsl:for-each>
+							</tbody>
+						</table>
+					</xsl:if>
+
+					<xsl:if test="count($conflicts) > 0">
+						<h2>Conflicts</h2>
+						<table class="conflicts">
+							<thead>
+								<tr>
+									<th>Module</th>
+									<th>Selected</th>
+									<th>Evicted</th>
+								</tr>
+							</thead>
+							<tbody>
+								<xsl:for-each select="$conflicts">
+									<tr>
+										<td>
+											<xsl:element name="a">
+												<xsl:attribute name="href">#<xsl:value-of
+													select="@organisation" />-<xsl:value-of
+													select="@name" /></xsl:attribute>
+												<xsl:value-of select="@name" />
+												by
+												<xsl:value-of select="@organisation" />
+											</xsl:element>
+										</td>
+										<td>
+											<xsl:for-each select="revision[not(@evicted)]">
+												<xsl:element name="a">
+													<xsl:attribute name="href">#<xsl:value-of
+														select="../@organisation" />-<xsl:value-of
+														select="../@name" />-<xsl:value-of select="@name" /></xsl:attribute>
+													<xsl:value-of select="@name" />
+												</xsl:element>
+												<xsl:text> </xsl:text>
+											</xsl:for-each>
+										</td>
+										<td>
+											<xsl:for-each select="revision[@evicted]">
+												<xsl:element name="a">
+													<xsl:attribute name="href">#<xsl:value-of
+														select="../@organisation" />-<xsl:value-of
+														select="../@name" />-<xsl:value-of select="@name" /></xsl:attribute>
+													<xsl:value-of select="@name" />
+													<xsl:text> </xsl:text>
+													<xsl:value-of select="@evicted-reason" />
+												</xsl:element>
+												<xsl:text> </xsl:text>
+											</xsl:for-each>
+										</td>
+									</tr>
+								</xsl:for-each>
+							</tbody>
+						</table>
+					</xsl:if>
+
+					<h2>Dependencies Overview</h2>
+					<xsl:call-template name="calling">
+						<xsl:with-param name="org" select="info/@organisation" />
+						<xsl:with-param name="mod" select="info/@module" />
+						<xsl:with-param name="rev" select="info/@revision" />
+					</xsl:call-template>
+
+					<h2>Details</h2>
+					<xsl:for-each select="$modules">
+						<h3>
+							<xsl:element name="a">
+								<xsl:attribute name="name"><xsl:value-of
+									select="@organisation" />-<xsl:value-of select="@name" /></xsl:attribute>
+							</xsl:element>
+							<xsl:value-of select="@name" />
+							by
+							<xsl:value-of select="@organisation" />
+						</h3>
+						<xsl:for-each select="revision">
+							<h4>
+								<xsl:element name="a">
+									<xsl:attribute name="name"><xsl:value-of
+										select="../@organisation" />-<xsl:value-of
+										select="../@name" />-<xsl:value-of select="@name" /></xsl:attribute>
+								</xsl:element>
+								Revision:
+								<xsl:value-of select="@name" />
+								<span style="padding-left:15px;">
+									<xsl:call-template name="icons">
+										<xsl:with-param name="revision" select="." />
+									</xsl:call-template>
+								</span>
+							</h4>
+							<h5>Description</h5>
+							<xsl:copy-of select="description"/>
+							<table class="header">
+								<xsl:if test="@homepage">
+									<tr>
+										<td class="title">Home Page</td>
+										<td class="value">
+											<xsl:element name="a">
+												<xsl:attribute name="href"><xsl:value-of
+													select="@homepage" /></xsl:attribute>
+												<xsl:value-of select="@homepage" />
+											</xsl:element>
+										</td>
+									</tr>
+								</xsl:if>
+								<tr>
+									<td class="title">Status</td>
+									<td class="value">
+										<xsl:value-of select="@status" />
+									</td>
+								</tr>
+								<tr>
+									<td class="title">Publication</td>
+									<td class="value">
+										<xsl:value-of select="@pubdate" />
+									</td>
+								</tr>
+								<tr>
+									<td class="title">Resolver</td>
+									<td class="value">
+										<xsl:value-of select="@resolver" />
+									</td>
+								</tr>
+								<tr>
+									<td class="title">Configurations</td>
+									<td class="value">
+										<xsl:value-of select="@conf" />
+									</td>
+								</tr>
+								<tr>
+									<td class="title">Artifacts size</td>
+									<td class="value">
+										<xsl:value-of select="round(sum(artifacts/artifact/@size) div 1024)" />
+										kB
+										(
+										<xsl:value-of
+											select="round(sum(artifacts/artifact[@status='successful']/@size) div 1024)" />
+										kB downloaded,
+										<xsl:value-of
+											select="round(sum(artifacts/artifact[@status='no']/@size) div 1024)" />
+										kB in cache)
+									</td>
+								</tr>
+								<xsl:if test="count(license) > 0">
+									<tr>
+										<td class="title">Licenses</td>
+										<td class="value">
+											<xsl:call-template name="licenses">
+												<xsl:with-param name="revision" select="." />
+											</xsl:call-template>
+										</td>
+									</tr>
+								</xsl:if>
+								<xsl:if test="@evicted">
+									<tr>
+										<td class="title">Evicted by</td>
+										<td class="value">
+											<b>
+												<xsl:for-each select="evicted-by">
+													<xsl:value-of select="@rev" />
+													<xsl:text> </xsl:text>
+												</xsl:for-each>
+											</b>
+											<xsl:text> </xsl:text>
+											<b>
+												<xsl:value-of select="@evicted-reason" />
+											</b>
+											in
+											<b>
+												<xsl:value-of select="@evicted" />
+											</b>
+											conflict manager
+										</td>
+									</tr>
+								</xsl:if>
+							</table>
+							<h5>Required by</h5>
+							<table>
+								<thead>
+									<tr>
+										<th>Organisation</th>
+										<th>Name</th>
+										<th>Revision</th>
+										<th>In Configurations</th>
+										<th>Asked Revision</th>
+									</tr>
+								</thead>
+								<tbody>
+									<xsl:for-each select="caller">
+										<tr>
+											<td>
+												<xsl:value-of select="@organisation" />
+											</td>
+											<td>
+												<xsl:element name="a">
+													<xsl:attribute name="href">#<xsl:value-of
+														select="@organisation" />-<xsl:value-of
+														select="@name" /></xsl:attribute>
+													<xsl:value-of select="@name" />
+												</xsl:element>
+											</td>
+											<td>
+												<xsl:value-of select="@callerrev" />
+											</td>
+											<td>
+												<xsl:value-of select="@conf" />
+											</td>
+											<td>
+												<xsl:value-of select="@rev" />
+											</td>
+										</tr>
+									</xsl:for-each>
+								</tbody>
+							</table>
+							<xsl:if test="not(@evicted)">
+
+								<h5>Dependencies</h5>
+								<xsl:call-template name="calling">
+									<xsl:with-param name="org" select="../@organisation" />
+									<xsl:with-param name="mod" select="../@name" />
+									<xsl:with-param name="rev" select="@name" />
+								</xsl:call-template>
+								<h5>Artifacts</h5>
+								<xsl:if test="count(artifacts/artifact) = 0">
+									<table>
+										<tr>
+											<td>
+												No artifact
+        </td>
+										</tr>
+									</table>
+								</xsl:if>
+								<xsl:if test="count(artifacts/artifact) > 0">
+									<table>
+										<thead>
+											<tr>
+												<th>Name</th>
+												<th>Type</th>
+												<th>Ext</th>
+												<th>Download</th>
+												<th>Size</th>
+											</tr>
+										</thead>
+										<tbody>
+											<xsl:for-each select="artifacts/artifact">
+												<tr>
+													<td>
+														<xsl:value-of select="@name" />
+													</td>
+													<td>
+														<xsl:value-of select="@type" />
+													</td>
+													<td>
+														<xsl:value-of select="@ext" />
+													</td>
+													<td align="center">
+														<xsl:value-of select="@status" />
+													</td>
+													<td align="center">
+														<xsl:value-of select="round(number(@size) div 1024)" />
+														kB
+													</td>
+												</tr>
+											</xsl:for-each>
+										</tbody>
+									</table>
+								</xsl:if>
+
+							</xsl:if>
+							<xsl:apply-templates select="easyant" />
+						</xsl:for-each>
+					</xsl:for-each>
+				</div>
+			</body>
+		</html>
+	</xsl:template>
+
+	<xsl:template match="easyant">
+		<h2>Available targets</h2>
+		<table>
+			<thead>
+				<tr>
+					<th>target name</th>
+					<th>description</th>
+					<th>phase</th>
+					<th>depends</th>
+				</tr>
+			</thead>
+			<tbody>
+				<xsl:apply-templates select="targets/target" />
+			</tbody>
+		</table>
+
+		<h2>Available phases</h2>
+		<table>
+			<thead>
+				<tr>
+					<th>target name</th>
+					<th>description</th>
+					<th>depends</th>
+				</tr>
+			</thead>
+			<tbody>
+				<xsl:apply-templates select="phases/phase" />
+			</tbody>
+		</table>
+
+		<h2>Imported module</h2>
+		<table>
+			<thead>
+				<tr>
+					<th>Module revision id</th>
+					<th>Import type</th>
+					<th>prefix</th>
+				</tr>
+			</thead>
+			<tbody>
+				<xsl:apply-templates select="imports/import" />
+			</tbody>
+		</table>
+		
+		<h2>Module parameters</h2>
+		<h3>Properties</h3>
+		<table>
+			<thead>
+				<tr>
+					<th>property</th>
+					<th>description</th>
+					<th>required</th>
+					<th>default value</th>
+				</tr>
+			</thead>
+			<tbody>
+				<xsl:for-each select="properties/property">
+					<tr>
+						<td><xsl:value-of select="@name"/></td>
+						<td><xsl:value-of select="@description"/></td>
+						<td><xsl:value-of select="@required"/></td>
+						<td><xsl:value-of select="@default"/></td>
+					</tr>
+				</xsl:for-each>
+			</tbody>
+		</table>
+		
+		<h3>Phases</h3>
+		<table>
+			<thead>
+				<tr>
+					<th>phase</th>
+					<th>description</th>
+				</tr>
+			</thead>
+			<tbody>
+				<xsl:for-each select="parameters/phase">
+					<tr>
+						<td><xsl:value-of select="@name"/></td>
+						<td><xsl:value-of select="@description"/></td>
+					</tr>
+				</xsl:for-each>
+			</tbody>
+		</table>
+
+		<h3>Paths</h3>
+		<table>
+			<thead>
+				<tr>
+					<th>path</th>
+					<th>description</th>
+					<th>required</th>
+				</tr>
+			</thead>
+			<tbody>
+				<xsl:for-each select="parameters/path">
+					<tr>
+						<td><xsl:value-of select="@name"/></td>
+						<td><xsl:value-of select="@description"/></td>
+						<td><xsl:value-of select="@required"/></td>
+					</tr>
+				</xsl:for-each>
+			</tbody>
+		</table>
+		
+	</xsl:template>
+
+	<xsl:template match="target">
+		<tr>
+			<td>
+				<xsl:value-of select="@name" />
+			</td>
+			<td>
+				<xsl:value-of select="@description" />
+			</td>
+			<td>
+				<xsl:value-of select="@phase" />
+			</td>
+			<td>
+				<xsl:value-of select="@depends" />
+			</td>
+		</tr>
+	</xsl:template>
+
+	<xsl:template match="phases/phase">
+		<tr>
+			<td>
+				<xsl:value-of select="@name" />
+			</td>
+			<td>
+				<xsl:value-of select="@description" />
+			</td>
+			<td>
+				<xsl:value-of select="@depends" />
+			</td>
+		</tr>
+
+	</xsl:template>
+
+	<xsl:template match="import">
+		<tr>
+			<td>
+				<xsl:element name="a">
+					<xsl:attribute name="href"><xsl:value-of
+						select="@name" /><xsl:text>.html</xsl:text></xsl:attribute>
+					<xsl:value-of select="@organisation" />#<xsl:value-of select="@name" />;<xsl:value-of select="@revision" />
+				</xsl:element>
+				
+			</td>
+			<td>
+				<xsl:value-of select="@type" />
+			</td>
+			<td>
+				<xsl:value-of select="@as" />
+			</td>
+		</tr>
+	</xsl:template>
+</xsl:stylesheet>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant Thu Feb 17 17:01:07 2011
@@ -0,0 +1,43 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<project name="org.apache.easyant.buildtypes#build-std-ant-plugin"
+	xmlns:ivy="antlib:org.apache.ivy.ant"
+	xmlns:ea="antlib:org.apache.easyant">
+	
+	<ea:core-version requiredrevision="[0.8,+]" />
+	<echo message="Building ${ivy.organisation} ${ivy.module} with org.apache.easyant.buildtypes#build-std-ant-plugin..."/>
+	
+	<ea:import mrid="org.apache.easyant.plugins#phases-std;0.2" />
+
+	<property file="${org.apache.easyant.buildtypes#build-std-ant-plugin.properties.file}" />
+	
+	<ea:parameter property="version.strategy.plugin.org" description="Organisation name of the version strategy plugin" default="org.apache.easyant.plugins"/>
+	<ea:parameter property="version.strategy.plugin.module" description="Module name of the version strategy plugin" default="default-version-strategy"/>
+	<ea:parameter property="version.strategy.plugin.rev" description="Revision number of the version strategy plugin" default="0.1"/>
+	<ea:parameter property="version.strategy.plugin.mrid" description="Full mrid of the version strategy plugin" default="${version.strategy.plugin.org}#${version.strategy.plugin.module};${version.strategy.plugin.rev}"/>
+	
+	<ea:include mrid="org.apache.easyant.plugins#clean-std;0.1" as="clean" />
+	<ea:include mrid="org.apache.easyant.plugins#resources-std;0.1" as="resources" />
+	<ea:include mrid="${version.strategy.plugin.mrid}" as="version" />
+	<ea:include mrid="org.apache.easyant.plugins#ivy-provisioning;0.1" as="lib" />
+	<ea:include mrid="org.apache.easyant.plugins#easyant-plugin-publication;0.1" as="publish" />
+	<ea:include mrid="org.apache.easyant.plugins#antunit;0.1" as="test" />
+	
+	<target name="doit" depends="verify" />
+</project>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,30 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0"> 
+	<info organisation="org.apache.easyant.buildtypes"
+	       module="build-std-ant-plugin"
+	       status="milestone"
+	       revision="0.1">
+	       <description>A standard build for true ant plugins, relying on standard phases, and providing compilation, execution and unit tests</description>
+	</info>
+	<publications>
+		<artifact type="ant" />
+		<artifact type="properties" />
+	</publications>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties Thu Feb 17 17:01:07 2011
@@ -0,0 +1,45 @@
+#	 ***************************************************************
+#	 * Copyright 2008-2010 the EasyAnt project
+#	 *
+#	 * See the NOTICE file distributed with this work for additional information 
+#	 * regarding copyright ownership.
+#    * 
+#    * 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.
+#	 ***************************************************************
+#TODO: find a way to have a common property file shared by all build-types (std/webapp/etc..)
+module.name=${ivy.module}
+project.ivy.file=${easyant.file}
+
+src.main.resources=${basedir}/src/main/resources
+src.test.java=${basedir}/src/test/java
+src.test.resources=${basedir}/src/test/resources
+
+target = ${basedir}/target
+target.test.classes=${target}/test/classes
+target.test.xml=${target}/test/xml
+target.test.html=${target}/test/html
+
+target.artifacts=${target}/artifacts
+
+#there is no packaging in true ant plugins, 
+#so we can directly copy all main ressources 
+#in target/artifacts instead of target/classes
+#we need to do this 'cause we want to reuse the resources-std plugin
+target.main.classes=${target.artifacts}
+
+target.report=${target}/report
+
+release.resolver=easyant-shared-modules
+shared.resolver=easyant-shared-modules
+local.resolver=easyant-shared-modules
+project.ivy.instance=easyant.ivy.instance
\ No newline at end of file

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id



Mime
View raw message