peterreilly 2003/09/22 01:58:58 Modified: src/main/org/apache/tools/ant/taskdefs Antlib.java DefBase.java Definer.java MacroDef.java src/main/org/apache/tools/ant/taskdefs/optional/script ScriptDef.java Added: src/main/org/apache/tools/ant/taskdefs AntlibDefinition.java Removed: src/main/org/apache/tools/ant/taskdefs AntlibInterface.java Log: Remove interface AntlibInterface - replace with class AntlibDefintion which is a Task and handles setURI and setAntlibClassLoader (from a e-mail by Knut Wannheden) Revision Changes Path 1.12 +14 -12 ant/src/main/org/apache/tools/ant/taskdefs/Antlib.java Index: Antlib.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Antlib.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Antlib.java 17 Sep 2003 17:06:44 -0000 1.11 +++ Antlib.java 22 Sep 2003 08:58:58 -0000 1.12 @@ -70,7 +70,9 @@ /** - * Antlib task. + * Antlib task. It does not + * occur in an ant build file. It is the root element + * an antlib xml file. * * @author Peter Reilly * @@ -179,21 +181,21 @@ UnknownElement ue = (UnknownElement) i.next(); setLocation(ue.getLocation()); ue.maybeConfigure(); - Task t = ue.getTask(); - if (t == null) { + Object configuredObject = ue.getRealThing(); + if (configuredObject == null) { continue; } - if (!(t instanceof AntlibInterface)) { + if (!(configuredObject instanceof AntlibDefinition)) { throw new BuildException( - "Invalid element in antlib " + ue.getTag()); + "Invalid task in antlib " + ue.getTag() + + " " + configuredObject.getClass() + " does not " + + "extend org.apache.tools.ant.taskdefs.AntlibDefinition"); } - if (t instanceof AntlibInterface) { - AntlibInterface d = (AntlibInterface) t; - d.setURI(uri); - d.setAntlibClassLoader(getClassLoader()); - } - t.init(); - t.execute(); + AntlibDefinition def = (AntlibDefinition) configuredObject; + def.setURI(uri); + def.setAntlibClassLoader(getClassLoader()); + def.init(); + def.execute(); } } 1.6 +3 -44 ant/src/main/org/apache/tools/ant/taskdefs/DefBase.java Index: DefBase.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/DefBase.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DefBase.java 13 Sep 2003 12:58:33 -0000 1.5 +++ DefBase.java 22 Sep 2003 08:58:58 -0000 1.6 @@ -57,8 +57,6 @@ import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; -import org.apache.tools.ant.ProjectHelper; -import org.apache.tools.ant.Task; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; import org.apache.tools.ant.util.ClasspathUtils; @@ -74,50 +72,11 @@ * * @since Ant 1.6 */ -public abstract class DefBase extends Task implements AntlibInterface { - private String uri = ""; - private ClassLoader internalClassLoader; +public abstract class DefBase extends AntlibDefinition { private ClassLoader createdLoader; private ClasspathUtils.Delegate cpDelegate; /** - * The URI for this definition. - * If the URI is "ant:core", the uri will be set to "". (This - * is the default uri). - * URIs that start with "ant:" and are not - * "ant:core" are reserved and are not allowed in this context. - * @param uri the namespace URI - * @throws BuildException if a reserved URI is used - */ - public void setURI(String uri) throws BuildException { - if (uri.equals(ProjectHelper.ANT_CORE_URI)) { - uri = ""; - } - if (uri.startsWith("ant:")) { - throw new BuildException("Attempt to use a reserved URI " + uri); - } - this.uri = uri; - } - - /** - * @return the namespace uri for this definition - */ - public String getUri() { - return uri; - } - - - /** - * Set the class loader, overrides the cpDelagate - * classloader. - * - * @param classLoader a <code>ClassLoader</code> value - */ - public void setAntlibClassLoader(ClassLoader classLoader) { - this.internalClassLoader = classLoader; - } - - /** * @param reverseLoader if true a delegated loader will take precedence over * the parent * @deprecated stop using this attribute @@ -207,8 +166,8 @@ * @return the classloader from the cpDelegate */ protected ClassLoader createLoader() { - if (internalClassLoader != null) { - return internalClassLoader; + if (getAntlibClassLoader() != null) { + return getAntlibClassLoader(); } if (createdLoader == null) { createdLoader = this.cpDelegate.getClassLoader(); 1.44 +3 -3 ant/src/main/org/apache/tools/ant/taskdefs/Definer.java Index: Definer.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Definer.java,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- Definer.java 10 Sep 2003 10:37:14 -0000 1.43 +++ Definer.java 22 Sep 2003 08:58:58 -0000 1.44 @@ -315,9 +315,9 @@ */ private void loadAntlib(ClassLoader classLoader, URL url) { try { - Antlib antlib = Antlib.createAntlib(getProject(), url, getUri()); + Antlib antlib = Antlib.createAntlib(getProject(), url, getURI()); antlib.setClassLoader(classLoader); - antlib.setURI(getUri()); + antlib.setURI(getURI()); antlib.perform(); } catch (BuildException ex) { Location exLocation = ex.getLocation(); @@ -449,7 +449,7 @@ Class cl = null; try { try { - name = ProjectHelper.genComponentName(getUri(), name); + name = ProjectHelper.genComponentName(getURI(), name); if (onError != OnError.IGNORE) { cl = Class.forName(classname, true, al); 1.7 +12 -25 ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java Index: MacroDef.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- MacroDef.java 15 Sep 2003 16:55:01 -0000 1.6 +++ MacroDef.java 22 Sep 2003 08:58:58 -0000 1.7 @@ -76,12 +76,11 @@ * @author Peter Reilly * @since Ant 1.6 */ -public class MacroDef extends Task implements AntlibInterface, TaskContainer { +public class MacroDef extends AntlibDefinition implements TaskContainer { private UnknownElement nestedTask; private String name; private List attributes = new ArrayList(); private Map elements = new HashMap(); - private String uri; private int attributeStyle = AttributeStyle.ANT; /** @@ -93,21 +92,6 @@ } /** - * The URI for this definition. - * @param uri the namespace URI - * @throws BuildException if uri is not allowed - */ - public void setURI(String uri) throws BuildException { - if (uri.equals(ProjectHelper.ANT_CORE_URI)) { - uri = ""; - } - if (uri.startsWith("ant:")) { - throw new BuildException("Attempt to use a reserved URI " + uri); - } - this.uri = uri; - } - - /** * Enumerated type for attributeStyle attribute * * @see EnumeratedAttribute @@ -262,7 +246,7 @@ throw new BuildException("Name not specified"); } - name = ProjectHelper.genComponentName(uri, name); + name = ProjectHelper.genComponentName(getURI(), name); MyAntTypeDefinition def = new MyAntTypeDefinition(this); def.setName(name); @@ -439,13 +423,16 @@ if (!name.equals(other.name)) { return false; } - if (uri == null || uri.equals("") - || uri.equals(ProjectHelper.ANT_CORE_URI)) { - return other.uri == null || other.uri.equals("") - || other.uri.equals(ProjectHelper.ANT_CORE_URI); - } - if (!uri.equals(other.uri)) { - return false; + if (getURI() == null || getURI().equals("") + || getURI().equals(ProjectHelper.ANT_CORE_URI)) { + if (!(other.getURI() == null || other.getURI().equals("") + || other.getURI().equals(ProjectHelper.ANT_CORE_URI))) { + return false; + } + } else { + if (!getURI().equals(other.getURI())) { + return false; + } } if (attributeStyle != other.attributeStyle) { 1.1 ant/src/main/org/apache/tools/ant/taskdefs/AntlibDefinition.java Index: AntlibDefinition.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "Ant" and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.tools.ant.taskdefs; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.ProjectHelper; import org.apache.tools.ant.Task; /** * Base class for tasks that that can be used in antlibs. * For handling uri and class loading. * * @author Peter Reilly * * @since Ant 1.6 */ public class AntlibDefinition extends Task { private String uri = ""; private ClassLoader antlibClassLoader; /** * The URI for this definition. * If the URI is "ant:core", the uri will be set to "". (This * is the default uri). * URIs that start with "ant:" and are not * "ant:core" are reserved and are not allowed in this context. * @param uri the namespace URI * @throws BuildException if a reserved URI is used */ public void setURI(String uri) throws BuildException { if (uri.equals(ProjectHelper.ANT_CORE_URI)) { uri = ""; } if (uri.startsWith("ant:")) { throw new BuildException("Attempt to use a reserved URI " + uri); } this.uri = uri; } /** * The URI for this definition. * @return The URI for this defintion. */ public String getURI() { return uri; } /** * Set the class loader of the loading object * * @param classLoader a <code>ClassLoader</code> value */ public void setAntlibClassLoader(ClassLoader classLoader) { this.antlibClassLoader = classLoader; } /** * The current antlib classloader * @return the antlib classloader for the definition, this * is null if the definition is not used in an antlib. */ public ClassLoader getAntlibClassLoader() { return antlibClassLoader; } } 1.7 +1 -1 ant/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java Index: ScriptDef.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ScriptDef.java 15 Aug 2003 08:51:10 -0000 1.6 +++ ScriptDef.java 22 Sep 2003 08:58:58 -0000 1.7 @@ -271,7 +271,7 @@ } } - name = ProjectHelper.genComponentName(getUri(), name); + name = ProjectHelper.genComponentName(getURI(), name); scriptRepository.put(name, this); AntTypeDefinition def = new AntTypeDefinition(); def.setName(name);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]