conor 2003/02/19 06:44:54
Modified: src/main/org/apache/tools/ant Tag: ANT_15_BRANCH IntrospectionHelper.java src/main/org/apache/tools/ant/filters Tag: ANT_15_BRANCH ReplaceTokens.java Log: Merge Revision Changes Path No revision No revision 1.42.2.2 +10 -2 ant/src/main/org/apache/tools/ant/IntrospectionHelper.java Index: IntrospectionHelper.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/IntrospectionHelper.java,v retrieving revision 1.42.2.1 retrieving revision 1.42.2.2 diff -u -w -u -r1.42.2.1 -r1.42.2.2 --- IntrospectionHelper.java 10 Feb 2003 14:24:37 -0000 1.42.2.1 +++ IntrospectionHelper.java 19 Feb 2003 14:44:54 -0000 1.42.2.2 @@ -259,7 +259,7 @@ particular order. */ } - AttributeSetter as = createAttributeSetter(m, args[0]); + AttributeSetter as = createAttributeSetter(m, args[0], propName); if (as != null) { attributeTypes.put(propName, args[0]); attributeSetters.put(propName, as); @@ -689,12 +689,15 @@ * Must not be <code>null</code>. * @param arg The type of the single argument of the bean's method. * Must not be <code>null</code>. + * @param attrName the name of the attribute for which the setter is being + * created. * * @return an appropriate AttributeSetter instance, or <code>null</code> * if no appropriate conversion is available. */ private AttributeSetter createAttributeSetter(final Method m, - Class arg) { + Class arg, + final String attrName) { // use wrappers for primitive classes, e.g. int and // Integer are treated identically final Class reflectedArg = PRIMITIVE_TYPE_MAP.containsKey (arg) @@ -714,6 +717,11 @@ return new AttributeSetter() { 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 + "\""); + } m.invoke(parent, new Character[] {new Character(value.charAt(0))}); } No revision No revision 1.4.2.5 +11 -1 ant/src/main/org/apache/tools/ant/filters/ReplaceTokens.java Index: ReplaceTokens.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/ReplaceTokens.java,v retrieving revision 1.4.2.4 retrieving revision 1.4.2.5 diff -u -w -u -r1.4.2.4 -r1.4.2.5 --- ReplaceTokens.java 19 Feb 2003 14:18:30 -0000 1.4.2.4 +++ ReplaceTokens.java 19 Feb 2003 14:44:54 -0000 1.4.2.5 @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2002 The Apache Software Foundation. All rights + * Copyright (c) 2002-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -58,6 +58,7 @@ import java.util.Hashtable; import org.apache.tools.ant.types.Parameter; +import org.apache.tools.ant.BuildException; /** * Replaces tokens in the original input with user-supplied values. @@ -304,9 +305,18 @@ final String type = params[i].getType(); if ("tokenchar".equals(type)) { final String name = params[i].getName(); + String value = params[i].getValue(); if ("begintoken".equals(name)) { + if (value.length() == 0) { + throw new BuildException("Begin token cannot " + + "be empty"); + } beginToken = params[i].getValue().charAt(0); } else if ("endtoken".equals(name)) { + if (value.length() == 0) { + throw new BuildException("End token cannot " + + "be empty"); + } endToken = params[i].getValue().charAt(0); } } else if ("token".equals(type)) {