You can not select more than 25 topics
Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- package org.apache.ant;
-
- import java.io.*;
- import java.util.*;
- import java.lang.reflect.*;
- import java.beans.*;
-
- /**
- * Superclass of all Tasks. All tasks extend from this.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
- public abstract class AbstractTask {
-
- // -----------------------------------------------------------------
- // PROTECTED DATA MEMBERS
- // -----------------------------------------------------------------
-
- /**
- *
- */
- protected Project project;
-
- // -----------------------------------------------------------------
- // ABSTRACT PUBLIC METHODS
- // -----------------------------------------------------------------
-
- /**
- *
- */
- public abstract boolean execute() throws AntException;
-
- // -----------------------------------------------------------------
- // PUBLIC METHODS
- // -----------------------------------------------------------------
-
- /**
- * Used by the system to set the attributes which then get reflected
- * into the particular implementation class
- */
- public void setAttributes(Hashtable attributes) {
- Class clazz = this.getClass();
- BeanInfo bi;
- try {
- bi = Introspector.getBeanInfo(clazz);
- } catch (IntrospectionException ie) {
- System.out.println("Can't reflect on: " + clazz);
- // XXX exception out
- return;
- }
- PropertyDescriptor[] pda = bi.getPropertyDescriptors();
- for (int i = 0; i < pda.length; i++) {
- PropertyDescriptor pd = pda[i];
- String property = pd.getName();
- Object o = attributes.get(property);
- if (o != null) {
- String value = (String)o;
- Method setMethod = pd.getWriteMethod();
- if (setMethod != null) {
- Class[] ma = setMethod.getParameterTypes();
- if (ma.length == 1) {
- Class c = ma[0];
- if (c.getName().equals("java.lang.String")) {
- try {
- setMethod.invoke(this, new String[] {value});
- } catch (Exception e) {
- // XXX bad bad bad -- narrow to exact exceptions
- System.out.println("OUCH: " + e);
- // XXX exception out.
- }
- }
- }
- }
- }
- }
- }
-
- /**
- * Used by system to set the project.
- */
- public void setProject(Project project) {
- this.project = project;
- }
-
- }
|