umagesh 02/03/03 16:33:12 Modified: proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters ClassConstants.java proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/types FilterChain.java Added: proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/util JavaClassHelper.java Log: Cheat the introspector by making ClassConstants delegate bcel stuff to a helper class. Revision Changes Path 1.4 +2 -31 jakarta-ant/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ClassConstants.java Index: ClassConstants.java =================================================================== RCS file: /home/cvs/jakarta-ant/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ClassConstants.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ClassConstants.java 2 Mar 2002 02:20:25 -0000 1.3 +++ ClassConstants.java 4 Mar 2002 00:33:11 -0000 1.4 @@ -58,11 +58,7 @@ import java.io.Reader; import org.apache.tools.ant.Project; - -import org.apache.bcel.classfile.ClassParser; -import org.apache.bcel.classfile.ConstantValue; -import org.apache.bcel.classfile.Field; -import org.apache.bcel.classfile.JavaClass; +import org.apache.tools.ant.filters.util.JavaClassHelper; /** * Assemble the constants declared in a Java class in @@ -93,9 +89,6 @@ extends BaseFilterReader implements ChainableReader { - /** System specific line separator. */ - private static final String LS = System.getProperty("line.separator"); - /** Data that must be read from, if not null. */ private String queuedData = null; @@ -141,29 +134,7 @@ ch = -1; } else { final byte[] bytes = clazz.getBytes(); - final StringBuffer sb = new StringBuffer(); - final ByteArrayInputStream bis = new ByteArrayInputStream(bytes); - final ClassParser parser = new ClassParser(bis, ""); - final JavaClass javaClass = parser.parse(); - final Field[] fields = javaClass.getFields(); - for (int i = 0; i < fields.length; i++) { - final Field field = fields[i]; - if (field != null) { - final ConstantValue cv = field.getConstantValue(); - if (cv != null) { - String cvs = cv.toString(); - //Remove start and end quotes if field is a String - if (cvs.startsWith("\"") && cvs.endsWith("\"")) { - cvs = cvs.substring(1, cvs.length() - 1); - } - sb.append(field.getName()); - sb.append('='); - sb.append(cvs); - sb.append(LS); - } - } - } - + final StringBuffer sb = JavaClassHelper.getConstants(bytes); if (sb.length() > 0) { queuedData = sb.toString(); return read(); 1.1 jakarta-ant/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/util/JavaClassHelper.java Index: JavaClassHelper.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.tools.ant.filters.util; import java.io.ByteArrayInputStream; import java.io.IOException; import org.apache.bcel.classfile.ClassParser; import org.apache.bcel.classfile.ConstantValue; import org.apache.bcel.classfile.Field; import org.apache.bcel.classfile.JavaClass; /** * Helper class that filters constants from a Java Class * * @author <a href="mailto:[EMAIL PROTECTED]">Magesh Umasankar</a> */ public final class JavaClassHelper { /** System specific line separator. */ private static final String LS = System.getProperty("line.separator"); /** * Get the constants declared in a file as name=value */ public static final StringBuffer getConstants(byte[] bytes) throws IOException { final StringBuffer sb = new StringBuffer(); final ByteArrayInputStream bis = new ByteArrayInputStream(bytes); final ClassParser parser = new ClassParser(bis, ""); final JavaClass javaClass = parser.parse(); final Field[] fields = javaClass.getFields(); for (int i = 0; i < fields.length; i++) { final Field field = fields[i]; if (field != null) { final ConstantValue cv = field.getConstantValue(); if (cv != null) { String cvs = cv.toString(); //Remove start and end quotes if field is a String if (cvs.startsWith("\"") && cvs.endsWith("\"")) { cvs = cvs.substring(1, cvs.length() - 1); } sb.append(field.getName()); sb.append('='); sb.append(cvs); sb.append(LS); } } } return sb; } } 1.6 +1 -3 jakarta-ant/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/types/FilterChain.java Index: FilterChain.java =================================================================== RCS file: /home/cvs/jakarta-ant/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/types/FilterChain.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FilterChain.java 3 Mar 2002 20:44:08 -0000 1.5 +++ FilterChain.java 4 Mar 2002 00:33:12 -0000 1.6 @@ -55,7 +55,7 @@ import java.util.Vector; -//import org.apache.tools.ant.filters.ClassConstants; +import org.apache.tools.ant.filters.ClassConstants; import org.apache.tools.ant.filters.ExpandProperties; import org.apache.tools.ant.filters.HeadFilter; import org.apache.tools.ant.filters.LineContains; @@ -85,11 +85,9 @@ return filterReaders; } - /* public final void addClassConstants(final ClassConstants classConstants) { filterReaders.addElement(classConstants); } - */ public final void addExpandProperties(final ExpandProperties expandProperties) { filterReaders.addElement(expandProperties);
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>