You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by mb...@apache.org on 2007/06/22 05:08:50 UTC
svn commit: r549681 -
/ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
Author: mbenson
Date: Thu Jun 21 20:08:49 2007
New Revision: 549681
URL: http://svn.apache.org/viewvc?view=rev&rev=549681
Log:
fmting/max line length, remove unnecessary Java 1.2 compatibility, some unnecessary elses
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
Modified: ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java?view=diff&rev=549681&r1=549680&r2=549681
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java Thu Jun 21 20:08:49 2007
@@ -15,7 +15,6 @@
* limitations under the License.
*
*/
-
package org.apache.tools.ant;
import java.lang.reflect.Constructor;
@@ -53,18 +52,10 @@
* ...do not make any assumptions about its uniqueness, or its validity after the Project
* instance has finished its build.
*
- *
*/
public final class IntrospectionHelper {
/**
- * EMPTY_MAP was added in java 1.3 (EMPTY_SET and EMPTY_LIST
- * is in java 1.2!)
- */
- private static final Map EMPTY_MAP
- = Collections.unmodifiableMap(new HashMap(0));
-
- /**
* Helper instances we've already created (Class.getName() to IntrospectionHelper).
*/
private static final Map HELPERS = new Hashtable();
@@ -79,12 +70,10 @@
// Set up PRIMITIVE_TYPE_MAP
static {
- Class[] primitives = {Boolean.TYPE, Byte.TYPE, Character.TYPE,
- Short.TYPE, Integer.TYPE, Long.TYPE,
- Float.TYPE, Double.TYPE};
- Class[] wrappers = {Boolean.class, Byte.class, Character.class,
- Short.class, Integer.class, Long.class,
- Float.class, Double.class};
+ Class[] primitives = { Boolean.TYPE, Byte.TYPE, Character.TYPE, Short.TYPE,
+ Integer.TYPE, Long.TYPE, Float.TYPE, Double.TYPE };
+ Class[] wrappers = { Boolean.class, Byte.class, Character.class, Short.class,
+ Integer.class, Long.class, Float.class, Double.class };
for (int i = 0; i < primitives.length; i++) {
PRIMITIVE_TYPE_MAP.put (primitives[i], wrappers[i]);
}
@@ -188,28 +177,25 @@
// check of add[Configured](Class) pattern
if (args.length == 1 && java.lang.Void.TYPE.equals(returnType)
- && ("add".equals(name) || "addConfigured".equals(name))) {
+ && ("add".equals(name) || "addConfigured".equals(name))) {
insertAddTypeMethod(m);
continue;
}
// not really user settable properties on tasks/project components
- if (org.apache.tools.ant.ProjectComponent.class.isAssignableFrom(
- bean)
- && args.length == 1 && isHiddenSetMethod(name, args[0])) {
+ if (org.apache.tools.ant.ProjectComponent.class.isAssignableFrom(bean)
+ && args.length == 1 && isHiddenSetMethod(name, args[0])) {
continue;
}
// hide addTask for TaskContainers
if (isContainer() && args.length == 1 && "addTask".equals(name)
- && org.apache.tools.ant.Task.class.equals(args[0])) {
+ && org.apache.tools.ant.Task.class.equals(args[0])) {
continue;
}
if ("addText".equals(name) && java.lang.Void.TYPE.equals(returnType)
- && args.length == 1 && java.lang.String.class.equals(args[0])) {
-
+ && args.length == 1 && java.lang.String.class.equals(args[0])) {
addText = methods[i];
- } else if (name.startsWith("set")
- && java.lang.Void.TYPE.equals(returnType)
- && args.length == 1 && !args[0].isArray()) {
+ } else if (name.startsWith("set") && java.lang.Void.TYPE.equals(returnType)
+ && args.length == 1 && !args[0].isArray()) {
String propName = getPropertyName(name, "set");
if (attributeSetters.get(propName) != null) {
if (java.lang.String.class.equals(args[0])) {
@@ -238,7 +224,7 @@
attributeSetters.put(propName, as);
}
} else if (name.startsWith("create") && !returnType.isArray()
- && !returnType.isPrimitive() && args.length == 0) {
+ && !returnType.isPrimitive() && args.length == 0) {
String propName = getPropertyName(name, "create");
// Check if a create of this property is already present
@@ -248,16 +234,15 @@
nestedCreators.put(propName, new CreateNestedCreator(m));
}
} else if (name.startsWith("addConfigured")
- && java.lang.Void.TYPE.equals(returnType) && args.length == 1
- && !java.lang.String.class.equals(args[0])
- && !args[0].isArray() && !args[0].isPrimitive()) {
+ && java.lang.Void.TYPE.equals(returnType) && args.length == 1
+ && !java.lang.String.class.equals(args[0])
+ && !args[0].isArray() && !args[0].isPrimitive()) {
try {
Constructor constructor = null;
try {
constructor = args[0].getConstructor(new Class[] {});
} catch (NoSuchMethodException ex) {
- constructor =
- args[0].getConstructor(new Class[] {Project.class});
+ constructor = args[0].getConstructor(new Class[] {Project.class});
}
String propName = getPropertyName(name, "addConfigured");
nestedTypes.put(propName, args[0]);
@@ -267,18 +252,16 @@
// ignore
}
} else if (name.startsWith("add")
- && java.lang.Void.TYPE.equals(returnType) && args.length == 1
- && !java.lang.String.class.equals(args[0])
- && !args[0].isArray() && !args[0].isPrimitive()) {
+ && java.lang.Void.TYPE.equals(returnType) && args.length == 1
+ && !java.lang.String.class.equals(args[0])
+ && !args[0].isArray() && !args[0].isPrimitive()) {
try {
Constructor constructor = null;
try {
constructor = args[0].getConstructor(new Class[] {});
} catch (NoSuchMethodException ex) {
- constructor =
- args[0].getConstructor(new Class[] {Project.class});
+ constructor = args[0].getConstructor(new Class[] {Project.class});
}
-
String propName = getPropertyName(name, "add");
if (nestedTypes.get(propName) != null) {
/*
@@ -290,7 +273,7 @@
}
nestedTypes.put(propName, args[0]);
nestedCreators.put(propName, new AddNestedCreator(m,
- constructor, AddNestedCreator.ADD));
+ constructor, AddNestedCreator.ADD));
} catch (NoSuchMethodException nse) {
// ignore
}
@@ -307,16 +290,12 @@
* @return true if the given set method is to be hidden.
*/
private boolean isHiddenSetMethod(String name, Class type) {
- if ("setLocation".equals(name)
- && org.apache.tools.ant.Location.class.equals(type)) {
+ if ("setLocation".equals(name) && org.apache.tools.ant.Location.class.equals(type)) {
return true;
}
-
- if ("setTaskType".equals(name)
- && java.lang.String.class.equals(type)) {
+ if ("setTaskType".equals(name) && java.lang.String.class.equals(type)) {
return true;
}
-
return false;
}
@@ -381,36 +360,29 @@
*/
public void setAttribute(Project p, Object element, String attributeName,
String value) throws BuildException {
- AttributeSetter as
- = (AttributeSetter) attributeSetters.get(
+ AttributeSetter as = (AttributeSetter) attributeSetters.get(
attributeName.toLowerCase(Locale.US));
if (as == null) {
if (element instanceof DynamicAttributeNS) {
DynamicAttributeNS dc = (DynamicAttributeNS) element;
- String uriPlusPrefix =
- ProjectHelper.extractUriFromComponentName(attributeName);
- String uri =
- ProjectHelper.extractUriFromComponentName(uriPlusPrefix);
- String localName =
- ProjectHelper.extractNameFromComponentName(attributeName);
- String qName = ("".equals(uri)
- ? localName : (uri + ":" + localName));
-
+ String uriPlusPrefix = ProjectHelper.extractUriFromComponentName(attributeName);
+ String uri = ProjectHelper.extractUriFromComponentName(uriPlusPrefix);
+ String localName = ProjectHelper.extractNameFromComponentName(attributeName);
+ String qName = "".equals(uri) ? localName : uri + ":" + localName;
dc.setDynamicAttribute(uri, localName, qName, value);
return;
- } else if (element instanceof DynamicAttribute) {
+ }
+ if (element instanceof DynamicAttribute) {
DynamicAttribute dc = (DynamicAttribute) element;
dc.setDynamicAttribute(attributeName.toLowerCase(Locale.US), value);
return;
- } else {
- if (attributeName.indexOf(':') != -1) {
- return; // Ignore attribute from unknown uri's
- }
- String msg = getElementName(p, element)
- + " doesn't support the \"" + attributeName
- + "\" attribute.";
- throw new UnsupportedAttributeException(msg, attributeName);
}
+ if (attributeName.indexOf(':') != -1) {
+ return; // Ignore attribute from unknown uri's
+ }
+ String msg = getElementName(p, element)
+ + " doesn't support the \"" + attributeName + "\" attribute.";
+ throw new UnsupportedAttributeException(msg, attributeName);
}
try {
as.set(p, element, value);
@@ -422,7 +394,6 @@
}
}
-
/**
* Adds PCDATA to an element, using the element's
* <code>void addText(String)</code> method, if it has one. If no
@@ -448,13 +419,10 @@
if (text.length() == 0) {
// Only whitespace - ignore
return;
- } else {
- // Not whitespace - fail
- String msg = project.getElementName(element)
- + " doesn't support nested text data (\""
- + condenseText(text) + "\").";
- throw new BuildException(msg);
}
+ // Not whitespace - fail
+ throw new BuildException(project.getElementName(element)
+ + " doesn't support nested text data (\"" + condenseText(text) + "\").");
}
try {
addText.invoke(element, new Object[] {text});
@@ -473,10 +441,9 @@
* @param parent the object which doesn't support a requested element
* @param elementName the name of the Element which is trying to be created.
*/
- public void throwNotSupported(Project project, Object parent,
- String elementName) {
+ public void throwNotSupported(Project project, Object parent, String elementName) {
String msg = project.getElementName(parent)
- + " doesn't support the nested \"" + elementName + "\" element.";
+ + " doesn't support the nested \"" + elementName + "\" element.";
throw new UnsupportedElementException(msg, elementName);
}
@@ -505,24 +472,20 @@
parentUri = "";
}
NestedCreator nc = null;
- if (uri.equals(parentUri) || uri.length()==0) {
- nc = (NestedCreator) nestedCreators.get(
- name.toLowerCase(Locale.US));
+ if (uri.equals(parentUri) || uri.length() == 0) {
+ nc = (NestedCreator) nestedCreators.get(name.toLowerCase(Locale.US));
}
if (nc == null) {
nc = createAddTypeCreator(project, parent, elementName);
}
if (nc == null && parent instanceof DynamicElementNS) {
DynamicElementNS dc = (DynamicElementNS) parent;
- String qName = (child == null ? name : child.getQName());
- final Object nestedElement =
- dc.createDynamicElement(
- (child == null ? "" : child.getNamespace()),
- name, qName);
+ String qName = child == null ? name : child.getQName();
+ final Object nestedElement = dc.createDynamicElement(
+ child == null ? "" : child.getNamespace(), name, qName);
if (nestedElement != null) {
nc = new NestedCreator(null) {
- Object create(
- Project project, Object parent, Object ignore) {
+ Object create(Project project, Object parent, Object ignore) {
return nestedElement;
}
};
@@ -530,12 +493,10 @@
}
if (nc == null && parent instanceof DynamicElement) {
DynamicElement dc = (DynamicElement) parent;
- final Object nestedElement =
- dc.createDynamicElement(name.toLowerCase(Locale.US));
+ final Object nestedElement = dc.createDynamicElement(name.toLowerCase(Locale.US));
if (nestedElement != null) {
nc = new NestedCreator(null) {
- Object create(
- Project project, Object parent, Object ignore) {
+ Object create(Project project, Object parent, Object ignore) {
return nestedElement;
}
};
@@ -567,11 +528,10 @@
* This is not a namespace aware method.
*
* @exception BuildException if no method is available to create the
- * element instance, or if the creating method
- * fails.
+ * element instance, or if the creating method fails.
*/
- public Object createElement(Project project, Object parent,
- String elementName) throws BuildException {
+ public Object createElement(Project project, Object parent, String elementName)
+ throws BuildException {
NestedCreator nc = getNestedCreator(project, "", parent, elementName, null);
try {
Object nestedElement = nc.create(project, parent, null);
@@ -603,10 +563,8 @@
* @return a creator object to create and store the element instance.
*/
public Creator getElementCreator(
- Project project, String parentUri, Object parent, String elementName,
- UnknownElement ue) {
- NestedCreator nc = getNestedCreator(
- project, parentUri, parent, elementName, ue);
+ Project project, String parentUri, Object parent, String elementName, UnknownElement ue) {
+ NestedCreator nc = getNestedCreator(project, parentUri, parent, elementName, ue);
return new Creator(project, parent, nc);
}
@@ -616,14 +574,14 @@
*
* @return <code>true<code> if the introspected class is dynamic;
* <code>false<code> otherwise.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*
* @see DynamicElement
* @see DynamicElementNS
*/
public boolean isDynamic() {
return DynamicElement.class.isAssignableFrom(bean)
- || DynamicElementNS.class.isAssignableFrom(bean);
+ || DynamicElementNS.class.isAssignableFrom(bean);
}
/**
@@ -632,7 +590,7 @@
*
* @return <code>true<code> if the introspected class is a container;
* <code>false<code> otherwise.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*
* @see TaskContainer
*/
@@ -649,9 +607,7 @@
* @return true if the given nested element is supported
*/
public boolean supportsNestedElement(String elementName) {
- return nestedCreators.containsKey(elementName.toLowerCase(Locale.US))
- || isDynamic()
- || addTypeMethods.size() != 0;
+ return supportsNestedElement("", elementName);
}
/**
@@ -664,19 +620,24 @@
* @return true if the given nested element is supported
*/
public boolean supportsNestedElement(String parentUri, String elementName) {
- if (parentUri.equals(ProjectHelper.ANT_CORE_URI)) {
- parentUri = "";
+ if (isDynamic() || addTypeMethods.size() > 0) {
+ return true;
+ }
+ String name = ProjectHelper.extractNameFromComponentName(elementName);
+ if (!nestedCreators.containsKey(name.toLowerCase(Locale.US))) {
+ return false;
}
String uri = ProjectHelper.extractUriFromComponentName(elementName);
if (uri.equals(ProjectHelper.ANT_CORE_URI)) {
uri = "";
}
- String name = ProjectHelper.extractNameFromComponentName(elementName);
-
- return (
- nestedCreators.containsKey(name.toLowerCase(Locale.US))
- && (uri.equals(parentUri) || "".equals(uri)))
- || isDynamic() || addTypeMethods.size() != 0;
+ if ("".equals(uri)) {
+ return true;
+ }
+ if (parentUri.equals(ProjectHelper.ANT_CORE_URI)) {
+ parentUri = "";
+ }
+ return uri.equals(parentUri);
}
/**
@@ -704,8 +665,7 @@
if (elementName == null) {
return;
}
- NestedCreator ns = (NestedCreator) nestedCreators.get(
- elementName.toLowerCase(Locale.US));
+ NestedCreator ns = (NestedCreator) nestedCreators.get(elementName.toLowerCase(Locale.US));
if (ns == null) {
return;
}
@@ -749,13 +709,12 @@
* @exception BuildException if the introspected class does not
* support the named nested element.
*/
- public Class getElementType(String elementName)
- throws BuildException {
+ public Class getElementType(String elementName) throws BuildException {
Class nt = (Class) nestedTypes.get(elementName);
if (nt == null) {
throw new UnsupportedElementException("Class "
- + bean.getName() + " doesn't support the nested \""
- + elementName + "\" element.", elementName);
+ + bean.getName() + " doesn't support the nested \""
+ + elementName + "\" element.", elementName);
}
return nt;
}
@@ -772,13 +731,12 @@
* @exception BuildException if the introspected class does not
* support the named attribute.
*/
- public Class getAttributeType(String attributeName)
- throws BuildException {
+ public Class getAttributeType(String attributeName) throws BuildException {
Class at = (Class) attributeTypes.get(attributeName);
if (at == null) {
throw new UnsupportedAttributeException("Class "
- + bean.getName() + " doesn't support the \""
- + attributeName + "\" attribute.", attributeName);
+ + bean.getName() + " doesn't support the \""
+ + attributeName + "\" attribute.", attributeName);
}
return at;
}
@@ -791,13 +749,12 @@
* Cannot be <code>null</code>.
* @throws BuildException if the introspected class does not
* support the nested text.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*/
- public Method getAddTextMethod()
- throws BuildException {
+ public Method getAddTextMethod() throws BuildException {
if (!supportsCharacters()) {
throw new BuildException("Class " + bean.getName()
- + " doesn't support nested text data.");
+ + " doesn't support nested text data.");
}
return addText;
}
@@ -812,15 +769,14 @@
* class is a dynamic configurator!
* @throws BuildException if the introspected class does not
* support the named nested element.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*/
- public Method getElementMethod(String elementName)
- throws BuildException {
+ public Method getElementMethod(String elementName) throws BuildException {
Object creator = nestedCreators.get(elementName);
if (creator == null) {
throw new UnsupportedElementException("Class "
- + bean.getName() + " doesn't support the nested \""
- + elementName + "\" element.", elementName);
+ + bean.getName() + " doesn't support the nested \""
+ + elementName + "\" element.", elementName);
}
return ((NestedCreator) creator).method;
}
@@ -834,15 +790,14 @@
* This will never be <code>null</code>.
* @throws BuildException if the introspected class does not
* support the named attribute.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*/
- public Method getAttributeMethod(String attributeName)
- throws BuildException {
+ public Method getAttributeMethod(String attributeName) throws BuildException {
Object setter = attributeSetters.get(attributeName);
if (setter == null) {
throw new UnsupportedAttributeException("Class "
- + bean.getName() + " doesn't support the \""
- + attributeName + "\" attribute.", attributeName);
+ + bean.getName() + " doesn't support the \""
+ + attributeName + "\" attribute.", attributeName);
}
return ((AttributeSetter) setter).method;
}
@@ -857,11 +812,9 @@
}
/**
- * Returns an enumeration of the names of the attributes supported
- * by the introspected class.
+ * Returns an enumeration of the names of the attributes supported by the introspected class.
*
- * @return an enumeration of the names of the attributes supported
- * by the introspected class.
+ * @return an enumeration of the names of the attributes supported by the introspected class.
* @see #getAttributeMap
*/
public Enumeration getAttributes() {
@@ -869,16 +822,15 @@
}
/**
- * Returns a read-only map of attributes supported
- * by the introspected class.
+ * Returns a read-only map of attributes supported by the introspected class.
*
* @return an attribute name to attribute <code>Class</code>
* unmodifiable map. Can be empty, but never <code>null</code>.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*/
public Map getAttributeMap() {
- return (attributeTypes.size() < 1)
- ? EMPTY_MAP : Collections.unmodifiableMap(attributeTypes);
+ return attributeTypes.isEmpty()
+ ? Collections.EMPTY_MAP : Collections.unmodifiableMap(attributeTypes);
}
/**
@@ -899,11 +851,11 @@
*
* @return a nested-element name to nested-element <code>Class</code>
* unmodifiable map. Can be empty, but never <code>null</code>.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*/
public Map getNestedElementMap() {
- return (nestedTypes.size() < 1)
- ? EMPTY_MAP : Collections.unmodifiableMap(nestedTypes);
+ return nestedTypes.isEmpty()
+ ? Collections.EMPTY_MAP : Collections.unmodifiableMap(nestedTypes);
}
/**
@@ -921,11 +873,11 @@
* method derives from another type also an argument of a method
* of this list, the method with the most derived argument will
* always appear first. Can be empty, but never <code>null</code>.
- * @since Ant 1.6.3
+ * @since Ant 1.6.3
*/
public List getExtensionPoints() {
- return (addTypeMethods.size() < 1) ? Collections.EMPTY_LIST
- : Collections.unmodifiableList(addTypeMethods);
+ return addTypeMethods.isEmpty()
+ ? Collections.EMPTY_LIST : Collections.unmodifiableList(addTypeMethods);
}
/**
@@ -972,70 +924,77 @@
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException {
- m.invoke(parent, (Object[]) (new String[] {value}));
+ m.invoke(parent, (Object[]) new String[] { value });
}
};
+ }
// char and Character get special treatment - take the first character
- } else if (java.lang.Character.class.equals(reflectedArg)) {
+ if (java.lang.Character.class.equals(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException {
if (value.length() == 0) {
throw new BuildException("The value \"\" is not a "
- + "legal value for attribute \"" + attrName + "\"");
+ + "legal value for attribute \"" + attrName + "\"");
}
- m.invoke(parent, (Object[])
- (new Character[] {new Character(value.charAt(0))}));
+ m.invoke(parent, (Object[]) new Character[] { new Character(value.charAt(0)) });
}
};
- // boolean and Boolean get special treatment because we
- // have a nice method in Project
- } else if (java.lang.Boolean.class.equals(reflectedArg)) {
+ }
+ // boolean and Boolean get special treatment because we have a nice method in Project
+ if (java.lang.Boolean.class.equals(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException {
- m.invoke(parent, (Object[]) (
- new Boolean[] {Project.toBoolean(value)
- ? Boolean.TRUE : Boolean.FALSE}));
+ m.invoke(parent, (Object[]) new Boolean[] {
+ Project.toBoolean(value) ? Boolean.TRUE : Boolean.FALSE });
}
};
+ }
// Class doesn't have a String constructor but a decent factory method
- } else if (java.lang.Class.class.equals(reflectedArg)) {
+ if (java.lang.Class.class.equals(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException, BuildException {
try {
- m.invoke(parent, new Object[] {Class.forName(value)});
+ m.invoke(parent, new Object[] { Class.forName(value) });
} catch (ClassNotFoundException ce) {
throw new BuildException(ce);
}
}
};
+ }
// resolve relative paths through Project
- } else if (java.io.File.class.equals(reflectedArg)) {
+ if (java.io.File.class.equals(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException {
- m.invoke(parent, new Object[] {p.resolveFile(value)});
+ m.invoke(parent, new Object[] { p.resolveFile(value) });
}
};
+ }
// EnumeratedAttributes have their own helper class
- } else if (EnumeratedAttribute.class.isAssignableFrom(reflectedArg)) {
+ if (EnumeratedAttribute.class.isAssignableFrom(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException, BuildException {
try {
- EnumeratedAttribute ea =
- (EnumeratedAttribute) reflectedArg.newInstance();
+ EnumeratedAttribute ea = (EnumeratedAttribute) reflectedArg.newInstance();
ea.setValue(value);
- m.invoke(parent, new Object[] {ea});
+ m.invoke(parent, new Object[] { ea });
} catch (InstantiationException ie) {
throw new BuildException(ie);
}
}
};
- } else if (reflectedArg.getSuperclass() != null
- && reflectedArg.getSuperclass().getName().equals("java.lang.Enum")) {
+ }
+ Class enumClass = null;
+ try {
+ enumClass = Class.forName("java.lang.Enum");
+ } catch (ClassNotFoundException e) {
+ //ignore
+ }
+ if (enumClass != null && enumClass.isAssignableFrom(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException, BuildException {
@@ -1047,88 +1006,86 @@
//there is specific logic here for the value being out of the allowed
//set of enumerations.
if (x.getTargetException() instanceof IllegalArgumentException) {
- throw new BuildException(
- "'" + value + "' is not a permitted value for "
- + reflectedArg.getName());
- } else {
- //only if the exception is not an IllegalArgument, do we hand off
- //to extractBuildException() to get the buildexception from the InvocationTarget
- throw extractBuildException(x);
+ throw new BuildException("'" + value + "' is not a permitted value for "
+ + reflectedArg.getName());
}
+ //only if the exception is not an IllegalArgument do we request the
+ //BuildException via extractBuildException():
+ throw extractBuildException(x);
} catch (Exception x) {
//any other failure of invoke() to work.
throw new BuildException(x);
}
}
};
- } else if (java.lang.Long.class.equals(reflectedArg)) {
+ }
+ if (java.lang.Long.class.equals(reflectedArg)) {
return new AttributeSetter(m) {
public void set(Project p, Object parent, String value)
throws InvocationTargetException, IllegalAccessException, BuildException {
- long ell;
try {
- ell = StringUtils.parseHumanSizes(value);
+ m.invoke(parent, new Object[] {
+ new Long(StringUtils.parseHumanSizes(value)) });
+ } catch (InvocationTargetException e) {
+ throw e;
+ } catch (IllegalAccessException e) {
+ throw e;
} catch (Exception e) {
throw new BuildException(e);
}
- m.invoke(parent, new Object[] { new Long(ell) });
}
};
- } else {
+ }
// worst case. look for a public String constructor and use it
// also supports new Whatever(Project, String) as for Path or Reference
// This is used (deliberately) for all primitives/wrappers other than
// char, boolean, and long.
- boolean includeProject;
- Constructor c;
+ boolean includeProject;
+ Constructor c;
+ try {
+ // First try with Project.
+ c = reflectedArg.getConstructor(new Class[] {Project.class, String.class});
+ includeProject = true;
+ } catch (NoSuchMethodException nme) {
+ // OK, try without.
try {
- // First try with Project.
- c = reflectedArg.getConstructor(new Class[] {Project.class, String.class});
- includeProject = true;
- } catch (NoSuchMethodException nme) {
- // OK, try without.
- try {
- c = reflectedArg.getConstructor(new Class[] {String.class});
- includeProject = false;
- } catch (NoSuchMethodException nme2) {
- // Well, no matching constructor.
- return null;
- }
+ c = reflectedArg.getConstructor(new Class[] {String.class});
+ includeProject = false;
+ } catch (NoSuchMethodException nme2) {
+ // Well, no matching constructor.
+ return null;
}
- final boolean finalIncludeProject = includeProject;
- final Constructor finalConstructor = c;
-
- return new AttributeSetter(m) {
- public void set(Project p, Object parent, String value)
- throws InvocationTargetException, IllegalAccessException, BuildException {
- try {
- Object[] args = (finalIncludeProject)
+ }
+ final boolean finalIncludeProject = includeProject;
+ final Constructor finalConstructor = c;
+
+ return new AttributeSetter(m) {
+ public void set(Project p, Object parent, String value)
+ throws InvocationTargetException, IllegalAccessException, BuildException {
+ try {
+ Object[] args = finalIncludeProject
? new Object[] {p, value} : new Object[] {value};
- Object attribute = finalConstructor.newInstance(args);
- if (p != null) {
- p.setProjectReference(attribute);
- }
- m.invoke(parent, new Object[] {attribute});
- } catch (InstantiationException ie) {
- throw new BuildException(ie);
+ Object attribute = finalConstructor.newInstance(args);
+ if (p != null) {
+ p.setProjectReference(attribute);
}
+ m.invoke(parent, new Object[] {attribute});
+ } catch (InstantiationException ie) {
+ throw new BuildException(ie);
}
- };
- }
+ }
+ };
}
/**
* Returns a description of the type of the given element in
* relation to a given project. This is used for logging purposes
- * when the element is asked to cope with some data it has no
- * way of handling.
+ * when the element is asked to cope with some data it has no way of handling.
*
- * @param project The project the element is defined in.
- * Must not be <code>null</code>.
+ * @param project The project the element is defined in. Must not be <code>null</code>.
*
- * @param element The element to describe.
- * Must not be <code>null</code>.
+ * @param element The element to describe. Must not be <code>null</code>.
*
* @return a description of the element type
*/
@@ -1142,10 +1099,8 @@
* code to make sure the method name does actually begin with the
* specified prefix - no checking is done in this method.
*
- * @param methodName The name of the method in question.
- * Must not be <code>null</code>.
- * @param prefix The prefix to remove.
- * Must not be <code>null</code>.
+ * @param methodName The name of the method in question. Must not be <code>null</code>.
+ * @param prefix The prefix to remove. Must not be <code>null</code>.
*
* @return the lower-cased method name with the prefix removed.
*/
@@ -1172,15 +1127,13 @@
* create to create an object, the object then gets
* configured and then UnknownElement calls store.
* SetPolyType may be used to override the type used
- * to create the object with. SetPolyType gets called
- * before create.
+ * to create the object with. SetPolyType gets called before create.
*
* @param project the current project
* @param parent the parent object to create the object in
* @param nestedCreator the nested creator object to use
*/
- private Creator(
- Project project, Object parent, NestedCreator nestedCreator) {
+ private Creator(Project project, Object parent, NestedCreator nestedCreator) {
this.project = project;
this.parent = parent;
this.nestedCreator = nestedCreator;
@@ -1196,8 +1149,7 @@
}
/**
- * Create an object using this creator, which is determined
- * by introspection.
+ * Create an object using this creator, which is determined by introspection.
*
* @return the created object
*/
@@ -1205,20 +1157,16 @@
if (polyType != null) {
if (!nestedCreator.isPolyMorphic()) {
throw new BuildException(
- "Not allowed to use the polymorphic form"
- + " for this element");
+ "Not allowed to use the polymorphic form for this element");
}
- ComponentHelper helper =
- ComponentHelper.getComponentHelper(project);
+ ComponentHelper helper = ComponentHelper.getComponentHelper(project);
nestedObject = helper.createComponent(polyType);
if (nestedObject == null) {
- throw new BuildException(
- "Unable to create object of type " + polyType);
+ throw new BuildException("Unable to create object of type " + polyType);
}
}
try {
- nestedObject = nestedCreator.create(
- project, parent, nestedObject);
+ nestedObject = nestedCreator.create(project, parent, nestedObject);
if (project != null) {
project.setProjectReference(nestedObject);
}
@@ -1228,27 +1176,24 @@
} catch (InstantiationException ex) {
throw new BuildException(ex);
} catch (IllegalArgumentException ex) {
- if (polyType != null) {
- throw new BuildException(
- "Invalid type used " + polyType);
+ if (polyType == null) {
+ throw ex;
}
- throw ex;
+ throw new BuildException("Invalid type used " + polyType);
} catch (InvocationTargetException ex) {
throw extractBuildException(ex);
}
}
/**
- * @return the real object (used currently only
- * for preset def).
+ * @return the real object (used currently only for presetdef).
*/
public Object getRealObject() {
return nestedCreator.getRealObject();
}
/**
- * Stores the nested element object using a storage method
- * determined by introspection.
+ * Stores the nested element object using a storage method determined by introspection.
*
*/
public void store() {
@@ -1259,11 +1204,10 @@
} catch (InstantiationException ex) {
throw new BuildException(ex);
} catch (IllegalArgumentException ex) {
- if (polyType != null) {
- throw new BuildException(
- "Invalid type used " + polyType);
+ if (polyType == null) {
+ throw ex;
}
- throw ex;
+ throw new BuildException("Invalid type used " + polyType);
} catch (InvocationTargetException ex) {
throw extractBuildException(ex);
}
@@ -1290,13 +1234,10 @@
return null;
}
abstract Object create(Project project, Object parent, Object child)
- throws InvocationTargetException,
- IllegalAccessException,
- InstantiationException;
+ throws InvocationTargetException, IllegalAccessException, InstantiationException;
+
void store(Object parent, Object child)
- throws InvocationTargetException,
- IllegalAccessException,
- InstantiationException {
+ throws InvocationTargetException, IllegalAccessException, InstantiationException {
// DO NOTHING
}
}
@@ -1307,7 +1248,7 @@
}
Object create(Project project, Object parent, Object ignore)
- throws InvocationTargetException, IllegalAccessException {
+ throws InvocationTargetException, IllegalAccessException {
return getMethod().invoke(parent, new Object[] {});
}
}
@@ -1332,16 +1273,14 @@
}
Object create(Project project, Object parent, Object child)
- throws InvocationTargetException,
- IllegalAccessException, InstantiationException {
+ throws InvocationTargetException, IllegalAccessException, InstantiationException {
if (child == null) {
child = constructor.newInstance(
- (constructor.getParameterTypes().length == 0)
- ? new Object[] {} : new Object[] {project});
+ constructor.getParameterTypes().length == 0
+ ? new Object[] {} : new Object[] {project});
}
if (child instanceof PreSetDef.PreSetDefinition) {
- child = ((PreSetDef.PreSetDefinition) child)
- .createObject(project);
+ child = ((PreSetDef.PreSetDefinition) child).createObject(project);
}
if (behavior == ADD) {
istore(parent, child);
@@ -1350,16 +1289,14 @@
}
void store(Object parent, Object child)
- throws InvocationTargetException,
- IllegalAccessException, InstantiationException {
+ throws InvocationTargetException, IllegalAccessException, InstantiationException {
if (behavior == ADD_CONFIGURED) {
istore(parent, child);
}
}
private void istore(Object parent, Object child)
- throws InvocationTargetException,
- IllegalAccessException, InstantiationException {
+ throws InvocationTargetException, IllegalAccessException, InstantiationException {
getMethod().invoke(parent, new Object[] {child});
}
}
@@ -1375,9 +1312,7 @@
method = m;
}
abstract void set(Project p, Object parent, String value)
- throws InvocationTargetException,
- IllegalAccessException,
- BuildException;
+ throws InvocationTargetException, IllegalAccessException, BuildException;
}
/**
@@ -1397,8 +1332,7 @@
* @throws BuildException
*/
private NestedCreator createAddTypeCreator(
- Project project, Object parent, String elementName)
- throws BuildException {
+ Project project, Object parent, String elementName) throws BuildException {
if (addTypeMethods.size() == 0) {
return null;
}
@@ -1420,8 +1354,7 @@
}
Object rObject = addedObject;
if (addedObject instanceof PreSetDef.PreSetDefinition) {
- rObject = ((PreSetDef.PreSetDefinition) addedObject).createObject(
- project);
+ rObject = ((PreSetDef.PreSetDefinition) addedObject).createObject(project);
}
final Object nestedObject = addedObject;
final Object realObject = rObject;
@@ -1439,9 +1372,8 @@
return realObject;
}
- void store(Object parent, Object child)
- throws InvocationTargetException, IllegalAccessException,
- InstantiationException {
+ void store(Object parent, Object child) throws InvocationTargetException,
+ IllegalAccessException, InstantiationException {
if (getMethod().getName().endsWith("Configured")) {
getMethod().invoke(parent, new Object[] {realObject});
}
@@ -1452,10 +1384,8 @@
/**
* Inserts an add or addConfigured method into
* the addTypeMethods array. The array is
- * ordered so that the more derived classes
- * are first.
- * If both add and addConfigured are present, the addConfigured
- * will take priority.
+ * ordered so that the more derived classes are first.
+ * If both add and addConfigured are present, the addConfigured will take priority.
* @param method the <code>Method</code> to insert.
*/
private void insertAddTypeMethod(Method method) {
@@ -1469,8 +1399,7 @@
}
return; // Already present
}
- if (current.getParameterTypes()[0].isAssignableFrom(
- argClass)) {
+ if (current.getParameterTypes()[0].isAssignableFrom(argClass)) {
addTypeMethods.add(c, method);
return; // higher derived
}
@@ -1496,13 +1425,9 @@
if (matchedClass == null) {
matchedClass = methodClass;
matchedMethod = method;
- } else {
- if (!methodClass.isAssignableFrom(matchedClass)) {
- throw new BuildException("ambiguous: types "
- + matchedClass.getName() + " and "
- + methodClass.getName() + " match "
- + paramClass.getName());
- }
+ } else if (!methodClass.isAssignableFrom(matchedClass)) {
+ throw new BuildException("ambiguous: types " + matchedClass.getName() + " and "
+ + methodClass.getName() + " match " + paramClass.getName());
}
}
}
@@ -1514,7 +1439,6 @@
return text;
}
int ends = (MAX_REPORT_NESTED_TEXT - ELLIPSIS.length()) / 2;
- return new StringBuffer(text).replace(ends, text.length() - ends,
- ELLIPSIS).toString();
+ return new StringBuffer(text).replace(ends, text.length() - ends, ELLIPSIS).toString();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org