aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/TaskAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/TaskAdapter.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/TaskAdapter.java182
1 files changed, 0 insertions, 182 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/TaskAdapter.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/TaskAdapter.java
deleted file mode 100644
index 3a3001f6..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/TaskAdapter.java
+++ /dev/null
@@ -1,182 +0,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.
- *
- */
-
-package org.apache.tools.ant;
-
-import java.lang.reflect.Method;
-
-import org.apache.tools.ant.dispatch.DispatchUtils;
-import org.apache.tools.ant.dispatch.Dispatchable;
-
-/**
- * Uses introspection to "adapt" an arbitrary Bean which doesn't
- * itself extend Task, but still contains an execute method and optionally
- * a setProject method.
- *
- */
-public class TaskAdapter extends Task implements TypeAdapter {
-
- /** Object to act as a proxy for. */
- private Object proxy;
-
- /**
- * No-arg constructor for reflection.
- */
- public TaskAdapter() {
- }
-
- /**
- * Constructor for given proxy.
- * So you could write easier code
- * <pre>
- * myTaskContainer.addTask( new TaskAdapter(myProxy) );
- * </pre>
- *
- * @param proxy The object which Ant should use as task.
- */
- public TaskAdapter(Object proxy) {
- this();
- setProxy(proxy);
- }
-
- /**
- * Checks whether or not a class is suitable to be adapted by TaskAdapter.
- * If the class is of type Dispatchable, the check is not performed because
- * the method that will be executed will be determined only at runtime of
- * the actual task and not during parse time.
- *
- * This only checks conditions which are additionally required for
- * tasks adapted by TaskAdapter. Thus, this method should be called by
- * Project.checkTaskClass.
- *
- * Throws a BuildException and logs as Project.MSG_ERR for
- * conditions that will cause the task execution to fail.
- * Logs other suspicious conditions with Project.MSG_WARN.
- *
- * @param taskClass Class to test for suitability.
- * Must not be <code>null</code>.
- * @param project Project to log warnings/errors to.
- * Must not be <code>null</code>.
- *
- * @see Project#checkTaskClass(Class)
- */
- public static void checkTaskClass(final Class<?> taskClass,
- final Project project) {
- if (!Dispatchable.class.isAssignableFrom(taskClass)) {
- // don't have to check for interface, since then
- // taskClass would be abstract too.
- try {
- final Method executeM = taskClass.getMethod("execute", (Class[]) null);
- // don't have to check for public, since
- // getMethod finds public method only.
- // don't have to check for abstract, since then
- // taskClass would be abstract too.
- if (!Void.TYPE.equals(executeM.getReturnType())) {
- final String message = "return type of execute() should be "
- + "void but was \"" + executeM.getReturnType() + "\" in "
- + taskClass;
- project.log(message, Project.MSG_WARN);
- }
- } catch (NoSuchMethodException e) {
- final String message = "No public execute() in " + taskClass;
- project.log(message, Project.MSG_ERR);
- throw new BuildException(message);
- } catch (LinkageError e) {
- String message = "Could not load " + taskClass + ": " + e;
- project.log(message, Project.MSG_ERR);
- throw new BuildException(message, e);
- }
- }
- }
-
- /**
- * Check if the proxy class is a valid class to use
- * with this adapter.
- * The class must have a public no-arg "execute()" method.
- * @param proxyClass the class to check.
- */
- public void checkProxyClass(Class<?> proxyClass) {
- checkTaskClass(proxyClass, getProject());
- }
-
- /**
- * Executes the proxied task.
- *
- * @exception BuildException if the project could not be set
- * or the method could not be executed.
- */
- public void execute() throws BuildException {
- try {
- Method setLocationM = proxy.getClass().getMethod(
- "setLocation", new Class[] {Location.class});
- if (setLocationM != null) {
- setLocationM.invoke(proxy, new Object[] {getLocation()});
- }
- } catch (NoSuchMethodException e) {
- // ignore this if the class being used as a task does not have
- // a set location method.
- } catch (Exception ex) {
- log("Error setting location in " + proxy.getClass(),
- Project.MSG_ERR);
- throw new BuildException(ex);
- }
-
- try {
- Method setProjectM = proxy.getClass().getMethod(
- "setProject", new Class[] {Project.class});
- if (setProjectM != null) {
- setProjectM.invoke(proxy, new Object[] {getProject()});
- }
- } catch (NoSuchMethodException e) {
- // ignore this if the class being used as a task does not have
- // a set project method.
- } catch (Exception ex) {
- log("Error setting project in " + proxy.getClass(),
- Project.MSG_ERR);
- throw new BuildException(ex);
- }
-
- try {
- DispatchUtils.execute(proxy);
- } catch (BuildException be) {
- throw be;
- } catch (Exception ex) {
- log("Error in " + proxy.getClass(), Project.MSG_VERBOSE);
- throw new BuildException(ex);
- }
- }
-
- /**
- * Sets the target object to proxy for.
- *
- * @param o The target object. Must not be <code>null</code>.
- */
- public void setProxy(Object o) {
- this.proxy = o;
- }
-
- /**
- * Returns the target object being proxied.
- *
- * @return the target proxy object.
- */
- public Object getProxy() {
- return proxy;
- }
-
-}