--- old/test/tools/apt/lib/Tester.java 2012-01-19 16:21:50.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - - -/* - * A utility used to invoke and test the apt tool. - * Tests should subclass Tester, and invoke run(). - * - * @author Scott Seligman - */ - -import java.io.*; -import java.util.*; -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; - - -public abstract class Tester { - - /** - * The declaration corresponding to this tester's class. Set by - * TestProcessorFactory after the constructor completes, and - * before init() is invoked. - */ - ClassDeclaration thisClassDecl; - - /** - * The environment for this apt run. Set by TestProcessorFactory - * after the constructor completes, and before init() is invoked. - */ - AnnotationProcessorEnvironment env; - - - // TestProcessorFactory looks here to find the tester that's running - // when it's invoked. - static Tester activeTester; - - private static final String[] DEFAULT_ARGS = { - "-nocompile", - "-XPrintAptRounds", - "-XListDeclarations", - }; - private static final String[] NO_STRINGS = {}; - - // Force processor and factory to be compiled - private static Class dummy = TestProcessorFactory.class; - - private final String testSrc = System.getProperty("test.src", "."); - private final String testClasses = System.getProperty("test.classes", "."); - - // apt command-line args - private String[] args; - - - static { - // Enable assertions in the unnamed package. - ClassLoader loader = Tester.class.getClassLoader(); - if (loader != null) { - loader.setPackageAssertionStatus(null, true); - } - } - - - protected Tester(String... additionalArgs) { - String sourceFile = testSrc + File.separator + - getClass().getName() + ".java"; - - ArrayList as = new ArrayList(); - Collections.addAll(as, DEFAULT_ARGS); - as.add("-sourcepath"); as.add(testSrc); - as.add("-factory"); as.add(TestProcessorFactory.class.getName()); - Collections.addAll(as, additionalArgs); - as.add(sourceFile); - args = as.toArray(NO_STRINGS); - } - - /** - * Run apt. - */ - protected void run() { - activeTester = this; - if (com.sun.tools.apt.Main.process(args) != 0) { - throw new Error("apt errors encountered."); - } - } - - /** - * Called after thisClassDecl and env have been set, but before any - * tests are run, to allow the tester subclass to perform any - * needed initialization. - */ - protected void init() { - } - - /** - * Returns the declaration of a named method in this class. If this - * method name is overloaded, one method is chosen arbitrarily. - * Returns null if no method is found. - */ - protected MethodDeclaration getMethod(String methodName) { - for (MethodDeclaration m : thisClassDecl.getMethods()) { - if (methodName.equals(m.getSimpleName())) { - return m; - } - } - return null; - } - - /** - * Returns the declaration of a named field in this class. - * Returns null if no field is found. - */ - protected FieldDeclaration getField(String fieldName) { - for (FieldDeclaration f : thisClassDecl.getFields()) { - if (fieldName.equals(f.getSimpleName())) { - return f; - } - } - return null; - } - - /** - * Returns the annotation mirror of a given type on a named method - * in this class. If this method name is overloaded, one method is - * chosen arbitrarily. Returns null if no appropriate annotation - * is found. - */ - protected AnnotationMirror getAnno(String methodName, String annoType) { - MethodDeclaration m = getMethod(methodName); - if (m != null) { - TypeDeclaration at = env.getTypeDeclaration(annoType); - for (AnnotationMirror a : m.getAnnotationMirrors()) { - if (at == a.getAnnotationType().getDeclaration()) { - return a; - } - } - } - return null; - } -}