01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: */
18:
19: package org.apache.tools.ant.taskdefs;
20:
21: import org.apache.tools.ant.BuildException;
22: import org.apache.tools.ant.ProjectHelper;
23: import org.apache.tools.ant.Task;
24:
25: /**
26: * Base class for tasks that that can be used in antlibs.
27: * For handling uri and class loading.
28: *
29: * @since Ant 1.6
30: */
31: public class AntlibDefinition extends Task {
32:
33: private String uri = "";
34: private ClassLoader antlibClassLoader;
35:
36: /**
37: * The URI for this definition.
38: * If the URI is "antlib:org.apache.tools.ant",
39: * (this is the default uri)
40: * the uri will be set to "".
41: * URIs that start with "ant:" are reserved
42: * and are not allowed in this context.
43: * @param uri the namespace URI
44: * @throws BuildException if a reserved URI is used
45: */
46: public void setURI(String uri) throws BuildException {
47: if (uri.equals(ProjectHelper.ANT_CORE_URI)) {
48: uri = "";
49: }
50: if (uri.startsWith("ant:")) {
51: throw new BuildException("Attempt to use a reserved URI "
52: + uri);
53: }
54: this .uri = uri;
55: }
56:
57: /**
58: * The URI for this definition.
59: * @return The URI for this defintion.
60: */
61: public String getURI() {
62: return uri;
63: }
64:
65: /**
66: * Set the class loader of the loading object
67: *
68: * @param classLoader a <code>ClassLoader</code> value
69: */
70: public void setAntlibClassLoader(ClassLoader classLoader) {
71: this .antlibClassLoader = classLoader;
72: }
73:
74: /**
75: * The current antlib classloader
76: * @return the antlib classloader for the definition, this
77: * is null if the definition is not used in an antlib.
78: */
79: public ClassLoader getAntlibClassLoader() {
80: return antlibClassLoader;
81: }
82: }
|