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]