--- old/make/Makefile-classic 2012-01-19 16:21:04.000000000 -0800 +++ new/make/Makefile-classic 2012-01-19 16:21:04.000000000 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2012 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 @@ -115,7 +115,6 @@ JAVADOC_JAR = $(LIB_DIR)/javadoc.jar JAVAH_JAR = $(LIB_DIR)/javah.jar JAVAP_JAR = $(LIB_DIR)/javap.jar -APT_JAR = $(LIB_DIR)/apt.jar CLASSES_JAR = $(DIST_DIR)/classes.jar SRC_ZIP = $(DIST_DIR)/src.zip @@ -163,7 +162,7 @@ #----- useful macros -TOOLS = javac javadoc javah javap apt +TOOLS = javac javadoc javah javap SOURCE_LEVEL = 5 BOOTSTRAP_TARGET_LEVEL = 5 @@ -319,28 +318,6 @@ ( $(ECHO) Main-Class: sun.tools.javap.Main ) > $(BUILD_DIR)/javap.mf $(BOOTJAR) -cfm $@ $(BUILD_DIR)/javap.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAP_DIRS)) -#----- apt - -APT_DIRS = \ - com/sun/mirror \ - com/sun/tools/apt - -APT_RESOURCE_FILES = \ - $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(APT_DIRS)) -name SCCS -prune -o -name \*.properties -print ) - -APT_JAVA_FILES = \ - $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(APT_DIRS)) -name SCCS -prune -o -name \*.java -print ) \ - $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES)) - -$(APT_JAR): $(APT_JAVA_FILES) $(JAVAC_JAR) \ - $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES)) - $(MKDIR) -p $(CLASSES_DIR) $(@D) - $(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(NO_PROPRIETARY_API_WARNINGS) \ - $(APT_JAVA_FILES) \ - $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES)) - ( $(ECHO) Main-Class: com.sun.tools.apt.Main ; $(ECHO) Class-Path: javac.jar ) > $(BUILD_DIR)/apt.mf - $(BOOTJAR) -cfm $@ $(BUILD_DIR)/apt.mf $(patsubst %,-C $(CLASSES_DIR) %, $(APT_DIRS)) - #----- build-tools: $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class @@ -366,7 +343,7 @@ #----- all classes -$(DIST_DIR)/%/classes.jar: $(JAVAC_JAR) $(JAVADOC_JAR) $(JAVAH_JAR) $(JAVAP_JAR) $(APT_JAR) +$(DIST_DIR)/%/classes.jar: $(JAVAC_JAR) $(JAVADOC_JAR) $(JAVAH_JAR) $(JAVAP_JAR) $(MKDIR) -p $(@D) $(BOOTJAR) -cf $@ -C $(CLASSES_DIR) . @@ -401,7 +378,6 @@ - $(TESTJAVA) -jar $(JAVADOC_JAR) -version $(TESTJAVA) -jar $(JAVAH_JAR) -version - $(TESTJAVA) -jar $(JAVAP_JAR) -version - $(TESTJAVA) -jar $(APT_JAR) -version #----- --- old/make/build.properties 2012-01-19 16:21:05.000000000 -0800 +++ new/make/build.properties 2012-01-19 16:21:05.000000000 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2012, 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 @@ -159,15 +159,6 @@ # -apt.includes = \ - com/sun/mirror/ \ - com/sun/tools/apt/ - -apt.tests = \ - tools/apt/ - -# - # The following files require the latest JDK to be available. # The API can be provided by using a suitable boot.java.home # or by setting import.jdk --- old/make/build.xml 2012-01-19 16:21:05.000000000 -0800 +++ new/make/build.xml 2012-01-19 16:21:05.000000000 -0800 @@ -83,7 +83,7 @@ - global property definitions - general top level targets - general diagnostic/debugging targets - - groups of targets for each tool: javac, javadoc, doclets, javah, javap, apt + - groups of targets for each tool: javac, javadoc, doclets, javah, javap Within each group, the following targets are provided, where applicable build-bootstrap-TOOL build the bootstrap version of the tool build-classes-TOOL build the classes for the tool @@ -245,11 +245,11 @@ /> - + @@ -657,42 +657,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -967,7 +931,6 @@ - --- old/make/netbeans/README 2012-01-19 16:21:06.000000000 -0800 +++ new/make/netbeans/README 2012-01-19 16:21:06.000000000 -0800 @@ -7,7 +7,7 @@ repository. The repository contains a number of tools: - apt, javac, javadoc and its doclets, javah and javap. + javac, javadoc and its doclets, javah and javap. Build Properties. --- old/make/test/lib/src.gold.txt 2012-01-19 16:21:06.000000000 -0800 +++ new/make/test/lib/src.gold.txt 2012-01-19 16:21:06.000000000 -0800 @@ -1,14 +1,4 @@ com/sun/javadoc/package.html -com/sun/mirror/apt/package.html -com/sun/mirror/declaration/package.html -com/sun/mirror/overview.html -com/sun/mirror/type/package.html -com/sun/mirror/util/package.html -com/sun/tools/apt/Main.java -com/sun/tools/apt/main/Main.java -com/sun/tools/apt/resources/apt.properties -com/sun/tools/apt/resources/apt_ja.properties -com/sun/tools/apt/resources/apt_zh_CN.properties com/sun/tools/doclets/formats/html/markup/package.html com/sun/tools/doclets/formats/html/package.html com/sun/tools/doclets/formats/html/resources/standard.properties --- old/test/tools/apt/Basics/apt.sh 2012-01-19 16:21:06.000000000 -0800 +++ new/test/tools/apt/Basics/apt.sh 2012-01-19 16:21:06.000000000 -0800 @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2012, 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 @@ -24,11 +24,10 @@ # # @test -# @bug 4908512 5024825 4957203 4993280 4996963 6174696 6177059 +# @bug 4908512 5024825 4957203 4993280 4996963 6174696 6177059 7041249 # @run shell ../verifyVariables.sh -# @build Milk MethodAnnotations NestedClassAnnotations StaticFieldAnnotations StaticMethodAnnotations ParameterAnnotations # @run shell apt.sh -# @summary test consistency of annotation discovery +# @summary Make sure apt is removed and doesn't come back # @author Joseph D. Darcy OS=`uname -s`; @@ -41,136 +40,34 @@ ;; esac -# Construct path to apt executable -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -XDsuppress-tool-api-removal-message " +# Verify apt executable does not exist +test -e "${TESTJAVA}/bin/apt" -printf "%s\n" "-classpath ${TESTCLASSES}" > options -printf "%s\n" "-factorypath ./nullap.jar" >> options -printf "%s\n" "-sourcepath ${TESTSRC} " >> options -printf "%s\n" "-nocompile" >> options -printf "%s\n" "-XListAnnotationTypes" >> options - -printf "%s\n" "-classpath ${TESTCLASSES}" > options1 -printf "%s\n" "-factorypath ./nullap.jar" >> options1 -printf "%s\n" "-sourcepath ${TESTSRC} " >> options1 -printf "%s\n" "-nocompile" >> options1 -printf "%s\n" "-XListAnnotationTypes" >> options1 -printf "%s\n" "-XclassesAsDecls" >> options1 - - -# Construct path to javac executable -JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . " -JAR="${TESTJAVA}/bin/jar " - -$JAVAC ${TESTSRC}/NullAPF.java \ -${TESTSRC}/FreshnessApf.java \ -${TESTSRC}/TestGetTypeDeclarationApf.java \ -${TESTSRC}/TestGetPackageApf.java RESULT=$? case "${RESULT}" in 0 ) - ;; - - * ) - echo "Compilation failed." + echo "apt executable should not exist." exit 1 -esac - -echo "Making services directory and copying services information." -mkdir -p META-INF/services -cp ${TESTSRC}/com.sun.mirror.apt.AnnotationProcessorFactory ./META-INF/services -$JAR cvf0 nullap.jar NullAPF*.class META-INF - -ANNOTATION_FILES="${TESTSRC}/ClassAnnotations.java \ -${TESTSRC}/MethodAnnotations.java \ -${TESTSRC}/NestedClassAnnotations.java \ -${TESTSRC}/StaticFieldAnnotations.java \ -${TESTSRC}/StaticMethodAnnotations.java \ -${TESTSRC}/ParameterAnnotations.java" - -for i in ${ANNOTATION_FILES} -do - printf "%s\n" "Testing annotations on source file ${i}" - ${APT} @options ${i} 2> result.txt - diff ${DIFFOPTS} ${TESTSRC}/golden.txt result.txt - - RESULT=$? - case "$RESULT" in - 0 ) - ;; - - * ) - echo "Unexpected set of annotations on source files found." - exit 1 - esac - - CLASS=`basename ${i} .java` - printf "%s\n" "Testing annotations on class file ${CLASS}" - ${APT} @options1 ${CLASS} 2> result2.txt - diff ${DIFFOPTS} ${TESTSRC}/golden.txt result2.txt - - RESULT=$? - case "$RESULT" in - 0 ) - ;; - - * ) - echo "Unexpected set of annotations on class files found." - exit 1 - esac -done - -# Verify source files are favored over class files - -printf "%s\n" "-factorypath ." > options2 -printf "%s\n" "-factory FreshnessApf" >> options2 -printf "%s\n" "-sourcepath ${TESTSRC}" >> options2 -printf "%s\n" "-classpath ${TESTCLASSES}" >> options2 -printf "%s\n" "-nocompile" >> options2 - -${APT} @options2 ${TESTSRC}/Indirect.java - -RESULT=$? -case "$RESULT" in - 0 ) - ;; + ;; * ) - exit 1 + ;; esac -# Verify new classes can be loaded by getTypeDeclaration - -printf "%s\n" "-factorypath ." > options3 -printf "%s\n" "-factory TestGetTypeDeclarationApf" >> options3 -printf "%s\n" "-sourcepath ${TESTSRC}" >> options3 -# ${APT} @options3 +# Construct path to javac executable +JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . " +$JAVAC ${TESTSRC}/NullAPF.java RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - exit 1 -esac - -# Verify packages can be loaded by getPackage -printf "%s\n" "-factorypath ." > options4 -printf "%s\n" "-factory TestGetPackageApf" >> options4 -printf "%s\n" "-sourcepath ${TESTSRC}" >> options4 - -${APT} @options4 - -RESULT=$? -case "$RESULT" in +case "${RESULT}" in 0 ) - ;; + echo "Compilation of apt-using source passed improperly." + exit 1 + ;; * ) - exit 1 + ;; esac -exit 0 --- old/make/test/lib/apt.sh 2012-01-19 16:21:07.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,42 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 2002, 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. -# - -# @test -# @summary Verify the basic execution of the apt classes in classes.jar. - -TESTSRC=${TESTSRC:-.} -TOPDIR=${TESTSRC}/../../.. -TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java" - -"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \ - com.sun.tools.apt.Main \ - -print "${TESTSRC}"/../HelloWorld.java > apt.tmp - -if diff ${TESTSRC}/../HelloWorld.apt.gold.txt apt.tmp ; then - echo "Test passed." -else - echo "Test failed." - exit 1 -fi --- old/src/share/classes/com/sun/mirror/apt/AnnotationProcessor.java 2012-01-19 16:21:07.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - - -import java.io.IOException; -import java.util.Collection; - - -/** - * An annotation processor, used to examine and process the - * annotations of program elements. An annotation processor may, - * for example, create new source files and XML documents to be used - * in conjunction with the original code. - * - *

An annotation processor is constructed by a - * {@linkplain AnnotationProcessorFactory factory}, which provides it with an - * {@linkplain AnnotationProcessorEnvironment environment} that - * encapsulates the state it needs. - * Messages regarding warnings and errors encountered during processing - * should be directed to the environment's {@link Messager}, - * and new files may be created using the environment's {@link Filer}. - * - *

Each annotation processor is created to process annotations - * of a particular annotation type or set of annotation types. - * It may use its environment to find the program elements with - * annotations of those types. It may freely examine any other program - * elements in the course of its processing. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.annotation.processing.Processor}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationProcessor { - - /** - * Process all program elements supported by this annotation processor. - */ - void process(); -} --- old/src/share/classes/com/sun/mirror/apt/AnnotationProcessorEnvironment.java 2012-01-19 16:21:08.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - - -import java.util.Collection; -import java.util.Map; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; - - -/** - * The environment encapsulating the state needed by an annotation processor. - * An annotation processing tool makes this environment available - * to all annotation processors. - * - *

When an annotation processing tool is invoked, it is given a - * set of type declarations on which to operate. These - * are refered to as the specified types. - * The type declarations said to be included in this invocation - * consist of the specified types and any types nested within them. - * - *

{@link DeclarationFilter} - * provides a simple way to select just the items of interest - * when a method returns a collection of declarations. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.annotation.processing.ProcessingEnvironment}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationProcessorEnvironment { - - /** - * Returns the options passed to the annotation processing tool. - * Options are returned in the form of a map from option name - * (such as "-encoding") to option value. - * For an option with no value (such as "-help"), the - * corresponding value in the map is null. - * - *

Options beginning with "-A" are processor-specific. - * Such options are unrecognized by the tool, but intended to be used by - * some annotation processor. - * - * @return the options passed to the tool - */ - Map getOptions(); - - /** - * Returns the messager used to report errors, warnings, and other - * notices. - * - * @return the messager - */ - Messager getMessager(); - - /** - * Returns the filer used to create new source, class, or auxiliary - * files. - * - * @return the filer - */ - Filer getFiler(); - - - /** - * Returns the declarations of the types specified when the - * annotation processing tool was invoked. - * - * @return the types specified when the tool was invoked, or an - * empty collection if there were none - */ - Collection getSpecifiedTypeDeclarations(); - - /** - * Returns the declaration of a package given its fully qualified name. - * - * @param name fully qualified package name, or "" for the unnamed package - * @return the declaration of the named package, or null if it cannot - * be found - */ - PackageDeclaration getPackage(String name); - - /** - * Returns the declaration of a type given its fully qualified name. - * - * @param name fully qualified type name - * @return the declaration of the named type, or null if it cannot be - * found - */ - TypeDeclaration getTypeDeclaration(String name); - - /** - * A convenience method that returns the declarations of the types - * {@linkplain AnnotationProcessorEnvironment included} - * in this invocation of the annotation processing tool. - * - * @return the declarations of the types included in this invocation - * of the tool, or an empty collection if there are none - */ - Collection getTypeDeclarations(); - - /** - * Returns the declarations annotated with the given annotation type. - * Only declarations of the types - * {@linkplain AnnotationProcessorEnvironment included} - * in this invocation of the annotation processing tool, or - * declarations of members, parameters, or type parameters - * declared within those, are returned. - * - * @param a annotation type being requested - * @return the declarations annotated with the given annotation type, - * or an empty collection if there are none - */ - Collection getDeclarationsAnnotatedWith( - AnnotationTypeDeclaration a); - - /** - * Returns an implementation of some utility methods for - * operating on declarations. - * - * @return declaration utilities - */ - Declarations getDeclarationUtils(); - - /** - * Returns an implementation of some utility methods for - * operating on types. - * - * @return type utilities - */ - Types getTypeUtils(); - - /** - * Add a listener. If the listener is currently registered to listen, - * adding it again will have no effect. - * - * @param listener The listener to add. - * @throws NullPointerException if the listener is null - */ - void addListener(AnnotationProcessorListener listener); - - - /** - * Remove a listener. If the listener is not currently listening, - * the method call does nothing. - * - * @param listener The listener to remove. - * @throws NullPointerException if the listener is null - */ - void removeListener(AnnotationProcessorListener listener); -} --- old/src/share/classes/com/sun/mirror/apt/AnnotationProcessorFactory.java 2012-01-19 16:21:08.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - - -import java.util.Collection; -import java.util.Set; - -import com.sun.mirror.declaration.AnnotationTypeDeclaration; - - -/** - * A factory for creating annotation processors. - * Each factory is responsible for creating processors for one or more - * annotation types. - * The factory is said to support these types. - * - *

Each implementation of an AnnotationProcessorFactory - * must provide a public no-argument constructor to be used by tools to - * instantiate the factory. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.annotation.processing.Processor}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationProcessorFactory { - - /** - * Returns the options recognized by this factory or by any of the - * processors it may create. - * Only {@linkplain AnnotationProcessorEnvironment#getOptions() - * processor-specific} options are included, each of which begins - * with "-A". For example, if this factory recognizes - * options such as -Adebug -Aloglevel=3, it will - * return the strings "-Adebug" and "-Aloglevel". - * - *

A tool might use this information to determine if any - * options provided by a user are unrecognized by any processor, - * in which case it may wish to report an error. - * - * @return the options recognized by this factory or by any of the - * processors it may create, or an empty collection if none - */ - Collection supportedOptions(); - - /** - * Returns the names of the annotation types supported by this factory. - * An element of the result may be the canonical (fully qualified) name - * of a supported annotation type. Alternately it may be of the form - * "name.*" - * representing the set of all annotation types - * with canonical names beginning with "name." - * Finally, "*" by itself represents the set of all - * annotation types. - * - * @return the names of the annotation types supported by this factory - */ - Collection supportedAnnotationTypes(); - - /** - * Returns an annotation processor for a set of annotation - * types. The set will be empty if the factory supports - * "*" and the specified type declarations have - * no annotations. Note that the set of annotation types may be - * empty for other reasons, such as giving the factory an - * opportunity to register a listener. An - * AnnotationProcessorFactory must gracefully handle an - * empty set of annotations; an appropriate response to an empty - * set will often be returning {@link AnnotationProcessors#NO_OP}. - * - * @param atds type declarations of the annotation types to be processed - * @param env environment to use during processing - * @return an annotation processor for the given annotation types, - * or null if the types are not supported or the - * processor cannot be created - */ - AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env); -} --- old/src/share/classes/com/sun/mirror/apt/AnnotationProcessorListener.java 2012-01-19 16:21:08.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - -/** - * Superinterface for all annotation processor event listeners. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. This interface has no - * direct analog in the standardized API because the different round - * model renders it unnecessary. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationProcessorListener extends java.util.EventListener {} --- old/src/share/classes/com/sun/mirror/apt/AnnotationProcessors.java 2012-01-19 16:21:08.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - -import com.sun.mirror.apt.*; -import java.util.*; - -/** - * Utilities to create specialized annotation processors. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. There is no direct analog - * of the functionality of this class in the standardized API. - * - * @since 1.5 - * @author Joseph D. Darcy - * @author Scott Seligman - */ -@Deprecated -@SuppressWarnings("deprecation") -public class AnnotationProcessors { - static class NoOpAP implements AnnotationProcessor { - NoOpAP() {} - public void process(){} - } - - /** - * Combines multiple annotation processors into a simple composite - * processor. - * The composite processor functions by invoking each of its component - * processors in sequence. - */ - static class CompositeAnnotationProcessor implements AnnotationProcessor { - - private List aps = - new LinkedList(); - - /** - * Constructs a new composite annotation processor. - * @param aps the component annotation processors - */ - public CompositeAnnotationProcessor(Collection aps) { - this.aps.addAll(aps); - } - - /** - * Constructs a new composite annotation processor. - * @param aps the component annotation processors - */ - public CompositeAnnotationProcessor(AnnotationProcessor... aps) { - for(AnnotationProcessor ap: aps) - this.aps.add(ap); - } - - /** - * Invokes the process method of each component processor, - * in the order in which the processors were passed to the constructor. - */ - public void process() { - for(AnnotationProcessor ap: aps) - ap.process(); - } - } - - - /** - * An annotation processor that does nothing and has no state. - * May be used multiple times. - * - * @since 1.5 - */ - public final static AnnotationProcessor NO_OP = new NoOpAP(); - - /** - * Constructs a new composite annotation processor. A composite - * annotation processor combines multiple annotation processors - * into one and functions by invoking each of its component - * processors' process methods in sequence. - * - * @param aps The processors to create a composite of - * @since 1.5 - */ - public static AnnotationProcessor getCompositeAnnotationProcessor(AnnotationProcessor... aps) { - return new CompositeAnnotationProcessor(aps); - } - - /** - * Constructs a new composite annotation processor. A composite - * annotation processor combines multiple annotation processors - * into one and functions by invoking each of its component - * processors' process methods in the sequence the processors are - * returned by the collection's iterator. - * - * @param aps A collection of processors to create a composite of - * @since 1.5 - */ - public static AnnotationProcessor getCompositeAnnotationProcessor(Collection aps) { - return new CompositeAnnotationProcessor(aps); - } -} --- old/src/share/classes/com/sun/mirror/apt/Filer.java 2012-01-19 16:21:08.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - - -import java.io.*; - - -/** - * This interface supports the creation of new files by an - * annotation processor. - * Files created in this way will be known to the annotation processing - * tool implementing this interface, better enabling the tool to manage them. - * Four kinds of files are distinguished: - * source files, class files, other text files, and other binary files. - * The latter two are collectively referred to as auxiliary files. - * - *

There are two distinguished locations (subtrees within the - * file system) where newly created files are placed: - * one for new source files, and one for new class files. - * (These might be specified on a tool's command line, for example, - * using flags such as -s and -d.) - * Auxiliary files may be created in either location. - * - *

During each run of an annotation processing tool, a file - * with a given pathname may be created only once. If that file already - * exists before the first attempt to create it, the old contents will - * be deleted. Any subsequent attempt to create the same file during - * a run will fail. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.annotation.processing.Filer}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface Filer { - - /** - * Creates a new source file and returns a writer for it. - * The file's name and path (relative to the root of all newly created - * source files) is based on the type to be declared in that file. - * If more than one type is being declared, the name of the principal - * top-level type (the public one, for example) should be used. - * - *

The {@linkplain java.nio.charset.Charset charset} used to - * encode the file is determined by the implementation. - * An annotation processing tool may have an -encoding - * flag or the like for specifying this. It will typically use - * the platform's default encoding if none is specified. - * - * @param name canonical (fully qualified) name of the principal type - * being declared in this file - * @return a writer for the new file - * @throws IOException if the file cannot be created - */ - PrintWriter createSourceFile(String name) throws IOException; - - /** - * Creates a new class file, and returns a stream for writing to it. - * The file's name and path (relative to the root of all newly created - * class files) is based on the name of the type being written. - * - * @param name canonical (fully qualified) name of the type being written - * @return a stream for writing to the new file - * @throws IOException if the file cannot be created - */ - OutputStream createClassFile(String name) throws IOException; - - /** - * Creates a new text file, and returns a writer for it. - * The file is located along with either the - * newly created source or newly created binary files. It may be - * named relative to some package (as are source and binary files), - * and from there by an arbitrary pathname. In a loose sense, the - * pathname of the new file will be the concatenation of - * loc, pkg, and relPath. - * - *

A {@linkplain java.nio.charset.Charset charset} for - * encoding the file may be provided. If none is given, the - * charset used to encode source files - * (see {@link #createSourceFile(String)}) will be used. - * - * @param loc location of the new file - * @param pkg package relative to which the file should be named, - * or the empty string if none - * @param relPath final pathname components of the file - * @param charsetName the name of the charset to use, or null if none - * is being explicitly specified - * @return a writer for the new file - * @throws IOException if the file cannot be created - */ - PrintWriter createTextFile(Location loc, - String pkg, - File relPath, - String charsetName) throws IOException; - - /** - * Creates a new binary file, and returns a stream for writing to it. - * The file is located along with either the - * newly created source or newly created binary files. It may be - * named relative to some package (as are source and binary files), - * and from there by an arbitrary pathname. In a loose sense, the - * pathname of the new file will be the concatenation of - * loc, pkg, and relPath. - * - * @param loc location of the new file - * @param pkg package relative to which the file should be named, - * or the empty string if none - * @param relPath final pathname components of the file - * @return a stream for writing to the new file - * @throws IOException if the file cannot be created - */ - OutputStream createBinaryFile(Location loc, - String pkg, - File relPath) throws IOException; - - - /** - * Locations (subtrees within the file system) where new files are created. - * - * @deprecated All components of this API have been superseded by - * the standardized annotation processing API. The replacement - * for the functionality of this enum is {@link - * javax.tools.StandardLocation}. - */ - @Deprecated - enum Location { - /** The location of new source files. */ - SOURCE_TREE, - /** The location of new class files. */ - CLASS_TREE - } -} --- old/src/share/classes/com/sun/mirror/apt/Messager.java 2012-01-19 16:21:09.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - -import com.sun.mirror.util.SourcePosition; - -/** - * A Messager provides the way for - * an annotation processor to report error messages, warnings, and - * other notices. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.annotation.processing.Messager}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface Messager { - - /** - * Prints an error message. - * Equivalent to printError(null, msg). - * @param msg the message, or an empty string if none - */ - void printError(String msg); - - /** - * Prints an error message. - * @param pos the position where the error occured, or null if it is - * unknown or not applicable - * @param msg the message, or an empty string if none - */ - void printError(SourcePosition pos, String msg); - - /** - * Prints a warning message. - * Equivalent to printWarning(null, msg). - * @param msg the message, or an empty string if none - */ - void printWarning(String msg); - - /** - * Prints a warning message. - * @param pos the position where the warning occured, or null if it is - * unknown or not applicable - * @param msg the message, or an empty string if none - */ - void printWarning(SourcePosition pos, String msg); - - /** - * Prints a notice. - * Equivalent to printNotice(null, msg). - * @param msg the message, or an empty string if none - */ - void printNotice(String msg); - - /** - * Prints a notice. - * @param pos the position where the noticed occured, or null if it is - * unknown or not applicable - * @param msg the message, or an empty string if none - */ - void printNotice(SourcePosition pos, String msg); -} --- old/src/share/classes/com/sun/mirror/apt/RoundCompleteEvent.java 2012-01-19 16:21:09.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - -/** - * Event for the completion of a round of annotation processing. - * - *

While this class extends the serializable EventObject, it - * cannot meaningfully be serialized because all of the annotation - * processing tool's internal state would potentially be needed. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. This class has no direct - * analog in the standardized API because the different round model - * renders it unnecessary. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public abstract class RoundCompleteEvent extends java.util.EventObject { - private RoundState rs; - - /** - * The current AnnotationProcessorEnvironment is regarded - * as the source of events. - * - * @param source The source of events - * @param rs The state of the round - */ - protected RoundCompleteEvent(AnnotationProcessorEnvironment source, - RoundState rs) { - super(source); - this.rs = rs; - } - - /** - * Return round state. - */ - public RoundState getRoundState() { - return rs; - } - - /** - * Return source. - */ - public AnnotationProcessorEnvironment getSource() { - return (AnnotationProcessorEnvironment)super.getSource(); - } -} --- old/src/share/classes/com/sun/mirror/apt/RoundCompleteListener.java 2012-01-19 16:21:09.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - -/** - * Listener for the completion of a round of annotation processing. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. This interface has no - * direct analog in the standardized API because the different round - * model renders it unnecessary. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface RoundCompleteListener extends AnnotationProcessorListener { - /** - * Invoked after all processors for a round have run to completion. - * - * @param event An event for round completion - */ - void roundComplete(RoundCompleteEvent event); -} --- old/src/share/classes/com/sun/mirror/apt/RoundState.java 2012-01-19 16:21:09.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.apt; - -/** - * Represents the status of a completed round of annotation processing. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.annotation.processing.RoundEnvironment}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface RoundState { - /** - * Returns true if this was the last round of annotation - * processing; returns false if there will be a subsequent round. - */ - boolean finalRound(); - - /** - * Returns true if an error was raised in this round of processing; - * returns false otherwise. - */ - boolean errorRaised(); - - /** - * Returns true if new source files were created in this round of - * processing; returns false otherwise. - */ - boolean sourceFilesCreated(); - - /** - * Returns true if new class files were created in this round of - * processing; returns false otherwise. - */ - boolean classFilesCreated(); -} --- old/src/share/classes/com/sun/mirror/apt/package-info.java 2012-01-19 16:21:09.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/** - * Classes used to communicate information between {@linkplain - * com.sun.mirror.apt.AnnotationProcessor annotation processors} and - * an annotation processing tool. - * - *

The {@code apt} tool and its associated API have been superseded - * by the standardized annotation processing API. The replacement for - * the functionality in this package is {@link - * javax.annotation.processing}. - * - * @since 1.5 - */ -package com.sun.mirror.apt; --- old/src/share/classes/com/sun/mirror/declaration/AnnotationMirror.java 2012-01-19 16:21:10.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - -import java.util.Map; -import com.sun.mirror.type.AnnotationType; -import com.sun.mirror.util.SourcePosition; - - -/** - * Represents an annotation. An annotation associates a value with - * each element of an annotation type. - * - *

Annotations should not be compared using reference-equality - * ("=="). There is no guarantee that any particular - * annotation will always be represented by the same object. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.AnnotationMirror}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationMirror { - - /** - * Returns the annotation type of this annotation. - * - * @return the annotation type of this annotation - */ - AnnotationType getAnnotationType(); - - /** - * Returns the source position of the beginning of this annotation. - * Returns null if the position is unknown or not applicable. - * - *

This source position is intended for use in providing diagnostics, - * and indicates only approximately where an annotation begins. - * - * @return the source position of the beginning of this annotation or - * null if the position is unknown or not applicable - */ - SourcePosition getPosition(); - - /** - * Returns this annotation's elements and their values. - * This is returned in the form of a map that associates elements - * with their corresponding values. - * Only those elements and values explicitly present in the - * annotation are included, not those that are implicitly assuming - * their default values. - * The order of the map matches the order in which the - * elements appear in the annotation's source. - * - * @return this annotation's elements and their values, - * or an empty map if there are none - */ - Map getElementValues(); -} --- old/src/share/classes/com/sun/mirror/declaration/AnnotationTypeDeclaration.java 2012-01-19 16:21:10.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - - -/** - * Represents the declaration of an annotation type. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.TypeElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationTypeDeclaration extends InterfaceDeclaration { - - /** - * Returns the annotation type elements of this annotation type. - * These are the methods that are directly declared in the type's - * declaration. - * - * @return the annotation type elements of this annotation type, - * or an empty collection if there are none - */ - Collection getMethods(); -} --- old/src/share/classes/com/sun/mirror/declaration/AnnotationTypeElementDeclaration.java 2012-01-19 16:21:10.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -/** - * Represents an element of an annotation type. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.ExecutableElement}. - * - * @author Joe Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationTypeElementDeclaration extends MethodDeclaration { - - /** - * Returns the default value of this element. - * - * @return the default value of this element, or null if this element - * has no default. - */ - AnnotationValue getDefaultValue(); - - /** - * {@inheritDoc} - */ - AnnotationTypeDeclaration getDeclaringType(); -} --- old/src/share/classes/com/sun/mirror/declaration/AnnotationValue.java 2012-01-19 16:21:10.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - -import com.sun.mirror.util.SourcePosition; - -/** - * Represents a value of an annotation type element. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.AnnotationValue}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationValue { - - /** - * Returns the value. - * The result has one of the following types: - *

  • a wrapper class (such as {@link Integer}) for a primitive type - *
  • {@code String} - *
  • {@code TypeMirror} - *
  • {@code EnumConstantDeclaration} - *
  • {@code AnnotationMirror} - *
  • {@code Collection} - * (representing the elements, in order, if the value is an array) - *
- * - * @return the value - */ - Object getValue(); - - /** - * Returns the source position of the beginning of this annotation value. - * Returns null if the position is unknown or not applicable. - * - *

This source position is intended for use in providing diagnostics, - * and indicates only approximately where an annotation value begins. - * - * @return the source position of the beginning of this annotation value or - * null if the position is unknown or not applicable - */ - SourcePosition getPosition(); - - /** - * Returns a string representation of this value. - * This is returned in a form suitable for representing this value - * in the source code of an annotation. - * - * @return a string representation of this value - */ - String toString(); -} --- old/src/share/classes/com/sun/mirror/declaration/ClassDeclaration.java 2012-01-19 16:21:10.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.type.ClassType; - - -/** - * Represents the declaration of a class. - * For the declaration of an interface, see {@link InterfaceDeclaration}. - * Provides access to information about the class, its members, and - * its constructors. - * Note that an {@linkplain EnumDeclaration enum} is a kind of class. - * - *

While a ClassDeclaration represents the declaration - * of a class, a {@link ClassType} represents a class type. - * See {@link TypeDeclaration} for more on this distinction. - * - *

{@link com.sun.mirror.util.DeclarationFilter} - * provides a simple way to select just the items of interest - * when a method returns a collection of declarations. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.TypeElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * - * @see ClassType - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ClassDeclaration extends TypeDeclaration { - - /** - * Returns the class type directly extended by this class. - * The only class with no superclass is java.lang.Object, - * for which this method returns null. - * - * @return the class type directly extended by this class, or null - * if there is none - */ - ClassType getSuperclass(); - - /** - * Returns the constructors of this class. - * This includes the default constructor if this class has - * no constructors explicitly declared. - * - * @return the constructors of this class - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getConstructors(); - - /** - * {@inheritDoc} - */ - Collection getMethods(); -} --- old/src/share/classes/com/sun/mirror/declaration/ConstructorDeclaration.java 2012-01-19 16:21:11.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -/** - * Represents a constructor of a class or interface. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.ExecutableElement}. - * - * @author Joe Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ConstructorDeclaration extends ExecutableDeclaration { -} --- old/src/share/classes/com/sun/mirror/declaration/Declaration.java 2012-01-19 16:21:11.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.lang.annotation.Annotation; -import java.util.Collection; - -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -/** - * Represents the declaration of a program element such as a package, - * class, or method. Each declaration represents a static, language-level - * construct (and not, for example, a runtime construct of the virtual - * machine), and typically corresponds one-to-one with a particular - * fragment of source code. - * - *

Declarations should be compared using the {@link #equals(Object)} - * method. There is no guarantee that any particular declaration will - * always be represented by the same object. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.Element}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * - * @see Declarations - * @see TypeMirror - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface Declaration { - - /** - * Tests whether an object represents the same declaration as this. - * - * @param obj the object to be compared with this declaration - * @return true if the specified object represents the same - * declaration as this - */ - boolean equals(Object obj); - - /** - * Returns the text of the documentation ("javadoc") comment of - * this declaration. - * - * @return the documentation comment of this declaration, or null - * if there is none - */ - String getDocComment(); - - /** - * Returns the annotations that are directly present on this declaration. - * - * @return the annotations directly present on this declaration; - * an empty collection if there are none - */ - Collection getAnnotationMirrors(); - - /** - * Returns the annotation of this declaration having the specified - * type. The annotation may be either inherited or directly - * present on this declaration. - * - *

The annotation returned by this method could contain an element - * whose value is of type Class. - * This value cannot be returned directly: information necessary to - * locate and load a class (such as the class loader to use) is - * not available, and the class might not be loadable at all. - * Attempting to read a Class object by invoking the relevant - * method on the returned annotation - * will result in a {@link MirroredTypeException}, - * from which the corresponding {@link TypeMirror} may be extracted. - * Similarly, attempting to read a Class[]-valued element - * will result in a {@link MirroredTypesException}. - * - *

- * Note: This method is unlike - * others in this and related interfaces. It operates on run-time - * reflective information -- representations of annotation types - * currently loaded into the VM -- rather than on the mirrored - * representations defined by and used throughout these - * interfaces. It is intended for callers that are written to - * operate on a known, fixed set of annotation types. - *
- * - * @param the annotation type - * @param annotationType the Class object corresponding to - * the annotation type - * @return the annotation of this declaration having the specified type - * - * @see #getAnnotationMirrors() - */ - A getAnnotation(Class annotationType); - - /** - * Returns the modifiers of this declaration, excluding annotations. - * Implicit modifiers, such as the public and static - * modifiers of interface members, are included. - * - * @return the modifiers of this declaration in undefined order; - * an empty collection if there are none - */ - Collection getModifiers(); - - /** - * Returns the simple (unqualified) name of this declaration. - * The name of a generic type does not include any reference - * to its formal type parameters. - * For example, the simple name of the interface declaration - * {@code java.util.Set} is "Set". - * If this declaration represents the empty package, an empty - * string is returned. - * If it represents a constructor, the simple name of its - * declaring class is returned. - * - * @return the simple name of this declaration - */ - String getSimpleName(); - - /** - * Returns the source position of the beginning of this declaration. - * Returns null if the position is unknown or not applicable. - * - *

This source position is intended for use in providing - * diagnostics, and indicates only approximately where a declaration - * begins. - * - * @return the source position of the beginning of this declaration, - * or null if the position is unknown or not applicable - */ - SourcePosition getPosition(); - - /** - * Applies a visitor to this declaration. - * - * @param v the visitor operating on this declaration - */ - void accept(DeclarationVisitor v); -} --- old/src/share/classes/com/sun/mirror/declaration/EnumConstantDeclaration.java 2012-01-19 16:21:11.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -/** - * Represents an enum constant declaration. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.VariableElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface EnumConstantDeclaration extends FieldDeclaration { - /** - * {@inheritDoc} - */ - EnumDeclaration getDeclaringType(); -} --- old/src/share/classes/com/sun/mirror/declaration/EnumDeclaration.java 2012-01-19 16:21:11.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - - -/** - * Represents the declaration of an enum type. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.TypeElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface EnumDeclaration extends ClassDeclaration { - - /** - * Returns the enum constants defined for this enum. - * - * @return the enum constants defined for this enum, - * or an empty collection if there are none - */ - Collection getEnumConstants(); -} --- old/src/share/classes/com/sun/mirror/declaration/ExecutableDeclaration.java 2012-01-19 16:21:11.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.type.ReferenceType; - - -/** - * Represents a method or constructor of a class or interface. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.ExecutableElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ExecutableDeclaration extends MemberDeclaration { - - /** - * Returns true if this method or constructor accepts a variable - * number of arguments. - * - * @return true if this method or constructor accepts a variable - * number of arguments - */ - boolean isVarArgs(); - - /** - * Returns the formal type parameters of this method or constructor. - * They are returned in declaration order. - * - * @return the formal type parameters of this method or constructor, - * or an empty collection if there are none - */ - Collection getFormalTypeParameters(); - - /** - * Returns the formal parameters of this method or constructor. - * They are returned in declaration order. - * - * @return the formal parameters of this method or constructor, - * or an empty collection if there are none - */ - Collection getParameters(); - - /** - * Returns the exceptions and other throwables listed in this - * method or constructor's throws clause. - * - * @return the exceptions and other throwables listed in the - * throws clause, or an empty collection if there are none - */ - Collection getThrownTypes(); -} --- old/src/share/classes/com/sun/mirror/declaration/FieldDeclaration.java 2012-01-19 16:21:12.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import com.sun.mirror.type.TypeMirror; - - -/** - * Represents a field of a type declaration. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.VariableElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface FieldDeclaration extends MemberDeclaration { - - /** - * Returns the type of this field. - * - * @return the type of this field - */ - TypeMirror getType(); - - /** - * Returns the value of this field if this field is a compile-time - * constant. Returns null otherwise. - * The value will be of a primitive type or String. - * If the value is of a primitive type, it is wrapped in the - * appropriate wrapper class (such as {@link Integer}). - * - * @return the value of this field if this field is a compile-time - * constant, or null otherwise - */ - Object getConstantValue(); - - /** - * Returns the text of a constant expression representing the - * value of this field if this field is a compile-time constant. - * Returns null otherwise. - * The value will be of a primitive type or String. - * The text returned is in a form suitable for representing the value - * in source code. - * - * @return the text of a constant expression if this field is a - * compile-time constant, or null otherwise - */ - String getConstantExpression(); -} --- old/src/share/classes/com/sun/mirror/declaration/InterfaceDeclaration.java 2012-01-19 16:21:12.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import com.sun.mirror.type.InterfaceType; - - -/** - * Represents the declaration of an interface. - * Provides access to information about the interface and its members. - * Note that an {@linkplain AnnotationTypeDeclaration annotation type} is - * a kind of interface. - * - *

While an InterfaceDeclaration represents the - * declaration of an interface, an {@link InterfaceType} - * represents an interface type. - * See {@link TypeDeclaration} for more on this distinction. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.TypeElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * - * @see InterfaceType - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface InterfaceDeclaration extends TypeDeclaration { -} --- old/src/share/classes/com/sun/mirror/declaration/MemberDeclaration.java 2012-01-19 16:21:12.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -/** - * Represents a declaration that may be a member or constructor of a declared - * type. This includes fields, constructors, methods, and (since they - * may be nested) declared types themselves. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.Element}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface MemberDeclaration extends Declaration { - - /** - * Returns the type declaration within which this member or constructor - * is declared. - * If this is the declaration of a top-level type (a non-nested class - * or interface), returns null. - * - * @return the type declaration within which this member or constructor - * is declared, or null if there is none - */ - TypeDeclaration getDeclaringType(); -} --- old/src/share/classes/com/sun/mirror/declaration/MethodDeclaration.java 2012-01-19 16:21:13.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import com.sun.mirror.type.TypeMirror; -import com.sun.mirror.type.VoidType; - - -/** - * Represents a method of a class or interface. - * Note that an - * {@linkplain AnnotationTypeElementDeclaration annotation type element} - * is a kind of method. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.ExecutableElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface MethodDeclaration extends ExecutableDeclaration { - - /** - * Returns the formal return type of this method. - * Returns {@link VoidType} if this method does not return a value. - * - * @return the formal return type of this method - */ - TypeMirror getReturnType(); -} --- old/src/share/classes/com/sun/mirror/declaration/Modifier.java 2012-01-19 16:21:13.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -/** - * Represents a modifier on the declaration of a program element such - * as a class, method, or field. - * - *

Not all modifiers are applicable to all kinds of declarations. - * When two or more modifiers appear in the source code of a declaration, - * then it is customary, though not required, that they appear in the same - * order as the constants listed in the detail section below. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this enum is {@link javax.lang.model.element.Modifier}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public enum Modifier { - - // See JLS2 sections 8.1.1, 8.3.1, 8.4.3, 8.8.3, and 9.1.1. - // java.lang.reflect.Modifier includes INTERFACE, but that's a VMism. - - /** The modifier public */ PUBLIC, - /** The modifier protected */ PROTECTED, - /** The modifier private */ PRIVATE, - /** The modifier abstract */ ABSTRACT, - /** The modifier static */ STATIC, - /** The modifier final */ FINAL, - /** The modifier transient */ TRANSIENT, - /** The modifier volatile */ VOLATILE, - /** The modifier synchronized */ SYNCHRONIZED, - /** The modifier native */ NATIVE, - /** The modifier strictfp */ STRICTFP; - - - private String lowercase = null; // modifier name in lowercase - - /** - * Returns this modifier's name in lowercase. - */ - public String toString() { - if (lowercase == null) { - lowercase = name().toLowerCase(java.util.Locale.US); - } - return lowercase; - } -} --- old/src/share/classes/com/sun/mirror/declaration/PackageDeclaration.java 2012-01-19 16:21:13.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - - -/** - * Represents the declaration of a package. Provides access to information - * about the package and its members. - * - *

{@link com.sun.mirror.util.DeclarationFilter} - * provides a simple way to select just the items of interest - * when a method returns a collection of declarations. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.PackageElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface PackageDeclaration extends Declaration { - - /** - * Returns the fully qualified name of this package. - * This is also known as the package's canonical name. - * - * @return the fully qualified name of this package, or the - * empty string if this is the unnamed package - */ - String getQualifiedName(); - - /** - * Returns the declarations of the top-level classes in this package. - * Interfaces are not included, but enum types are. - * - * @return the declarations of the top-level classes in this package - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getClasses(); - - /** - * Returns the declarations of the top-level enum types in this package. - * - * @return the declarations of the top-level enum types in this package - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getEnums(); - - /** - * Returns the declarations of the top-level interfaces in this package. - * Annotation types are included. - * - * @return the declarations of the top-level interfaces in this package - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getInterfaces(); - - /** - * Returns the declarations of the top-level annotation types in this - * package. - * - * @return the declarations of the top-level annotation types in this - * package - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getAnnotationTypes(); -} --- old/src/share/classes/com/sun/mirror/declaration/ParameterDeclaration.java 2012-01-19 16:21:13.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import com.sun.mirror.type.TypeMirror; - - -/** - * Represents a formal parameter of a method or constructor. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.VariableElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ParameterDeclaration extends Declaration { - - /** - * Returns the type of this parameter. - * - * @return the type of this parameter - */ - TypeMirror getType(); -} --- old/src/share/classes/com/sun/mirror/declaration/TypeDeclaration.java 2012-01-19 16:21:13.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.type.*; - - -/** - * Represents the declaration of a class or interface. - * Provides access to information about the type and its members. - * Note that an {@linkplain EnumDeclaration enum} is a kind of class, - * and an {@linkplain AnnotationTypeDeclaration annotation type} is - * a kind of interface. - * - *

- * While a TypeDeclaration represents the declaration - * of a class or interface, a {@link DeclaredType} represents a class - * or interface type, the latter being a use - * (or invocation) of the former. - * The distinction is most apparent with generic types, - * for which a single declaration can define a whole - * family of types. For example, the declaration of - * {@code java.util.Set} corresponds to the parameterized types - * {@code java.util.Set} and {@code java.util.Set} - * (and many others), and to the raw type {@code java.util.Set}. - * - *

{@link com.sun.mirror.util.DeclarationFilter} - * provides a simple way to select just the items of interest - * when a method returns a collection of declarations. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.element.TypeElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * - * @see DeclaredType - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface TypeDeclaration extends MemberDeclaration { - - /** - * Returns the package within which this type is declared. - * - * @return the package within which this type is declared - */ - PackageDeclaration getPackage(); - - /** - * Returns the fully qualified name of this class or interface - * declaration. More precisely, it returns the canonical - * name. - * The name of a generic type does not include any reference - * to its formal type parameters. - * For example, the the fully qualified name of the interface declaration - * {@code java.util.Set} is "java.util.Set". - * - * @return the fully qualified name of this class or interface declaration - */ - String getQualifiedName(); - - /** - * Returns the formal type parameters of this class or interface. - * - * @return the formal type parameters, or an empty collection - * if there are none - */ - Collection getFormalTypeParameters(); - - /** - * Returns the interface types directly implemented by this class - * or extended by this interface. - * - * @return the interface types directly implemented by this class - * or extended by this interface, or an empty collection if there are none - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getSuperinterfaces(); - - /** - * Returns the fields that are directly declared by this class or - * interface. Includes enum constants. - * - * @return the fields that are directly declared, - * or an empty collection if there are none - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getFields(); - - /** - * Returns the methods that are directly declared by this class or - * interface. Includes annotation type elements. Excludes - * implicitly declared methods of an interface, such as - * toString, that correspond to the methods of - * java.lang.Object. - * - * @return the methods that are directly declared, - * or an empty collection if there are none - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getMethods(); - - /** - * Returns the declarations of the nested classes and interfaces - * that are directly declared by this class or interface. - * - * @return the declarations of the nested classes and interfaces, - * or an empty collection if there are none - * - * @see com.sun.mirror.util.DeclarationFilter - */ - Collection getNestedTypes(); -} --- old/src/share/classes/com/sun/mirror/declaration/TypeParameterDeclaration.java 2012-01-19 16:21:14.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.type.*; - - -/** - * Represents a formal type parameter of a generic type, method, - * or constructor declaration. - * A type parameter declares a {@link TypeVariable}. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.TypeParameterElement}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface TypeParameterDeclaration extends Declaration { - - /** - * Returns the bounds of this type parameter. - * These are the types given by the extends clause. - * If there is no explicit extends clause, then - * java.lang.Object is considered to be the sole bound. - * - * @return the bounds of this type parameter - */ - Collection getBounds(); - - /** - * Returns the type, method, or constructor declaration within which - * this type parameter is declared. - * - * @return the declaration within which this type parameter is declared - */ - Declaration getOwner(); -} --- old/src/share/classes/com/sun/mirror/declaration/package-info.java 2012-01-19 16:21:14.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/** - * Interfaces used to model program element declarations. A - * declaration is represented by the appropriate subinterface of - * {@link com.sun.mirror.declaration.Declaration}, and an annotation - * is represented as an {@link - * com.sun.mirror.declaration.AnnotationMirror}. - * - *

The {@code apt} tool and its associated API have been superseded - * by the standardized annotation processing API. The replacement for - * the functionality in this package is {@link - * javax.lang.model.element}. - * - * @since 1.5 - */ -package com.sun.mirror.declaration; --- old/src/share/classes/com/sun/mirror/overview.html 2012-01-19 16:21:14.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,111 +0,0 @@ - - - - - - - - -The Mirror API is used to model the semantic structure of a program. -It provides representations of the entities -declared in a program, such as classes, methods, and fields. -Constructs below the method level, such as -individual statements and expressions, are not represented. - -

Also included is support for writing -{@linkplain com.sun.mirror.apt.AnnotationProcessor annotation processors} -to examine and process the annotations -of program elements. An annotation processor may, as an example, create -new source files and XML documents to be used in conjunction with the -original code. - - -

Characteristics of the API

- -A program is represented at the language level, rather than at the -level of the virtual machine. Nested classes, for example, are -handled as first-class constructs, -rather than in the translated form understood by the VM. -Both source code and compiled code (class files) may be modeled -in this way. - -

Programs are modeled in their static, or build-time, form. -This differs from the {@linkplain java.lang.reflect reflection} API, -which provides run-time information about classes and objects. - -

The API does not provide direct support for generating new code. - - -

Declarations and Types

- -The mirror API represents program constructs principally through the -{@link com.sun.mirror.declaration.Declaration} interface -and its hierarchy of subinterfaces in the package {@link -com.sun.mirror.declaration}. A Declaration represents a -program element such as a package, class, or method. -The interface hierarchy is depicted - here. - -

Types are represented by the {@link com.sun.mirror.type.TypeMirror} -interface and its hierarchy of subinterfaces in the -package {@link com.sun.mirror.type}. Types include primitive types, -class and interface types, array types, type variables, and wildcards. -The interface hierarchy is depicted - here. - -

The API makes a clear distinction between declarations and types. -This is most significant for generic types, where a single declaration -can define an infinite family of types. For example, the declaration of -java.util.Set defines the raw type java.util.Set, -the parameterized type {@code java.util.Set}, -and much more. Only the declaration can be annotated, for example, -and only a type can appear in a method signature. - -

A program being modeled may be incomplete, in that -it may depend on an unknown class or interface type. -This may be the result of a processing error such as a missing class file, -or perhaps the missing type is to be created by an annotation processor. -See {@link com.sun.mirror.type.DeclaredType} for information on -how such unknown types are handled. - - -

Utilities and Tool Support

- -The {@link com.sun.mirror.util} package provides -utilities to assist in the processing of declarations and types. -Included is support for using the visitor design pattern when -operating on declaration and type objects. - -

The {@link com.sun.mirror.apt} package supports the writing -of annotation processors. It provides the mechanism for them to -interact with an annotation processing tool. - - -@since 1.5 - - - --- old/src/share/classes/com/sun/mirror/type/AnnotationType.java 2012-01-19 16:21:14.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.AnnotationTypeDeclaration; - - -/** - * Represents an annotation type. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.type.DeclaredType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface AnnotationType extends InterfaceType { - - /** - * {@inheritDoc} - */ - AnnotationTypeDeclaration getDeclaration(); -} --- old/src/share/classes/com/sun/mirror/type/ArrayType.java 2012-01-19 16:21:14.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -/** - * Represents an array type. - * A multidimensional array type is represented as an array type - * whose component type is also an array type. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.type.ArrayType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ArrayType extends ReferenceType { - - /** - * Returns the component type of this array type. - * - * @return the component type of this array type - */ - TypeMirror getComponentType(); -} --- old/src/share/classes/com/sun/mirror/type/ClassType.java 2012-01-19 16:21:15.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.*; - - -/** - * Represents a class type. - * Interface types are represented separately by {@link InterfaceType}. - * Note that an {@linkplain EnumType enum} is a kind of class. - * - *

While a {@link ClassDeclaration} represents the declaration - * of a class, a ClassType represents a class type. - * See {@link TypeDeclaration} for more on this distinction. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.type.DeclaredType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ClassType extends DeclaredType { - - /** - * {@inheritDoc} - */ - ClassDeclaration getDeclaration(); - - /** - * Returns the class type that is a direct supertype of this one. - * This is the superclass of this type's declaring class, with any - * type arguments substituted in. - * The only class with no superclass is java.lang.Object, - * for which this method returns null. - * - *

For example, the class type extended by - * {@code java.util.TreeSet} is - * {@code java.util.AbstractSet}. - * - * @return the class type that is a direct supertype of this one, - * or null if there is none - */ - ClassType getSuperclass(); -} --- old/src/share/classes/com/sun/mirror/type/DeclaredType.java 2012-01-19 16:21:15.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import java.util.Collection; - -import com.sun.mirror.declaration.TypeDeclaration; - - -/** - * Represents a declared type, either a class type or an interface type. - * This includes parameterized types such as {@code java.util.Set} - * as well as raw types. - * - *

While a TypeDeclaration represents the declaration - * of a class or interface, a DeclaredType represents a class - * or interface type, the latter being a use of the former. - * See {@link TypeDeclaration} for more on this distinction. - * - *

A DeclaredType may represent a type - * for which details (declaration, supertypes, etc.) are unknown. - * This may be the result of a processing error, such as a missing class file, - * and is indicated by {@link #getDeclaration()} returning null. - * Other method invocations on such an unknown type will not, in general, - * return meaningful results. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.type.DeclaredType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface DeclaredType extends ReferenceType { - - /** - * Returns the declaration of this type. - * - *

Returns null if this type's declaration is unknown. This may - * be the result of a processing error, such as a missing class file. - * - * @return the declaration of this type, or null if unknown - */ - TypeDeclaration getDeclaration(); - - /** - * Returns the type that contains this type as a member. - * Returns null if this is a top-level type. - * - *

For example, the containing type of {@code O.I} - * is the type {@code O}, and the containing type of - * {@code O.I} is the type {@code O}. - * - * @return the type that contains this type, - * or null if this is a top-level type - */ - DeclaredType getContainingType(); - - /** - * Returns (in order) the actual type arguments of this type. - * For a generic type nested within another generic type - * (such as {@code Outer.Inner}), only the type - * arguments of the innermost type are included. - * - * @return the actual type arguments of this type, or an empty collection - * if there are none - */ - Collection getActualTypeArguments(); - - /** - * Returns the interface types that are direct supertypes of this type. - * These are the interface types implemented or extended - * by this type's declaration, with any type arguments - * substituted in. - * - *

For example, the interface type extended by - * {@code java.util.Set} is {@code java.util.Collection}. - * - * @return the interface types that are direct supertypes of this type, - * or an empty collection if there are none - */ - Collection getSuperinterfaces(); -} --- old/src/share/classes/com/sun/mirror/type/EnumType.java 2012-01-19 16:21:15.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.EnumDeclaration; - - -/** - * Represents an enum type. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.type.DeclaredType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface EnumType extends ClassType { - - /** - * {@inheritDoc} - */ - EnumDeclaration getDeclaration(); -} --- old/src/share/classes/com/sun/mirror/type/InterfaceType.java 2012-01-19 16:21:15.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.*; - - -/** - * Represents an interface type. - * Note that an {@linkplain AnnotationType annotation type} is - * a kind of interface. - * - *

While an {@link InterfaceDeclaration} represents the - * declaration of an interface, an InterfaceType - * represents an interface type. - * See {@link TypeDeclaration} for more on this distinction. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.type.DeclaredType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface InterfaceType extends DeclaredType { - - /** - * {@inheritDoc} - */ - InterfaceDeclaration getDeclaration(); -} --- old/src/share/classes/com/sun/mirror/type/MirroredTypeException.java 2012-01-19 16:21:15.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import java.lang.annotation.Annotation; - -import com.sun.mirror.declaration.Declaration; - - -/** - * Thrown when an application attempts to access the {@link Class} object - * corresponding to a {@link TypeMirror}. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this exception is {@link - * javax.lang.model.type.MirroredTypeException}. - * - * @see MirroredTypesException - * @see Declaration#getAnnotation(Class) - */ -@Deprecated -@SuppressWarnings("deprecation") -public class MirroredTypeException extends RuntimeException { - - private static final long serialVersionUID = 1; - - private transient TypeMirror type; // cannot be serialized - private String name; // type's qualified "name" - - /** - * Constructs a new MirroredTypeException for the specified type. - * - * @param type the type being accessed - */ - public MirroredTypeException(TypeMirror type) { - super("Attempt to access Class object for TypeMirror " + type); - this.type = type; - name = type.toString(); - } - - /** - * Returns the type mirror corresponding to the type being accessed. - * The type mirror may be unavailable if this exception has been - * serialized and then read back in. - * - * @return the type mirror, or null if unavailable - */ - public TypeMirror getTypeMirror() { - return type; - } - - /** - * Returns the fully qualified name of the type being accessed. - * More precisely, returns the canonical name of a class, - * interface, array, or primitive, and returns "void" for - * the pseudo-type representing the type of void. - * - * @return the fully qualified name of the type being accessed - */ - public String getQualifiedName() { - return name; - } -} --- old/src/share/classes/com/sun/mirror/type/MirroredTypesException.java 2012-01-19 16:21:16.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import java.lang.annotation.Annotation; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -import com.sun.mirror.declaration.Declaration; - - -/** - * Thrown when an application attempts to access a sequence of {@link Class} - * objects each corresponding to a {@link TypeMirror}. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this exception is {@link - * javax.lang.model.type.MirroredTypesException}. - * - * @see MirroredTypeException - * @see Declaration#getAnnotation(Class) - */ -@Deprecated -@SuppressWarnings("deprecation") -public class MirroredTypesException extends RuntimeException { - - private static final long serialVersionUID = 1; - - private transient Collection types; // cannot be serialized - private Collection names; // types' qualified "names" - - /** - * Constructs a new MirroredTypesException for the specified types. - * - * @param types an ordered collection of the types being accessed - */ - public MirroredTypesException(Collection types) { - super("Attempt to access Class objects for TypeMirrors " + types); - this.types = types; - names = new ArrayList(); - for (TypeMirror t : types) { - names.add(t.toString()); - } - } - - /** - * Returns the type mirrors corresponding to the types being accessed. - * The type mirrors may be unavailable if this exception has been - * serialized and then read back in. - * - * @return the type mirrors in order, or null if unavailable - */ - public Collection getTypeMirrors() { - return (types != null) - ? Collections.unmodifiableCollection(types) - : null; - } - - /** - * Returns the fully qualified names of the types being accessed. - * More precisely, returns the canonical names of each class, - * interface, array, or primitive, and "void" for - * the pseudo-type representing the type of void. - * - * @return the fully qualified names, in order, of the types being - * accessed - */ - public Collection getQualifiedNames() { - return Collections.unmodifiableCollection(names); - } -} --- old/src/share/classes/com/sun/mirror/type/PrimitiveType.java 2012-01-19 16:21:16.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -/** - * Represents a primitive type. These include - * boolean, byte, short, int, - * long, char, float, and double. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.type.PrimitiveType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface PrimitiveType extends TypeMirror { - - /** - * Returns the kind of primitive type that this object represents. - * - * @return the kind of primitive type that this object represents - */ - Kind getKind(); - - /** - * An enumeration of the different kinds of primitive types. - * - * @deprecated All components of this API have been superseded by - * the standardized annotation processing API. The replacement - * for the functionality of this enum is {@link - * javax.lang.model.type.TypeKind}. - */ - @Deprecated - enum Kind { - /** The primitive type boolean */ BOOLEAN, - /** The primitive type byte */ BYTE, - /** The primitive type short */ SHORT, - /** The primitive type int */ INT, - /** The primitive type long */ LONG, - /** The primitive type char */ CHAR, - /** The primitive type float */ FLOAT, - /** The primitive type double */ DOUBLE - } -} --- old/src/share/classes/com/sun/mirror/type/ReferenceType.java 2012-01-19 16:21:16.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -/** - * Represents a reference type. - * These include class and interface types, array types, and type variables. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.type.ReferenceType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface ReferenceType extends TypeMirror { -} --- old/src/share/classes/com/sun/mirror/type/TypeMirror.java 2012-01-19 16:21:16.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.Declaration; -import com.sun.mirror.util.Types; -import com.sun.mirror.util.TypeVisitor; - - -/** - * Represents a type in the Java programming language. - * Types include primitive types, class and interface types, array - * types, and type variables. Wildcard type arguments, and the - * pseudo-type representing the type of void, are represented - * by type mirrors as well. - * - *

Types may be compared using the utility methods in - * {@link Types}. - * There is no guarantee that any particular type will - * always be represented by the same object. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.type.TypeMirror}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * - * @see Declaration - * @see Types - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface TypeMirror { - - /** - * Returns a string representation of this type. - * Any names embedded in the expression are qualified. - * - * @return a string representation of this type - */ - String toString(); - - /** - * Tests whether two types represent the same type. - * - * @param obj the object to be compared with this type - * @return true if the specified object represents the same - * type as this. - */ - boolean equals(Object obj); - - /** - * Applies a visitor to this type. - * - * @param v the visitor operating on this type - */ - void accept(TypeVisitor v); -} --- old/src/share/classes/com/sun/mirror/type/TypeVariable.java 2012-01-19 16:21:16.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.*; - - -/** - * Represents a type variable. - * A type variable is declared by a - * {@linkplain TypeParameterDeclaration type parameter} of a - * type, method, or constructor. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.type.TypeVariable}. - * - * @author Joe Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface TypeVariable extends ReferenceType { - - /** - * Returns the type parameter that declared this type variable. - * - * @return the type parameter that declared this type variable - */ - TypeParameterDeclaration getDeclaration(); -} --- old/src/share/classes/com/sun/mirror/type/VoidType.java 2012-01-19 16:21:17.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import com.sun.mirror.declaration.MethodDeclaration; - - -/** - * A pseudo-type representing the type of void. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is included in {@link - * javax.lang.model.type.NoType}. - * - * @see MethodDeclaration#getReturnType() - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface VoidType extends TypeMirror { -} --- old/src/share/classes/com/sun/mirror/type/WildcardType.java 2012-01-19 16:21:17.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.type; - - -import java.util.Collection; - - -/** - * Represents a wildcard type argument. - * Examples include:


- *   ?
- *   ? extends Number
- *   ? super T
- * 
- * - *

A wildcard may have its upper bound explicitly set by an - * extends clause, its lower bound explicitly set by a - * super clause, or neither (but not both). - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.type.WildcardType}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface WildcardType extends TypeMirror { - - /** - * Returns the upper bounds of this wildcard. - * If no upper bound is explicitly declared, then - * an empty collection is returned. - * - * @return the upper bounds of this wildcard - */ - Collection getUpperBounds(); - - /** - * Returns the lower bounds of this wildcard. - * If no lower bound is explicitly declared, then - * an empty collection is returned. - * - * @return the lower bounds of this wildcard - */ - Collection getLowerBounds(); -} --- old/src/share/classes/com/sun/mirror/type/package-info.java 2012-01-19 16:21:17.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/** - * Interfaces used to model types. A type is represented by the - * appropriate subinterface of {@link com.sun.mirror.type.TypeMirror}. - * - *

The {@code apt} tool and its associated API have been - * superseded by the standardized annotation processing API. The - * replacement for the functionality in this package is {@link - * javax.lang.model.type}. - * - * @since 1.5 - */ -package com.sun.mirror.type; --- old/src/share/classes/com/sun/mirror/util/DeclarationFilter.java 2012-01-19 16:21:17.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,319 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import java.util.ArrayList; -import java.util.Collection; - -import com.sun.mirror.declaration.Declaration; -import com.sun.mirror.declaration.Modifier; - -import static com.sun.mirror.declaration.Modifier.*; - - -/** - * A filter for selecting just the items of interest - * from a collection of declarations. - * The filter is said to select or to match those declarations. - * Filters can be created in several ways: - * by the static methods described below, - * by negating or composing existing filters, - * or by subclasses that implement arbitrary matching rules. - * - *

A subclass can create an arbitrary filter simply by implementing - * the {@link #matches(Declaration)} method. - * - *

Examples. - *

Selecting the public declarations from a collection: - *

- *     result = FILTER_PUBLIC.filter(decls);            
- * Selecting class declarations (including enums): - *
- *     classFilter = DeclarationFilter.getFilter(ClassDeclaration.class);
- *     result = classFilter.filter(decls);              
- * Selecting class declarations but excluding enums: - *
- *     enumFilter = DeclarationFilter.getFilter(EnumDeclaration.class);
- *     compoundFilter = classFilter.and(enumFilter.not());
- *     result = compoundFilter.filter(decls);           
- * Selecting declarations named "Bob": - *
- *     nameFilter = new DeclarationFilter() {
- *                      public boolean matches(Declaration d) {
- *                          return d.getSimpleName().equals("Bob");
- *                      }
- *                  };
- *     result = nameFilter.filter(decls);               
- * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this class is {@link - * javax.lang.model.util.ElementFilter}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public class DeclarationFilter { - - // Predefined filters for convenience. - - /** - * A filter that selects only public declarations. - */ - public static final DeclarationFilter FILTER_PUBLIC = - new AccessFilter(PUBLIC); - - /** - * A filter that selects only protected declarations. - */ - public static final DeclarationFilter FILTER_PROTECTED = - new AccessFilter(PROTECTED); - - /** - * A filter that selects only public or protected - * declarations. - */ - public static final DeclarationFilter FILTER_PUBLIC_OR_PROTECTED = - new AccessFilter(PUBLIC, PROTECTED); - - /** - * A filter that selects only package-private (default) - * declarations. - */ - public static final DeclarationFilter FILTER_PACKAGE = - new AccessFilter(); - - /** - * A filter that selects only private declarations. - */ - public static final DeclarationFilter FILTER_PRIVATE = - new AccessFilter(PRIVATE); - - - /** - * Constructs an identity filter: one that selects all declarations. - */ - public DeclarationFilter() { - } - - - - // Methods to create a filter. - - /** - * Returns a filter that selects declarations containing all of a - * collection of modifiers. - * - * @param mods the modifiers to match (non-null) - * @return a filter that matches declarations containing mods - */ - public static DeclarationFilter getFilter( - final Collection mods) { - return new DeclarationFilter() { - public boolean matches(Declaration d) { - return d.getModifiers().containsAll(mods); - } - }; - } - - /** - * Returns a filter that selects declarations of a particular kind. - * For example, there may be a filter that selects only class - * declarations, or only fields. - * The filter will select declarations of the specified kind, - * and also any subtypes of that kind; for example, a field filter - * will also select enum constants. - * - * @param kind the kind of declarations to select - * @return a filter that selects declarations of a particular kind - */ - public static DeclarationFilter getFilter( - final Class kind) { - return new DeclarationFilter() { - public boolean matches(Declaration d) { - return kind.isInstance(d); - } - }; - } - - /** - * Returns a filter that selects those declarations selected - * by both this filter and another. - * - * @param f filter to be composed with this one - * @return a filter that selects those declarations selected by - * both this filter and another - */ - public DeclarationFilter and(DeclarationFilter f) { - final DeclarationFilter f1 = this; - final DeclarationFilter f2 = f; - return new DeclarationFilter() { - public boolean matches(Declaration d) { - return f1.matches(d) && f2.matches(d); - } - }; - } - - /** - * Returns a filter that selects those declarations selected - * by either this filter or another. - * - * @param f filter to be composed with this one - * @return a filter that selects those declarations selected by - * either this filter or another - */ - public DeclarationFilter or(DeclarationFilter f) { - final DeclarationFilter f1 = this; - final DeclarationFilter f2 = f; - return new DeclarationFilter() { - public boolean matches(Declaration d) { - return f1.matches(d) || f2.matches(d); - } - }; - } - - /** - * Returns a filter that selects those declarations not selected - * by this filter. - * - * @return a filter that selects those declarations not selected - * by this filter - */ - public DeclarationFilter not() { - return new DeclarationFilter() { - public boolean matches(Declaration d) { - return !DeclarationFilter.this.matches(d); - } - }; - } - - - - // Methods to apply a filter. - - /** - * Tests whether this filter matches a given declaration. - * The default implementation always returns true; - * subclasses should override this. - * - * @param decl the declaration to match - * @return true if this filter matches the given declaration - */ - public boolean matches(Declaration decl) { - return true; - } - - /** - * Returns the declarations matched by this filter. - * The result is a collection of the same type as the argument; - * the {@linkplain #filter(Collection, Class) two-parameter version} - * of filter offers control over the result type. - * - * @param type of the declarations being filtered - * @param decls declarations being filtered - * @return the declarations matched by this filter - */ - public Collection filter(Collection decls) { - ArrayList res = new ArrayList(decls.size()); - for (D d : decls) { - if (matches(d)) { - res.add(d); - } - } - return res; - } - - /** - * Returns the declarations matched by this filter, with the result - * being restricted to declarations of a given kind. - * Similar to the simpler - * {@linkplain #filter(Collection) single-parameter version} - * of filter, but the result type is specified explicitly. - * - * @param type of the declarations being returned - * @param decls declarations being filtered - * @param resType type of the declarations being returned -- - * the reflective view of D - * @return the declarations matched by this filter, restricted to those - * of the specified type - */ - public Collection - filter(Collection decls, Class resType) { - ArrayList res = new ArrayList(decls.size()); - for (Declaration d : decls) { - if (resType.isInstance(d) && matches(d)) { - res.add(resType.cast(d)); - } - } - return res; - } - - - - /* - * A filter based on access modifiers. - */ - private static class AccessFilter extends DeclarationFilter { - - // The first access modifier to filter on, or null if we're looking - // for declarations with no access modifiers. - private Modifier mod1 = null; - - // The second access modifier to filter on, or null if none. - private Modifier mod2 = null; - - // Returns a filter that matches declarations with no access - // modifiers. - AccessFilter() { - } - - // Returns a filter that matches m. - AccessFilter(Modifier m) { - mod1 = m; - } - - // Returns a filter that matches either m1 or m2. - AccessFilter(Modifier m1, Modifier m2) { - mod1 = m1; - mod2 = m2; - } - - public boolean matches(Declaration d) { - Collection mods = d.getModifiers(); - if (mod1 == null) { // looking for package private - return !(mods.contains(PUBLIC) || - mods.contains(PROTECTED) || - mods.contains(PRIVATE)); - } - return mods.contains(mod1) && - (mod2 == null || mods.contains(mod2)); - } - } -} --- old/src/share/classes/com/sun/mirror/util/DeclarationScanner.java 2012-01-19 16:21:17.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - -import com.sun.mirror.declaration.*; - -/** - * A visitor for declarations that scans declarations contained within - * the given declaration. For example, when visiting a class, the - * methods, fields, constructors, and nested types of the class are - * also visited. - * - *

To control the processing done on a declaration, users of this - * class pass in their own visitors for pre and post processing. The - * preprocessing visitor is called before the contained declarations - * are scanned; the postprocessing visitor is called after the - * contained declarations are scanned. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this class is {@link - * javax.lang.model.util.ElementScanner6}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -class DeclarationScanner implements DeclarationVisitor { - protected DeclarationVisitor pre; - protected DeclarationVisitor post; - - DeclarationScanner(DeclarationVisitor pre, DeclarationVisitor post) { - this.pre = pre; - this.post = post; - } - - /** - * Visits a declaration. - * - * @param d the declaration to visit - */ - public void visitDeclaration(Declaration d) { - d.accept(pre); - d.accept(post); - } - - /** - * Visits a package declaration. - * - * @param d the declaration to visit - */ - public void visitPackageDeclaration(PackageDeclaration d) { - d.accept(pre); - - for(ClassDeclaration classDecl: d.getClasses()) { - classDecl.accept(this); - } - - for(InterfaceDeclaration interfaceDecl: d.getInterfaces()) { - interfaceDecl.accept(this); - } - - d.accept(post); - } - - /** - * Visits a member or constructor declaration. - * - * @param d the declaration to visit - */ - public void visitMemberDeclaration(MemberDeclaration d) { - visitDeclaration(d); - } - - /** - * Visits a type declaration. - * - * @param d the declaration to visit - */ - public void visitTypeDeclaration(TypeDeclaration d) { - d.accept(pre); - - for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) { - tpDecl.accept(this); - } - - for(FieldDeclaration fieldDecl: d.getFields()) { - fieldDecl.accept(this); - } - - for(MethodDeclaration methodDecl: d.getMethods()) { - methodDecl.accept(this); - } - - for(TypeDeclaration typeDecl: d.getNestedTypes()) { - typeDecl.accept(this); - } - - d.accept(post); - } - - /** - * Visits a class declaration. - * - * @param d the declaration to visit - */ - public void visitClassDeclaration(ClassDeclaration d) { - d.accept(pre); - - for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) { - tpDecl.accept(this); - } - - for(FieldDeclaration fieldDecl: d.getFields()) { - fieldDecl.accept(this); - } - - for(MethodDeclaration methodDecl: d.getMethods()) { - methodDecl.accept(this); - } - - for(TypeDeclaration typeDecl: d.getNestedTypes()) { - typeDecl.accept(this); - } - - for(ConstructorDeclaration ctorDecl: d.getConstructors()) { - ctorDecl.accept(this); - } - - d.accept(post); - } - - /** - * Visits an enum declaration. - * - * @param d the declaration to visit - */ - public void visitEnumDeclaration(EnumDeclaration d) { - visitClassDeclaration(d); - } - - /** - * Visits an interface declaration. - * - * @param d the declaration to visit - */ - public void visitInterfaceDeclaration(InterfaceDeclaration d) { - visitTypeDeclaration(d); - } - - /** - * Visits an annotation type declaration. - * - * @param d the declaration to visit - */ - public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) { - visitInterfaceDeclaration(d); - } - - /** - * Visits a field declaration. - * - * @param d the declaration to visit - */ - public void visitFieldDeclaration(FieldDeclaration d) { - visitMemberDeclaration(d); - } - - /** - * Visits an enum constant declaration. - * - * @param d the declaration to visit - */ - public void visitEnumConstantDeclaration(EnumConstantDeclaration d) { - visitFieldDeclaration(d); - } - - /** - * Visits a method or constructor declaration. - * - * @param d the declaration to visit - */ - public void visitExecutableDeclaration(ExecutableDeclaration d) { - d.accept(pre); - - for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) { - tpDecl.accept(this); - } - - for(ParameterDeclaration pDecl: d.getParameters()) { - pDecl.accept(this); - } - - d.accept(post); - } - - /** - * Visits a constructor declaration. - * - * @param d the declaration to visit - */ - public void visitConstructorDeclaration(ConstructorDeclaration d) { - visitExecutableDeclaration(d); - } - - /** - * Visits a method declaration. - * - * @param d the declaration to visit - */ - public void visitMethodDeclaration(MethodDeclaration d) { - visitExecutableDeclaration(d); - } - - /** - * Visits an annotation type element declaration. - * - * @param d the declaration to visit - */ - public void visitAnnotationTypeElementDeclaration( - AnnotationTypeElementDeclaration d) { - visitMethodDeclaration(d); - } - - /** - * Visits a parameter declaration. - * - * @param d the declaration to visit - */ - public void visitParameterDeclaration(ParameterDeclaration d) { - visitDeclaration(d); - } - - /** - * Visits a type parameter declaration. - * - * @param d the declaration to visit - */ - public void visitTypeParameterDeclaration(TypeParameterDeclaration d) { - visitDeclaration(d); - } -} --- old/src/share/classes/com/sun/mirror/util/DeclarationVisitor.java 2012-01-19 16:21:18.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - -import com.sun.mirror.declaration.*; - - -/** - * A visitor for declarations, in the style of the standard visitor - * design pattern. Classes implementing this interface are used to - * operate on a declaration when the kind of declaration is unknown at - * compile time. When a visitor is passed to a declaration's {@link - * Declaration#accept accept} method, the most specific - * visitXxx method applicable to that declaration is - * invoked. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.ElementVisitor}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface DeclarationVisitor { - - /** - * Visits a declaration. - * @param d the declaration to visit - */ - public void visitDeclaration(Declaration d); - - /** - * Visits a package declaration. - * @param d the declaration to visit - */ - public void visitPackageDeclaration(PackageDeclaration d); - - /** - * Visits a member or constructor declaration. - * @param d the declaration to visit - */ - public void visitMemberDeclaration(MemberDeclaration d); - - /** - * Visits a type declaration. - * @param d the declaration to visit - */ - public void visitTypeDeclaration(TypeDeclaration d); - - /** - * Visits a class declaration. - * @param d the declaration to visit - */ - public void visitClassDeclaration(ClassDeclaration d); - - /** - * Visits an enum declaration. - * @param d the declaration to visit - */ - public void visitEnumDeclaration(EnumDeclaration d); - - /** - * Visits an interface declaration. - * @param d the declaration to visit - */ - public void visitInterfaceDeclaration(InterfaceDeclaration d); - - /** - * Visits an annotation type declaration. - * @param d the declaration to visit - */ - public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d); - - /** - * Visits a field declaration. - * @param d the declaration to visit - */ - public void visitFieldDeclaration(FieldDeclaration d); - - /** - * Visits an enum constant declaration. - * @param d the declaration to visit - */ - public void visitEnumConstantDeclaration(EnumConstantDeclaration d); - - /** - * Visits a method or constructor declaration. - * @param d the declaration to visit - */ - public void visitExecutableDeclaration(ExecutableDeclaration d); - - /** - * Visits a constructor declaration. - * @param d the declaration to visit - */ - public void visitConstructorDeclaration(ConstructorDeclaration d); - - /** - * Visits a method declaration. - * @param d the declaration to visit - */ - public void visitMethodDeclaration(MethodDeclaration d); - - /** - * Visits an annotation type element declaration. - * @param d the declaration to visit - */ - public void visitAnnotationTypeElementDeclaration( - AnnotationTypeElementDeclaration d); - - /** - * Visits a parameter declaration. - * @param d the declaration to visit - */ - public void visitParameterDeclaration(ParameterDeclaration d); - - /** - * Visits a type parameter declaration. - * @param d the declaration to visit - */ - public void visitTypeParameterDeclaration(TypeParameterDeclaration d); -} --- old/src/share/classes/com/sun/mirror/util/DeclarationVisitors.java 2012-01-19 16:21:18.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - -/** - * Utilities to create specialized DeclarationVisitor instances. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. There is no direct - * replacement for the functionality of this class in the standardized - * API due to that API's different visitor structure. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public class DeclarationVisitors { - private DeclarationVisitors(){} // do not instantiate. - - /** - * A visitor that has no side effects and keeps no state. - */ - public static final DeclarationVisitor NO_OP = new SimpleDeclarationVisitor(); - - /** - * Return a DeclarationVisitor that will scan the - * declaration structure, visiting declarations contained in - * another declaration. For example, when visiting a class, the - * fields, methods, constructors, etc. of the class are also - * visited. The order in which the contained declarations are scanned is - * not specified. - * - *

The pre and post - * DeclarationVisitor parameters specify, - * respectively, the processing the scanner will do before or - * after visiting the contained declarations. If only one of pre - * and post processing is needed, use {@link - * DeclarationVisitors#NO_OP DeclarationVisitors.NO_OP} for the - * other parameter. - * - * @param pre visitor representing processing to do before - * visiting contained declarations. - * - * @param post visitor representing processing to do after - * visiting contained declarations. - */ - public static DeclarationVisitor getDeclarationScanner(DeclarationVisitor pre, - DeclarationVisitor post) { - return new DeclarationScanner(pre, post); - } - - /** - * Return a DeclarationVisitor that will scan the - * declaration structure, visiting declarations contained in - * another declaration in source code order. For example, when - * visiting a class, the fields, methods, constructors, etc. of - * the class are also visited. The order in which the contained - * declarations are visited is as close to source code order as - * possible; declaration mirrors created from class files instead - * of source code will not have source position information. - * - *

The pre and post - * DeclarationVisitor parameters specify, - * respectively, the processing the scanner will do before or - * after visiting the contained declarations. If only one of pre - * and post processing is needed, use {@link - * DeclarationVisitors#NO_OP DeclarationVisitors.NO_OP} for the other parameter. - * - * @param pre visitor representing processing to do before - * visiting contained declarations. - * - * @param post visitor representing processing to do after - * visiting contained declarations. - */ - public static DeclarationVisitor getSourceOrderDeclarationScanner(DeclarationVisitor pre, - DeclarationVisitor post) { - return new SourceOrderDeclScanner(pre, post); - } -} --- old/src/share/classes/com/sun/mirror/util/Declarations.java 2012-01-19 16:21:18.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import com.sun.mirror.declaration.*; - - -/** - * Utility methods for operating on declarations. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.util.Elements}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface Declarations { - - /** - * Tests whether one type, method, or field declaration hides another. - * - * @param sub the first member - * @param sup the second member - * @return true if and only if the first member hides - * the second - */ - boolean hides(MemberDeclaration sub, MemberDeclaration sup); - - /** - * Tests whether one method overrides another. When a - * non-abstract method overrides an abstract one, the - * former is also said to implement the latter. - * - * @param sub the first method - * @param sup the second method - * @return true if and only if the first method overrides - * the second - */ - boolean overrides(MethodDeclaration sub, MethodDeclaration sup); -} --- old/src/share/classes/com/sun/mirror/util/SimpleDeclarationVisitor.java 2012-01-19 16:21:18.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,216 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import com.sun.mirror.declaration.*; - - -/** - * A simple visitor for declarations. - * - *

The implementations of the methods of this class do nothing but - * delegate up the declaration hierarchy. A subclass should override the - * methods that correspond to the kinds of declarations on which it - * will operate. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this class is {@link - * javax.lang.model.util.SimpleElementVisitor6}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public class SimpleDeclarationVisitor implements DeclarationVisitor { - - /** - * Creates a new SimpleDeclarationVisitor. - */ - public SimpleDeclarationVisitor(){} - - /** - * Visits a declaration. - * The implementation does nothing. - * @param d the declaration to visit - */ - public void visitDeclaration(Declaration d) { - } - - /** - * Visits a package declaration. - * The implementation simply invokes - * {@link #visitDeclaration visitDeclaration}. - * @param d the declaration to visit - */ - public void visitPackageDeclaration(PackageDeclaration d) { - visitDeclaration(d); - } - - /** - * Visits a member or constructor declaration. - * The implementation simply invokes - * {@link #visitDeclaration visitDeclaration}. - * @param d the declaration to visit - */ - public void visitMemberDeclaration(MemberDeclaration d) { - visitDeclaration(d); - } - - /** - * Visits a type declaration. - * The implementation simply invokes - * {@link #visitMemberDeclaration visitMemberDeclaration}. - * @param d the declaration to visit - */ - public void visitTypeDeclaration(TypeDeclaration d) { - visitMemberDeclaration(d); - } - - /** - * Visits a class declaration. - * The implementation simply invokes - * {@link #visitTypeDeclaration visitTypeDeclaration}. - * @param d the declaration to visit - */ - public void visitClassDeclaration(ClassDeclaration d) { - visitTypeDeclaration(d); - } - - /** - * Visits an enum declaration. - * The implementation simply invokes - * {@link #visitClassDeclaration visitClassDeclaration}. - * @param d the declaration to visit - */ - public void visitEnumDeclaration(EnumDeclaration d) { - visitClassDeclaration(d); - } - - /** - * Visits an interface declaration. - * The implementation simply invokes - * {@link #visitTypeDeclaration visitTypeDeclaration}. - * @param d the declaration to visit - */ - public void visitInterfaceDeclaration(InterfaceDeclaration d) { - visitTypeDeclaration(d); - } - - /** - * Visits an annotation type declaration. - * The implementation simply invokes - * {@link #visitInterfaceDeclaration visitInterfaceDeclaration}. - * @param d the declaration to visit - */ - public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) { - visitInterfaceDeclaration(d); - } - - /** - * Visits a field declaration. - * The implementation simply invokes - * {@link #visitMemberDeclaration visitMemberDeclaration}. - * @param d the declaration to visit - */ - public void visitFieldDeclaration(FieldDeclaration d) { - visitMemberDeclaration(d); - } - - /** - * Visits an enum constant declaration. - * The implementation simply invokes - * {@link #visitFieldDeclaration visitFieldDeclaration}. - * @param d the declaration to visit - */ - public void visitEnumConstantDeclaration(EnumConstantDeclaration d) { - visitFieldDeclaration(d); - } - - /** - * Visits a method or constructor declaration. - * The implementation simply invokes - * {@link #visitMemberDeclaration visitMemberDeclaration}. - * @param d the declaration to visit - */ - public void visitExecutableDeclaration(ExecutableDeclaration d) { - visitMemberDeclaration(d); - } - - /** - * Visits a constructor declaration. - * The implementation simply invokes - * {@link #visitExecutableDeclaration visitExecutableDeclaration}. - * @param d the declaration to visit - */ - public void visitConstructorDeclaration(ConstructorDeclaration d) { - visitExecutableDeclaration(d); - } - - /** - * Visits a method declaration. - * The implementation simply invokes - * {@link #visitExecutableDeclaration visitExecutableDeclaration}. - * @param d the declaration to visit - */ - public void visitMethodDeclaration(MethodDeclaration d) { - visitExecutableDeclaration(d); - } - - /** - * Visits an annotation type element declaration. - * The implementation simply invokes - * {@link #visitMethodDeclaration visitMethodDeclaration}. - * @param d the declaration to visit - */ - public void visitAnnotationTypeElementDeclaration( - AnnotationTypeElementDeclaration d) { - visitMethodDeclaration(d); - } - - /** - * Visits a parameter declaration. - * The implementation simply invokes - * {@link #visitDeclaration visitDeclaration}. - * @param d the declaration to visit - */ - public void visitParameterDeclaration(ParameterDeclaration d) { - visitDeclaration(d); - } - - /** - * Visits a type parameter declaration. - * The implementation simply invokes - * {@link #visitDeclaration visitDeclaration}. - * @param d the declaration to visit - */ - public void visitTypeParameterDeclaration(TypeParameterDeclaration d) { - visitDeclaration(d); - } -} --- old/src/share/classes/com/sun/mirror/util/SimpleTypeVisitor.java 2012-01-19 16:21:18.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,175 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import com.sun.mirror.type.*; - - -/** - * A simple visitor for types. - * - *

The implementations of the methods of this class do nothing but - * delegate up the type hierarchy. A subclass should override the - * methods that correspond to the kinds of types on which it will - * operate. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this class is {@link - * javax.lang.model.util.SimpleTypeVisitor6}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public class SimpleTypeVisitor implements TypeVisitor { - - /** - * Creates a new SimpleTypeVisitor. - */ - public SimpleTypeVisitor() {} - - /** - * Visits a type mirror. - * The implementation does nothing. - * @param t the type to visit - */ - public void visitTypeMirror(TypeMirror t) { - } - - /** - * Visits a primitive type. - * The implementation simply invokes - * {@link #visitTypeMirror visitTypeMirror}. - * @param t the type to visit - */ - public void visitPrimitiveType(PrimitiveType t) { - visitTypeMirror(t); - } - - /** - * Visits a void type. - * The implementation simply invokes - * {@link #visitTypeMirror visitTypeMirror}. - * @param t the type to visit - */ - public void visitVoidType(VoidType t) { - visitTypeMirror(t); - } - - /** - * Visits a reference type. - * The implementation simply invokes - * {@link #visitTypeMirror visitTypeMirror}. - * @param t the type to visit - */ - public void visitReferenceType(ReferenceType t) { - visitTypeMirror(t); - } - - /** - * Visits a declared type. - * The implementation simply invokes - * {@link #visitReferenceType visitReferenceType}. - * @param t the type to visit - */ - public void visitDeclaredType(DeclaredType t) { - visitReferenceType(t); - } - - /** - * Visits a class type. - * The implementation simply invokes - * {@link #visitDeclaredType visitDeclaredType}. - * @param t the type to visit - */ - public void visitClassType(ClassType t) { - visitDeclaredType(t); - } - - /** - * Visits an enum type. - * The implementation simply invokes - * {@link #visitClassType visitClassType}. - * @param t the type to visit - */ - public void visitEnumType(EnumType t) { - visitClassType(t); - } - - /** - * Visits an interface type. - * The implementation simply invokes - * {@link #visitDeclaredType visitDeclaredType}. - * @param t the type to visit - */ - public void visitInterfaceType(InterfaceType t) { - visitDeclaredType(t); - } - - /** - * Visits an annotation type. - * The implementation simply invokes - * {@link #visitInterfaceType visitInterfaceType}. - * @param t the type to visit - */ - public void visitAnnotationType(AnnotationType t) { - visitInterfaceType(t); - } - - /** - * Visits an array type. - * The implementation simply invokes - * {@link #visitReferenceType visitReferenceType}. - * @param t the type to visit - */ - public void visitArrayType(ArrayType t) { - visitReferenceType(t); - } - - /** - * Visits a type variable. - * The implementation simply invokes - * {@link #visitReferenceType visitReferenceType}. - * @param t the type to visit - */ - public void visitTypeVariable(TypeVariable t) { - visitReferenceType(t); - } - - /** - * Visits a wildcard. - * The implementation simply invokes - * {@link #visitTypeMirror visitTypeMirror}. - * @param t the type to visit - */ - public void visitWildcardType(WildcardType t) { - visitTypeMirror(t); - } -} --- old/src/share/classes/com/sun/mirror/util/SourceOrderDeclScanner.java 2012-01-19 16:21:19.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,258 +0,0 @@ -/* - * Copyright (c) 2004, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - -import com.sun.mirror.declaration.*; - -import java.util.SortedSet; -import java.util.TreeSet; - -/** - * A visitor for declarations that scans declarations contained within - * the given declaration in source code order. For example, when - * visiting a class, the methods, fields, constructors, and nested - * types of the class are also visited. - * - * To control the processing done on a declaration, users of this - * class pass in their own visitors for pre and post processing. The - * preprocessing visitor is called before the contained declarations - * are scanned; the postprocessing visitor is called after the - * contained declarations are scanned. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this class is {@link - * javax.lang.model.util.SimpleElementVisitor6}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -class SourceOrderDeclScanner extends DeclarationScanner { - static class SourceOrderComparator implements java.util.Comparator { - SourceOrderComparator(){} - - - static boolean equals(Declaration d1, Declaration d2) { - return d1 == d2 || (d1 != null && d1.equals(d2)); - } - - private static class DeclPartialOrder extends com.sun.mirror.util.SimpleDeclarationVisitor { - private int value = 1000; - private static int staticAdjust(Declaration d) { - return d.getModifiers().contains(Modifier.STATIC)?0:1; - } - - DeclPartialOrder() {} - - public int getValue() { return value; } - - @Override - public void visitTypeParameterDeclaration(TypeParameterDeclaration d) {value = 0;} - - @Override - public void visitEnumConstantDeclaration(EnumConstantDeclaration d) {value = 1;} - - @Override - public void visitClassDeclaration(ClassDeclaration d) {value = 2 + staticAdjust(d);} - - @Override - public void visitInterfaceDeclaration(InterfaceDeclaration d) {value = 4;} - - @Override - public void visitEnumDeclaration(EnumDeclaration d) {value = 6;} - - @Override - public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) {value = 8;} - - @Override - public void visitFieldDeclaration(FieldDeclaration d) {value = 10 + staticAdjust(d);} - - @Override - public void visitConstructorDeclaration(ConstructorDeclaration d) {value = 12;} - - @Override - public void visitMethodDeclaration(MethodDeclaration d) {value = 14 + staticAdjust(d);} - } - @SuppressWarnings("cast") - private int compareEqualPosition(Declaration d1, Declaration d2) { - assert - (d1.getPosition() == d2.getPosition()) || // Handles two null positions. - (d1.getPosition().file().compareTo(d2.getPosition().file()) == 0 && - d1.getPosition().line() == d2.getPosition().line() && - d1.getPosition().column() == d2.getPosition().column()); - - DeclPartialOrder dpo1 = new DeclPartialOrder(); - DeclPartialOrder dpo2 = new DeclPartialOrder(); - - d1.accept(dpo1); - d2.accept(dpo2); - - int difference = dpo1.getValue() - dpo2.getValue(); - if (difference != 0) - return difference; - else { - int result = d1.getSimpleName().compareTo(d2.getSimpleName()); - if (result != 0) - return result; - return (int)( Long.signum((long)System.identityHashCode(d1) - - (long)System.identityHashCode(d2))); - } - } - - public int compare(Declaration d1, Declaration d2) { - if (equals(d1, d2)) - return 0; - - SourcePosition p1 = d1.getPosition(); - SourcePosition p2 = d2.getPosition(); - - if (p1 == null && p2 != null) - return 1; - else if (p1 != null && p2 == null) - return -1; - else if(p1 == null && p2 == null) - return compareEqualPosition(d1, d2); - else { - assert p1 != null && p2 != null; - int fileComp = p1.file().compareTo(p2.file()) ; - if (fileComp == 0) { - long diff = (long)p1.line() - (long)p2.line(); - if (diff == 0) { - diff = Long.signum((long)p1.column() - (long)p2.column()); - if (diff != 0) - return (int)diff; - else { - // declarations may be two - // compiler-generated members with the - // same source position - return compareEqualPosition(d1, d2); - } - } else - return (diff<0)? -1:1; - } else - return fileComp; - } - } - } - - final static java.util.Comparator comparator = new SourceOrderComparator(); - - SourceOrderDeclScanner(DeclarationVisitor pre, DeclarationVisitor post) { - super(pre, post); - } - - /** - * Visits a type declaration. - * - * @param d the declaration to visit - */ - public void visitTypeDeclaration(TypeDeclaration d) { - d.accept(pre); - - SortedSet decls = new - TreeSet(SourceOrderDeclScanner.comparator) ; - - for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) { - decls.add(tpDecl); - } - - for(FieldDeclaration fieldDecl: d.getFields()) { - decls.add(fieldDecl); - } - - for(MethodDeclaration methodDecl: d.getMethods()) { - decls.add(methodDecl); - } - - for(TypeDeclaration typeDecl: d.getNestedTypes()) { - decls.add(typeDecl); - } - - for(Declaration decl: decls ) - decl.accept(this); - - d.accept(post); - } - - /** - * Visits a class declaration. - * - * @param d the declaration to visit - */ - public void visitClassDeclaration(ClassDeclaration d) { - d.accept(pre); - - SortedSet decls = new - TreeSet(SourceOrderDeclScanner.comparator) ; - - for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) { - decls.add(tpDecl); - } - - for(FieldDeclaration fieldDecl: d.getFields()) { - decls.add(fieldDecl); - } - - for(MethodDeclaration methodDecl: d.getMethods()) { - decls.add(methodDecl); - } - - for(TypeDeclaration typeDecl: d.getNestedTypes()) { - decls.add(typeDecl); - } - - for(ConstructorDeclaration ctorDecl: d.getConstructors()) { - decls.add(ctorDecl); - } - - for(Declaration decl: decls ) - decl.accept(this); - - d.accept(post); - } - - public void visitExecutableDeclaration(ExecutableDeclaration d) { - d.accept(pre); - - SortedSet decls = new - TreeSet(SourceOrderDeclScanner.comparator) ; - - for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) - decls.add(tpDecl); - - for(ParameterDeclaration pDecl: d.getParameters()) - decls.add(pDecl); - - for(Declaration decl: decls ) - decl.accept(this); - - d.accept(post); - } - -} --- old/src/share/classes/com/sun/mirror/util/SourcePosition.java 2012-01-19 16:21:19.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import java.io.File; - - -/** - * Represents a position in a source file. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. There is no direct - * replacement for the functionality of this interface since the - * standardized {@link javax.annotation.processing.Messager Messager} - * API implicitly takes a source position argument via any element, - * annotation mirror, or annotation value passed along with the - * message. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface SourcePosition { - - /** - * Returns the source file containing this position. - * - * @return the source file containing this position; never null - */ - File file(); - - /** - * Returns the line number of this position. Lines are numbered - * starting with 1. - * - * @return the line number of this position, or 0 if the line - * number is unknown or not applicable - */ - int line(); - - /** - * Returns the column number of this position. Columns are numbered - * starting with 1. - * - * @return the column number of this position, or 0 if the column - * number is unknown or not applicable - */ - int column(); -} --- old/src/share/classes/com/sun/mirror/util/TypeVisitor.java 2012-01-19 16:21:19.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import com.sun.mirror.type.*; - - -/** - * A visitor for types, in the style of the standard visitor design pattern. - * This is used to operate on a type when the kind - * of type is unknown at compile time. - * When a visitor is passed to a type's - * {@link TypeMirror#accept accept} method, - * the most specific visitXxx method applicable to - * that type is invoked. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.element.TypeVisitor}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface TypeVisitor { - - /** - * Visits a type mirror. - * - * @param t the type to visit - */ - public void visitTypeMirror(TypeMirror t); - - /** - * Visits a primitive type. - - * @param t the type to visit - */ - public void visitPrimitiveType(PrimitiveType t); - - /** - * Visits a void type. - * - * @param t the type to visit - */ - public void visitVoidType(VoidType t); - - /** - * Visits a reference type. - * - * @param t the type to visit - */ - public void visitReferenceType(ReferenceType t); - - /** - * Visits a declared type. - * - * @param t the type to visit - */ - public void visitDeclaredType(DeclaredType t); - - /** - * Visits a class type. - * - * @param t the type to visit - */ - public void visitClassType(ClassType t); - - /** - * Visits an enum type. - * - * @param t the type to visit - */ - public void visitEnumType(EnumType t); - - /** - * Visits an interface type. - * - * @param t the type to visit - */ - public void visitInterfaceType(InterfaceType t); - - /** - * Visits an annotation type. - * - * @param t the type to visit - */ - public void visitAnnotationType(AnnotationType t); - - /** - * Visits an array type. - * - * @param t the type to visit - */ - public void visitArrayType(ArrayType t); - - /** - * Visits a type variable. - * - * @param t the type to visit - */ - public void visitTypeVariable(TypeVariable t); - - /** - * Visits a wildcard. - * - * @param t the type to visit - */ - public void visitWildcardType(WildcardType t); -} --- old/src/share/classes/com/sun/mirror/util/Types.java 2012-01-19 16:21:19.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,189 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.mirror.util; - - -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; - - -/** - * Utility methods for operating on types. - * - * @deprecated All components of this API have been superseded by the - * standardized annotation processing API. The replacement for the - * functionality of this interface is {@link - * javax.lang.model.util.Types}. - * - * @author Joseph D. Darcy - * @author Scott Seligman - * @since 1.5 - */ -@Deprecated -@SuppressWarnings("deprecation") -public interface Types { - - /** - * Tests whether one type is a subtype of the another. - * Any type is considered to be a subtype of itself. - * - * @param t1 the first type - * @param t2 the second type - * @return true if and only if the first type is a subtype - * of the second - */ - boolean isSubtype(TypeMirror t1, TypeMirror t2); - - /** - * Tests whether one type is assignable to another. - * - * @param t1 the first type - * @param t2 the second type - * @return true if and only if the first type is assignable - * to the second - */ - boolean isAssignable(TypeMirror t1, TypeMirror t2); - - /** - * Returns the erasure of a type. - * - * @param t the type to be erased - * @return the erasure of the given type - */ - TypeMirror getErasure(TypeMirror t); - - /** - * Returns a primitive type. - * - * @param kind the kind of primitive type to return - * @return a primitive type - */ - PrimitiveType getPrimitiveType(PrimitiveType.Kind kind); - - /** - * Returns the pseudo-type representing the type of void. - * - * @return the pseudo-type representing the type of void - */ - VoidType getVoidType(); - - /** - * Returns an array type with the specified component type. - * - * @param componentType the component type - * @return an array type with the specified component type. - * @throws IllegalArgumentException if the component type is not valid for - * an array - */ - ArrayType getArrayType(TypeMirror componentType); - - /** - * Returns the type variable declared by a type parameter. - * - * @param tparam the type parameter - * @return the type variable declared by the type parameter - */ - TypeVariable getTypeVariable(TypeParameterDeclaration tparam); - - /** - * Returns a new wildcard. - * Either the wildcards's upper bounds or lower bounds may be - * specified, or neither, but not both. - * - * @param upperBounds the upper bounds of this wildcard, - * or an empty collection if none - * @param lowerBounds the lower bounds of this wildcard, - * or an empty collection if none - * @return a new wildcard - * @throws IllegalArgumentException if bounds are not valid - */ - WildcardType getWildcardType(Collection upperBounds, - Collection lowerBounds); - - /** - * Returns the type corresponding to a type declaration and - * actual type arguments. - * Given the declaration for String, for example, this - * method may be used to get the String type. It may - * then be invoked a second time, with the declaration for Set, - * to make the parameterized type {@code Set}. - * - *

The number of type arguments must either equal the - * number of the declaration's formal type parameters, or must be - * zero. If zero, and if the declaration is generic, - * then the declaration's raw type is returned. - * - *

If a parameterized type is being returned, its declaration - * must not be contained within a generic outer class. - * The parameterized type {@code Outer.Inner}, - * for example, may be constructed by first using this - * method to get the type {@code Outer}, and then invoking - * {@link #getDeclaredType(DeclaredType, TypeDeclaration, TypeMirror...)}. - * - * @param decl the type declaration - * @param typeArgs the actual type arguments - * @return the type corresponding to the type declaration and - * actual type arguments - * @throws IllegalArgumentException if too many or too few - * type arguments are given, or if an inappropriate type - * argument or declaration is provided - */ - DeclaredType getDeclaredType(TypeDeclaration decl, - TypeMirror... typeArgs); - - /** - * Returns the type corresponding to a type declaration - * and actual arguments, given a - * {@linkplain DeclaredType#getContainingType() containing type} - * of which it is a member. - * The parameterized type {@code Outer.Inner}, - * for example, may be constructed by first using - * {@link #getDeclaredType(TypeDeclaration, TypeMirror...)} - * to get the type {@code Outer}, and then invoking - * this method. - * - *

If the containing type is a parameterized type, - * the number of type arguments must equal the - * number of the declaration's formal type parameters. - * If it is not parameterized or if it is null, this method is - * equivalent to getDeclaredType(decl, typeArgs). - * - * @param containing the containing type, or null if none - * @param decl the type declaration - * @param typeArgs the actual type arguments - * @return the type corresponding to the type declaration and - * actual type arguments, - * contained within the given type - * @throws IllegalArgumentException if too many or too few - * type arguments are given, or if an inappropriate type - * argument, declaration, or containing type is provided - */ - DeclaredType getDeclaredType(DeclaredType containing, - TypeDeclaration decl, - TypeMirror... typeArgs); -} --- old/src/share/classes/com/sun/mirror/util/package-info.java 2012-01-19 16:21:19.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/** - * Utilities to assist in the processing of {@linkplain - * com.sun.mirror.declaration declarations} and {@linkplain - * com.sun.mirror.type types}. - * - *

The {@code apt} tool and its associated API have been superseded - * by the standardized annotation processing API. The replacement for - * the functionality in this package is {@link javax.lang.model.util}. - * - * @since 1.5 - */ -package com.sun.mirror.util; --- old/src/share/classes/com/sun/tools/apt/Main.java 2012-01-19 16:21:20.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt; - -import java.io.PrintWriter; -import com.sun.mirror.apt.AnnotationProcessorFactory; - -/** - * The main program for the command-line tool apt. - * - *

Nothing described in this source file is part of any supported - * API. If you write code that depends on this, you do so at your own - * risk. This code and its internal interfaces are subject to change - * or deletion without notice. - */ -public class Main { - - static { - ClassLoader loader = Main.class.getClassLoader(); - if (loader != null) - loader.setPackageAssertionStatus("com.sun.tools.apt", true); - } - - /** Command line interface. If args is null, a - * NullPointerException is thrown. - * @param args The command line parameters. - */ - public static void main(String... args) { - System.exit(process(args)); - } - - /** Programatic interface. If args is null, a - * NullPointerException is thrown. - * Output is directed to System.err. - * @param args The command line parameters. - */ - public static int process(String... args) { - return processing(null, null, args); - } - - /** Programmatic interface. If any argument - * is null, a NullPointerException is thrown. - * @param args The command line parameters. - * @param out Where the tool's output is directed. - */ - public static int process(PrintWriter out, String... args) { - if (out == null) - throw new NullPointerException("Parameter out cannot be null."); - return processing(null, out, args); - } - - /** Programmatic interface. If factory or args - * is null, a NullPointerException is thrown. - * The "-factory" and "-factorypath" - * command line parameters are ignored by this entry point. - * Output is directed to System.err. - * - * @param factory The annotation processor factory to use - * @param args The command line parameters. - */ - public static int process(AnnotationProcessorFactory factory, String... args) { - return process(factory, new PrintWriter(System.err, true), args); - } - - /** Programmatic interface. If any argument - * is null, a NullPointerException is thrown. - * The "-factory" and "-factorypath" - * command line parameters are ignored by this entry point. - * - * @param factory The annotation processor factory to use - * @param args The command line parameters. - * @param out Where the tool's output is directed. - */ - public static int process(AnnotationProcessorFactory factory, PrintWriter out, - String... args) { - if (out == null) - throw new NullPointerException("Parameter out cannot be null."); - if (factory == null) - throw new NullPointerException("Parameter factory cannot be null"); - return processing(factory, out, args); - } - - private static int processing(AnnotationProcessorFactory factory, - PrintWriter out, - String... args) { - if (out == null) - out = new PrintWriter(System.err, true); - com.sun.tools.apt.main.Main compiler = - new com.sun.tools.apt.main.Main("apt", out); - return compiler.compile(args, factory); - } -} --- old/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java 2012-01-19 16:21:20.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2004, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.comp; - -public class AnnotationProcessingError extends Error { - private static final long serialVersionUID = 3279196183341719287L; - AnnotationProcessingError(Throwable cause) { - super(cause); - } -} --- old/src/share/classes/com/sun/tools/apt/comp/Apt.java 2012-01-19 16:21:20.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2004, 2011, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.comp; - -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.comp.*; -import com.sun.tools.javac.tree.*; -import com.sun.tools.javac.util.*; -import com.sun.tools.javac.tree.TreeScanner; -import com.sun.tools.javac.util.Context; -import com.sun.tools.apt.util.Bark; -import com.sun.tools.javac.util.Position; - -import java.util.*; -import java.util.regex.*; -import java.lang.reflect.*; -import java.lang.reflect.InvocationTargetException; -import java.io.IOException; - -import com.sun.tools.apt.*; -import com.sun.tools.apt.comp.*; -import com.sun.tools.javac.code.Symbol.*; - -import com.sun.mirror.declaration.TypeDeclaration; -import com.sun.mirror.declaration.AnnotationTypeDeclaration; -import com.sun.mirror.apt.*; -// import com.sun.mirror.apt.AnnotationProcessorFactory; -import com.sun.mirror.apt.AnnotationProcessors; - -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.apt.mirror.apt.FilerImpl; -import com.sun.tools.apt.mirror.apt.AnnotationProcessorEnvironmentImpl; - - -import static com.sun.tools.apt.mirror.declaration.DeclarationMaker.isJavaIdentifier; - -/** - * Apt compiler phase. - * - *

This is NOT part of any supported API. - * If you write code that depends on this, you do so at your own - * risk. This code and its internal interfaces are subject to change - * or deletion without notice. - */ -@SuppressWarnings("deprecation") -public class Apt extends ListBuffer> { - java.util.Set genSourceFileNames = new java.util.LinkedHashSet(); - public java.util.Set getSourceFileNames() { - return genSourceFileNames; - } - - /** List of names of generated class files. - */ - java.util.Set genClassFileNames = new java.util.LinkedHashSet(); - public java.util.Set getClassFileNames() { - return genClassFileNames; - } - - /* AptEnvironment */ - AptEnv aptenv; - - private Context context; - - /** The context key for the todo list. */ - - protected static final Context.Key aptKey = - new Context.Key(); - - /** Get the Apt instance for this context. */ - public static Apt instance(Context context) { - Apt instance = context.get(aptKey); - if (instance == null) - instance = new Apt(context); - return instance; - } - - /** Create a new apt list. */ - protected Apt(Context context) { - this.context = context; - - context.put(aptKey, this); - aptenv = AptEnv.instance(context); - } - - /** - * Used to scan javac trees to build data structures needed for - * bootstrapping the apt environment. In particular: - * - *

    - * - *
  • Generate list of canonical names of annotation types that - * appear in source files given on the command line - * - *
  • Collect list of javac symbols representing source files - * given on the command line - * - *
- */ - static class AptTreeScanner extends TreeScanner { - - // Set of fully qualified names of annotation types present in - // examined source - private Set annotationSet; - - // Symbols to build bootstrapping declaration list - private Collection specifiedDeclCollection; - private Collection declCollection; - - public Set getAnnotationSet() { - return annotationSet; - } - - public AptTreeScanner() { - annotationSet = new LinkedHashSet(); - specifiedDeclCollection = new LinkedHashSet(); - declCollection = new LinkedHashSet(); - } - - public void visitTopLevel(JCTree.JCCompilationUnit tree) { - super.visitTopLevel(tree); - // Print out contents -- what are we dealing with? - - for(JCTree d: tree.defs) { - if (d instanceof JCTree.JCClassDecl) - specifiedDeclCollection.add(((JCTree.JCClassDecl) d).sym); - } - - } - - public void visitBlock(JCTree.JCBlock tree) { - ; // Do nothing. - } - - - // should add nested classes to packages, etc. - public void visitClassDef(JCTree.JCClassDecl tree) { - if (tree.sym == null) { - // could be an anon class w/in an initializer - return; - } - - super.visitClassDef(tree); - - declCollection.add(tree.sym); - } - - public void visitMethodDef(JCTree.JCMethodDecl tree) { - super.visitMethodDef(tree); - } - - public void visitVarDef(JCTree.JCVariableDecl tree) { - super.visitVarDef(tree); - } - - public void visitAnnotation(JCTree.JCAnnotation tree) { - super.visitAnnotation(tree); - annotationSet.add(tree.type.tsym.toString()); - } - } - - Set computeAnnotationSet(Collection classSymbols) { - Set annotationSet = new HashSet(); - - for(ClassSymbol classSymbol: classSymbols) { - computeAnnotationSet(classSymbol, annotationSet); - } - return annotationSet; - } - - void computeAnnotationSet(Symbol symbol, Set annotationSet) { - if (symbol != null ) { - if (symbol.getAnnotationMirrors() != null) - for(Attribute.Compound compound: symbol.getAnnotationMirrors()) - annotationSet.add(compound.type.tsym.toString()); // should fullName be used instead of toString? - - if (symbol instanceof Symbol.MethodSymbol) // add parameter annotations - for(Symbol param: ((MethodSymbol) symbol).params()) - computeAnnotationSet(param, annotationSet); - - if (symbol.members() != null) { - for(Scope.Entry e = symbol.members().elems; e != null; e = e.sibling) - computeAnnotationSet(e.sym, annotationSet); - } - } - } - - public void main(com.sun.tools.javac.util.List treeList, - ListBuffer classes, - Map origOptions, - ClassLoader aptCL, - AnnotationProcessorFactory providedFactory, - java.util.Set > productiveFactories) { - Bark bark = Bark.instance(context); - java.io.PrintWriter out = bark.getWriter(Log.WriterKind.WARNING); - Options options = Options.instance(context); - - Collection spectypedecls = new LinkedHashSet(); - Collection typedecls = new LinkedHashSet(); - Set unmatchedAnnotations = new LinkedHashSet(); - Set emptyATDS = Collections.emptySet(); - Set > currentRoundFactories = - new LinkedHashSet >(); - - // Determine what annotations are present on the input source - // files, create collections of specified type declarations, - // and type declarations. - AptTreeScanner ats = new AptTreeScanner(); - for(JCTree t: treeList) { - t.accept(ats); - } - - // Turn collection of ClassSymbols into Collection of apt decls - for (ClassSymbol cs : ats.specifiedDeclCollection) { - TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(cs); - spectypedecls.add(decl); - } - - for (ClassSymbol cs : ats.declCollection) { - TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(cs); - typedecls.add(decl); - } - - unmatchedAnnotations.addAll(ats.getAnnotationSet()); - - // Process input class files - for(ClassSymbol cs : classes) { - TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(cs); - // System.out.println("Adding a class to spectypedecls"); - spectypedecls.add(decl); - typedecls.add(decl); - computeAnnotationSet(cs, unmatchedAnnotations); - } - - if (options.get("-XListAnnotationTypes") != null) { - out.println("Set of annotations found:" + - (new TreeSet(unmatchedAnnotations)).toString()); - } - - AnnotationProcessorEnvironmentImpl trivAPE = - new AnnotationProcessorEnvironmentImpl(spectypedecls, typedecls, origOptions, context); - - if (options.get("-XListDeclarations") != null) { - out.println("Set of Specified Declarations:" + - spectypedecls); - - out.println("Set of Included Declarations: " + - typedecls); - } - - if (options.get("-print") != null) { - if (spectypedecls.size() == 0 ) - throw new UsageMessageNeededException(); - - // Run the printing processor - AnnotationProcessor proc = (new BootstrapAPF()).getProcessorFor(new HashSet(), - trivAPE); - proc.process(); - } else { - // Discovery process - - // List of annotation processory factory instances - java.util.Iterator providers = null; - { - /* - * If a factory is provided by the user, the - * "-factory" and "-factorypath" options are not used. - * - * Otherwise, if the "-factory" option is used, search - * the appropriate path for the named class. - * Otherwise, use sun.misc.Service to implement the - * default discovery policy. - */ - - java.util.List list = - new LinkedList(); - String factoryName = options.get("-factory"); - - if (providedFactory != null) { - list.add(providedFactory); - providers = list.iterator(); - } else if (factoryName != null) { - try { - AnnotationProcessorFactory factory = - (AnnotationProcessorFactory) (aptCL.loadClass(factoryName).newInstance()); - list.add(factory); - } catch (ClassNotFoundException cnfe) { - bark.aptWarning("FactoryNotFound", factoryName); - } catch (ClassCastException cce) { - bark.aptWarning("FactoryWrongType", factoryName); - } catch (Exception e ) { - bark.aptWarning("FactoryCantInstantiate", factoryName); - } catch(Throwable t) { - throw new AnnotationProcessingError(t); - } - - providers = list.iterator(); - } else { - @SuppressWarnings("unchecked") - Iterator iter = - sun.misc.Service.providers(AnnotationProcessorFactory.class, aptCL); - providers = iter; - - } - } - - java.util.Map> factoryToAnnotation = - new LinkedHashMap>(); - - if (!providers.hasNext() && productiveFactories.size() == 0) { - if (unmatchedAnnotations.size() > 0) - bark.aptWarning("NoAnnotationProcessors"); - if (spectypedecls.size() == 0) - throw new UsageMessageNeededException(); - return; // no processors; nothing else to do - } else { - // If there are no annotations, still give - // processors that match everything a chance to - // run. - - if(unmatchedAnnotations.size() == 0) - unmatchedAnnotations.add(""); - - Set emptyStringSet = new HashSet(); - emptyStringSet.add(""); - emptyStringSet = Collections.unmodifiableSet(emptyStringSet); - - while (providers.hasNext() ) { - Object provider = providers.next(); - try { - Set matchedStrings = new HashSet(); - - AnnotationProcessorFactory apf = (AnnotationProcessorFactory) provider; - Collection supportedTypes = apf.supportedAnnotationTypes(); - - Collection supportedTypePatterns = new LinkedList(); - for(String s: supportedTypes) - supportedTypePatterns.add(importStringToPattern(s)); - - for(String s: unmatchedAnnotations) { - for(Pattern p: supportedTypePatterns) { - if (p.matcher(s).matches()) { - matchedStrings.add(s); - break; - } - } - } - - unmatchedAnnotations.removeAll(matchedStrings); - - if (options.get("-XPrintFactoryInfo") != null) { - out.println("Factory " + apf.getClass().getName() + - " matches " + - ((matchedStrings.size() == 0)? - "nothing.": matchedStrings)); - } - - if (matchedStrings.size() > 0) { - // convert annotation names to annotation - // type decls - Set atds = new HashSet(); - - // If a "*" processor is called on the - // empty string, pass in an empty set of - // annotation type declarations. - if (!matchedStrings.equals(emptyStringSet)) { - for(String s: matchedStrings) { - TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(s); - AnnotationTypeDeclaration annotdecl; - if (decl == null) { - bark.aptError("DeclarationCreation", s); - } else { - try { - annotdecl = (AnnotationTypeDeclaration)decl; - atds.add(annotdecl); - - } catch (ClassCastException cce) { - bark.aptError("BadDeclaration", s); - } - } - } - } - - currentRoundFactories.add(apf.getClass()); - productiveFactories.add(apf.getClass()); - factoryToAnnotation.put(apf, atds); - } else if (productiveFactories.contains(apf.getClass())) { - // If a factory provided a processor in a - // previous round but doesn't match any - // annotations this round, call it with an - // empty set of declarations. - currentRoundFactories.add(apf.getClass()); - factoryToAnnotation.put(apf, emptyATDS ); - } - - if (unmatchedAnnotations.size() == 0) - break; - - } catch (ClassCastException cce) { - bark.aptWarning("BadFactory", cce); - } - } - - unmatchedAnnotations.remove(""); - } - - // If the set difference of productiveFactories and - // currentRoundFactories is non-empty, call the remaining - // productive factories with an empty set of declarations. - { - java.util.Set > neglectedFactories = - new LinkedHashSet>(productiveFactories); - neglectedFactories.removeAll(currentRoundFactories); - for(Class working : neglectedFactories) { - try { - AnnotationProcessorFactory factory = working.newInstance(); - factoryToAnnotation.put(factory, emptyATDS); - } catch (Exception e ) { - bark.aptWarning("FactoryCantInstantiate", working.getName()); - } catch(Throwable t) { - throw new AnnotationProcessingError(t); - } - } - } - - if (unmatchedAnnotations.size() > 0) - bark.aptWarning("AnnotationsWithoutProcessors", unmatchedAnnotations); - - Set processors = new LinkedHashSet(); - - // If there were no source files AND no factory matching "*", - // make sure the usage message is printed - if (spectypedecls.size() == 0 && - factoryToAnnotation.keySet().size() == 0 ) - throw new UsageMessageNeededException(); - - try { - for(Map.Entry> entry : - factoryToAnnotation.entrySet()) { - AnnotationProcessorFactory apFactory = entry.getKey(); - AnnotationProcessor processor = apFactory.getProcessorFor(entry.getValue(), - trivAPE); - if (processor != null) - processors.add(processor); - else - bark.aptWarning("NullProcessor", apFactory.getClass().getName()); - } - } catch(Throwable t) { - throw new AnnotationProcessingError(t); - } - - LinkedList temp = new LinkedList(); - temp.addAll(processors); - - AnnotationProcessor proc = AnnotationProcessors.getCompositeAnnotationProcessor(temp); - - try { - proc.process(); - } catch (Throwable t) { - throw new AnnotationProcessingError(t); - } - - // Invoke listener callback mechanism - trivAPE.roundComplete(); - - FilerImpl filerimpl = (FilerImpl)trivAPE.getFiler(); - genSourceFileNames = filerimpl.getSourceFileNames(); - genClassFileNames = filerimpl.getClassFileNames(); - filerimpl.flush(); // Make sure new files are written out - } - } - - /** - * Convert import-style string to regex matching that string. If - * the string is a valid import-style string, return a regex that - * won't match anything. - */ - Pattern importStringToPattern(String s) { - if (com.sun.tools.javac.processing.JavacProcessingEnvironment.isValidImportString(s)) { - return com.sun.tools.javac.processing.JavacProcessingEnvironment.validImportStringToPattern(s); - } else { - Bark bark = Bark.instance(context); - bark.aptWarning("MalformedSupportedString", s); - return com.sun.tools.javac.processing.JavacProcessingEnvironment.noMatches; - } - } -} --- old/src/share/classes/com/sun/tools/apt/comp/BootstrapAPF.java 2012-01-19 16:21:20.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.comp; - -import java.util.*; -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.AnnotationTypeDeclaration; - -@SuppressWarnings("deprecation") -public class BootstrapAPF implements AnnotationProcessorFactory { - - static final Collection supportedOptions = - Collections.unmodifiableSet(new HashSet()); - - static Collection supportedAnnotations; - static { - Collection c = new HashSet(); - c.add("*"); - supportedAnnotations = Collections.unmodifiableCollection(c); - } - - public BootstrapAPF(){} - - public Collection supportedOptions() { - return BootstrapAPF.supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new PrintAP(env); - } -} --- old/src/share/classes/com/sun/tools/apt/comp/PrintAP.java 2012-01-19 16:21:20.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,467 +0,0 @@ -/* - * Copyright (c) 2004, 2006, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.comp; - -import com.sun.mirror.declaration.*; -import static com.sun.mirror.declaration.Modifier.*; -import com.sun.mirror.type.*; -import com.sun.mirror.apt.*; - -import java.util.*; -import com.sun.mirror.util.*; - -/** - * Class used to implement "-print" option. - */ -@SuppressWarnings("deprecation") -public class PrintAP implements AnnotationProcessor { - - - static class PrintingVisitors { - int indentation = 0; // Indentation level; - AnnotationProcessorEnvironment env; - Messager out; - Declaration java_lang_Object; - Declaration java_lang_annotation_Annotation; - - static Set EMPTY_ELIDES = Collections.emptySet(); - static Set INTERFACE_ELIDES = EnumSet.of(ABSTRACT); - static Set ENUM_ELIDES = EnumSet.of(FINAL, ABSTRACT); - static Set INTERFACE_MEMBER_ELIDES = EnumSet.of(ABSTRACT, PUBLIC, STATIC, FINAL); - - PrintingVisitors(AnnotationProcessorEnvironment env) { - this.env = env; - this.out = env.getMessager(); - this.java_lang_Object = env.getTypeDeclaration("java.lang.Object"); - this.java_lang_annotation_Annotation = env.getTypeDeclaration("java.lang.annotation.Annotation"); - } - - - static String [] spaces = { - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - }; - - - String indent(){ - int indentation = this.indentation; - if (indentation < 0) - return ""; - else if (indentation <= 10) - return spaces[indentation]; - else { - StringBuilder sb = new StringBuilder(); - while (indentation > 10) { - sb.append(spaces[indentation]); - indentation -= 10; - } - sb.append(spaces[indentation]); - return sb.toString(); - } - } - - - class PrePrinting extends SimpleDeclarationVisitor { - Map enumCardinality = new HashMap(); - Map enumConstVisited = new HashMap(); - - PrePrinting(){} - - public void visitClassDeclaration(ClassDeclaration d) { - System.out.println(); - printDocComment(d); - printModifiers(d, EMPTY_ELIDES); - System.out.print("class " + d.getSimpleName()); - printFormalTypeParameters(d); - - // Elide "extends Object" - ClassType Super = d.getSuperclass(); - if (Super != null && !java_lang_Object.equals(Super.getDeclaration()) ) - System.out.print(" extends " + Super.toString()); - - printInterfaces(d); - - System.out.println(" {"); - - PrintingVisitors.this.indentation++; - } - - public void visitEnumDeclaration(EnumDeclaration d) { - enumCardinality.put(d, d.getEnumConstants().size()); - enumConstVisited.put(d, 1); - - System.out.println(); - printDocComment(d); - printModifiers(d, ENUM_ELIDES); - - System.out.print("enum " + d.getSimpleName()); - printFormalTypeParameters(d); - printInterfaces(d); - - System.out.println(" {"); - - PrintingVisitors.this.indentation++; - } - - - public void visitInterfaceDeclaration(InterfaceDeclaration d) { - System.out.println(); - printDocComment(d); - printModifiers(d, INTERFACE_ELIDES); - System.out.print("interface " + d.getSimpleName()); - - printFormalTypeParameters(d); - printInterfaces(d); - - System.out.println(" {"); - - PrintingVisitors.this.indentation++; - } - - public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) { - System.out.println(); - printDocComment(d); - printModifiers(d, INTERFACE_ELIDES); - System.out.print("@interface " + d.getSimpleName()); - printFormalTypeParameters(d); - - printInterfaces(d); - - System.out.println(" {"); - - PrintingVisitors.this.indentation++; - } - - public void visitFieldDeclaration(FieldDeclaration d) { - System.out.println(); - printDocComment(d); - printModifiers(d, - (d.getDeclaringType() instanceof InterfaceDeclaration)? - INTERFACE_MEMBER_ELIDES : EMPTY_ELIDES); - System.out.print(d.getType().toString() + " " + - d.getSimpleName() ); - String constantExpr = d.getConstantExpression(); - if (constantExpr != null) { - System.out.print(" = " + constantExpr); - } - System.out.println(";" ); - } - - public void visitEnumConstantDeclaration(EnumConstantDeclaration d) { - EnumDeclaration ed = d.getDeclaringType(); - int enumCard = enumCardinality.get(ed); - int enumVisit = enumConstVisited.get(ed); - - System.out.println(); - printDocComment(d); - System.out.print(PrintingVisitors.this.indent()); - System.out.print(d.getSimpleName() ); - System.out.println((enumVisit < enumCard )? ",":";" ); - - enumConstVisited.put(ed, enumVisit+1); - } - - public void visitMethodDeclaration(MethodDeclaration d) { - System.out.println(); - printDocComment(d); - printModifiers(d, - (d.getDeclaringType() instanceof InterfaceDeclaration)? - INTERFACE_MEMBER_ELIDES : EMPTY_ELIDES); - printFormalTypeParameters(d); - System.out.print(d.getReturnType().toString() + " "); - System.out.print(d.getSimpleName() + "("); - printParameters(d); - System.out.print(")"); - printThrows(d); - System.out.println(";"); - } - - public void visitConstructorDeclaration(ConstructorDeclaration d) { - System.out.println(); - printDocComment(d); - printModifiers(d, EMPTY_ELIDES); - printFormalTypeParameters(d); - System.out.print(d.getSimpleName() + "("); - printParameters(d); - System.out.print(")"); - printThrows(d); - System.out.println(";"); - } - - - } - - class PostPrinting extends SimpleDeclarationVisitor { - PostPrinting(){} - - public void visitTypeDeclaration(TypeDeclaration d) { - PrintingVisitors.this.indentation--; - - System.out.print(PrintingVisitors.this.indent()); - System.out.println("}"); - } - } - - private void printAnnotations(Collection annots) { - - for(AnnotationMirror annot: annots) { - System.out.print(this.indent()); - System.out.print(annot.toString()); - System.out.println(); - } - } - - private void printAnnotationsInline(Collection annots) { - - for(AnnotationMirror annot: annots) { - System.out.print(annot); - System.out.print(" "); - } - } - - - private void printParameters(ExecutableDeclaration ex) { - - Collection parameters = ex.getParameters(); - int size = parameters.size(); - - switch (size) { - case 0: - break; - - case 1: - for(ParameterDeclaration parameter: parameters) { - printModifiers(parameter, EMPTY_ELIDES); - - if (ex.isVarArgs() ) { - System.out.print(((ArrayType)parameter.getType()).getComponentType() ); - System.out.print("..."); - } else - System.out.print(parameter.getType()); - System.out.print(" " + parameter.getSimpleName()); - } - break; - - default: - { - int i = 1; - for(ParameterDeclaration parameter: parameters) { - if (i == 2) - PrintingVisitors.this.indentation++; - - if (i > 1) - System.out.print(PrintingVisitors.this.indent()); - - printModifiers(parameter, EMPTY_ELIDES); - - if (i == size && ex.isVarArgs() ) { - System.out.print(((ArrayType)parameter.getType()).getComponentType() ); - System.out.print("..."); - } else - System.out.print(parameter.getType()); - System.out.print(" " + parameter.getSimpleName()); - - if (i < size) - System.out.println(","); - - i++; - } - - if (parameters.size() >= 2) - PrintingVisitors.this.indentation--; - } - break; - } - } - - private void printDocComment(Declaration d) { - String docComment = d.getDocComment(); - - if (docComment != null) { - // Break comment into lines - java.util.StringTokenizer st = new StringTokenizer(docComment, - "\n\r"); - System.out.print(PrintingVisitors.this.indent()); - System.out.println("/**"); - - while(st.hasMoreTokens()) { - System.out.print(PrintingVisitors.this.indent()); - System.out.print(" *"); - System.out.println(st.nextToken()); - } - - System.out.print(PrintingVisitors.this.indent()); - System.out.println(" */"); - } - } - - private void printModifiers(Declaration d, Collection elides) { - printAnnotations(d.getAnnotationMirrors()); - - System.out.print(PrintingVisitors.this.indent()); - - for(Modifier m: adjustModifiers(d.getModifiers(), elides) ){ - System.out.print(m.toString() + " "); - } - } - - private void printModifiers(ParameterDeclaration d, Collection elides) { - printAnnotationsInline(d.getAnnotationMirrors()); - - for(Modifier m: adjustModifiers(d.getModifiers(), elides) ) { - System.out.print(m.toString() + " "); - } - } - - private Collection adjustModifiers(Collection mods, - Collection elides) { - if (elides.isEmpty()) - return mods; - else { - Collection newMods = new LinkedHashSet(); - newMods.addAll(mods); - newMods.removeAll(elides); - return newMods; - } - } - - private void printFormalTypeParameters(ExecutableDeclaration e) { - printFormalTypeParameterSet(e.getFormalTypeParameters(), true); - } - - private void printFormalTypeParameters(TypeDeclaration d) { - printFormalTypeParameterSet(d.getFormalTypeParameters(), false); - } - - private void printFormalTypeParameterSet(Collection typeParams, boolean pad) { - if (typeParams.size() != 0) { - System.out.print("<"); - - boolean first = true; - for(TypeParameterDeclaration tpd: typeParams) { - if (!first) - System.out.print(", "); - System.out.print(tpd.toString()); - } - - System.out.print(">"); - if (pad) - System.out.print(" "); - - } - } - - private void printInterfaceSet(Collection interfaces, - boolean classNotInterface) { - if (interfaces.size() != 0) { - System.out.print((classNotInterface?" implements" : " extends")); - - boolean first = true; - for(InterfaceType interType: interfaces) { - if (!first) - System.out.print(","); - System.out.print(" "); - System.out.print(interType.toString()); - first = false; - } - } - } - - private void printInterfaces(TypeDeclaration d) { - printInterfaceSet(d.getSuperinterfaces(), d instanceof ClassDeclaration); - } - - private void printInterfaces(AnnotationTypeDeclaration d) { - Collection interfaces = new HashSet(d.getSuperinterfaces()); - - for(InterfaceType interType: interfaces) { - if (java_lang_annotation_Annotation.equals(interType.getDeclaration()) ) - interfaces.remove(interType); - } - - printInterfaceSet(interfaces, d instanceof ClassDeclaration); - } - - private void printThrows(ExecutableDeclaration d) { - Collection thrownTypes = d.getThrownTypes(); - final int size = thrownTypes.size(); - if (size != 0) { - System.out.print(" throws"); - - int i = 1; - for(ReferenceType thrownType: thrownTypes) { - if (i == 1) { - System.out.print(" "); - } - - if (i == 2) - PrintingVisitors.this.indentation++; - - if (i >= 2) - System.out.print(PrintingVisitors.this.indent()); - - System.out.print(thrownType.toString()); - - - if (i != size) { - System.out.println(", "); - } - i++; - } - - if (size >= 2) - PrintingVisitors.this.indentation--; - } - } - - DeclarationVisitor getPrintingVisitor() { - return DeclarationVisitors.getSourceOrderDeclarationScanner(new PrePrinting(), - new PostPrinting()); - } - } - - AnnotationProcessorEnvironment env; - PrintAP(AnnotationProcessorEnvironment env) { - this.env = env; - } - - - public void process() { - Collection typedecls = env.getSpecifiedTypeDeclarations(); - - for (TypeDeclaration td: typedecls) - td.accept((new PrintingVisitors(env)).getPrintingVisitor()); - } -} --- old/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java 2012-01-19 16:21:21.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2004, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.comp; - - -public class UsageMessageNeededException extends RuntimeException { - private static final long serialVersionUID = -3265159608992825840L; -} --- old/src/share/classes/com/sun/tools/apt/main/AptJavaCompiler.java 2012-01-19 16:21:21.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,291 +0,0 @@ -/* - * Copyright (c) 2004, 2011, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.main; - -import java.io.*; -import java.util.Map; - -import javax.tools.JavaFileManager; -import javax.tools.JavaFileObject; - -import com.sun.tools.javac.file.JavacFileManager; -import com.sun.tools.javac.util.*; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.jvm.*; - -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.tree.JCTree.*; - -import com.sun.tools.apt.comp.*; -import com.sun.tools.apt.util.Bark; -import com.sun.mirror.apt.AnnotationProcessorFactory; - -/** - *

This is NOT part of any supported API. - * If you write code that depends on this, you do so at your own - * risk. This code and its internal interfaces are subject to change - * or deletion without notice. - */ -@SuppressWarnings("deprecation") -public class AptJavaCompiler extends com.sun.tools.javac.main.JavaCompiler { - /** The context key for the compiler. */ - protected static final Context.Key compilerKey = - new Context.Key(); - - /** Get the JavaCompiler instance for this context. */ - public static AptJavaCompiler instance(Context context) { - AptJavaCompiler instance = context.get(compilerKey); - if (instance == null) - instance = new AptJavaCompiler(context); - return instance; - } - - - java.util.Set genSourceFileNames; - java.util.Set genClassFileNames; - - public java.util.Set getSourceFileNames() { - return genSourceFileNames; - } - - /** List of names of generated class files. - */ - public java.util.Set getClassFileNames() { - return genClassFileNames; - } - - java.util.Set aggregateGenFiles = java.util.Collections.emptySet(); - - public java.util.Set getAggregateGenFiles() { - return aggregateGenFiles; - } - - /** The bark to be used for error reporting. - */ - Bark bark; - - /** The log to be used for error reporting. - */ - Log log; - - /** The annotation framework - */ - Apt apt; - - private static Context preRegister(Context context) { - Bark.preRegister(context); - - if (context.get(JavaFileManager.class) == null) - JavacFileManager.preRegister(context); - - return context; - } - - /** Construct a new compiler from a shared context. - */ - public AptJavaCompiler(Context context) { - super(preRegister(context)); - - context.put(compilerKey, this); - apt = Apt.instance(context); - - ClassReader classReader = ClassReader.instance(context); - classReader.preferSource = true; - - // TEMPORARY NOTE: bark==log, but while refactoring, we maintain their - // original identities, to remember the original intent. - log = Log.instance(context); - bark = Bark.instance(context); - - Options options = Options.instance(context); - classOutput = options.get("-retrofit") == null; - nocompile = options.get("-nocompile") != null; - print = options.get("-print") != null; - classesAsDecls= options.get("-XclassesAsDecls") != null; - - genSourceFileNames = new java.util.LinkedHashSet(); - genClassFileNames = new java.util.LinkedHashSet(); - - // this forces a copy of the line map to be kept in the tree, - // for use by com.sun.mirror.util.SourcePosition. - lineDebugInfo = true; - } - - /* Switches: - */ - - /** Emit class files. This switch is always set, except for the first - * phase of retrofitting, where signatures are parsed. - */ - public boolean classOutput; - - /** The internal printing annotation processor should be used. - */ - public boolean print; - - /** Compilation should not be done after annotation processing. - */ - public boolean nocompile; - - /** Are class files being treated as declarations - */ - public boolean classesAsDecls; - - /** Try to open input stream with given name. - * Report an error if this fails. - * @param filename The file name of the input stream to be opened. - */ - // PROVIDED FOR EXTREME BACKWARDS COMPATIBILITY - // There are some very obscure errors that can arise while translating - // the contents of a file from bytes to characters. In Tiger, these - // diagnostics were ignored. This method provides compatibility with - // that behavior. It would be better to honor those diagnostics, in which - // case, this method can be deleted. - @Override - public CharSequence readSource(JavaFileObject filename) { - try { - inputFiles.add(filename); - boolean prev = bark.setDiagnosticsIgnored(true); - try { - return filename.getCharContent(false); - } - finally { - bark.setDiagnosticsIgnored(prev); - } - } catch (IOException e) { - bark.error(Position.NOPOS, "cant.read.file", filename); - return null; - } - } - - /** Parse contents of input stream. - * @param filename The name of the file from which input stream comes. - * @param input The input stream to be parsed. - */ - // PROVIDED FOR BACKWARDS COMPATIBILITY - // In Tiger, diagnostics from the scanner and parser were ignored. - // This method provides compatibility with that behavior. - // It would be better to honor those diagnostics, in which - // case, this method can be deleted. - @Override - protected JCCompilationUnit parse(JavaFileObject filename, CharSequence content) { - boolean prev = bark.setDiagnosticsIgnored(true); - try { - return super.parse(filename, content); - } - finally { - bark.setDiagnosticsIgnored(prev); - } - } - - @Override - protected boolean keepComments() { - return true; // make doc comments available to mirror API impl. - } - - /** Track when the JavaCompiler has been used to compile something. */ - private boolean hasBeenUsed = false; - - /** Main method: compile a list of files, return all compiled classes - * @param filenames The names of all files to be compiled. - */ - public List compile(List filenames, - Map origOptions, - ClassLoader aptCL, - AnnotationProcessorFactory providedFactory, - java.util.Set > productiveFactories, - java.util.Set aggregateGenFiles) - throws Throwable { - // as a JavaCompiler can only be used once, throw an exception if - // it has been used before. - assert !hasBeenUsed : "attempt to reuse JavaCompiler"; - hasBeenUsed = true; - - this.aggregateGenFiles = aggregateGenFiles; - - long msec = System.currentTimeMillis(); - - ListBuffer classes = new ListBuffer(); - try { - JavacFileManager fm = (JavacFileManager)fileManager; - //parse all files - ListBuffer trees = new ListBuffer(); - for (List l = filenames; l.nonEmpty(); l = l.tail) { - if (classesAsDecls) { - if (! l.head.endsWith(".java") ) { // process as class file - ClassSymbol cs = reader.enterClass(names.fromString(l.head)); - try { - cs.complete(); - } catch(Symbol.CompletionFailure cf) { - bark.aptError("CantFindClass", l); - continue; - } - - classes.append(cs); // add to list of classes - continue; - } - } - JavaFileObject fo = fm.getJavaFileObjectsFromStrings(List.of(l.head)).iterator().next(); - trees.append(parse(fo)); - } - - //enter symbols for all files - List roots = trees.toList(); - - if (errorCount() == 0) { - boolean prev = bark.setDiagnosticsIgnored(true); - try { - enter.main(roots); - } - finally { - bark.setDiagnosticsIgnored(prev); - } - } - - if (errorCount() == 0) { - apt.main(roots, - classes, - origOptions, aptCL, - providedFactory, - productiveFactories); - genSourceFileNames.addAll(apt.getSourceFileNames()); - genClassFileNames.addAll(apt.getClassFileNames()); - } - - } catch (Abort ex) { - } - - if (verbose) - log.printVerbose("total", Long.toString(System.currentTimeMillis() - msec)); - - chk.reportDeferredDiagnostics(); - - printCount("error", errorCount()); - printCount("warn", warningCount()); - - return classes.toList(); - } -} --- old/src/share/classes/com/sun/tools/apt/main/CommandLine.java 2012-01-19 16:21:21.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2004, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.main; - -import java.io.IOException; -import java.io.Reader; -import java.io.FileReader; -import java.io.BufferedReader; -import java.io.StreamTokenizer; -import com.sun.tools.javac.util.ListBuffer; - -/** - * Various utility methods for processing Java tool command line arguments. - * - *

This is NOT part of any supported API. - * If you write code that depends on this, you do so at your own risk. - * This code and its internal interfaces are subject to change or - * deletion without notice. - */ -public class CommandLine { - /** - * Process Win32-style command files for the specified command line - * arguments and return the resulting arguments. A command file argument - * is of the form '@file' where 'file' is the name of the file whose - * contents are to be parsed for additional arguments. The contents of - * the command file are parsed using StreamTokenizer and the original - * '@file' argument replaced with the resulting tokens. Recursive command - * files are not supported. The '@' character itself can be quoted with - * the sequence '@@'. - */ - public static String[] parse(String[] args) - throws IOException - { - ListBuffer newArgs = new ListBuffer(); - for (int i = 0; i < args.length; i++) { - String arg = args[i]; - if (arg.length() > 1 && arg.charAt(0) == '@') { - arg = arg.substring(1); - if (arg.charAt(0) == '@') { - newArgs.append(arg); - } else { - loadCmdFile(arg, newArgs); - } - } else { - newArgs.append(arg); - } - } - return newArgs.toList().toArray(new String[newArgs.length()]); - } - - private static void loadCmdFile(String name, ListBuffer args) - throws IOException - { - Reader r = new BufferedReader(new FileReader(name)); - StreamTokenizer st = new StreamTokenizer(r); - st.resetSyntax(); - st.wordChars(' ', 255); - st.whitespaceChars(0, ' '); - st.commentChar('#'); - st.quoteChar('"'); - st.quoteChar('\''); - while (st.nextToken() != StreamTokenizer.TT_EOF) { - args.append(st.sval); - } - r.close(); - } -} --- old/src/share/classes/com/sun/tools/apt/main/Main.java 2012-01-19 16:21:21.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,1281 +0,0 @@ -/* - * Copyright (c) 2004, 2011, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.main; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.text.MessageFormat; -import java.util.ResourceBundle; -import java.util.MissingResourceException; -import java.util.StringTokenizer; -import java.util.Map; -import java.util.HashMap; -import java.util.Collections; - -import java.net.URLClassLoader; -import java.net.URL; -import java.net.MalformedURLException; - -import javax.tools.JavaFileManager; -import javax.tools.StandardLocation; - -import com.sun.tools.javac.file.JavacFileManager; -import com.sun.tools.javac.code.Source; -import com.sun.tools.javac.code.Symbol; -import com.sun.tools.javac.code.Type; -import com.sun.tools.javac.jvm.Target; -import com.sun.tools.javac.util.*; - -import com.sun.tools.apt.comp.AnnotationProcessingError; -import com.sun.tools.apt.comp.UsageMessageNeededException; -import com.sun.tools.apt.util.Bark; -import com.sun.mirror.apt.AnnotationProcessorFactory; - -import static com.sun.tools.javac.file.Locations.pathToURLs; - -/** This class provides a commandline interface to the apt build-time - * tool. - * - *

This is NOT part of any supported API. - * If you write code that depends on this, you do so at your own - * risk. This code and its internal interfaces are subject to change - * or deletion without notice. - */ -@SuppressWarnings("deprecation") -public class Main { - - /** For testing: enter any options you want to be set implicitly - * here. - */ - static String[] forcedOpts = { - // Preserve parameter names from class files if the class was - // compiled with debug enabled - "-XDsave-parameter-names" - }; - - /** The name of the compiler, for use in diagnostics. - */ - String ownName; - - /** The writer to use for diagnostic output. - */ - PrintWriter out; - - - /** Instantiated factory to use in lieu of discovery process. - */ - AnnotationProcessorFactory providedFactory = null; - - /** Map representing original command-line arguments. - */ - Map origOptions = new HashMap(); - - /** Classloader to use for finding factories. - */ - ClassLoader aptCL = null; - - /** Result codes. - */ - static final int - EXIT_OK = 0, // Compilation completed with no errors. - EXIT_ERROR = 1, // Completed but reported errors. - EXIT_CMDERR = 2, // Bad command-line arguments - EXIT_SYSERR = 3, // System error or resource exhaustion. - EXIT_ABNORMAL = 4; // Compiler terminated abnormally - - /** This class represents an option recognized by the main program - */ - private class Option { - /** Whether or not the option is used only aptOnly. - */ - boolean aptOnly = false; - - /** Option string. - */ - String name; - - /** Documentation key for arguments. - */ - String argsNameKey; - - /** Documentation key for description. - */ - String descrKey; - - /** Suffix option (-foo=bar or -foo:bar) - */ - boolean hasSuffix; - - Option(String name, String argsNameKey, String descrKey) { - this.name = name; - this.argsNameKey = argsNameKey; - this.descrKey = descrKey; - char lastChar = name.charAt(name.length()-1); - hasSuffix = lastChar == ':' || lastChar == '='; - } - Option(String name, String descrKey) { - this(name, null, descrKey); - } - - public String toString() { - return name; - } - - /** Does this option take a (separate) operand? - */ - boolean hasArg() { - return argsNameKey != null && !hasSuffix; - } - - /** Does argument string match option pattern? - * @param arg The command line argument string. - */ - boolean matches(String arg) { - return hasSuffix ? arg.startsWith(name) : arg.equals(name); - } - - /** For javac-only options, print nothing. - */ - void help() { - } - - String helpSynopsis() { - return name + - (argsNameKey == null ? "" : - ((hasSuffix ? "" : " ") + - getLocalizedString(argsNameKey))); - } - - /** Print a line of documentation describing this option, if non-standard. - */ - void xhelp() {} - - /** Process the option (with arg). Return true if error detected. - */ - boolean process(String option, String arg) { - options.put(option, arg); - return false; - } - - /** Process the option (without arg). Return true if error detected. - */ - boolean process(String option) { - if (hasSuffix) - return process(name, option.substring(name.length())); - else - return process(option, option); - } - }; - - private class SharedOption extends Option { - SharedOption(String name, String argsNameKey, String descrKey) { - super(name, argsNameKey, descrKey); - } - - SharedOption(String name, String descrKey) { - super(name, descrKey); - } - - void help() { - String s = " " + helpSynopsis(); - out.print(s); - for (int j = s.length(); j < 29; j++) out.print(" "); - Bark.printRawLines(out, getLocalizedString(descrKey)); - } - - } - - private class AptOption extends Option { - AptOption(String name, String argsNameKey, String descrKey) { - super(name, argsNameKey, descrKey); - aptOnly = true; - } - - AptOption(String name, String descrKey) { - super(name, descrKey); - aptOnly = true; - } - - /** Print a line of documentation describing this option, if standard. - */ - void help() { - String s = " " + helpSynopsis(); - out.print(s); - for (int j = s.length(); j < 29; j++) out.print(" "); - Bark.printRawLines(out, getLocalizedString(descrKey)); - } - - } - - /** A nonstandard or extended (-X) option - */ - private class XOption extends Option { - XOption(String name, String argsNameKey, String descrKey) { - super(name, argsNameKey, descrKey); - } - XOption(String name, String descrKey) { - this(name, null, descrKey); - } - void help() {} - void xhelp() {} - }; - - /** A nonstandard or extended (-X) option - */ - private class AptXOption extends Option { - AptXOption(String name, String argsNameKey, String descrKey) { - super(name, argsNameKey, descrKey); - aptOnly = true; - } - AptXOption(String name, String descrKey) { - this(name, null, descrKey); - } - void xhelp() { - String s = " " + helpSynopsis(); - out.print(s); - for (int j = s.length(); j < 29; j++) out.print(" "); - Log.printRawLines(out, getLocalizedString(descrKey)); - } - }; - - /** A hidden (implementor) option - */ - private class HiddenOption extends Option { - HiddenOption(String name) { - super(name, null, null); - } - HiddenOption(String name, String argsNameKey) { - super(name, argsNameKey, null); - } - void help() {} - void xhelp() {} - }; - - private class AptHiddenOption extends HiddenOption { - AptHiddenOption(String name) { - super(name); - aptOnly = true; - } - AptHiddenOption(String name, String argsNameKey) { - super(name, argsNameKey); - aptOnly = true; - } - } - - private Option[] recognizedOptions = { - new Option("-g", "opt.g"), - new Option("-g:none", "opt.g.none") { - boolean process(String option) { - options.put("-g:", "none"); - return false; - } - }, - - new Option("-g:{lines,vars,source}", "opt.g.lines.vars.source") { - boolean matches(String s) { - return s.startsWith("-g:"); - } - boolean process(String option) { - String suboptions = option.substring(3); - options.put("-g:", suboptions); - // enter all the -g suboptions as "-g:suboption" - for (StringTokenizer t = new StringTokenizer(suboptions, ","); t.hasMoreTokens(); ) { - String tok = t.nextToken(); - String opt = "-g:" + tok; - options.put(opt, opt); - } - return false; - } - }, - - new XOption("-Xlint", "opt.Xlint"), - new XOption("-Xlint:{" - + "all," - + "cast,deprecation,divzero,empty,unchecked,fallthrough,path,serial,finally,overrides," - + "-cast,-deprecation,-divzero,-empty,-unchecked,-fallthrough,-path,-serial,-finally,-overrides," - + "none}", - "opt.Xlint.suboptlist") { - boolean matches(String s) { - return s.startsWith("-Xlint:"); - } - boolean process(String option) { - String suboptions = option.substring(7); - options.put("-Xlint:", suboptions); - // enter all the -Xlint suboptions as "-Xlint:suboption" - for (StringTokenizer t = new StringTokenizer(suboptions, ","); t.hasMoreTokens(); ) { - String tok = t.nextToken(); - String opt = "-Xlint:" + tok; - options.put(opt, opt); - } - return false; - } - }, - - new Option("-nowarn", "opt.nowarn"), - new Option("-verbose", "opt.verbose"), - - // -deprecation is retained for command-line backward compatibility - new Option("-deprecation", "opt.deprecation") { - boolean process(String option) { - options.put("-Xlint:deprecation", option); - return false; - } - }, - - new SharedOption("-classpath", "opt.arg.path", "opt.classpath"), - new SharedOption("-cp", "opt.arg.path", "opt.classpath") { - boolean process(String option, String arg) { - return super.process("-classpath", arg); - } - }, - new Option("-sourcepath", "opt.arg.path", "opt.sourcepath"), - new Option("-bootclasspath", "opt.arg.path", "opt.bootclasspath") { - boolean process(String option, String arg) { - options.remove("-Xbootclasspath/p:"); - options.remove("-Xbootclasspath/a:"); - return super.process(option, arg); - } - }, - new XOption("-Xbootclasspath/p:", "opt.arg.path", "opt.Xbootclasspath.p"), - new XOption("-Xbootclasspath/a:", "opt.arg.path", "opt.Xbootclasspath.a"), - new XOption("-Xbootclasspath:", "opt.arg.path", "opt.bootclasspath") { - boolean process(String option, String arg) { - options.remove("-Xbootclasspath/p:"); - options.remove("-Xbootclasspath/a:"); - return super.process("-bootclasspath", arg); - } - }, - new Option("-extdirs", "opt.arg.dirs", "opt.extdirs"), - new XOption("-Djava.ext.dirs=", "opt.arg.dirs", "opt.extdirs") { - boolean process(String option, String arg) { - return super.process("-extdirs", arg); - } - }, - new Option("-endorseddirs", "opt.arg.dirs", "opt.endorseddirs"), - new XOption("-Djava.endorsed.dirs=","opt.arg.dirs", "opt.endorseddirs") { - boolean process(String option, String arg) { - return super.process("-endorseddirs", arg); - } - }, - new Option("-proc:{none, only}", "opt.proc.none.only") { - public boolean matches(String s) { - return s.equals("-proc:none") || s.equals("-proc:only"); - } - }, - new Option("-processor", "opt.arg.class", "opt.processor"), - new Option("-processorpath", "opt.arg.path", "opt.processorpath"), - - new SharedOption("-d", "opt.arg.path", "opt.d"), - new SharedOption("-s", "opt.arg.path", "opt.s"), - new Option("-encoding", "opt.arg.encoding", "opt.encoding"), - new SharedOption("-source", "opt.arg.release", "opt.source") { - boolean process(String option, String operand) { - Source source = Source.lookup(operand); - if (source == null) { - error("err.invalid.source", operand); - return true; - } else if (source.compareTo(Source.JDK1_5) > 0) { - error("err.unsupported.source.version", operand); - return true; - } - return super.process(option, operand); - } - }, - new Option("-target", "opt.arg.release", "opt.target") { - boolean process(String option, String operand) { - Target target = Target.lookup(operand); - if (target == null) { - error("err.invalid.target", operand); - return true; - } else if (target.compareTo(Target.JDK1_5) > 0) { - error("err.unsupported.target.version", operand); - return true; - } - return super.process(option, operand); - } - }, - new AptOption("-version", "opt.version") { - boolean process(String option) { - Bark.printRawLines(out, ownName + " " + AptJavaCompiler.version()); - return super.process(option); - } - }, - new HiddenOption("-fullversion"), - new AptOption("-help", "opt.help") { - boolean process(String option) { - Main.this.help(); - return super.process(option); - } - }, - new SharedOption("-X", "opt.X") { - boolean process(String option) { - Main.this.xhelp(); - return super.process(option); - } - }, - - // This option exists only for the purpose of documenting itself. - // It's actually implemented by the launcher. - new AptOption("-J", "opt.arg.flag", "opt.J") { - String helpSynopsis() { - hasSuffix = true; - return super.helpSynopsis(); - } - boolean process(String option) { - throw new AssertionError - ("the -J flag should be caught by the launcher."); - } - }, - - - new SharedOption("-A", "opt.proc.flag", "opt.A") { - String helpSynopsis() { - hasSuffix = true; - return super.helpSynopsis(); - } - - boolean matches(String arg) { - return arg.startsWith("-A"); - } - - boolean hasArg() { - return false; - } - - boolean process(String option) { - return process(option, option); - } - }, - - new AptOption("-nocompile", "opt.nocompile"), - - new AptOption("-print", "opt.print"), - - new AptOption("-factorypath", "opt.arg.path", "opt.factorypath"), - - new AptOption("-factory", "opt.arg.class", "opt.factory"), - - new AptXOption("-XListAnnotationTypes", "opt.XListAnnotationTypes"), - - new AptXOption("-XListDeclarations", "opt.XListDeclarations"), - - new AptXOption("-XPrintAptRounds", "opt.XPrintAptRounds"), - - new AptXOption("-XPrintFactoryInfo", "opt.XPrintFactoryInfo"), - - /* - * Option to treat both classes and source files as - * declarations that can be given on the command line and - * processed as the result of an apt round. - */ - new AptXOption("-XclassesAsDecls", "opt.XClassesAsDecls"), - - // new Option("-moreinfo", "opt.moreinfo") { - new HiddenOption("-moreinfo") { - boolean process(String option) { - Type.moreInfo = true; - return super.process(option); - } - }, - - // treat warnings as errors - new HiddenOption("-Werror"), - - // use complex inference from context in the position of a method call argument - new HiddenOption("-complexinference"), - - // prompt after each error - // new Option("-prompt", "opt.prompt"), - new HiddenOption("-prompt"), - - // dump stack on error - new HiddenOption("-doe"), - - // display warnings for generic unchecked and unsafe operations - new HiddenOption("-warnunchecked") { - boolean process(String option) { - options.put("-Xlint:unchecked", option); - return false; - } - }, - - new HiddenOption("-Xswitchcheck") { - boolean process(String option) { - options.put("-Xlint:switchcheck", option); - return false; - } - }, - - // generate trace output for subtyping operations - new HiddenOption("-debugsubtyping"), - - new XOption("-Xmaxerrs", "opt.arg.number", "opt.maxerrs"), - new XOption("-Xmaxwarns", "opt.arg.number", "opt.maxwarns"), - new XOption("-Xstdout", "opt.arg.file", "opt.Xstdout") { - boolean process(String option, String arg) { - try { - out = new PrintWriter(new FileWriter(arg), true); - } catch (java.io.IOException e) { - error("err.error.writing.file", arg, e); - return true; - } - return super.process(option, arg); - } - }, - - new XOption("-Xprint", "opt.print"), - - new XOption("-XprintRounds", "opt.printRounds"), - - new XOption("-XprintProcessorInfo", "opt.printProcessorInfo"), - - - /* -O is a no-op, accepted for backward compatibility. */ - new HiddenOption("-O"), - - /* -Xjcov produces tables to support the code coverage tool jcov. */ - new HiddenOption("-Xjcov"), - - /* This is a back door to the compiler's option table. - * -Dx=y sets the option x to the value y. - * -Dx sets the option x to the value x. - */ - new HiddenOption("-XD") { - String s; - boolean matches(String s) { - this.s = s; - return s.startsWith(name); - } - boolean process(String option) { - s = s.substring(name.length()); - int eq = s.indexOf('='); - String key = (eq < 0) ? s : s.substring(0, eq); - String value = (eq < 0) ? s : s.substring(eq+1); - options.put(key, value); - return false; - } - }, - - new HiddenOption("sourcefile") { - String s; - boolean matches(String s) { - this.s = s; - return s.endsWith(".java") || - (options.get("-XclassesAsDecls") != null); - } - boolean process(String option) { - if (s.endsWith(".java")) { - if (!sourceFileNames.contains(s)) - sourceFileNames.add(s); - } else if (options.get("-XclassesAsDecls") != null) { - classFileNames.add(s); - } - return false; - } - }, - }; - - /** - * Construct a compiler instance. - */ - public Main(String name) { - this(name, new PrintWriter(System.err, true)); - } - - /** - * Construct a compiler instance. - */ - public Main(String name, PrintWriter out) { - this.ownName = name; - this.out = out; - } - - /** A table of all options that's passed to the JavaCompiler constructor. */ - private Options options = null; - - /** The list of source files to process - */ - java.util.List sourceFileNames = new java.util.LinkedList(); - - /** The list of class files to process - */ - java.util.List classFileNames = new java.util.LinkedList(); - - /** List of top level names of generated source files from most recent apt round. - */ - java.util.Set genSourceFileNames = new java.util.LinkedHashSet(); - - /** List of names of generated class files from most recent apt round. - */ - java.util.Set genClassFileNames = new java.util.LinkedHashSet(); - - /** - * List of all the generated source file names across all apt rounds. - */ - java.util.Set aggregateGenSourceFileNames = new java.util.LinkedHashSet(); - - /** - * List of all the generated class file names across all apt rounds. - */ - java.util.Set aggregateGenClassFileNames = new java.util.LinkedHashSet(); - - /** - * List of all the generated file names across all apt rounds. - */ - java.util.Set aggregateGenFiles = new java.util.LinkedHashSet(); - - /** - * Set of all factories that have provided a processor on some apt round. - */ - java.util.Set > productiveFactories = - new java.util.LinkedHashSet >(); - - - - /** Print a string that explains usage. - */ - void help() { - Bark.printRawLines(out, getLocalizedString("msg.usage.header", ownName)); - for (int i=0; i < recognizedOptions.length; i++) { - recognizedOptions[i].help(); - } - Bark.printRawLines(out, getLocalizedString("msg.usage.footer")); - out.println(); - } - - /** Print a string that explains usage for X options. - */ - void xhelp() { - for (int i=0; i processArgs(String[] flags) { - int ac = 0; - while (ac < flags.length) { - String flag = flags[ac]; - ac++; - - int j; - for (j=0; j < recognizedOptions.length; j++) - if (recognizedOptions[j].matches(flag)) - break; - - if (j == recognizedOptions.length) { - error("err.invalid.flag", flag); - return null; - } - - Option option = recognizedOptions[j]; - if (option.hasArg()) { - if (ac == flags.length) { - error("err.req.arg", flag); - return null; - } - String operand = flags[ac]; - ac++; - if (option.process(flag, operand)) - return null; - } else { - if (option.process(flag)) - return null; - } - } - - String sourceString = options.get("-source"); - Source source = (sourceString != null) - ? Source.lookup(sourceString) - : Source.JDK1_5; // JDK 5 is the latest supported source version - String targetString = options.get("-target"); - Target target = (targetString != null) - ? Target.lookup(targetString) - : Target.JDK1_5; // JDK 5 is the latest supported source version - // We don't check source/target consistency for CLDC, as J2ME - // profiles are not aligned with J2SE targets; moreover, a - // single CLDC target may have many profiles. In addition, - // this is needed for the continued functioning of the JSR14 - // prototype. - if (Character.isDigit(target.name.charAt(0)) && - target.compareTo(source.requiredTarget()) < 0) { - if (targetString != null) { - if (sourceString == null) { - warning("warn.target.default.source.conflict", - targetString, - source.requiredTarget().name); - } else { - warning("warn.source.target.conflict", - sourceString, - source.requiredTarget().name); - } - return null; - } else { - options.put("-target", source.requiredTarget().name); - } - } - return sourceFileNames; - } - - /** Programmatic interface for main function. - * @param args The command line parameters. - */ - public int compile(String[] args, AnnotationProcessorFactory factory) { - int returnCode = 0; - providedFactory = factory; - - Context context = new Context(); - JavacFileManager.preRegister(context); - options = Options.instance(context); - Bark bark; - - /* - * Process the command line options to create the intial - * options data. This processing is at least partially reused - * by any recursive apt calls. - */ - - // For testing: assume all arguments in forcedOpts are - // prefixed to command line arguments. - processArgs(forcedOpts); - - /* - * A run of apt only gets passed the most recently generated - * files; the initial run of apt gets passed the files from - * the command line. - */ - - java.util.List origFilenames; - try { - // assign args the result of parse to capture results of - // '@file' expansion - origFilenames = processArgs((args=CommandLine.parse(args))); - - if (options.get("suppress-tool-api-removal-message") == null) { - Bark.printRawLines(out, getLocalizedString("misc.Deprecation")); - } - - if (origFilenames == null) { - return EXIT_CMDERR; - } else if (origFilenames.size() == 0) { - // it is allowed to compile nothing if just asking for help - if (options.get("-help") != null || - options.get("-X") != null) - return EXIT_OK; - } - } catch (java.io.FileNotFoundException e) { - Bark.printRawLines(out, ownName + ": " + - getLocalizedString("err.file.not.found", - e.getMessage())); - return EXIT_SYSERR; - } catch (IOException ex) { - ioMessage(ex); - return EXIT_SYSERR; - } catch (OutOfMemoryError ex) { - resourceMessage(ex); - return EXIT_SYSERR; - } catch (StackOverflowError ex) { - resourceMessage(ex); - return EXIT_SYSERR; - } catch (FatalError ex) { - feMessage(ex); - return EXIT_SYSERR; - } catch (sun.misc.ServiceConfigurationError sce) { - sceMessage(sce); - return EXIT_ABNORMAL; - } catch (Throwable ex) { - bugMessage(ex); - return EXIT_ABNORMAL; - } - - - boolean firstRound = true; - boolean needSourcePath = false; - boolean needClassPath = false; - boolean classesAsDecls = options.get("-XclassesAsDecls") != null; - - /* - * Create augumented classpath and sourcepath values. - * - * If any of the prior apt rounds generated any new source - * files, the n'th apt round (and any javac invocation) has the - * source destination path ("-s path") as the last element of - * the "-sourcepath" to the n'th call. - * - * If any of the prior apt rounds generated any new class files, - * the n'th apt round (and any javac invocation) has the class - * destination path ("-d path") as the last element of the - * "-classpath" to the n'th call. - */ - String augmentedSourcePath = ""; - String augmentedClassPath = ""; - String baseClassPath = ""; - - try { - /* - * Record original options for future annotation processor - * invocations. - */ - origOptions = new HashMap(options.size()); - for(String s: options.keySet()) { - String value; - if (s.equals(value = options.get(s))) - origOptions.put(s, (String)null); - else - origOptions.put(s, value); - } - origOptions = Collections.unmodifiableMap(origOptions); - - JavacFileManager fm = (JavacFileManager) context.get(JavaFileManager.class); - { - // Note: it might be necessary to check for an empty - // component ("") of the source path or class path - - String sourceDest = options.get("-s"); - if (fm.hasLocation(StandardLocation.SOURCE_PATH)) { - for(File f: fm.getLocation(StandardLocation.SOURCE_PATH)) - augmentedSourcePath += (f + File.pathSeparator); - augmentedSourcePath += (sourceDest == null)?".":sourceDest; - } else { - augmentedSourcePath = "."; - - if (sourceDest != null) - augmentedSourcePath += (File.pathSeparator + sourceDest); - } - - String classDest = options.get("-d"); - if (fm.hasLocation(StandardLocation.CLASS_PATH)) { - for(File f: fm.getLocation(StandardLocation.CLASS_PATH)) - baseClassPath += (f + File.pathSeparator); - // put baseClassPath into map to handle any - // value needed for the classloader - options.put("-classpath", baseClassPath); - - augmentedClassPath = baseClassPath + ((classDest == null)?".":classDest); - } else { - baseClassPath = "."; - if (classDest != null) - augmentedClassPath = baseClassPath + (File.pathSeparator + classDest); - } - assert options.get("-classpath") != null; - } - - /* - * Create base and augmented class loaders - */ - ClassLoader augmentedAptCL = null; - { - /* - * Use a url class loader to look for classes on the - * user-specified class path. Prepend computed bootclass - * path, which includes extdirs, to the URLClassLoader apt - * uses. - */ - String aptclasspath = ""; - String bcp = ""; - Iterable bootclasspath = fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH); - - if (bootclasspath != null) { - for(File f: bootclasspath) - bcp += (f + File.pathSeparator); - } - - // If the factory path is set, use that path - if (providedFactory == null) - aptclasspath = options.get("-factorypath"); - if (aptclasspath == null) - aptclasspath = options.get("-classpath"); - - assert aptclasspath != null; - aptclasspath = (bcp + aptclasspath); - aptCL = new URLClassLoader(pathToURLs(aptclasspath)); - - if (providedFactory == null && - options.get("-factorypath") != null) // same CL even if new class files written - augmentedAptCL = aptCL; - else { - // Create class loader in case new class files are - // written - augmentedAptCL = new URLClassLoader(pathToURLs(augmentedClassPath. - substring(baseClassPath.length())), - aptCL); - } - } - - int round = 0; // For -XPrintAptRounds - do { - round++; - - Context newContext = new Context(); - Options newOptions = Options.instance(newContext); // creates a new context - newOptions.putAll(options); - - // populate with old options... don't bother reparsing command line, etc. - - // if genSource files, must add destination to source path - if (genSourceFileNames.size() > 0 && !firstRound) { - newOptions.put("-sourcepath", augmentedSourcePath); - needSourcePath = true; - } - aggregateGenSourceFileNames.addAll(genSourceFileNames); - sourceFileNames.addAll(genSourceFileNames); - genSourceFileNames.clear(); - - // Don't really need to track this; just have to add -d - // "foo" to class path if any class files are generated - if (genClassFileNames.size() > 0) { - newOptions.put("-classpath", augmentedClassPath); - aptCL = augmentedAptCL; - needClassPath = true; - } - aggregateGenClassFileNames.addAll(genClassFileNames); - classFileNames.addAll(genClassFileNames); - genClassFileNames.clear(); - - options = newOptions; - - if (options.get("-XPrintAptRounds") != null) { - out.println("apt Round : " + round); - out.println("filenames: " + sourceFileNames); - if (classesAsDecls) - out.println("classnames: " + classFileNames); - out.println("options: " + options); - } - - returnCode = compile(args, newContext); - firstRound = false; - - // Check for reported errors before continuing - bark = Bark.instance(newContext); - } while(((genSourceFileNames.size() != 0 ) || - (classesAsDecls && genClassFileNames.size() != 0)) && - bark.nerrors == 0); - } catch (UsageMessageNeededException umne) { - help(); - return EXIT_CMDERR; // will cause usage message to be printed - } - - /* - * Do not compile if a processor has reported an error or if - * there are no source files to process. A more sophisticated - * test would also fail for syntax errors caught by javac. - */ - if (options.get("-nocompile") == null && - options.get("-print") == null && - bark.nerrors == 0 && - (origFilenames.size() > 0 || aggregateGenSourceFileNames.size() > 0 )) { - /* - * Need to create new argument string for calling javac: - * 1. apt specific arguments (e.g. -factory) must be stripped out - * 2. proper settings for sourcepath and classpath must be used - * 3. generated class names must be added - * 4. class file names as declarations must be removed - */ - - int newArgsLength = args.length + - (needSourcePath?1:0) + - (needClassPath?1:0) + - aggregateGenSourceFileNames.size(); - - // Null out apt-specific options and don't copy over into - // newArgs. This loop should be a lot faster; the options - // array should be replaced with a better data structure - // which includes a map from strings to options. - // - // If treating classes as declarations, must strip out - // class names from the javac argument list - argLoop: - for(int i = 0; i < args.length; i++) { - int matchPosition = -1; - - // "-A" by itself is recognized by apt but not javac - if (args[i] != null && args[i].equals("-A")) { - newArgsLength--; - args[i] = null; - continue argLoop; - } else { - optionLoop: - for(int j = 0; j < recognizedOptions.length; j++) { - if (args[i] != null && recognizedOptions[j].matches(args[i])) { - matchPosition = j; - break optionLoop; - } - } - - if (matchPosition != -1) { - Option op = recognizedOptions[matchPosition]; - if (op.aptOnly) { - newArgsLength--; - args[i] = null; - if (op.hasArg()) { - newArgsLength--; - args[i+1] = null; - } - } else { - if (op.hasArg()) { // skip over next string - i++; - continue argLoop; - } - - if ((options.get("-XclassesAsDecls") != null) && - (matchPosition == (recognizedOptions.length-1)) ){ - // Remove class file names from - // consideration by javac. - if (! args[i].endsWith(".java")) { - newArgsLength--; - args[i] = null; - } - } - } - } - } - } - - String newArgs[] = new String[newArgsLength]; - - int j = 0; - for(int i=0; i < args.length; i++) { - if (args[i] != null) - newArgs[j++] = args[i]; - } - - if (needClassPath) - newArgs[j++] = "-XD-classpath=" + augmentedClassPath; - - if (needSourcePath) { - newArgs[j++] = "-XD-sourcepath=" + augmentedSourcePath; - - for(String s: aggregateGenSourceFileNames) - newArgs[j++] = s; - } - - returnCode = com.sun.tools.javac.Main.compile(newArgs); - } - - return returnCode; - } - - /** Programmatic interface for main function. - * @param args The command line parameters. - */ - int compile(String[] args, Context context) { - boolean assertionsEnabled = false; - assert assertionsEnabled = true; - if (!assertionsEnabled) { - // Bark.printLines(out, "fatal error: assertions must be enabled when running javac"); - // return EXIT_ABNORMAL; - } - int exitCode = EXIT_OK; - - AptJavaCompiler comp = null; - try { - context.put(Bark.outKey, out); - - comp = AptJavaCompiler.instance(context); - if (comp == null) - return EXIT_SYSERR; - - java.util.List nameList = new java.util.LinkedList(); - nameList.addAll(sourceFileNames); - if (options.get("-XclassesAsDecls") != null) - nameList.addAll(classFileNames); - - List cs - = comp.compile(List.from(nameList.toArray(new String[0])), - origOptions, - aptCL, - providedFactory, - productiveFactories, - aggregateGenFiles); - - /* - * If there aren't new source files, we shouldn't bother - * running javac if there were errors. - * - * If there are new files, we should try running javac in - * case there were typing errors. - * - */ - - if (comp.errorCount() != 0 || - options.get("-Werror") != null && comp.warningCount() != 0) - return EXIT_ERROR; - } catch (IOException ex) { - ioMessage(ex); - return EXIT_SYSERR; - } catch (OutOfMemoryError ex) { - resourceMessage(ex); - return EXIT_SYSERR; - } catch (StackOverflowError ex) { - resourceMessage(ex); - return EXIT_SYSERR; - } catch (FatalError ex) { - feMessage(ex); - return EXIT_SYSERR; - } catch (UsageMessageNeededException umne) { - help(); - return EXIT_CMDERR; // will cause usage message to be printed - } catch (AnnotationProcessingError ex) { - apMessage(ex); - return EXIT_ABNORMAL; - } catch (sun.misc.ServiceConfigurationError sce) { - sceMessage(sce); - return EXIT_ABNORMAL; - } catch (Throwable ex) { - bugMessage(ex); - return EXIT_ABNORMAL; - } finally { - if (comp != null) { - comp.close(); - genSourceFileNames.addAll(comp.getSourceFileNames()); - genClassFileNames.addAll(comp.getClassFileNames()); - } - sourceFileNames = new java.util.LinkedList(); - classFileNames = new java.util.LinkedList(); - } - return exitCode; - } - - /** Print a message reporting an internal error. - */ - void bugMessage(Throwable ex) { - Bark.printRawLines(out, getLocalizedString("msg.bug", - AptJavaCompiler.version())); - ex.printStackTrace(out); - } - - /** Print a message reporting an fatal error. - */ - void apMessage(AnnotationProcessingError ex) { - Bark.printRawLines(out, getLocalizedString("misc.Problem")); - ex.getCause().printStackTrace(out); - } - - /** Print a message about sun.misc.Service problem. - */ - void sceMessage(sun.misc.ServiceConfigurationError ex) { - Bark.printRawLines(out, getLocalizedString("misc.SunMiscService")); - ex.printStackTrace(out); - } - - /** Print a message reporting an fatal error. - */ - void feMessage(Throwable ex) { - Bark.printRawLines(out, ex.toString()); - } - - /** Print a message reporting an input/output error. - */ - void ioMessage(Throwable ex) { - Bark.printRawLines(out, getLocalizedString("msg.io")); - ex.printStackTrace(out); - } - - /** Print a message reporting an out-of-resources error. - */ - void resourceMessage(Throwable ex) { - Bark.printRawLines(out, getLocalizedString("msg.resource")); - ex.printStackTrace(out); - } - - /* ************************************************************************ - * Internationalization - *************************************************************************/ - - /** Find a localized string in the resource bundle. - * @param key The key for the localized string. - */ - private static String getLocalizedString(String key, Object... args) { - return getText(key, args); - } - - private static final String javacRB = - "com.sun.tools.javac.resources.javac"; - - private static final String aptRB = - "com.sun.tools.apt.resources.apt"; - - private static ResourceBundle messageRBjavac; - private static ResourceBundle messageRBapt; - - /** Initialize ResourceBundle. - */ - private static void initResource() { - try { - messageRBapt = ResourceBundle.getBundle(aptRB); - messageRBjavac = ResourceBundle.getBundle(javacRB); - } catch (MissingResourceException e) { - Error x = new FatalError("Fatal Error: Resource for apt or javac is missing"); - x.initCause(e); - throw x; - } - } - - /** Get and format message string from resource. - */ - private static String getText(String key, Object... _args) { - String[] args = new String[_args.length]; - for (int i=0; i<_args.length; i++) { - args[i] = "" + _args[i]; - } - if (messageRBapt == null || messageRBjavac == null ) - initResource(); - try { - return MessageFormat.format(messageRBapt.getString("apt." + key), - (Object[]) args); - } catch (MissingResourceException e) { - try { - return MessageFormat.format(messageRBjavac.getString("javac." + key), - (Object[]) args); - } catch (MissingResourceException f) { - String msg = "apt or javac message file broken: key={0} " - + "arguments={1}, {2}"; - return MessageFormat.format(msg, (Object[]) args); - } - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/AptEnv.java 2012-01-19 16:21:22.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror; - - -import com.sun.tools.apt.mirror.declaration.DeclarationMaker; -import com.sun.tools.apt.mirror.type.TypeMaker; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.CompletionFailure; -import com.sun.tools.javac.comp.Attr; -import com.sun.tools.javac.comp.Enter; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.Names; - - -/** - * The environment for a run of apt. - */ -@SuppressWarnings("deprecation") -public class AptEnv { - - public Names names; // javac's name table - public Symtab symtab; // javac's predefined symbols - public Types jctypes; // javac's type utilities - public Enter enter; // javac's enter phase - public Attr attr; // javac's attr phase (to evaluate - // constant initializers) - public TypeMaker typeMaker; // apt's internal type utilities - public DeclarationMaker declMaker; // apt's internal declaration utilities - - - private static final Context.Key aptEnvKey = - new Context.Key(); - - public static AptEnv instance(Context context) { - AptEnv instance = context.get(aptEnvKey); - if (instance == null) { - instance = new AptEnv(context); - } - return instance; - } - - private AptEnv(Context context) { - context.put(aptEnvKey, this); - - names = Names.instance(context); - symtab = Symtab.instance(context); - jctypes = Types.instance(context); - enter = Enter.instance(context); - attr = Attr.instance(context); - typeMaker = TypeMaker.instance(context); - declMaker = DeclarationMaker.instance(context); - } - - - /** - * Does a symbol have a given flag? Forces symbol completion. - */ - public static boolean hasFlag(Symbol sym, long flag) { - return (getFlags(sym) & flag) != 0; - } - - /** - * Returns a symbol's flags. Forces completion. - */ - public static long getFlags(Symbol sym) { - complete(sym); - return sym.flags(); - } - - /** - * Completes a symbol, ignoring completion failures. - */ - private static void complete(Symbol sym) { - while (true) { - try { - sym.complete(); - return; - } catch (CompletionFailure e) { - // Should never see two in a row, but loop just to be sure. - } - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/apt/AnnotationProcessorEnvironmentImpl.java 2012-01-19 16:21:22.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,185 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.apt; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; -import com.sun.mirror.apt.*; -import com.sun.tools.apt.mirror.apt.*; -import com.sun.tools.apt.mirror.declaration.DeclarationMaker; -import com.sun.tools.apt.mirror.util.*; -import com.sun.tools.apt.util.Bark; -import com.sun.tools.javac.util.Context; - -import com.sun.tools.apt.mirror.apt.FilerImpl; -import com.sun.tools.apt.mirror.apt.MessagerImpl; -import com.sun.tools.apt.mirror.apt.RoundStateImpl; -import com.sun.tools.apt.mirror.apt.RoundCompleteEventImpl; - -import com.sun.tools.javac.util.Context; - -import java.util.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Annotation Processor Environment implementation. - */ -@SuppressWarnings("deprecation") -public class AnnotationProcessorEnvironmentImpl implements AnnotationProcessorEnvironment { - - Collection spectypedecls; - Collection typedecls; - Map origOptions; - DeclarationMaker declMaker; - Declarations declUtils; - Types typeUtils; - Messager messager; - FilerImpl filer; - Bark bark; - Set roundCompleteListeners; - - public AnnotationProcessorEnvironmentImpl(Collection spectypedecls, - Collection typedecls, - Map origOptions, - Context context) { - // Safer to copy collections before applying unmodifiable - // wrapper. - this.spectypedecls = Collections.unmodifiableCollection(spectypedecls); - this.typedecls = Collections.unmodifiableCollection(typedecls); - this.origOptions = Collections.unmodifiableMap(origOptions); - - declMaker = DeclarationMaker.instance(context); - declUtils = DeclarationsImpl.instance(context); - typeUtils = TypesImpl.instance(context); - messager = MessagerImpl.instance(context); - filer = FilerImpl.instance(context); - bark = Bark.instance(context); - roundCompleteListeners = new LinkedHashSet(); - } - - public Map getOptions() { - return origOptions; - } - - public Messager getMessager() { - return messager; - } - - public Filer getFiler() { - return filer; - } - - public Collection getSpecifiedTypeDeclarations() { - return spectypedecls; - } - - public PackageDeclaration getPackage(String name) { - return declMaker.getPackageDeclaration(name); - } - - public TypeDeclaration getTypeDeclaration(String name) { - return declMaker.getTypeDeclaration(name); - } - - public Collection getTypeDeclarations() { - return typedecls; - } - - public Collection getDeclarationsAnnotatedWith( - AnnotationTypeDeclaration a) { - /* - * create collection of Declarations annotated with a given - * annotation. - */ - - CollectingAP proc = new CollectingAP(this, a); - proc.process(); - return proc.decls; - } - - private static class CollectingAP implements AnnotationProcessor { - AnnotationProcessorEnvironment env; - Collection decls; - AnnotationTypeDeclaration atd; - CollectingAP(AnnotationProcessorEnvironment env, - AnnotationTypeDeclaration atd) { - this.env = env; - this.atd = atd; - decls = new HashSet(); - } - - private class CollectingVisitor extends SimpleDeclarationVisitor { - public void visitDeclaration(Declaration d) { - for(AnnotationMirror am: d.getAnnotationMirrors()) { - if (am.getAnnotationType().getDeclaration().equals(CollectingAP.this.atd)) - CollectingAP.this.decls.add(d); - } - } - } - - public void process() { - for(TypeDeclaration d: env.getSpecifiedTypeDeclarations()) - d.accept(getSourceOrderDeclarationScanner(new CollectingVisitor(), - NO_OP)); - } - } - - public Declarations getDeclarationUtils() { - return declUtils; - } - - public Types getTypeUtils() { - return typeUtils; - } - - public void addListener(AnnotationProcessorListener listener) { - if (listener == null) - throw new NullPointerException(); - else { - if (listener instanceof RoundCompleteListener) - roundCompleteListeners.add((RoundCompleteListener)listener); - } - } - - public void removeListener(AnnotationProcessorListener listener) { - if (listener == null) - throw new NullPointerException(); - else - roundCompleteListeners.remove(listener); - } - - public void roundComplete() { - RoundState roundState = new RoundStateImpl(bark.nerrors > 0, - filer.getSourceFileNames().size() > 0, - filer.getClassFileNames().size() > 0, - origOptions); - RoundCompleteEvent roundCompleteEvent = new RoundCompleteEventImpl(this, roundState); - - filer.roundOver(); - for(RoundCompleteListener rcl: roundCompleteListeners) - rcl.roundComplete(roundCompleteEvent); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/apt/FilerImpl.java 2012-01-19 16:21:22.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,354 +0,0 @@ -/* - * Copyright (c) 2004, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.apt; - - -import java.io.*; -import java.util.Collection; -import java.util.EnumMap; -import java.util.HashSet; -import java.util.Set; - -import com.sun.mirror.apt.Filer; -import com.sun.tools.apt.mirror.declaration.DeclarationMaker; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.Options; -import com.sun.tools.javac.util.Position; -import com.sun.tools.apt.util.Bark; - -import static com.sun.mirror.apt.Filer.Location.*; - - -/** - * Implementation of Filer. - */ -@SuppressWarnings("deprecation") -public class FilerImpl implements Filer { - /* - * The Filer class must maintain a number of constraints. First, - * multiple attempts to open the same path within the same - * invocation of apt results in an IOException being thrown. For - * example, trying to open the same source file twice: - * - * createSourceFile("foo.Bar") - * ... - * createSourceFile("foo.Bar") - * - * is disallowed as is opening a text file that happens to have - * the same name as a source file: - * - * createSourceFile("foo.Bar") - * ... - * createTextFile(SOURCE_TREE, "foo", new File("Bar"), null) - * - * Additionally, creating a source file that corresponds to an - * already created class file (or vice versa) generates at least a - * warning. This is an error if -XclassesAsDecls is being used - * since you can't create the same type twice. However, if the - * Filer is used to create a text file named *.java that happens - * to correspond to an existing class file, a warning is *not* - * generated. Similarly, a warning is not generated for a binary - * file named *.class and an existing source file. - * - * The reason for this difference is that source files and class - * files are registered with apt and can get passed on as - * declarations to the next round of processing. Files that are - * just named *.java and *.class are not processed in that manner; - * although having extra source files and class files on the - * source path and class path can alter the behavior of the tool - * and any final compile. - */ - - private enum FileKind { - SOURCE { - void register(File file, String name, FilerImpl that) throws IOException { - // Check for corresponding class file - if (that.filesCreated.contains(new File(that.locations.get(CLASS_TREE), - that.nameToPath(name, ".class")))) { - - that.bark.aptWarning("CorrespondingClassFile", name); - if (that.opts.get("-XclassesAsDecls") != null) - throw new IOException(); - } - that.sourceFileNames.add(file.getPath()); - } - }, - - CLASS { - void register(File file, String name, FilerImpl that) throws IOException { - if (that.filesCreated.contains(new File(that.locations.get(SOURCE_TREE), - that.nameToPath(name, ".java")))) { - that.bark.aptWarning("CorrespondingSourceFile", name); - if (that.opts.get("-XclassesAsDecls") != null) - throw new IOException(); - } - // Track the binary name instead of the filesystem location - that.classFileNames.add(name); - } - }, - - OTHER { - // Nothing special to do - void register(File file, String name, FilerImpl that) throws IOException {} - }; - - abstract void register(File file, String name, FilerImpl that) throws IOException; - } - - private final Options opts; - private final DeclarationMaker declMaker; - private final com.sun.tools.apt.main.AptJavaCompiler comp; - - // Platform's default encoding - private final static String DEFAULT_ENCODING = - new OutputStreamWriter(new ByteArrayOutputStream()).getEncoding(); - - private String encoding; // name of charset used for source files - - private final EnumMap locations; // where new files go - - - private static final Context.Key filerKey = - new Context.Key(); - - // Set of files opened. - private Collection wc; - - private Bark bark; - - // All created files. - private final Set filesCreated; - - // Names of newly created source files - private HashSet sourceFileNames = new HashSet(); - - // Names of newly created class files - private HashSet classFileNames = new HashSet(); - - private boolean roundOver; - - public static FilerImpl instance(Context context) { - FilerImpl instance = context.get(filerKey); - if (instance == null) { - instance = new FilerImpl(context); - } - return instance; - } - - // flush all output streams; - public void flush() { - for(Flushable opendedFile: wc) { - try { - opendedFile.flush(); - if (opendedFile instanceof FileOutputStream) { - try { - ((FileOutputStream) opendedFile).getFD().sync() ; - } catch (java.io.SyncFailedException sfe) {} - } - } catch (IOException e) { } - } - } - - private FilerImpl(Context context) { - context.put(filerKey, this); - opts = Options.instance(context); - declMaker = DeclarationMaker.instance(context); - bark = Bark.instance(context); - comp = com.sun.tools.apt.main.AptJavaCompiler.instance(context); - roundOver = false; - this.filesCreated = comp.getAggregateGenFiles(); - - // Encoding - encoding = opts.get("-encoding"); - if (encoding == null) { - encoding = DEFAULT_ENCODING; - } - - wc = new HashSet(); - - // Locations - locations = new EnumMap(Location.class); - String s = opts.get("-s"); // location for new source files - String d = opts.get("-d"); // location for new class files - locations.put(SOURCE_TREE, new File(s != null ? s : ".")); - locations.put(CLASS_TREE, new File(d != null ? d : ".")); - } - - - /** - * {@inheritDoc} - */ - public PrintWriter createSourceFile(String name) throws IOException { - String pathname = nameToPath(name, ".java"); - File file = new File(locations.get(SOURCE_TREE), - pathname); - PrintWriter pw = getPrintWriter(file, encoding, name, FileKind.SOURCE); - return pw; - } - - /** - * {@inheritDoc} - */ - public OutputStream createClassFile(String name) throws IOException { - String pathname = nameToPath(name, ".class"); - File file = new File(locations.get(CLASS_TREE), - pathname); - OutputStream os = getOutputStream(file, name, FileKind.CLASS); - return os; - } - - /** - * {@inheritDoc} - */ - public PrintWriter createTextFile(Location loc, - String pkg, - File relPath, - String charsetName) throws IOException { - File file = (pkg.length() == 0) - ? relPath - : new File(nameToPath(pkg), relPath.getPath()); - if (charsetName == null) { - charsetName = encoding; - } - return getPrintWriter(loc, file.getPath(), charsetName, null, FileKind.OTHER); - } - - /** - * {@inheritDoc} - */ - public OutputStream createBinaryFile(Location loc, - String pkg, - File relPath) throws IOException { - File file = (pkg.length() == 0) - ? relPath - : new File(nameToPath(pkg), relPath.getPath()); - return getOutputStream(loc, file.getPath(), null, FileKind.OTHER); - } - - - /** - * Converts the canonical name of a top-level type or package to a - * pathname. Suffix is ".java" or ".class" or "". - */ - private String nameToPath(String name, String suffix) throws IOException { - if (!DeclarationMaker.isJavaIdentifier(name.replace('.', '_'))) { - bark.aptWarning("IllegalFileName", name); - throw new IOException(); - } - return name.replace('.', File.separatorChar) + suffix; - } - - private String nameToPath(String name) throws IOException { - return nameToPath(name, ""); - } - - /** - * Returns a writer for a text file given its location, its - * pathname relative to that location, and its encoding. - */ - private PrintWriter getPrintWriter(Location loc, String pathname, - String encoding, String name, FileKind kind) throws IOException { - File file = new File(locations.get(loc), pathname); - return getPrintWriter(file, encoding, name, kind); - } - - /** - * Returns a writer for a text file given its encoding. - */ - private PrintWriter getPrintWriter(File file, - String encoding, String name, FileKind kind) throws IOException { - prepareFile(file, name, kind); - PrintWriter pw = - new PrintWriter( - new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(file), - encoding))); - wc.add(pw); - return pw; - } - - /** - * Returns an output stream for a binary file given its location - * and its pathname relative to that location. - */ - private OutputStream getOutputStream(Location loc, String pathname, String name, FileKind kind) - throws IOException { - File file = new File(locations.get(loc), pathname); - return getOutputStream(file, name, kind); - } - - private OutputStream getOutputStream(File file, String name, FileKind kind) throws IOException { - prepareFile(file, name, kind); - OutputStream os = new FileOutputStream(file); - wc.add(os); - return os; - - } - - public Set getSourceFileNames() { - return sourceFileNames; - } - - public Set getClassFileNames() { - return classFileNames; - } - - public void roundOver() { - roundOver = true; - } - - /** - * Checks that the file has not already been created during this - * invocation. If not, creates intermediate directories, and - * deletes the file if it already exists. - */ - private void prepareFile(File file, String name, FileKind kind) throws IOException { - if (roundOver) { - bark.aptWarning("NoNewFilesAfterRound", file.toString()); - throw new IOException(); - } - - if (filesCreated.contains(file)) { - bark.aptWarning("FileReopening", file.toString()); - throw new IOException(); - } else { - if (file.exists()) { - file.delete(); - } else { - File parent = file.getParentFile(); - if (parent != null && !parent.exists()) { - if(!parent.mkdirs()) { - bark.aptWarning("BadParentDirectory", file.toString()); - throw new IOException(); - } - } - } - - kind.register(file, name, this); - filesCreated.add(file); - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/apt/MessagerImpl.java 2012-01-19 16:21:23.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.apt; - -import javax.tools.JavaFileObject; -import com.sun.mirror.apt.Messager; -import com.sun.tools.apt.mirror.util.SourcePositionImpl; -import com.sun.mirror.util.SourcePosition; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.Name; -import com.sun.tools.javac.util.Position; -import com.sun.tools.apt.util.Bark; - - -/** - * Implementation of Messager. - */ -@SuppressWarnings("deprecation") -public class MessagerImpl implements Messager { - private final Bark bark; - - private static final Context.Key messagerKey = - new Context.Key(); - - public static MessagerImpl instance(Context context) { - MessagerImpl instance = context.get(messagerKey); - if (instance == null) { - instance = new MessagerImpl(context); - } - return instance; - } - - private MessagerImpl(Context context) { - context.put(messagerKey, this); - bark = Bark.instance(context); - } - - - /** - * {@inheritDoc} - */ - public void printError(String msg) { - bark.aptError("Messager", msg); - } - - /** - * {@inheritDoc} - */ - public void printError(SourcePosition pos, String msg) { - if (pos instanceof SourcePositionImpl) { - SourcePositionImpl posImpl = (SourcePositionImpl) pos; - JavaFileObject prev = bark.useSource(posImpl.getSource()); - bark.aptError(posImpl.getJavacPosition(), "Messager", msg); - bark.useSource(prev); - } else - printError(msg); - } - - /** - * {@inheritDoc} - */ - public void printWarning(String msg) { - bark.aptWarning("Messager", msg); - } - - /** - * {@inheritDoc} - */ - public void printWarning(SourcePosition pos, String msg) { - if (pos instanceof SourcePositionImpl) { - SourcePositionImpl posImpl = (SourcePositionImpl) pos; - JavaFileObject prev = bark.useSource(posImpl.getSource()); - bark.aptWarning(posImpl.getJavacPosition(), "Messager", msg); - bark.useSource(prev); - } else - printWarning(msg); - } - - /** - * {@inheritDoc} - */ - public void printNotice(String msg) { - bark.aptNote("Messager", msg); - } - - /** - * {@inheritDoc} - */ - public void printNotice(SourcePosition pos, String msg) { - if (pos instanceof SourcePositionImpl) { - SourcePositionImpl posImpl = (SourcePositionImpl) pos; - JavaFileObject prev = bark.useSource(posImpl.getSource()); - bark.aptNote(posImpl.getJavacPosition(), "Messager", msg); - bark.useSource(prev); - } else - printNotice(msg); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java 2012-01-19 16:21:23.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2004, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.apt; - -import com.sun.mirror.apt.AnnotationProcessorEnvironment; -import com.sun.mirror.apt.RoundCompleteEvent; -import com.sun.mirror.apt.RoundState; - -@SuppressWarnings("deprecation") -public class RoundCompleteEventImpl extends RoundCompleteEvent { - private static final long serialVersionUID = 7067621446720784300L; - - public RoundCompleteEventImpl(AnnotationProcessorEnvironment source, - RoundState rs) { - super(source, rs); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/apt/RoundStateImpl.java 2012-01-19 16:21:23.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.apt; - -import com.sun.mirror.apt.RoundState; -import java.util.Map; - -@SuppressWarnings("deprecation") -public class RoundStateImpl implements RoundState { - private final boolean finalRound; - private final boolean errorRaised; - private final boolean sourceFilesCreated; - private final boolean classFilesCreated; - - public RoundStateImpl(boolean errorRaised, - boolean sourceFilesCreated, - boolean classFilesCreated, - Map options) { - /* - * In the default mode of operation, this round is the final - * round if an error was raised OR there were no new source - * files generated. If classes are being treated as - * declarations, this is the final round if an error was - * raised OR neither new source files nor new class files were - * generated. - */ - this.finalRound = - errorRaised || - (!sourceFilesCreated && - !(classFilesCreated && options.keySet().contains("-XclassesAsDecls")) ); - this.errorRaised = errorRaised; - this.sourceFilesCreated = sourceFilesCreated; - this.classFilesCreated = classFilesCreated; - } - - public boolean finalRound() { - return finalRound; - } - - public boolean errorRaised() { - return errorRaised; - } - - public boolean sourceFilesCreated() { - return sourceFilesCreated; - } - - public boolean classFilesCreated() { - return classFilesCreated; - } - - public String toString() { - return - "[final round: " + finalRound + - ", error raised: " + errorRaised + - ", source files created: " + sourceFilesCreated + - ", class files created: " + classFilesCreated + "]"; - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationMirrorImpl.java 2012-01-19 16:21:23.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.LinkedHashMap; -import java.util.Map; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.AnnotationType; -import com.sun.mirror.util.SourcePosition; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Attribute; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.util.Name; -import com.sun.tools.javac.util.Pair; - - -/** - * Implementation of AnnotationMirror - */ -@SuppressWarnings("deprecation") -public class AnnotationMirrorImpl implements AnnotationMirror { - - protected final AptEnv env; - protected final Attribute.Compound anno; - protected final Declaration decl; - - - AnnotationMirrorImpl(AptEnv env, Attribute.Compound anno, Declaration decl) { - this.env = env; - this.anno = anno; - this.decl = decl; - } - - - /** - * Returns a string representation of this annotation. - * String is of one of the forms: - * @com.example.foo(name1=val1, name2=val2) - * @com.example.foo(val) - * @com.example.foo - * Omit parens for marker annotations, and omit "value=" when allowed. - */ - public String toString() { - StringBuilder sb = new StringBuilder("@"); - Constants.Formatter fmtr = Constants.getFormatter(sb); - - fmtr.append(anno.type.tsym); - - int len = anno.values.length(); - if (len > 0) { // omit parens for marker annotations - sb.append('('); - boolean first = true; - for (Pair val : anno.values) { - if (!first) { - sb.append(", "); - } - first = false; - - Name name = val.fst.name; - if (len > 1 || name != env.names.value) { - fmtr.append(name); - sb.append('='); - } - sb.append(new AnnotationValueImpl(env, val.snd, this)); - } - sb.append(')'); - } - return fmtr.toString(); - } - - /** - * {@inheritDoc} - */ - public AnnotationType getAnnotationType() { - return (AnnotationType) env.typeMaker.getType(anno.type); - } - - /** - * {@inheritDoc} - */ - public Map - getElementValues() { - Map res = - new LinkedHashMap(); // whew! - for (Pair val : anno.values) { - res.put(getElement(val.fst), - new AnnotationValueImpl(env, val.snd, this)); - } - return res; - } - - public SourcePosition getPosition() { - // Return position of the declaration on which this annotation - // appears. - return (decl == null) ? null : decl.getPosition(); - - } - - public Declaration getDeclaration() { - return this.decl; - } - - /** - * Returns the annotation type element for a symbol. - */ - private AnnotationTypeElementDeclaration getElement(MethodSymbol m) { - return (AnnotationTypeElementDeclaration) - env.declMaker.getExecutableDeclaration(m); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java 2012-01-19 16:21:23.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,355 +0,0 @@ -/* - * Copyright (c) 2004, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.lang.annotation.*; -import java.lang.reflect.Array; -import java.lang.reflect.Method; -import java.util.*; -import sun.reflect.annotation.*; - -import com.sun.mirror.type.TypeMirror; -import com.sun.mirror.type.MirroredTypeException; -import com.sun.mirror.type.MirroredTypesException; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.util.Name; -import com.sun.tools.javac.util.Pair; - - -/** - * A generator of dynamic proxy implementations of - * java.lang.annotation.Annotation. - * - *

The "dynamic proxy return form" of an attribute element value is - * the form used by sun.reflect.annotation.AnnotationInvocationHandler. - */ -@SuppressWarnings("deprecation") -class AnnotationProxyMaker { - - private final AptEnv env; - private final Attribute.Compound attrs; - private final Class annoType; - - - private AnnotationProxyMaker(AptEnv env, - Attribute.Compound attrs, - Class annoType) { - this.env = env; - this.attrs = attrs; - this.annoType = annoType; - } - - - /** - * Returns a dynamic proxy for an annotation mirror. - */ - public static A generateAnnotation( - AptEnv env, Attribute.Compound attrs, Class annoType) { - AnnotationProxyMaker apm = new AnnotationProxyMaker(env, attrs, annoType); - return annoType.cast(apm.generateAnnotation()); - } - - - /** - * Returns a dynamic proxy for an annotation mirror. - */ - private Annotation generateAnnotation() { - return AnnotationParser.annotationForMap(annoType, - getAllReflectedValues()); - } - - /** - * Returns a map from element names to their values in "dynamic - * proxy return form". Includes all elements, whether explicit or - * defaulted. - */ - private Map getAllReflectedValues() { - Map res = new LinkedHashMap(); - - for (Map.Entry entry : - getAllValues().entrySet()) { - MethodSymbol meth = entry.getKey(); - Object value = generateValue(meth, entry.getValue()); - if (value != null) { - res.put(meth.name.toString(), value); - } else { - // Ignore this element. May lead to - // IncompleteAnnotationException somewhere down the line. - } - } - return res; - } - - /** - * Returns a map from element symbols to their values. - * Includes all elements, whether explicit or defaulted. - */ - private Map getAllValues() { - Map res = - new LinkedHashMap(); - - // First find the default values. - ClassSymbol sym = (ClassSymbol) attrs.type.tsym; - for (Scope.Entry e = sym.members().elems; e != null; e = e.sibling) { - if (e.sym.kind == Kinds.MTH) { - MethodSymbol m = (MethodSymbol) e.sym; - Attribute def = m.defaultValue; - if (def != null) { - res.put(m, def); - } - } - } - // Next find the explicit values, possibly overriding defaults. - for (Pair p : attrs.values) { - res.put(p.fst, p.snd); - } - return res; - } - - /** - * Converts an element value to its "dynamic proxy return form". - * Returns an exception proxy on some errors, but may return null if - * a useful exception cannot or should not be generated at this point. - */ - private Object generateValue(MethodSymbol meth, Attribute attr) { - ValueVisitor vv = new ValueVisitor(meth); - return vv.getValue(attr); - } - - - private class ValueVisitor implements Attribute.Visitor { - - private MethodSymbol meth; // annotation element being visited - private Class runtimeType; // runtime type of annotation element - private Object value; // value in "dynamic proxy return form" - - ValueVisitor(MethodSymbol meth) { - this.meth = meth; - } - - Object getValue(Attribute attr) { - Method method; // runtime method of annotation element - try { - method = annoType.getMethod(meth.name.toString()); - } catch (NoSuchMethodException e) { - return null; - } - runtimeType = method.getReturnType(); - attr.accept(this); - if (!(value instanceof ExceptionProxy) && - !AnnotationType.invocationHandlerReturnType(runtimeType) - .isInstance(value)) { - typeMismatch(method, attr); - } - return value; - } - - - public void visitConstant(Attribute.Constant c) { - value = Constants.decodeConstant(c.value, c.type); - } - - public void visitClass(Attribute.Class c) { - value = new MirroredTypeExceptionProxy( - env.typeMaker.getType(c.type)); - } - - public void visitArray(Attribute.Array a) { - Type elemtype = env.jctypes.elemtype(a.type); - - if (elemtype.tsym == env.symtab.classType.tsym) { // Class[] - // Construct a proxy for a MirroredTypesException - ArrayList elems = new ArrayList(); - for (int i = 0; i < a.values.length; i++) { - Type elem = ((Attribute.Class) a.values[i]).type; - elems.add(env.typeMaker.getType(elem)); - } - value = new MirroredTypesExceptionProxy(elems); - - } else { - int len = a.values.length; - Class runtimeTypeSaved = runtimeType; - runtimeType = runtimeType.getComponentType(); - try { - Object res = Array.newInstance(runtimeType, len); - for (int i = 0; i < len; i++) { - a.values[i].accept(this); - if (value == null || value instanceof ExceptionProxy) { - return; - } - try { - Array.set(res, i, value); - } catch (IllegalArgumentException e) { - value = null; // indicates a type mismatch - return; - } - } - value = res; - } finally { - runtimeType = runtimeTypeSaved; - } - } - } - - @SuppressWarnings({"unchecked", "rawtypes"}) - public void visitEnum(Attribute.Enum e) { - if (runtimeType.isEnum()) { - String constName = e.value.toString(); - try { - value = Enum.valueOf((Class)runtimeType, constName); - } catch (IllegalArgumentException ex) { - value = new EnumConstantNotPresentExceptionProxy( - (Class>)runtimeType, constName); - } - } else { - value = null; // indicates a type mismatch - } - } - - public void visitCompound(Attribute.Compound c) { - try { - Class nested = - runtimeType.asSubclass(Annotation.class); - value = generateAnnotation(env, c, nested); - } catch (ClassCastException ex) { - value = null; // indicates a type mismatch - } - } - - public void visitError(Attribute.Error e) { - value = null; // indicates a type mismatch - } - - - /** - * Sets "value" to an ExceptionProxy indicating a type mismatch. - */ - private void typeMismatch(Method method, final Attribute attr) { - class AnnotationTypeMismatchExceptionProxy extends ExceptionProxy { - private static final long serialVersionUID = 8473323277815075163L; - transient final Method method; - AnnotationTypeMismatchExceptionProxy(Method method) { - this.method = method; - } - public String toString() { - return ""; // eg: @Anno(value=) - } - protected RuntimeException generateException() { - return new AnnotationTypeMismatchException(method, - attr.type.toString()); - } - } - value = new AnnotationTypeMismatchExceptionProxy(method); - } - } - - - /** - * ExceptionProxy for MirroredTypeException. - * The toString, hashCode, and equals methods foward to the underlying - * type. - */ - private static final class MirroredTypeExceptionProxy extends ExceptionProxy { - private static final long serialVersionUID = 6662035281599933545L; - - private MirroredTypeException ex; - - MirroredTypeExceptionProxy(TypeMirror t) { - // It would be safer if we could construct the exception in - // generateException(), but there would be no way to do - // that properly following deserialization. - ex = new MirroredTypeException(t); - } - - public String toString() { - return ex.getQualifiedName(); - } - - public int hashCode() { - TypeMirror t = ex.getTypeMirror(); - return (t != null) - ? t.hashCode() - : ex.getQualifiedName().hashCode(); - } - - public boolean equals(Object obj) { - TypeMirror t = ex.getTypeMirror(); - return t != null && - obj instanceof MirroredTypeExceptionProxy && - t.equals( - ((MirroredTypeExceptionProxy) obj).ex.getTypeMirror()); - } - - protected RuntimeException generateException() { - return (RuntimeException) ex.fillInStackTrace(); - } - } - - - /** - * ExceptionProxy for MirroredTypesException. - * The toString, hashCode, and equals methods foward to the underlying - * types. - */ - private static final class MirroredTypesExceptionProxy extends ExceptionProxy { - private static final long serialVersionUID = -6670822532616693951L; - - private MirroredTypesException ex; - - MirroredTypesExceptionProxy(Collection ts) { - // It would be safer if we could construct the exception in - // generateException(), but there would be no way to do - // that properly following deserialization. - ex = new MirroredTypesException(ts); - } - - public String toString() { - return ex.getQualifiedNames().toString(); - } - - public int hashCode() { - Collection ts = ex.getTypeMirrors(); - return (ts != null) - ? ts.hashCode() - : ex.getQualifiedNames().hashCode(); - } - - public boolean equals(Object obj) { - Collection ts = ex.getTypeMirrors(); - return ts != null && - obj instanceof MirroredTypesExceptionProxy && - ts.equals( - ((MirroredTypesExceptionProxy) obj).ex.getTypeMirrors()); - } - - protected RuntimeException generateException() { - return (RuntimeException) ex.fillInStackTrace(); - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationTypeDeclarationImpl.java 2012-01-19 16:21:24.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of AnnotationTypeDeclaration - */ -@SuppressWarnings("deprecation") -public class AnnotationTypeDeclarationImpl extends InterfaceDeclarationImpl - implements AnnotationTypeDeclaration -{ - AnnotationTypeDeclarationImpl(AptEnv env, ClassSymbol sym) { - super(env, sym); - } - - - /** - * {@inheritDoc} - */ - public Collection getMethods() { - return identityFilter.filter(super.getMethods(), - AnnotationTypeElementDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitAnnotationTypeDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationTypeElementDeclarationImpl.java 2012-01-19 16:21:24.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.MethodSymbol; - - -/** - * Implementation of AnnotationTypeElementDeclaration - */ -@SuppressWarnings("deprecation") -public class AnnotationTypeElementDeclarationImpl extends MethodDeclarationImpl - implements AnnotationTypeElementDeclaration { - - AnnotationTypeElementDeclarationImpl(AptEnv env, MethodSymbol sym) { - super(env, sym); - } - - /** - * {@inheritDoc} - */ - public AnnotationTypeDeclaration getDeclaringType() { - return (AnnotationTypeDeclaration) super.getDeclaringType(); - } - - /** - * {@inheritDoc} - */ - public AnnotationValue getDefaultValue() { - return (sym.defaultValue == null) - ? null - : new AnnotationValueImpl(env, sym.defaultValue, null); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitAnnotationTypeElementDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationValueImpl.java 2012-01-19 16:21:24.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.SourcePosition; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Attribute; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.code.TypeTags; - - -/** - * Implementation of AnnotationValue - */ -@SuppressWarnings("deprecation") -public class AnnotationValueImpl implements AnnotationValue { - - protected final AptEnv env; - protected final Attribute attr; - protected final AnnotationMirrorImpl annotation; - - AnnotationValueImpl(AptEnv env, Attribute attr, AnnotationMirrorImpl annotation) { - this.env = env; - this.attr = attr; - this.annotation = annotation; - } - - - /** - * {@inheritDoc} - */ - public String toString() { - StringBuilder sb = new StringBuilder(); - Constants.Formatter fmtr = Constants.getFormatter(sb); - - fmtr.append(getValue()); - return fmtr.toString(); - } - - /** - * {@inheritDoc} - */ - public Object getValue() { - ValueVisitor vv = new ValueVisitor(); - attr.accept(vv); - return vv.value; - } - - - public SourcePosition getPosition() { - // Imprecise implementation; just return position of enclosing - // annotation. - return (annotation == null) ? null : annotation.getPosition(); - } - - private class ValueVisitor implements Attribute.Visitor { - - public Object value; - - public void visitConstant(Attribute.Constant c) { - value = Constants.decodeConstant(c.value, c.type); - } - - public void visitClass(Attribute.Class c) { - value = env.typeMaker.getType( - env.jctypes.erasure(c.type)); - } - - public void visitEnum(Attribute.Enum e) { - value = env.declMaker.getFieldDeclaration(e.value); - } - - public void visitCompound(Attribute.Compound c) { - value = new AnnotationMirrorImpl(env, c, - (annotation == null) ? - null : - annotation.getDeclaration()); - } - - public void visitArray(Attribute.Array a) { - ArrayList vals = - new ArrayList(a.values.length); - for (Attribute elem : a.values) { - vals.add(new AnnotationValueImpl(env, elem, annotation)); - } - value = vals; - } - - public void visitError(Attribute.Error e) { - value = ""; // javac will already have logged an error msg - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/ClassDeclarationImpl.java 2012-01-19 16:21:24.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.lang.annotation.Annotation; -import java.lang.annotation.Inherited; -import java.util.ArrayList; -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.ClassType; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of ClassDeclaration - */ -@SuppressWarnings("deprecation") -public class ClassDeclarationImpl extends TypeDeclarationImpl - implements ClassDeclaration { - - ClassDeclarationImpl(AptEnv env, ClassSymbol sym) { - super(env, sym); - } - - - /** - * {@inheritDoc} - * Overridden here to handle @Inherited. - */ - public A getAnnotation(Class annoType) { - - boolean inherited = annoType.isAnnotationPresent(Inherited.class); - for (Type t = sym.type; - t.tsym != env.symtab.objectType.tsym && !t.isErroneous(); - t = env.jctypes.supertype(t)) { - - A result = getAnnotation(annoType, t.tsym); - if (result != null || !inherited) { - return result; - } - } - return null; - } - - /** - * {@inheritDoc} - */ - public ClassType getSuperclass() { - // java.lang.Object has no superclass - if (sym == env.symtab.objectType.tsym) { - return null; - } - Type t = env.jctypes.supertype(sym.type); - return (ClassType) env.typeMaker.getType(t); - } - - /** - * {@inheritDoc} - */ - public Collection getConstructors() { - ArrayList res = - new ArrayList(); - for (Symbol s : getMembers(true)) { - if (s.isConstructor()) { - MethodSymbol m = (MethodSymbol) s; - res.add((ConstructorDeclaration) - env.declMaker.getExecutableDeclaration(m)); - } - } - return res; - } - - /** - * {@inheritDoc} - */ - public Collection getMethods() { - return identityFilter.filter(super.getMethods(), - MethodDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitClassDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/Constants.java 2012-01-19 16:21:24.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,294 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.TypeMirror; -import com.sun.tools.apt.mirror.type.TypeMirrorImpl; -import com.sun.tools.javac.code.Type; - -import static com.sun.tools.javac.code.TypeTags.*; - - -/** - * Utility class for operating on constant expressions. - */ -@SuppressWarnings("deprecation") -class Constants { - - /** - * Converts a constant in javac's internal representation (in which - * boolean, char, byte, short, and int are each represented by an Integer) - * into standard representation. Other values (including null) are - * returned unchanged. - */ - static Object decodeConstant(Object value, Type type) { - if (value instanceof Integer) { - int i = ((Integer) value).intValue(); - switch (type.tag) { - case BOOLEAN: return Boolean.valueOf(i != 0); - case CHAR: return Character.valueOf((char) i); - case BYTE: return Byte.valueOf((byte) i); - case SHORT: return Short.valueOf((short) i); - } - } - return value; - } - - /** - * Returns a formatter for generating the text of constant - * expressions. Equivalent to - * getFormatter(new StringBuilder()). - */ - static Formatter getFormatter() { - return new Formatter(new StringBuilder()); - } - - /** - * Returns a formatter for generating the text of constant - * expressions. Also generates the text of constant - * "pseudo-expressions" for annotations and array-valued - * annotation elements. - * - * @param buf where the expression is written - */ - static Formatter getFormatter(StringBuilder buf) { - return new Formatter(buf); - } - - - /** - * Utility class used to generate the text of constant - * expressions. Also generates the text of constant - * "pseudo-expressions" for annotations and array-valued - * annotation elements. - */ - static class Formatter { - - private StringBuilder buf; // where the output goes - - private Formatter(StringBuilder buf) { - this.buf = buf; - } - - - public String toString() { - return buf.toString(); - } - - /** - * Appends a constant whose type is not statically known - * by dispatching to the appropriate overloaded append method. - */ - void append(Object val) { - if (val instanceof String) { - append((String) val); - } else if (val instanceof Character) { - append((Character) val); - } else if (val instanceof Boolean) { - append((Boolean) val); - } else if (val instanceof Byte) { - append((Byte) val); - } else if (val instanceof Short) { - append((Short) val); - } else if (val instanceof Integer) { - append((Integer) val); - } else if (val instanceof Long) { - append((Long) val); - } else if (val instanceof Float) { - append((Float) val); - } else if (val instanceof Double) { - append((Double) val); - } else if (val instanceof TypeMirror) { - append((TypeMirrorImpl) val); - } else if (val instanceof EnumConstantDeclaration) { - append((EnumConstantDeclarationImpl) val); - } else if (val instanceof AnnotationMirror) { - append((AnnotationMirrorImpl) val); - } else if (val instanceof Collection) { - append((Collection) val); - } else { - appendUnquoted(val.toString()); - } - } - - /** - * Appends a string, escaped (as needed) and quoted. - */ - void append(String val) { - buf.append('"'); - appendUnquoted(val); - buf.append('"'); - } - - /** - * Appends a Character, escaped (as needed) and quoted. - */ - void append(Character val) { - buf.append('\''); - appendUnquoted(val.charValue()); - buf.append('\''); - } - - void append(Boolean val) { - buf.append(val); - } - - void append(Byte val) { - buf.append(String.format("0x%02x", val)); - } - - void append(Short val) { - buf.append(val); - } - - void append(Integer val) { - buf.append(val); - } - - void append(Long val) { - buf.append(val).append('L'); - } - - void append(Float val) { - if (val.isNaN()) { - buf.append("0.0f/0.0f"); - } else if (val.isInfinite()) { - if (val.floatValue() < 0) { - buf.append('-'); - } - buf.append("1.0f/0.0f"); - } else { - buf.append(val).append('f'); - } - } - - void append(Double val) { - if (val.isNaN()) { - buf.append("0.0/0.0"); - } else if (val.isInfinite()) { - if (val.doubleValue() < 0) { - buf.append('-'); - } - buf.append("1.0/0.0"); - } else { - buf.append(val); - } - } - - /** - * Appends the class literal corresponding to a type. Should - * only be invoked for types that have an associated literal. - * e.g: "java.lang.String.class" - * "boolean.class" - * "int[].class" - */ - void append(TypeMirrorImpl t) { - appendUnquoted(t.type.toString()); - buf.append(".class"); - } - - /** - * Appends the fully qualified name of an enum constant. - * e.g: "java.math.RoundingMode.UP" - */ - void append(EnumConstantDeclarationImpl e) { - appendUnquoted(e.sym.enclClass() + "." + e); - } - - /** - * Appends the text of an annotation pseudo-expression. - * e.g: "@pkg.Format(linesep='\n')" - */ - void append(AnnotationMirrorImpl anno) { - appendUnquoted(anno.toString()); - } - - /** - * Appends the elements of a collection, enclosed within braces - * and separated by ", ". Useful for array-valued annotation - * elements. - */ - void append(Collection vals) { - buf.append('{'); - boolean first = true; - for (Object val : vals) { - if (first) { - first = false; - } else { - buf.append(", "); - } - append(((AnnotationValue) val).getValue()); - } - buf.append('}'); - } - - - /** - * For each char of a string, append using appendUnquoted(char). - */ - private void appendUnquoted(String s) { - for (char c : s.toCharArray()) { - appendUnquoted(c); - } - } - - /** - * Appends a char (unquoted), using escapes for those that are not - * printable ASCII. We don't know what is actually printable in - * the locale in which this result will be used, so ASCII is our - * best guess as to the least common denominator. - */ - private void appendUnquoted(char c) { - switch (c) { - case '\b': buf.append("\\b"); break; - case '\t': buf.append("\\t"); break; - case '\n': buf.append("\\n"); break; - case '\f': buf.append("\\f"); break; - case '\r': buf.append("\\r"); break; - case '\"': buf.append("\\\""); break; - case '\'': buf.append("\\\'"); break; - case '\\': buf.append("\\\\"); break; - default: - if (isPrintableAscii(c)) { - buf.append(c); - } else { - buf.append(String.format("\\u%04x", (int) c)); - } - } - } - - /** - * Is c a printable ASCII character? - */ - private static boolean isPrintableAscii(char c) { - return c >= ' ' && c <= '~'; - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/ConstructorDeclarationImpl.java 2012-01-19 16:21:25.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.ArrayList; -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Flags; -import com.sun.tools.javac.code.Symbol.MethodSymbol; - - -/** - * Implementation of ConstructorDeclaration - */ -@SuppressWarnings("deprecation") -public class ConstructorDeclarationImpl extends ExecutableDeclarationImpl - implements ConstructorDeclaration { - - ConstructorDeclarationImpl(AptEnv env, MethodSymbol sym) { - super(env, sym); - } - - - /** - * {@inheritDoc} - * Returns the simple name of the declaring class. - */ - public String getSimpleName() { - return sym.enclClass().name.toString(); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitConstructorDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/DeclarationImpl.java 2012-01-19 16:21:25.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,254 +0,0 @@ -/* - * Copyright (c) 2004, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.lang.annotation.Annotation; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.Collection; -import java.util.EnumSet; -import javax.tools.JavaFileObject; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.apt.mirror.util.SourcePositionImpl; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.comp.AttrContext; -import com.sun.tools.javac.comp.Env; -import com.sun.tools.javac.tree.*; -import com.sun.tools.javac.util.Name; -import com.sun.tools.javac.util.Position; - -import static com.sun.mirror.declaration.Modifier.*; -import static com.sun.tools.javac.code.Kinds.*; - - -/** - * Implementation of Declaration - */ -@SuppressWarnings("deprecation") -public abstract class DeclarationImpl implements Declaration { - - protected final AptEnv env; - public final Symbol sym; - - protected static final DeclarationFilter identityFilter = - new DeclarationFilter(); - - - /** - * "sym" should be completed before this constructor is called. - */ - protected DeclarationImpl(AptEnv env, Symbol sym) { - this.env = env; - this.sym = sym; - } - - - /** - * {@inheritDoc} - *

ParameterDeclarationImpl overrides this implementation. - */ - public boolean equals(Object obj) { - if (obj instanceof DeclarationImpl) { - DeclarationImpl that = (DeclarationImpl) obj; - return sym == that.sym && env == that.env; - } else { - return false; - } - } - - /** - * {@inheritDoc} - *

ParameterDeclarationImpl overrides this implementation. - */ - public int hashCode() { - return sym.hashCode() + env.hashCode(); - } - - /** - * {@inheritDoc} - */ - public String getDocComment() { - // Our doc comment is contained in a map in our toplevel, - // indexed by our tree. Find our enter environment, which gives - // us our toplevel. It also gives us a tree that contains our - // tree: walk it to find our tree. This is painful. - Env enterEnv = getEnterEnv(); - if (enterEnv == null) - return null; - JCTree tree = TreeInfo.declarationFor(sym, enterEnv.tree); - return enterEnv.toplevel.docComments.get(tree); - } - - /** - * {@inheritDoc} - */ - public Collection getAnnotationMirrors() { - Collection res = - new ArrayList(); - for (Attribute.Compound a : sym.getAnnotationMirrors()) { - res.add(env.declMaker.getAnnotationMirror(a, this)); - } - return res; - } - - /** - * {@inheritDoc} - * Overridden by ClassDeclarationImpl to handle @Inherited. - */ - public A getAnnotation(Class annoType) { - return getAnnotation(annoType, sym); - } - - protected A getAnnotation(Class annoType, - Symbol annotated) { - if (!annoType.isAnnotation()) { - throw new IllegalArgumentException( - "Not an annotation type: " + annoType); - } - String name = annoType.getName(); - for (Attribute.Compound attr : annotated.getAnnotationMirrors()) { - if (name.equals(attr.type.tsym.flatName().toString())) { - return AnnotationProxyMaker.generateAnnotation(env, attr, - annoType); - } - } - return null; - } - - // Cache for modifiers. - private EnumSet modifiers = null; - - /** - * {@inheritDoc} - */ - public Collection getModifiers() { - if (modifiers == null) { - modifiers = EnumSet.noneOf(Modifier.class); - long flags = AptEnv.getFlags(sym); - - if (0 != (flags & Flags.PUBLIC)) modifiers.add(PUBLIC); - if (0 != (flags & Flags.PROTECTED)) modifiers.add(PROTECTED); - if (0 != (flags & Flags.PRIVATE)) modifiers.add(PRIVATE); - if (0 != (flags & Flags.ABSTRACT)) modifiers.add(ABSTRACT); - if (0 != (flags & Flags.STATIC)) modifiers.add(STATIC); - if (0 != (flags & Flags.FINAL)) modifiers.add(FINAL); - if (0 != (flags & Flags.TRANSIENT)) modifiers.add(TRANSIENT); - if (0 != (flags & Flags.VOLATILE)) modifiers.add(VOLATILE); - if (0 != (flags & Flags.SYNCHRONIZED)) modifiers.add(SYNCHRONIZED); - if (0 != (flags & Flags.NATIVE)) modifiers.add(NATIVE); - if (0 != (flags & Flags.STRICTFP)) modifiers.add(STRICTFP); - } - return modifiers; - } - - /** - * {@inheritDoc} - * Overridden in some subclasses. - */ - public String getSimpleName() { - return sym.name.toString(); - } - - /** - * {@inheritDoc} - */ - public SourcePosition getPosition() { - // Find the toplevel. From there use a tree-walking utility - // that finds the tree for our symbol, and with it the position. - Env enterEnv = getEnterEnv(); - if (enterEnv == null) - return null; - JCTree.JCCompilationUnit toplevel = enterEnv.toplevel; - JavaFileObject sourcefile = toplevel.sourcefile; - if (sourcefile == null) - return null; - int pos = TreeInfo.positionFor(sym, toplevel); - - return new SourcePositionImpl(sourcefile, pos, toplevel.lineMap); - } - - /** - * Applies a visitor to this declaration. - * - * @param v the visitor operating on this declaration - */ - public void accept(DeclarationVisitor v) { - v.visitDeclaration(this); - } - - - private Collection members = null; // cache for getMembers() - - /** - * Returns the symbols of type or package members (and constructors) - * that are not synthetic or otherwise unwanted. - * Caches the result if "cache" is true. - */ - protected Collection getMembers(boolean cache) { - if (members != null) { - return members; - } - LinkedList res = new LinkedList(); - for (Scope.Entry e = sym.members().elems; e != null; e = e.sibling) { - if (e.sym != null && !unwanted(e.sym)) { - res.addFirst(e.sym); - } - } - return cache ? (members = res) : res; - } - - /** - * Tests whether this is a symbol that should never be seen by clients, - * such as a synthetic class. - * Note that a class synthesized by the compiler may not be flagged as - * synthetic: see bugid 4959932. - */ - private static boolean unwanted(Symbol s) { - return AptEnv.hasFlag(s, Flags.SYNTHETIC) || - (s.kind == TYP && - !DeclarationMaker.isJavaIdentifier(s.name.toString())); - } - - /** - * Returns this declaration's enter environment, or null if it - * has none. - */ - private Env getEnterEnv() { - // Get enclosing class of sym, or sym itself if it is a class - // or package. - TypeSymbol ts = (sym.kind != PCK) - ? sym.enclClass() - : (PackageSymbol) sym; - return (ts != null) - ? env.enter.getEnv(ts) - : null; - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/DeclarationMaker.java 2012-01-19 16:21:25.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,270 +0,0 @@ -/* - * Copyright (c) 2004, 2006, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.HashMap; -import java.util.Map; - -import com.sun.mirror.declaration.*; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.Name; -import com.sun.tools.javac.main.JavaCompiler; - -/** - * Utilities for constructing and caching declarations. - */ -@SuppressWarnings("deprecation") -public class DeclarationMaker { - - private AptEnv env; - private Context context; - private JavaCompiler javacompiler; - private static final Context.Key declarationMakerKey = - new Context.Key(); - - public static DeclarationMaker instance(Context context) { - DeclarationMaker instance = context.get(declarationMakerKey); - if (instance == null) { - instance = new DeclarationMaker(context); - } - return instance; - } - - private DeclarationMaker(Context context) { - context.put(declarationMakerKey, this); - env = AptEnv.instance(context); - this.context = context; - this.javacompiler = JavaCompiler.instance(context); - } - - - - // Cache of package declarations - private Map packageDecls = - new HashMap(); - - /** - * Returns the package declaration for a package symbol. - */ - public PackageDeclaration getPackageDeclaration(PackageSymbol p) { - PackageDeclaration res = packageDecls.get(p); - if (res == null) { - res = new PackageDeclarationImpl(env, p); - packageDecls.put(p, res); - } - return res; - } - - /** - * Returns the package declaration for the package with the given name. - * Name is fully-qualified, or "" for the unnamed package. - * Returns null if package declaration not found. - */ - public PackageDeclaration getPackageDeclaration(String name) { - PackageSymbol p = null; - if (name.equals("") ) - p = env.symtab.unnamedPackage; - else { - if (!isJavaName(name)) - return null; - Symbol s = nameToSymbol(name, false); - if (s instanceof PackageSymbol) { - p = (PackageSymbol) s; - if (!p.exists()) - return null; - } else - return null; - } - return getPackageDeclaration(p); - } - - // Cache of type declarations - private Map typeDecls = - new HashMap(); - - /** - * Returns the type declaration for a class symbol. - * Forces completion, and returns null on error. - */ - public TypeDeclaration getTypeDeclaration(ClassSymbol c) { - long flags = AptEnv.getFlags(c); // forces symbol completion - if (c.kind == Kinds.ERR) { - return null; - } - TypeDeclaration res = typeDecls.get(c); - if (res == null) { - if ((flags & Flags.ANNOTATION) != 0) { - res = new AnnotationTypeDeclarationImpl(env, c); - } else if ((flags & Flags.INTERFACE) != 0) { - res = new InterfaceDeclarationImpl(env, c); - } else if ((flags & Flags.ENUM) != 0) { - res = new EnumDeclarationImpl(env, c); - } else { - res = new ClassDeclarationImpl(env, c); - } - typeDecls.put(c, res); - } - return res; - } - - /** - * Returns the type declaration for the type with the given canonical name. - * Returns null if type declaration not found. - */ - public TypeDeclaration getTypeDeclaration(String name) { - if (!isJavaName(name)) - return null; - Symbol s = nameToSymbol(name, true); - if (s instanceof ClassSymbol) { - ClassSymbol c = (ClassSymbol) s; - return getTypeDeclaration(c); - } else - return null; - } - - /** - * Returns a symbol given the type's or packages's canonical name, - * or null if the name isn't found. - */ - private Symbol nameToSymbol(String name, boolean classCache) { - Symbol s = null; - Name nameName = env.names.fromString(name); - if (classCache) - s = env.symtab.classes.get(nameName); - else - s = env.symtab.packages.get(nameName); - - if (s != null && s.exists()) - return s; - - s = javacompiler.resolveIdent(name); - if (s.kind == Kinds.ERR ) - return null; - - if (s.kind == Kinds.PCK) - s.complete(); - - return s; - } - - // Cache of method and constructor declarations - private Map executableDecls = - new HashMap(); - - /** - * Returns the method or constructor declaration for a method symbol. - */ - ExecutableDeclaration getExecutableDeclaration(MethodSymbol m) { - ExecutableDeclaration res = executableDecls.get(m); - if (res == null) { - if (m.isConstructor()) { - res = new ConstructorDeclarationImpl(env, m); - } else if (isAnnotationTypeElement(m)) { - res = new AnnotationTypeElementDeclarationImpl(env, m); - } else { - res = new MethodDeclarationImpl(env, m); - } - executableDecls.put(m, res); - } - return res; - } - - // Cache of field declarations - private Map fieldDecls = - new HashMap(); - - /** - * Returns the field declaration for a var symbol. - */ - FieldDeclaration getFieldDeclaration(VarSymbol v) { - FieldDeclaration res = fieldDecls.get(v); - if (res == null) { - if (hasFlag(v, Flags.ENUM)) { - res = new EnumConstantDeclarationImpl(env, v); - } else { - res = new FieldDeclarationImpl(env, v); - } - fieldDecls.put(v, res); - } - return res; - } - - /** - * Returns a parameter declaration. - */ - ParameterDeclaration getParameterDeclaration(VarSymbol v) { - return new ParameterDeclarationImpl(env, v); - } - - /** - * Returns a type parameter declaration. - */ - public TypeParameterDeclaration getTypeParameterDeclaration(TypeSymbol t) { - return new TypeParameterDeclarationImpl(env, t); - } - - /** - * Returns an annotation. - */ - AnnotationMirror getAnnotationMirror(Attribute.Compound a, Declaration decl) { - return new AnnotationMirrorImpl(env, a, decl); - } - - - /** - * Is a string a valid Java identifier? - */ - public static boolean isJavaIdentifier(String id) { - return javax.lang.model.SourceVersion.isIdentifier(id); - } - - public static boolean isJavaName(String name) { - for(String id: name.split("\\.")) { - if (! isJavaIdentifier(id)) - return false; - } - return true; - } - - /** - * Is a method an annotation type element? - * It is if it's declared in an annotation type. - */ - private static boolean isAnnotationTypeElement(MethodSymbol m) { - return hasFlag(m.enclClass(), Flags.ANNOTATION); - } - - /** - * Does a symbol have a given flag? - */ - private static boolean hasFlag(Symbol s, long flag) { - return AptEnv.hasFlag(s, flag); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/EnumConstantDeclarationImpl.java 2012-01-19 16:21:25.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.VarSymbol; - - -/** - * Implementation of EnumConstantDeclaration - */ -@SuppressWarnings("deprecation") -public class EnumConstantDeclarationImpl extends FieldDeclarationImpl - implements EnumConstantDeclaration { - - EnumConstantDeclarationImpl(AptEnv env, VarSymbol sym) { - super(env, sym); - } - - /** - * {@inheritDoc} - */ - public EnumDeclaration getDeclaringType() { - return (EnumDeclaration) super.getDeclaringType(); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitEnumConstantDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/EnumDeclarationImpl.java 2012-01-19 16:21:25.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of EnumDeclaration - */ -@SuppressWarnings("deprecation") -public class EnumDeclarationImpl extends ClassDeclarationImpl - implements EnumDeclaration { - - EnumDeclarationImpl(AptEnv env, ClassSymbol sym) { - super(env, sym); - } - - - /** - * {@inheritDoc} - */ - public Collection getEnumConstants() { - return identityFilter.filter(getFields(), - EnumConstantDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitEnumDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/ExecutableDeclarationImpl.java 2012-01-19 16:21:26.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.ReferenceType; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of ExecutableDeclaration - */ -@SuppressWarnings("deprecation") -public abstract class ExecutableDeclarationImpl extends MemberDeclarationImpl - implements ExecutableDeclaration { - public MethodSymbol sym; - - protected ExecutableDeclarationImpl(AptEnv env, MethodSymbol sym) { - super(env, sym); - this.sym = sym; - } - - - /** - * Returns type parameters (if any), method name, and signature - * (value parameter types). - */ - public String toString() { - return sym.toString(); - } - - /** - * {@inheritDoc} - */ - public boolean isVarArgs() { - return AptEnv.hasFlag(sym, Flags.VARARGS); - } - - /** - * {@inheritDoc} - */ - public Collection getParameters() { - Collection res = - new ArrayList(); - for (VarSymbol param : sym.params()) - res.add(env.declMaker.getParameterDeclaration(param)); - return res; - } - - /** - * {@inheritDoc} - */ - public Collection getThrownTypes() { - ArrayList res = new ArrayList(); - for (Type t : sym.type.getThrownTypes()) { - res.add((ReferenceType) env.typeMaker.getType(t)); - } - return res; - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/FieldDeclarationImpl.java 2012-01-19 16:21:26.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.TypeMirror; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.code.TypeTags; - - -/** - * Implementation of FieldDeclaration - */ -@SuppressWarnings("deprecation") -class FieldDeclarationImpl extends MemberDeclarationImpl - implements FieldDeclaration { - - protected VarSymbol sym; - - FieldDeclarationImpl(AptEnv env, VarSymbol sym) { - super(env, sym); - this.sym = sym; - } - - - /** - * Returns the field's name. - */ - public String toString() { - return getSimpleName(); - } - - /** - * {@inheritDoc} - */ - public TypeMirror getType() { - return env.typeMaker.getType(sym.type); - } - - /** - * {@inheritDoc} - */ - public Object getConstantValue() { - Object val = sym.getConstValue(); - // val may be null, indicating that this is not a constant. - - return Constants.decodeConstant(val, sym.type); - } - - /** - * {@inheritDoc} - */ - public String getConstantExpression() { - Object val = getConstantValue(); - if (val == null) { - return null; - } - Constants.Formatter fmtr = Constants.getFormatter(); - fmtr.append(val); - return fmtr.toString(); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitFieldDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/InterfaceDeclarationImpl.java 2012-01-19 16:21:26.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of InterfaceDeclaration - */ -@SuppressWarnings("deprecation") -public class InterfaceDeclarationImpl extends TypeDeclarationImpl - implements InterfaceDeclaration { - - InterfaceDeclarationImpl(AptEnv env, ClassSymbol sym) { - super(env, sym); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitInterfaceDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/MemberDeclarationImpl.java 2012-01-19 16:21:26.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol; -import com.sun.tools.javac.code.Symbol.ClassSymbol; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of MemberDeclaration - */ -@SuppressWarnings("deprecation") -public abstract class MemberDeclarationImpl extends DeclarationImpl - implements MemberDeclaration { - - protected MemberDeclarationImpl(AptEnv env, Symbol sym) { - super(env, sym); - } - - - /** - * {@inheritDoc} - */ - public TypeDeclaration getDeclaringType() { - ClassSymbol c = getDeclaringClassSymbol(); - return (c == null) - ? null - : env.declMaker.getTypeDeclaration(c); - } - - /** - * {@inheritDoc} - * For methods, constructors, and types. - */ - public Collection getFormalTypeParameters() { - ArrayList res = - new ArrayList(); - for (Type t : sym.type.getTypeArguments()) { - res.add(env.declMaker.getTypeParameterDeclaration(t.tsym)); - } - return res; - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitMemberDeclaration(this); - } - - - /** - * Returns the ClassSymbol of the declaring type, - * or null if this is a top-level type. - */ - private ClassSymbol getDeclaringClassSymbol() { - return sym.owner.enclClass(); - } - - /** - * Returns the formal type parameters of a type, member or constructor - * as an angle-bracketed string. Each parameter consists of the simple - * type variable name and any bounds (with no implicit "extends Object" - * clause added). Type names are qualified. - * Returns "" if there are no type parameters. - */ - protected static String typeParamsToString(AptEnv env, Symbol sym) { - if (sym.type.getTypeArguments().isEmpty()) { - return ""; - } - StringBuilder s = new StringBuilder(); - for (Type t : sym.type.getTypeArguments()) { - Type.TypeVar tv = (Type.TypeVar) t; - s.append(s.length() == 0 ? "<" : ", ") - .append(TypeParameterDeclarationImpl.toString(env, tv)); - } - s.append(">"); - return s.toString(); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/MethodDeclarationImpl.java 2012-01-19 16:21:26.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.mirror.type.TypeMirror; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.MethodSymbol; - - -/** - * Implementation of MethodDeclaration - */ -@SuppressWarnings("deprecation") -public class MethodDeclarationImpl extends ExecutableDeclarationImpl - implements MethodDeclaration { - - MethodDeclarationImpl(AptEnv env, MethodSymbol sym) { - super(env, sym); - } - - - /** - * {@inheritDoc} - */ - public TypeMirror getReturnType() { - return env.typeMaker.getType(sym.type.getReturnType()); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitMethodDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/PackageDeclarationImpl.java 2012-01-19 16:21:27.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2004, 2006, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.ArrayList; -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of PackageDeclaration. - */ -@SuppressWarnings("deprecation") -public class PackageDeclarationImpl extends DeclarationImpl - implements PackageDeclaration { - - private PackageSymbol sym; - - - public PackageDeclarationImpl(AptEnv env, PackageSymbol sym) { - super(env, sym); - this.sym = sym; - } - - - /** - * Returns the qualified name. - */ - public String toString() { - return getQualifiedName(); - } - - /** - * {@inheritDoc} - */ - public String getQualifiedName() { - return sym.getQualifiedName().toString(); - } - - /** - * {@inheritDoc} - */ - public Collection getClasses() { - return identityFilter.filter(getAllTypes(), - ClassDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public Collection getEnums() { - return identityFilter.filter(getAllTypes(), - EnumDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public Collection getInterfaces() { - return identityFilter.filter(getAllTypes(), - InterfaceDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public Collection getAnnotationTypes() { - return identityFilter.filter(getAllTypes(), - AnnotationTypeDeclaration.class); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitPackageDeclaration(this); - } - - - // Cache of all top-level type declarations in this package. - private Collection allTypes = null; - - /** - * Caches and returns all top-level type declarations in this package. - * Omits synthetic types. - */ - private Collection getAllTypes() { - if (allTypes != null) { - return allTypes; - } - allTypes = new ArrayList(); - for (Symbol s : getMembers(false)) { - allTypes.add(env.declMaker.getTypeDeclaration((ClassSymbol) s)); - } - return allTypes; - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/ParameterDeclarationImpl.java 2012-01-19 16:21:27.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.TypeMirror; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.VarSymbol; - - -/** - * Implementation of ParameterDeclaration - */ -@SuppressWarnings("deprecation") -public class ParameterDeclarationImpl extends DeclarationImpl - implements ParameterDeclaration -{ - protected VarSymbol sym; - - - ParameterDeclarationImpl(AptEnv env, VarSymbol sym) { - super(env, sym); - this.sym = sym; - } - - - /** - * Returns the simple name of the parameter. - */ - public String toString() { - return getType() + " " + sym.name; - } - - /** - * {@inheritDoc} - */ - public boolean equals(Object obj) { - // Neither ParameterDeclarationImpl objects nor their symbols - // are cached by the current implementation, so check symbol - // owners and names. - - if (obj instanceof ParameterDeclarationImpl) { - ParameterDeclarationImpl that = (ParameterDeclarationImpl) obj; - return sym.owner == that.sym.owner && - sym.name == that.sym.name && - env == that.env; - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - public int hashCode() { - return sym.owner.hashCode() + sym.name.hashCode() + env.hashCode(); - } - - /** - * {@inheritDoc} - */ - public TypeMirror getType() { - return env.typeMaker.getType(sym.type); - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitParameterDeclaration(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/TypeDeclarationImpl.java 2012-01-19 16:21:27.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.util.Name; - -/** - * Implementation of TypeDeclaration - */ -@SuppressWarnings("deprecation") -public class TypeDeclarationImpl extends MemberDeclarationImpl - implements TypeDeclaration { - - public ClassSymbol sym; - - - /** - * "sym" should be completed before this constructor is called. - */ - protected TypeDeclarationImpl(AptEnv env, ClassSymbol sym) { - super(env, sym); - this.sym = sym; - } - - - /** - * Returns the type's name, with any type parameters (including those - * of outer classes). Type names are qualified. - */ - public String toString() { - return toString(env, sym); - } - - /** - * {@inheritDoc} - */ - public PackageDeclaration getPackage() { - return env.declMaker.getPackageDeclaration(sym.packge()); - } - - /** - * {@inheritDoc} - */ - public String getQualifiedName() { - return sym.toString(); - } - - /** - * {@inheritDoc} - */ - public Collection getSuperinterfaces() { - return env.typeMaker.getTypes(env.jctypes.interfaces(sym.type), - InterfaceType.class); - } - - /** - * {@inheritDoc} - */ - public Collection getFields() { - ArrayList res = new ArrayList(); - for (Symbol s : getMembers(true)) { - if (s.kind == Kinds.VAR) { - res.add(env.declMaker.getFieldDeclaration((VarSymbol) s)); - } - } - return res; - } - - /** - * {@inheritDoc} - */ - public Collection getMethods() { - ArrayList res = new ArrayList(); - for (Symbol s : getMembers(true)) { - if (s.kind == Kinds.MTH && !s.isConstructor() && - !env.names.clinit.equals(s.name) ) { // screen out static initializers - MethodSymbol m = (MethodSymbol) s; - res.add((MethodDeclaration) - env.declMaker.getExecutableDeclaration(m)); - } - } - return res; - } - - /** - * {@inheritDoc} - */ - public Collection getNestedTypes() { - ArrayList res = new ArrayList(); - for (Symbol s : getMembers(true)) { - if (s.kind == Kinds.TYP) { - res.add(env.declMaker.getTypeDeclaration((ClassSymbol) s)); - } - } - return res; - } - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitTypeDeclaration(this); - } - - - /** - * Returns a type's name, with any type parameters (including those - * of outer classes). Type names are qualified. - */ - static String toString(AptEnv env, ClassSymbol c) { - StringBuilder sb = new StringBuilder(); - if (c.isInner()) { - // c is an inner class, so include type params of outer. - ClassSymbol enclosing = c.owner.enclClass(); - sb.append(toString(env, enclosing)) - .append('.') - .append(c.name); - } else { - sb.append(c); - } - sb.append(typeParamsToString(env, c)); - return sb.toString(); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/declaration/TypeParameterDeclarationImpl.java 2012-01-19 16:21:27.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.declaration; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.ReferenceType; -import com.sun.mirror.util.DeclarationVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of TypeParameterDeclaration - */ -@SuppressWarnings("deprecation") -public class TypeParameterDeclarationImpl extends DeclarationImpl - implements TypeParameterDeclaration -{ - protected TypeSymbol sym; - - - TypeParameterDeclarationImpl(AptEnv env, TypeSymbol sym) { - super(env, sym); - this.sym = sym; - } - - - /** - * Returns the type parameter's name along with any "extends" clause. - * Class names are qualified. No implicit "extends Object" is added. - */ - public String toString() { - return toString(env, (Type.TypeVar) sym.type); - } - - /** - * {@inheritDoc} - */ - public Collection getBounds() { - ArrayList res = new ArrayList(); - for (Type t : env.jctypes.getBounds((Type.TypeVar) sym.type)) { - res.add((ReferenceType) env.typeMaker.getType(t)); - } - return res; - } - - /** - * {@inheritDoc} - */ - public Declaration getOwner() { - Symbol owner = sym.owner; - return ((owner.kind & Kinds.TYP) != 0) - ? env.declMaker.getTypeDeclaration((ClassSymbol) owner) - : env.declMaker.getExecutableDeclaration((MethodSymbol) owner); - } - - - - /** - * {@inheritDoc} - */ - public void accept(DeclarationVisitor v) { - v.visitTypeParameterDeclaration(this); - } - - - /** - * Returns the type parameter's name along with any "extends" clause. - * See {@link #toString()} for details. - */ - static String toString(AptEnv env, Type.TypeVar tv) { - StringBuilder s = new StringBuilder(); - s.append(tv); - boolean first = true; - for (Type bound : getExtendsBounds(env, tv)) { - s.append(first ? " extends " : " & "); - s.append(env.typeMaker.typeToString(bound)); - first = false; - } - return s.toString(); - } - - /** - * Returns the bounds of a type variable, eliding java.lang.Object - * if it appears alone. - */ - private static Iterable getExtendsBounds(AptEnv env, - Type.TypeVar tv) { - return (tv.getUpperBound().tsym == env.symtab.objectType.tsym) - ? com.sun.tools.javac.util.List.nil() - : env.jctypes.getBounds(tv); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/AnnotationTypeImpl.java 2012-01-19 16:21:28.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of AnnotationType - */ -@SuppressWarnings("deprecation") -public class AnnotationTypeImpl extends InterfaceTypeImpl - implements AnnotationType { - - AnnotationTypeImpl(AptEnv env, Type.ClassType type) { - super(env, type); - } - - - /** - * {@inheritDoc} - */ - public AnnotationTypeDeclaration getDeclaration() { - return (AnnotationTypeDeclaration) super.getDeclaration(); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitAnnotationType(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/ArrayTypeImpl.java 2012-01-19 16:21:28.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of ArrayType - */ -@SuppressWarnings("deprecation") -public class ArrayTypeImpl extends TypeMirrorImpl implements ArrayType { - - protected Type.ArrayType type; - - - ArrayTypeImpl(AptEnv env, Type.ArrayType type) { - super(env, type); - this.type = type; - } - - - /** - * {@inheritDoc} - */ - public TypeMirror getComponentType() { - return env.typeMaker.getType(type.elemtype); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitArrayType(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/ClassTypeImpl.java 2012-01-19 16:21:28.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of ClassType - */ -@SuppressWarnings("deprecation") -public class ClassTypeImpl extends DeclaredTypeImpl implements ClassType { - - ClassTypeImpl(AptEnv env, Type.ClassType type) { - super(env, type); - } - - - /** - * {@inheritDoc} - */ - public ClassDeclaration getDeclaration() { - return (ClassDeclaration) super.getDeclaration(); - } - - /** - * {@inheritDoc} - */ - public ClassType getSuperclass() { - // java.lang.Object has no superclass - if (type.tsym == env.symtab.objectType.tsym) { - return null; - } - Type sup = env.jctypes.supertype(type); - return (ClassType) env.typeMaker.getType(sup); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitClassType(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/DeclaredTypeImpl.java 2012-01-19 16:21:28.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import java.util.Collection; - -import com.sun.mirror.declaration.TypeDeclaration; -import com.sun.mirror.type.*; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.ClassSymbol; - - -/** - * Implementation of DeclaredType - */ -@SuppressWarnings("deprecation") -abstract class DeclaredTypeImpl extends TypeMirrorImpl - implements DeclaredType { - - protected Type.ClassType type; - - - protected DeclaredTypeImpl(AptEnv env, Type.ClassType type) { - super(env, type); - this.type = type; - } - - - /** - * Returns a string representation of this declared type. - * This includes the type's name and any actual type arguments. - * Type names are qualified. - */ - public String toString() { - return toString(env, type); - } - - /** - * {@inheritDoc} - */ - public TypeDeclaration getDeclaration() { - return env.declMaker.getTypeDeclaration((ClassSymbol) type.tsym); - } - - /** - * {@inheritDoc} - */ - public DeclaredType getContainingType() { - if (type.getEnclosingType().tag == TypeTags.CLASS) { - // This is the type of an inner class. - return (DeclaredType) env.typeMaker.getType(type.getEnclosingType()); - } - ClassSymbol enclosing = type.tsym.owner.enclClass(); - if (enclosing != null) { - // Nested but not inner. Return the raw type of the enclosing - // class or interface. - // See java.lang.reflect.ParameterizedType.getOwnerType(). - return (DeclaredType) env.typeMaker.getType( - env.jctypes.erasure(enclosing.type)); - } - return null; - } - - /** - * {@inheritDoc} - */ - public Collection getActualTypeArguments() { - return env.typeMaker.getTypes(type.getTypeArguments()); - } - - /** - * {@inheritDoc} - */ - public Collection getSuperinterfaces() { - return env.typeMaker.getTypes(env.jctypes.interfaces(type), - InterfaceType.class); - } - - - /** - * Returns a string representation of this declared type. - * See {@link #toString()} for details. - */ - static String toString(AptEnv env, Type.ClassType c) { - return c.toString(); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/EnumTypeImpl.java 2012-01-19 16:21:28.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of EnumType - */ -@SuppressWarnings("deprecation") -public class EnumTypeImpl extends ClassTypeImpl implements EnumType { - - EnumTypeImpl(AptEnv env, Type.ClassType type) { - super(env, type); - } - - - /** - * {@inheritDoc} - */ - public EnumDeclaration getDeclaration() { - return (EnumDeclaration) super.getDeclaration(); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitEnumType(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/InterfaceTypeImpl.java 2012-01-19 16:21:29.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of InterfaceType - */ -@SuppressWarnings("deprecation") -public class InterfaceTypeImpl extends DeclaredTypeImpl - implements InterfaceType { - - InterfaceTypeImpl(AptEnv env, Type.ClassType type) { - super(env, type); - } - - - /** - * {@inheritDoc} - */ - public InterfaceDeclaration getDeclaration() { - return (InterfaceDeclaration) super.getDeclaration(); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitInterfaceType(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/PrimitiveTypeImpl.java 2012-01-19 16:21:29.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - - -import com.sun.mirror.type.PrimitiveType; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Type; - -import static com.sun.mirror.type.PrimitiveType.Kind.*; - - -/** - * Implementation of PrimitiveType. - */ -@SuppressWarnings("deprecation") -class PrimitiveTypeImpl extends TypeMirrorImpl implements PrimitiveType { - - private final Kind kind; // the kind of primitive - - - PrimitiveTypeImpl(AptEnv env, Kind kind) { - super(env, getType(env, kind)); - this.kind = kind; - } - - - /** - * {@inheritDoc} - */ - public Kind getKind() { - return kind; - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitPrimitiveType(this); - } - - - /** - * Returns the javac type corresponding to a kind of primitive type. - */ - private static Type getType(AptEnv env, Kind kind) { - switch (kind) { - case BOOLEAN: return env.symtab.booleanType; - case BYTE: return env.symtab.byteType; - case SHORT: return env.symtab.shortType; - case INT: return env.symtab.intType; - case LONG: return env.symtab.longType; - case CHAR: return env.symtab.charType; - case FLOAT: return env.symtab.floatType; - case DOUBLE: return env.symtab.doubleType; - default: throw new AssertionError(); - } - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/TypeMaker.java 2012-01-19 16:21:29.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.type.*; -import com.sun.mirror.type.PrimitiveType.Kind; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.util.Context; - -import static com.sun.tools.javac.code.TypeTags.*; - - -/** - * Utilities for constructing type objects. - */ -@SuppressWarnings("deprecation") -public class TypeMaker { - - private final AptEnv env; - private final VoidType voidType; - private PrimitiveType[] primTypes = new PrimitiveType[VOID]; - // VOID is past all prim types - - - private static final Context.Key typeMakerKey = - new Context.Key(); - - public static TypeMaker instance(Context context) { - TypeMaker instance = context.get(typeMakerKey); - if (instance == null) { - instance = new TypeMaker(context); - } - return instance; - } - - private TypeMaker(Context context) { - context.put(typeMakerKey, this); - env = AptEnv.instance(context); - - voidType = new VoidTypeImpl(env); - primTypes[BOOLEAN] = new PrimitiveTypeImpl(env, Kind.BOOLEAN); - primTypes[BYTE] = new PrimitiveTypeImpl(env, Kind.BYTE); - primTypes[SHORT] = new PrimitiveTypeImpl(env, Kind.SHORT); - primTypes[INT] = new PrimitiveTypeImpl(env, Kind.INT); - primTypes[LONG] = new PrimitiveTypeImpl(env, Kind.LONG); - primTypes[CHAR] = new PrimitiveTypeImpl(env, Kind.CHAR); - primTypes[FLOAT] = new PrimitiveTypeImpl(env, Kind.FLOAT); - primTypes[DOUBLE] = new PrimitiveTypeImpl(env, Kind.DOUBLE); - } - - - /** - * Returns the TypeMirror corresponding to a javac Type object. - */ - public TypeMirror getType(Type t) { - if (t.isPrimitive()) { - return primTypes[t.tag]; - } - switch (t.tag) { - case ERROR: // fall through - case CLASS: return getDeclaredType((Type.ClassType) t); - case WILDCARD: return new WildcardTypeImpl(env, (Type.WildcardType) t); - case TYPEVAR: return new TypeVariableImpl(env, (Type.TypeVar) t); - case ARRAY: return new ArrayTypeImpl(env, (Type.ArrayType) t); - case VOID: return voidType; - default: throw new AssertionError(); - } - } - - /** - * Returns the declared type corresponding to a given ClassType. - */ - public DeclaredType getDeclaredType(Type.ClassType t) { - return - hasFlag(t.tsym, Flags.ANNOTATION) ? new AnnotationTypeImpl(env, t) : - hasFlag(t.tsym, Flags.INTERFACE) ? new InterfaceTypeImpl(env, t) : - hasFlag(t.tsym, Flags.ENUM) ? new EnumTypeImpl(env, t) : - new ClassTypeImpl(env, t); - } - - /** - * Returns a collection of types corresponding to a list of javac Type - * objects. - */ - public Collection getTypes(Iterable types) { - return getTypes(types, TypeMirror.class); - } - - /** - * Returns a collection of types corresponding to a list of javac Type - * objects. The element type of the result is specified explicitly. - */ - public Collection getTypes(Iterable types, - Class resType) { - ArrayList res = new ArrayList(); - for (Type t : types) { - TypeMirror mir = getType(t); - if (resType.isInstance(mir)) { - res.add(resType.cast(mir)); - } - } - return res; - } - - /** - * Returns the string representation of a type. - * Bounds of type variables are not included; bounds of wildcard types are. - * Type names are qualified. - */ - public String typeToString(Type t) { - switch (t.tag) { - case ARRAY: - return typeToString(env.jctypes.elemtype(t)) + "[]"; - case CLASS: - Type.ClassType c = (Type.ClassType) t; - return DeclaredTypeImpl.toString(env, c); - case WILDCARD: - Type.WildcardType a = (Type.WildcardType) t; - return WildcardTypeImpl.toString(env, a); - default: - return t.tsym.toString(); - } - } - - - /** - * Does a symbol have a given flag? - */ - private static boolean hasFlag(Symbol s, long flag) { - return AptEnv.hasFlag(s, flag); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/TypeMirrorImpl.java 2012-01-19 16:21:29.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; - - -/** - * Implementation of TypeMirror - */ -@SuppressWarnings("deprecation") -public abstract class TypeMirrorImpl implements TypeMirror { - - protected final AptEnv env; - public final Type type; - - - protected TypeMirrorImpl(AptEnv env, Type type) { - this.env = env; - this.type = type; - } - - - /** - * {@inheritDoc} - */ - public String toString() { - return type.toString(); - } - - /** - * {@inheritDoc} - */ - public boolean equals(Object obj) { - if (obj instanceof TypeMirrorImpl) { - TypeMirrorImpl that = (TypeMirrorImpl) obj; - return env.jctypes.isSameType(this.type, that.type); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - public int hashCode() { - return Types.hashCode(type); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java 2012-01-19 16:21:29.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2004, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import java.util.Collection; -import java.util.ArrayList; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.Symbol.TypeSymbol; -import com.sun.tools.javac.code.Type; - - -/** - * Implementation of TypeVariable - */ -@SuppressWarnings("deprecation") -public class TypeVariableImpl extends TypeMirrorImpl implements TypeVariable { - - protected Type.TypeVar type; - - - TypeVariableImpl(AptEnv env, Type.TypeVar type) { - super(env, type); - this.type = type; - } - - - /** - * Returns the simple name of this type variable. Bounds are - * not included. - */ - public String toString() { - return type.tsym.name.toString(); - } - - /** - * {@inheritDoc} - */ - public TypeParameterDeclaration getDeclaration() { - TypeSymbol sym = type.tsym; - return env.declMaker.getTypeParameterDeclaration(sym); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitTypeVariable(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/VoidTypeImpl.java 2012-01-19 16:21:30.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import com.sun.mirror.type.VoidType; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; - - -/** - * Implementation of VoidType. - */ -@SuppressWarnings("deprecation") -class VoidTypeImpl extends TypeMirrorImpl implements VoidType { - - VoidTypeImpl(AptEnv env) { - super(env, env.symtab.voidType); - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitVoidType(this); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/type/WildcardTypeImpl.java 2012-01-19 16:21:30.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.type; - - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.TypeVisitor; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; - - -/** - * Implementation of WildcardType - */ -@SuppressWarnings("deprecation") -public class WildcardTypeImpl extends TypeMirrorImpl implements WildcardType { - - protected Type.WildcardType type; - - WildcardTypeImpl(AptEnv env, Type.WildcardType type) { - super(env, type); - this.type = type; - } - - - /** - * Returns the string form of a wildcard type, consisting of "?" - * and any "extends" or "super" clause. - * Delimiting brackets are not included. Class names are qualified. - */ - public String toString() { - return toString(env, type); - } - - /** - * {@inheritDoc} - */ - public Collection getUpperBounds() { - return type.isSuperBound() - ? Collections.emptyList() - : typeToCollection(type.type); - } - - /** - * {@inheritDoc} - */ - public Collection getLowerBounds() { - return type.isExtendsBound() - ? Collections.emptyList() - : typeToCollection(type.type); - } - - /** - * Gets the ReferenceType for a javac Type object, and returns - * it in a singleton collection. If type is null, returns an empty - * collection. - */ - private Collection typeToCollection(Type type) { - ArrayList res = new ArrayList(1); - if (type != null) { - res.add((ReferenceType) env.typeMaker.getType(type)); - } - return res; - } - - /** - * {@inheritDoc} - */ - public void accept(TypeVisitor v) { - v.visitWildcardType(this); - } - - - /** - * Returns the string form of a wildcard type, consisting of "?" - * and any "extends" or "super" clause. - * See {@link #toString()} for details. - */ - static String toString(AptEnv env, Type.WildcardType wildThing) { - return wildThing.toString(); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/util/DeclarationsImpl.java 2012-01-19 16:21:30.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2004, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.util; - - -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.Declarations; -import com.sun.tools.apt.mirror.declaration.DeclarationImpl; -import com.sun.tools.apt.mirror.declaration.MethodDeclarationImpl; -import com.sun.tools.apt.mirror.util.DeclarationsImpl; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.javac.code.*; -import com.sun.tools.javac.code.Symbol.*; -import com.sun.tools.javac.util.Context; - -import static com.sun.tools.javac.code.Kinds.*; - - -/** - * Implementation of Declarations utility methods for annotation processors - */ -@SuppressWarnings("deprecation") -public class DeclarationsImpl implements Declarations { - - private final AptEnv env; - - - private static final Context.Key declarationsKey = - new Context.Key(); - - public static Declarations instance(Context context) { - Declarations instance = context.get(declarationsKey); - if (instance == null) { - instance = new DeclarationsImpl(context); - } - return instance; - } - - private DeclarationsImpl(Context context) { - context.put(declarationsKey, this); - env = AptEnv.instance(context); - } - - - /** - * {@inheritDoc} - * See sections 8.3 and 8.4.6 of - * The Java™ Language Specification - */ - public boolean hides(MemberDeclaration sub, MemberDeclaration sup) { - Symbol hider = ((DeclarationImpl) sub).sym; - Symbol hidee = ((DeclarationImpl) sup).sym; - - // Fields only hide fields; methods only methods; types only types. - // Names must match. Nothing hides itself (just try it). - if (hider == hidee || - hider.kind != hidee.kind || - hider.name != hidee.name) { - return false; - } - - // Only static methods can hide other methods. - // Methods only hide methods with matching signatures. - if (hider.kind == MTH) { - if ((hider.flags() & Flags.STATIC) == 0 || - !env.jctypes.isSubSignature(hider.type, hidee.type)) { - return false; - } - } - - // Hider must be in a subclass of hidee's class. - // Note that if M1 hides M2, and M2 hides M3, and M3 is accessible - // in M1's class, then M1 and M2 both hide M3. - ClassSymbol hiderClass = hider.owner.enclClass(); - ClassSymbol hideeClass = hidee.owner.enclClass(); - if (hiderClass == null || hideeClass == null || - !hiderClass.isSubClass(hideeClass, env.jctypes)) { - return false; - } - - // Hidee must be accessible in hider's class. - // The method isInheritedIn is poorly named: it checks only access. - return hidee.isInheritedIn(hiderClass, env.jctypes); - } - - /** - * {@inheritDoc} - * See section 8.4.6.1 of - * The Java™ Language Specification - */ - public boolean overrides(MethodDeclaration sub, MethodDeclaration sup) { - MethodSymbol overrider = ((MethodDeclarationImpl) sub).sym; - MethodSymbol overridee = ((MethodDeclarationImpl) sup).sym; - ClassSymbol origin = (ClassSymbol) overrider.owner; - - return overrider.name == overridee.name && - - // not reflexive as per JLS - overrider != overridee && - - // we don't care if overridee is static, though that wouldn't - // compile - !overrider.isStatic() && - - // overrider, whose declaring type is the origin, must be - // in a subtype of overridee's type - env.jctypes.asSuper(origin.type, overridee.owner) != null && - - // check access and signatures; don't check return types - overrider.overrides(overridee, origin, env.jctypes, false); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/util/SourcePositionImpl.java 2012-01-19 16:21:30.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.util; - - -import java.io.File; -import javax.tools.JavaFileObject; - -import com.sun.mirror.util.SourcePosition; -import com.sun.tools.javac.util.Position; - - -/** - * Implementation of SourcePosition - */ -@SuppressWarnings("deprecation") -public class SourcePositionImpl implements SourcePosition { - - private JavaFileObject sourcefile; - private int pos; // file position, in javac's internal format - private Position.LineMap linemap; - - - public SourcePositionImpl(JavaFileObject sourcefile, int pos, Position.LineMap linemap) { - this.sourcefile = sourcefile; - this.pos = pos; - this.linemap = linemap; - assert sourcefile != null; - assert linemap != null; - } - - public int getJavacPosition() { - return pos; - } - - public JavaFileObject getSource() { - return sourcefile; - } - - /** - * Returns a string representation of this position in the - * form "sourcefile:line", or "sourcefile" if no line number is available. - */ - public String toString() { - int ln = line(); - return (ln == Position.NOPOS) - ? sourcefile.getName() - : sourcefile.getName() + ":" + ln; - } - - /** - * {@inheritDoc} - */ - public File file() { - return new File(sourcefile.toUri()); - } - - /** - * {@inheritDoc} - */ - public int line() { - return linemap.getLineNumber(pos); - } - - /** - * {@inheritDoc} - */ - public int column() { - return linemap.getColumnNumber(pos); - } -} --- old/src/share/classes/com/sun/tools/apt/mirror/util/TypesImpl.java 2012-01-19 16:21:30.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2004, 2005, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.mirror.util; - - -import java.util.Collection; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.Types; -import com.sun.tools.apt.mirror.AptEnv; -import com.sun.tools.apt.mirror.declaration.*; -import com.sun.tools.apt.mirror.type.TypeMirrorImpl; -import com.sun.tools.javac.code.BoundKind; -import com.sun.tools.javac.code.Type; -import com.sun.tools.javac.code.Symbol.ClassSymbol; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.ListBuffer; - - -/** - * Implementation of Types utility methods for annotation processors - */ -@SuppressWarnings("deprecation") -public class TypesImpl implements Types { - - private final AptEnv env; - - - private static final Context.Key typesKey = - new Context.Key(); - - public static Types instance(Context context) { - Types instance = context.get(typesKey); - if (instance == null) { - instance = new TypesImpl(context); - } - return instance; - } - - private TypesImpl(Context context) { - context.put(typesKey, this); - env = AptEnv.instance(context); - } - - - /** - * {@inheritDoc} - */ - public boolean isSubtype(TypeMirror t1, TypeMirror t2) { - return env.jctypes.isSubtype(((TypeMirrorImpl) t1).type, - ((TypeMirrorImpl) t2).type); - } - - /** - * {@inheritDoc} - */ - public boolean isAssignable(TypeMirror t1, TypeMirror t2) { - return env.jctypes.isAssignable(((TypeMirrorImpl) t1).type, - ((TypeMirrorImpl) t2).type); - } - - /** - * {@inheritDoc} - */ - public TypeMirror getErasure(TypeMirror t) { - return env.typeMaker.getType( - env.jctypes.erasure(((TypeMirrorImpl) t).type)); - } - - /** - * {@inheritDoc} - */ - public PrimitiveType getPrimitiveType(PrimitiveType.Kind kind) { - Type prim = null; - switch (kind) { - case BOOLEAN: prim = env.symtab.booleanType; break; - case BYTE: prim = env.symtab.byteType; break; - case SHORT: prim = env.symtab.shortType; break; - case INT: prim = env.symtab.intType; break; - case LONG: prim = env.symtab.longType; break; - case CHAR: prim = env.symtab.charType; break; - case FLOAT: prim = env.symtab.floatType; break; - case DOUBLE: prim = env.symtab.doubleType; break; - default: assert false; - } - return (PrimitiveType) env.typeMaker.getType(prim); - } - - /** - * {@inheritDoc} - */ - public VoidType getVoidType() { - return (VoidType) env.typeMaker.getType(env.symtab.voidType); - } - - /** - * {@inheritDoc} - */ - public ArrayType getArrayType(TypeMirror componentType) { - if (componentType instanceof VoidType) { - throw new IllegalArgumentException("void"); - } - return (ArrayType) env.typeMaker.getType( - new Type.ArrayType(((TypeMirrorImpl) componentType).type, - env.symtab.arrayClass)); - } - - /** - * {@inheritDoc} - */ - public TypeVariable getTypeVariable(TypeParameterDeclaration tparam) { - return (TypeVariable) env.typeMaker.getType( - ((DeclarationImpl) tparam).sym.type); - } - - /** - * {@inheritDoc} - */ - public WildcardType getWildcardType(Collection upperBounds, - Collection lowerBounds) { - BoundKind kind; - Type bound; - int uppers = upperBounds.size(); - int downers = lowerBounds.size(); - - if (uppers + downers > 1) { - throw new IllegalArgumentException("Multiple bounds not allowed"); - - } else if (uppers + downers == 0) { - kind = BoundKind.UNBOUND; - bound = env.symtab.objectType; - - } else if (uppers == 1) { - assert downers == 0; - kind = BoundKind.EXTENDS; - bound = ((TypeMirrorImpl) upperBounds.iterator().next()).type; - - } else { - assert uppers == 0 && downers == 1; - kind = BoundKind.SUPER; - bound = ((TypeMirrorImpl) lowerBounds.iterator().next()).type; - } - - if (bound instanceof Type.WildcardType) - throw new IllegalArgumentException(bound.toString()); - - return (WildcardType) env.typeMaker.getType( - new Type.WildcardType(bound, kind, env.symtab.boundClass)); - } - - /** - * {@inheritDoc} - */ - public DeclaredType getDeclaredType(TypeDeclaration decl, - TypeMirror... typeArgs) { - ClassSymbol sym = ((TypeDeclarationImpl) decl).sym; - - if (typeArgs.length == 0) - return (DeclaredType) env.typeMaker.getType( - env.jctypes.erasure(sym.type)); - if (sym.type.getEnclosingType().isParameterized()) - throw new IllegalArgumentException(decl.toString()); - - return getDeclaredType(sym.type.getEnclosingType(), sym, typeArgs); - } - - /** - * {@inheritDoc} - */ - public DeclaredType getDeclaredType(DeclaredType containing, - TypeDeclaration decl, - TypeMirror... typeArgs) { - if (containing == null) - return getDeclaredType(decl, typeArgs); - - ClassSymbol sym = ((TypeDeclarationImpl) decl).sym; - Type outer = ((TypeMirrorImpl) containing).type; - - if (outer.tsym != sym.owner.enclClass()) - throw new IllegalArgumentException(containing.toString()); - if (!outer.isParameterized()) - return getDeclaredType(decl, typeArgs); - - return getDeclaredType(outer, sym, typeArgs); - } - - private DeclaredType getDeclaredType(Type outer, - ClassSymbol sym, - TypeMirror... typeArgs) { - if (typeArgs.length != sym.type.getTypeArguments().length()) - throw new IllegalArgumentException( - "Incorrect number of type arguments"); - - ListBuffer targs = new ListBuffer(); - for (TypeMirror t : typeArgs) { - if (!(t instanceof ReferenceType || t instanceof WildcardType)) - throw new IllegalArgumentException(t.toString()); - targs.append(((TypeMirrorImpl) t).type); - } - //### Need a way to check that type args match formals. - - return (DeclaredType) env.typeMaker.getType( - new Type.ClassType(outer, targs.toList(), sym)); - } -} --- old/src/share/classes/com/sun/tools/apt/resources/apt.properties 2012-01-19 16:21:31.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,184 +0,0 @@ -# -# Copyright (c) 2004, 2006, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# 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. -# - -apt.msg.usage.header=\ -Usage: {0} \n\ -where apt options include: - -apt.msg.usage.footer=\ -See javac -help for information on javac options. - -apt.msg.usage.nonstandard.footer=\ -These options are non-standard and subject to change without notice, \nas is the format of their output. - -apt.msg.bug=\ -An exception has occurred in apt ({0}). \ -Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) \ -after checking the Bug Parade for duplicates. \ -Include your program and the following diagnostic in your report. Thank you. - -## apt options - -apt.opt.A=\ - Options to pass to annotation processors -apt.opt.arg.class=\ - -apt.opt.arg.directory=\ - Specify where to place processor and javac generated class files -apt.opt.classpath=\ - Specify where to find user class files and annotation processor factories -apt.opt.d=\ - Specify where to place processor and javac generated class files -apt.opt.factory=\ - Name of AnnotationProcessorFactory to use; bypasses default discovery process -apt.opt.factorypath=\ - Specify where to find annotation processor factories -apt.opt.s=\ - Specify where to place processor generated source files -apt.opt.help=\ - Print a synopsis of standard options; use javac -help for more options -apt.opt.print=\ - Print out textual representation of specified types -apt.opt.nocompile=\ - Do not compile source files to class files -apt.opt.proc.flag=\ - [key[=value]] -apt.opt.version=\ - Version information -apt.opt.XListAnnotationTypes=\ - List found annotation types -apt.opt.XListDeclarations=\ - List specified and included declarations -apt.opt.XPrintAptRounds=\ - Print information about initial and recursive apt rounds -apt.opt.XPrintFactoryInfo=\ - Print information about which annotations a factory is asked to process -apt.opt.XClassesAsDecls=\ - Treat both class and source files as declarations to process - -## -## errors -## - -## All errors which do not refer to a particular line in the source code are -## preceded by this string. - -apt.err.error=\ - error:\u0020 - -apt.err.unsupported.source.version=\ - Source release {0} is not supported; use release 5 or earlier - -apt.err.unsupported.target.version=\ - Target release {0} is not supported; use release 5 or earlier - -apt.err.BadDeclaration=\ - Bad declaration created for annotation type {0} - -apt.err.CantFindClass=\ - Could not find class file for {0} - -apt.err.DeclarationCreation=\ - Could not create declaration for annotation type {0} - -# Print an error from the Messager -apt.err.Messager=\ - {0} - -## -## miscellaneous strings -## - -apt.misc.Deprecation=\ - \nwarning:\u0020The apt tool and its associated API are planned to be\n\ - removed in the next major JDK release. These features have been\n\ - superseded by javac and the standardized annotation processing API,\n\ - javax.annotation.processing and javax.lang.model. Users are\n\ - recommended to migrate to the annotation processing features of\n\ - javac; see the javac man page for more information.\n - -apt.misc.Problem=\ - Problem encountered during annotation processing; \nsee stacktrace below for more information. - -apt.misc.SunMiscService=\ - Error finding annotation processor factories; \ncheck META-INF/services information. - -# Print a notice from the Messager -apt.note.Messager=\ - {0} - -## -## warnings -## - -## All warning messages are preceded by the following string. -apt.warn.warning=\ - warning:\u0020 - -apt.warn.AnnotationsWithoutProcessors=\ - Annotation types without processors: {0} - -apt.warn.BadFactory=\ - Bad annotation processor factory: {0} - -apt.warn.BadParentDirectory=\ - Failed to create some parent directory of {0} - -apt.warn.FactoryCantInstantiate=\ - Could not instantiate an instance of factory ''{0}''. - -apt.warn.FactoryWrongType=\ - Specified factory, ''{0}'', is not an AnnotationProcessorFactory. - -apt.warn.FactoryNotFound=\ - Specified AnnotationProcessorFactory, ''{0}'', not found on search path. - -apt.warn.FileReopening=\ - Attempt to create ''{0}'' multiple times - -apt.warn.IllegalFileName=\ - Cannot create file for illegal name ''{0}''. - -apt.warn.MalformedSupportedString=\ - Malformed string for annotation support, ''{0}'', returned by factory. - -apt.warn.NoNewFilesAfterRound=\ - Cannot create file ''{0}'' after a round has ended. - -# Print a warning from the Messager -apt.warn.Messager=\ - {0} - -apt.warn.NoAnnotationProcessors=\ - No annotation processors found but annotations present. - -apt.warn.NullProcessor=\ - Factory {0} returned null for an annotation processor. - -apt.warn.CorrespondingClassFile=\ - A class file corresponding to source file ''{0}'' has already been created. - -apt.warn.CorrespondingSourceFile=\ - A source file corresponding to class file ''{0}'' has already been created. --- old/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties 2012-01-19 16:21:31.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,126 +0,0 @@ -# -# Copyright (c) 2004, 2011, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# 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. -# - -apt.msg.usage.header=\u4F7F\u7528\u65B9\u6CD5: {0} \n\u6B21\u306Eapt\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059: - -apt.msg.usage.footer=javac\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3064\u3044\u3066\u306F\u3001javac -help\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002 - -apt.msg.usage.nonstandard.footer=\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u3001\u8868\u793A\u5F62\u5F0F\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\n\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002 - -apt.msg.bug=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F({0})\u3002Bug Parade\u306B\u540C\u3058\u30D0\u30B0\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u306A\u3044\u3053\u3068\u3092\u3054\u78BA\u8A8D\u306E\u4E0A\u3001Java Developer Connection(http://java.sun.com/webapps/bugreport)\u3067\u30D0\u30B0\u306E\u767B\u9332\u3092\u304A\u9858\u3044\u3044\u305F\u3057\u307E\u3059\u3002\u30EC\u30DD\u30FC\u30C8\u306B\u306F\u3001\u305D\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u4E0B\u8A18\u306E\u8A3A\u65AD\u5185\u5BB9\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u3054\u5354\u529B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002 - -## apt options - -apt.opt.A=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306B\u6E21\u3055\u308C\u308B\u30AA\u30D7\u30B7\u30E7\u30F3 -apt.opt.arg.class= -apt.opt.arg.directory=\u30D7\u30ED\u30BB\u30C3\u30B5\u304A\u3088\u3073javac\u304C\u751F\u6210\u3057\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B -apt.opt.classpath=\u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304A\u3088\u3073\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B -apt.opt.d=\u30D7\u30ED\u30BB\u30C3\u30B5\u304A\u3088\u3073javac\u304C\u751F\u6210\u3057\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B -apt.opt.factory=\u4F7F\u7528\u3059\u308BAnnotationProcessorFactory\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u691C\u51FA\u51E6\u7406\u3092\u30D0\u30A4\u30D1\u30B9 -apt.opt.factorypath=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u306E\u691C\u7D22\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B -apt.opt.s=\u30D7\u30ED\u30BB\u30C3\u30B5\u304C\u751F\u6210\u3057\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B -apt.opt.help=\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3059\u308B\u3002\u8A73\u7D30\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3064\u3044\u3066\u306Fjavac -help\u3092\u53C2\u7167 -apt.opt.print=\u6307\u5B9A\u3057\u305F\u578B\u306E\u30C6\u30AD\u30B9\u30C8\u8868\u793A\u3092\u51FA\u529B\u3059\u308B -apt.opt.nocompile=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u306A\u3044 -apt.opt.proc.flag=[key[=value]] -apt.opt.version=\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831 -apt.opt.XListAnnotationTypes=\u898B\u3064\u304B\u3063\u305F\u6CE8\u91C8\u578B\u3092\u30EA\u30B9\u30C8\u3059\u308B -apt.opt.XListDeclarations=\u6307\u5B9A\u3055\u308C\u305F\u5BA3\u8A00\u304A\u3088\u3073\u30A4\u30F3\u30AF\u30EB\u30FC\u30C9\u3055\u308C\u305F\u5BA3\u8A00\u3092\u30EA\u30B9\u30C8\u3059\u308B -apt.opt.XPrintAptRounds=\u521D\u671F\u304A\u3088\u3073\u518D\u5E30apt\u5F80\u5FA9\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u5370\u5237\u3059\u308B -apt.opt.XPrintFactoryInfo=\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u51E6\u7406\u3092\u4F9D\u983C\u3055\u308C\u308B\u6CE8\u91C8\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u5370\u5237\u3059\u308B -apt.opt.XClassesAsDecls=\u30AF\u30E9\u30B9\u3068\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4E21\u65B9\u3068\u3082\u51E6\u7406\u3059\u308B\u5BA3\u8A00\u3068\u3057\u3066\u51E6\u7406 - -## -## errors -## - -## All errors which do not refer to a particular line in the source code are -## preceded by this string. - -apt.err.error=\u30A8\u30E9\u30FC:\u0020 - -apt.err.unsupported.source.version=\u30BD\u30FC\u30B9\u30FB\u30EA\u30EA\u30FC\u30B9{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30EA\u30EA\u30FC\u30B95\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 - -apt.err.unsupported.target.version=\u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30EA\u30EA\u30FC\u30B9{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30EA\u30EA\u30FC\u30B95\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 - -apt.err.BadDeclaration=\u6CE8\u91C8\u578B{0}\u7528\u306B\u4F5C\u6210\u3055\u308C\u305F\u7121\u52B9\u306A\u5BA3\u8A00\u3067\u3059 - -apt.err.CantFindClass={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 - -apt.err.DeclarationCreation=\u6CE8\u91C8\u578B{0}\u7528\u306B\u5BA3\u8A00\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F - -# Print an error from the Messager -apt.err.Messager={0} - -## -## miscellaneous strings -## - -apt.misc.Deprecation=\n\u8B66\u544A: apt\u30C4\u30FC\u30EB\u3068\u30C4\u30FC\u30EB\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305FAPI\u306F\u3001\u6B21\u56DE\u306EJDK\n\u30E1\u30B8\u30E3\u30FC\u30FB\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u4E88\u5B9A\u3067\u3059\u3002\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306Fjavac\u304A\u3088\u3073\n\u6A19\u6E96\u5316\u3055\u308C\u305F\u6CE8\u91C8\u51E6\u7406API\u306Ejavax.annotation.processing\u304A\u3088\u3073javax.lang.model\n\u306B\u3088\u3063\u3066\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3057\u305F\u3002\u30E6\u30FC\u30B6\u30FC\u306Fjavac\u306E\u6CE8\u91C8\u51E6\u7406\u6A5F\u80FD\u306B\n\u79FB\u884C\u3059\u308B\u3053\u3068\u3092\u304A\u85A6\u3081\u3057\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u3001javac man\u30DA\u30FC\u30B8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n - -apt.misc.Problem=\u6CE8\u91C8\u51E6\u7406\u4E2D\u306B\u554F\u984C\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u3001\u4E0B\u8A18\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002 - -apt.misc.SunMiscService=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u306E\u691C\u7D22\u30A8\u30E9\u30FC\u3067\u3059\u3002\nMETA-INF/services\u5185\u306E\u60C5\u5831\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 - -# Print a notice from the Messager -apt.note.Messager={0} - -## -## warnings -## - -## All warning messages are preceded by the following string. -apt.warn.warning=\u8B66\u544A: - -apt.warn.AnnotationsWithoutProcessors=\u30D7\u30ED\u30BB\u30C3\u30B5\u306A\u3057\u306E\u6CE8\u91C8\u578B\u3067\u3059: {0} - -apt.warn.BadFactory=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u7121\u52B9\u3067\u3059: {0} - -apt.warn.BadParentDirectory={0}\u306E\u3044\u304F\u3064\u304B\u306E\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F - -apt.warn.FactoryCantInstantiate=\u30D5\u30A1\u30AF\u30C8\u30EA''{0}''\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 - -apt.warn.FactoryWrongType=\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30AF\u30C8\u30EA''{0}''\u306FAnnotationProcessorFactory\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 - -apt.warn.FactoryNotFound=\u6307\u5B9A\u3057\u305FAnnotationProcessorFactory ''{0}''\u306F\u691C\u7D22\u30D1\u30B9\u3067\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002 - -apt.warn.FileReopening=''{0}''\u3092\u8907\u6570\u56DE\u4F5C\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059 - -apt.warn.IllegalFileName=\u7121\u52B9\u306A\u540D\u524D''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002 - -apt.warn.MalformedSupportedString=\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u8FD4\u3057\u305F\u6CE8\u91C8\u30B5\u30DD\u30FC\u30C8''{0}''\u306E\u6587\u5B57\u5217\u304C\u4E0D\u6B63\u3067\u3059\u3002 - -apt.warn.NoNewFilesAfterRound=\u5F80\u5FA9\u306E\u7D42\u4E86\u5F8C\u306B\u30D5\u30A1\u30A4\u30EB''{0}''\u3092\u4F5C\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 - -# Print a warning from the Messager -apt.warn.Messager={0} - -apt.warn.NoAnnotationProcessors=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u304C\u3001\u6CE8\u91C8\u306F\u5B58\u5728\u3057\u307E\u3059\u3002 - -apt.warn.NullProcessor=\u30D5\u30A1\u30AF\u30C8\u30EA{0}\u304C\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306Bnull\u3092\u8FD4\u3057\u307E\u3057\u305F\u3002 - -apt.warn.CorrespondingClassFile=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB''{0}''\u306B\u5BFE\u5FDC\u3059\u308B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002 - -apt.warn.CorrespondingSourceFile=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB''{0}''\u306B\u5BFE\u5FDC\u3059\u308B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002 --- old/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties 2012-01-19 16:21:31.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,126 +0,0 @@ -# -# Copyright (c) 2004, 2011, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# 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. -# - -apt.msg.usage.header=\u7528\u6CD5: {0} \n\u5176\u4E2D, apt \u9009\u9879\u5305\u62EC: - -apt.msg.usage.footer=\u6709\u5173 javac \u9009\u9879\u7684\u4FE1\u606F, \u8BF7\u53C2\u9605 javac -help\u3002 - -apt.msg.usage.nonstandard.footer=\u8FD9\u4E9B\u9009\u9879\u53CA\u5176\u8F93\u51FA\u683C\u5F0F\u90FD\u4E0D\u662F\u6807\u51C6\u7684, \n\u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002 - -apt.msg.bug=apt ({0}) \u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF\u3002 \u5982\u679C\u5728 Bug Parade \u4E2D\u6CA1\u6709\u627E\u5230\u8BE5\u9519\u8BEF, \u8BF7\u5728 Java Developer Connection (http://java.sun.com/webapps/bugreport) \u4E2D\u5EFA\u7ACB Bug\u3002\u8BF7\u5728\u62A5\u544A\u4E2D\u9644\u4E0A\u60A8\u7684\u7A0B\u5E8F\u548C\u4EE5\u4E0B\u8BCA\u65AD\u4FE1\u606F\u3002\u8C22\u8C22\u3002 - -## apt options - -apt.opt.A=\u4F20\u9012\u7ED9\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u9009\u9879 -apt.opt.arg.class=<\u7C7B> -apt.opt.arg.directory=\u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u548C javac \u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E -apt.opt.classpath=\u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u548C\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u7684\u4F4D\u7F6E -apt.opt.d=\u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u548C javac \u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E -apt.opt.factory=\u8981\u4F7F\u7528\u7684 AnnotationProcessorFactory \u7684\u540D\u79F0; \u7ED5\u8FC7\u9ED8\u8BA4\u7684\u641C\u7D22\u8FDB\u7A0B -apt.opt.factorypath=\u6307\u5B9A\u67E5\u627E\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u7684\u4F4D\u7F6E -apt.opt.s=\u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u751F\u6210\u7684\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E -apt.opt.help=\u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981; \u4F7F\u7528 javac -help \u53EF\u4EE5\u5F97\u5230\u66F4\u591A\u9009\u9879 -apt.opt.print=\u8F93\u51FA\u6307\u5B9A\u7C7B\u578B\u7684\u6587\u672C\u8868\u793A -apt.opt.nocompile=\u8BF7\u52FF\u5C06\u6E90\u6587\u4EF6\u7F16\u8BD1\u4E3A\u7C7B\u6587\u4EF6 -apt.opt.proc.flag=[\u5173\u952E\u5B57[=\u503C]] -apt.opt.version=\u7248\u672C\u4FE1\u606F -apt.opt.XListAnnotationTypes=\u5217\u51FA\u627E\u5230\u7684\u6CE8\u91CA\u7C7B\u578B -apt.opt.XListDeclarations=\u5217\u51FA\u6307\u5B9A\u548C\u5305\u542B\u7684\u58F0\u660E -apt.opt.XPrintAptRounds=\u8F93\u51FA\u6709\u5173\u521D\u59CB\u548C\u9012\u5F52 apt \u5FAA\u73AF\u7684\u4FE1\u606F -apt.opt.XPrintFactoryInfo=\u8F93\u51FA\u6709\u5173\u8BF7\u6C42\u5DE5\u5382\u5904\u7406\u54EA\u4E9B\u6CE8\u91CA\u7684\u4FE1\u606F -apt.opt.XClassesAsDecls=\u5C06\u7C7B\u6587\u4EF6\u548C\u6E90\u6587\u4EF6\u90FD\u89C6\u4E3A\u8981\u5904\u7406\u7684\u58F0\u660E - -## -## errors -## - -## All errors which do not refer to a particular line in the source code are -## preceded by this string. - -apt.err.error=\u9519\u8BEF:\u0020 - -apt.err.unsupported.source.version=\u4E0D\u652F\u6301\u6E90\u53D1\u884C\u7248 {0}; \u8BF7\u4F7F\u7528\u53D1\u884C\u7248 5 \u6216\u65E9\u671F\u53D1\u884C\u7248 - -apt.err.unsupported.target.version=\u4E0D\u652F\u6301\u76EE\u6807\u53D1\u884C\u7248 {0}; \u8BF7\u4F7F\u7528\u53D1\u884C\u7248 5 \u6216\u65E9\u671F\u53D1\u884C\u7248 - -apt.err.BadDeclaration=\u4E3A\u6CE8\u91CA\u7C7B\u578B{0}\u521B\u5EFA\u7684\u58F0\u660E\u51FA\u73B0\u9519\u8BEF - -apt.err.CantFindClass=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6 - -apt.err.DeclarationCreation=\u65E0\u6CD5\u4E3A\u6CE8\u91CA\u7C7B\u578B{0}\u521B\u5EFA\u58F0\u660E - -# Print an error from the Messager -apt.err.Messager={0} - -## -## miscellaneous strings -## - -apt.misc.Deprecation=\n\u8B66\u544A:\u0020\u5DF2\u8BA1\u5212\u5728\u4E0B\u4E00\u4E2A JDK \u4E3B\u53D1\u884C\u7248\u4E2D\n\u5220\u9664 apt \u5DE5\u5177\u53CA\u5176\u5173\u8054\u7684 API\u3002\u8FD9\u4E9B\u529F\u80FD\n\u5DF2\u88AB javac \u548C\u6807\u51C6\u6CE8\u91CA\u5904\u7406 API,\njavax.annotation.processing \u548C javax.lang.model \u53D6\u4EE3\u3002\u5EFA\u8BAE\u7528\u6237\n\u79FB\u690D\u5230 javac \u7684\u6CE8\u91CA\u5904\u7406\u529F\u80FD;\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 javac \u5E2E\u52A9\u9875\u3002\n - -apt.misc.Problem=\u6CE8\u91CA\u5904\u7406\u8FC7\u7A0B\u4E2D\u9047\u5230\u95EE\u9898; \n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4E0B\u9762\u7684\u5806\u6808\u8DDF\u8E2A\u3002 - -apt.misc.SunMiscService=\u67E5\u627E\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u65F6\u51FA\u9519; \n\u8BF7\u67E5\u770B META-INF/\u670D\u52A1\u4FE1\u606F\u3002 - -# Print a notice from the Messager -apt.note.Messager={0} - -## -## warnings -## - -## All warning messages are preceded by the following string. -apt.warn.warning=\u8B66\u544A:\u0020 - -apt.warn.AnnotationsWithoutProcessors=\u4E0D\u5E26\u5904\u7406\u7A0B\u5E8F\u7684\u6CE8\u91CA\u7C7B\u578B: {0} - -apt.warn.BadFactory=\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u51FA\u73B0\u9519\u8BEF: {0} - -apt.warn.BadParentDirectory=\u65E0\u6CD5\u521B\u5EFA{0}\u7684\u67D0\u4E9B\u7236\u76EE\u5F55 - -apt.warn.FactoryCantInstantiate=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u5DE5\u5382 ''{0}'' \u7684\u5B9E\u4F8B\u3002 - -apt.warn.FactoryWrongType=\u6307\u5B9A\u7684\u5DE5\u5382 ''{0}'' \u4E0D\u662F AnnotationProcessorFactory\u3002 - -apt.warn.FactoryNotFound=\u5728\u641C\u7D22\u8DEF\u5F84\u4E2D\u627E\u4E0D\u5230\u6307\u5B9A\u7684 AnnotationProcessorFactory ''{0}''\u3002 - -apt.warn.FileReopening=\u5C1D\u8BD5\u591A\u6B21\u521B\u5EFA ''{0}'' - -apt.warn.IllegalFileName=\u65E0\u6CD5\u521B\u5EFA\u5E26\u6709\u975E\u6CD5\u540D\u79F0 ''{0}'' \u7684\u6587\u4EF6\u3002 - -apt.warn.MalformedSupportedString=\u5DE5\u5382\u8FD4\u56DE\u683C\u5F0F\u9519\u8BEF\u7684\u6CE8\u91CA\u652F\u6301\u5B57\u7B26\u4E32 ''{0}''\u3002 - -apt.warn.NoNewFilesAfterRound=\u5FAA\u73AF\u7ED3\u675F\u540E\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 ''{0}''\u3002 - -# Print a warning from the Messager -apt.warn.Messager={0} - -apt.warn.NoAnnotationProcessors=\u627E\u4E0D\u5230\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F, \u4F46\u5B58\u5728\u6CE8\u91CA\u3002 - -apt.warn.NullProcessor=\u5BF9\u4E8E\u67D0\u4E2A\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F, \u5DE5\u5382{0}\u8FD4\u56DE\u7684\u503C\u4E3A\u7A7A\u503C\u3002 - -apt.warn.CorrespondingClassFile=\u5DF2\u521B\u5EFA\u4E0E\u6E90\u6587\u4EF6 ''{0}'' \u76F8\u5BF9\u5E94\u7684\u7C7B\u6587\u4EF6\u3002 - -apt.warn.CorrespondingSourceFile=\u5DF2\u521B\u5EFA\u4E0E\u7C7B\u6587\u4EF6 ''{0}'' \u76F8\u5BF9\u5E94\u7684\u6E90\u6587\u4EF6\u3002 --- old/src/share/classes/com/sun/tools/apt/util/Bark.java 2012-01-19 16:21:31.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,174 +0,0 @@ -/* - * Copyright (c) 2004, 2011, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package com.sun.tools.apt.util; - -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.JCDiagnostic; -import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition; -import com.sun.tools.javac.util.Log; -import com.sun.tools.javac.util.JavacMessages; -import com.sun.tools.javac.util.Position; - -/** A subtype of Log for use in APT. - * - *

This is NOT part of any supported API. - * If you write code that depends on this, you do so at your own risk. - * This code and its internal interfaces are subject to change or - * deletion without notice. - */ -public class Bark extends Log { - /** The context key for the bark. */ - protected static final Context.Key barkKey = - new Context.Key(); - - /** - * Preregisters factories to create and use a Bark object for use as - * both a Log and a Bark. - */ - public static void preRegister(Context context) { - context.put(barkKey, new Context.Factory() { - public Bark make(Context c) { - return new Bark(c); - } - }); - context.put(Log.logKey, new Context.Factory() { - public Log make(Context c) { - return Bark.instance(c); - } - }); - } - - /** Get the Bark instance for this context. */ - public static Bark instance(Context context) { - Bark instance = context.get(barkKey); - if (instance == null) - instance = new Bark(context); - return instance; - } - - /** Specifies whether or not to ignore any diagnostics that are reported. - */ - private boolean ignoreDiagnostics; - - /** - * Factory for APT-specific diagnostics. - */ - private JCDiagnostic.Factory aptDiags; - - - /** - * Creates a Bark. - */ - protected Bark(Context context) { - super(context); // will register this object in context with Log.logKey - context.put(barkKey, this); - - // register additional resource bundle for APT messages. - JavacMessages aptMessages = JavacMessages.instance(context); - aptMessages.add("com.sun.tools.apt.resources.apt"); - aptDiags = new JCDiagnostic.Factory(aptMessages, "apt"); - - multipleErrors = true; - } - - /** - * Sets a flag indicating whether or not to ignore all diagnostics. - * When ignored, they are not reported to the output writers, not are they - * counted in the various counters. - * @param b If true, subsequent diagnostics will be ignored. - * @return the previous state of the flag - */ - public boolean setDiagnosticsIgnored(boolean b) { - boolean prev = ignoreDiagnostics; - ignoreDiagnostics = b; - return prev; - } - - /** - * Report a diagnostic if they are not currently being ignored. - */ - @Override - public void report(JCDiagnostic diagnostic) { - if (ignoreDiagnostics) - return; - - super.report(diagnostic); - } - - /** Report an error. - * @param key The key for the localized error message. - * @param args Fields of the error message. - */ - public void aptError(String key, Object... args) { - aptError(Position.NOPOS, key, args); - } - - /** Report an error, unless another error was already reported at same - * source position. - * @param pos The source position at which to report the error. - * @param key The key for the localized error message. - * @param args Fields of the error message. - */ - public void aptError(int pos, String key, Object ... args) { - report(aptDiags.error(source, new SimpleDiagnosticPosition(pos), key, args)); - } - - /** Report a warning, unless suppressed by the -nowarn option or the - * maximum number of warnings has been reached. - * @param key The key for the localized warning message. - * @param args Fields of the warning message. - */ - public void aptWarning(String key, Object... args) { - aptWarning(Position.NOPOS, key, args); - } - - /** Report a warning, unless suppressed by the -nowarn option or the - * maximum number of warnings has been reached. - * @param pos The source position at which to report the warning. - * @param key The key for the localized warning message. - * @param args Fields of the warning message. - */ - public void aptWarning(int pos, String key, Object ... args) { - report(aptDiags.warning(source, new SimpleDiagnosticPosition(pos), key, args)); - } - - /** Report a note, unless suppressed by the -nowarn option. - * @param key The key for the localized note message. - * @param args Fields of the note message. - */ - public void aptNote(String key, Object... args) { - aptNote(Position.NOPOS, key, args); - } - - /** Report a note, unless suppressed by the -nowarn option. - * @param pos The source position at which to report the note. - * @param key The key for the localized note message. - * @param args Fields of the note message. - */ - public void aptNote(int pos, String key, Object ... args) { - report(aptDiags.note(source, new SimpleDiagnosticPosition(pos), key, args)); - } -} --- old/test/tools/apt/Basics/Aggregate.java 2012-01-19 16:21:31.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,42 +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. - */ - - -public class Aggregate { - static { - System.out.println("xxyzzy"); - } - - private Aggregate() {} - - private static double hypot(double Berkeley, double SantaCruz) { - return 0.0; - } - - public int hashcode() {return 42;} - public boolean equals(Aggregate a) {return this == a;} - - public static void main(String[] argv) { - System.out.println("Hello World."); - } -} --- old/test/tools/apt/Basics/ClassAnnotations.java 2012-01-19 16:21:32.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,47 +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. - */ - - -import annot.*; -import annot.annot2.*; - -@MySimple("value") @MyMarker -@AnnotMarker @AnnotSimple("foo") -@AnnotMarker2 @AnnotSimple2("bar") -public class ClassAnnotations { - static double d; - - public void foo() { - return; - } - - private double bar(int baz) { - @AnnotShangri_la - int local = 0; - return (double) baz; - } - - static class NestedClass { - protected int field; - } -} --- old/test/tools/apt/Basics/FreshnessApf.java 2012-01-19 16:21:32.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,90 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Indirect test of whether source or class files are used to provide - * declaration information. - */ -public class FreshnessApf implements AnnotationProcessorFactory { - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new FreshnessAp(env); - } - - private static class FreshnessAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - FreshnessAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - System.out.println("Testing for freshness."); - boolean empty = true; - for (TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations()) { - for (FieldDeclaration fieldDecl: typeDecl.getFields() ) { - empty = false; - System.out.println(typeDecl.getQualifiedName() + - "." + fieldDecl.getSimpleName()); - - // Verify the declaration for the type of the - // field is a class with an annotation. - System.out.println(((DeclaredType) fieldDecl.getType()).getDeclaration().getAnnotationMirrors()); - if (((DeclaredType) fieldDecl.getType()).getDeclaration().getAnnotationMirrors().size() == 0) - env.getMessager().printError("Expected an annotation."); - } - } - - if (empty) - env.getMessager().printError("No fields encountered."); - } - } -} --- old/test/tools/apt/Basics/GenClass.java 2012-01-19 16:21:32.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,30 +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 trivial generic class to test the fix for 5018369. - */ - -class GenClass { -} --- old/test/tools/apt/Basics/Indirect.java 2012-01-19 16:21:32.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,31 +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. - */ - - -/* - * Class that is used to provide a pointer to another class - * declaration. - */ -public class Indirect { - Milk skim = null; -} --- old/test/tools/apt/Basics/Lacuna.java 2012-01-19 16:21:33.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -class Lacuna extends Missing {} --- old/test/tools/apt/Basics/MethodAnnotations.java 2012-01-19 16:21:33.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,47 +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. - */ - - -import annot.*; -import annot.annot2.*; - -public class MethodAnnotations { - static double d; - - @MySimple("value") @MyMarker - @AnnotMarker @AnnotSimple("foo") - @AnnotMarker2 @AnnotSimple2("bar") - public void foo() { - return; - } - - private double bar(int baz) { - @AnnotShangri_la - int local = 0; - return (double) baz; - } - - static class NestedClass { - protected int field; - } -} --- old/test/tools/apt/Basics/Milk.java 2012-01-19 16:21:33.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,34 +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. - */ - - -import java.lang.annotation.*; - -@Fresh -public class Milk { - // Moo. -} - -@Retention(RetentionPolicy.SOURCE) -@interface Fresh { -} --- old/test/tools/apt/Basics/MisMatch.java 2012-01-19 16:21:33.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,67 +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. - */ - - - -/** - * Class that uses constructs whose language and vm interpretation - * differ. - */ -public class MisMatch { - static final int constant = 3; - static int notConstant = 4; - private static strictfp class NestedClass { - } - - protected abstract class AbstractNestedClass { - /** - * Another doc comment. - * - * This one has multiple lines. - */ - void myMethod() throws RuntimeException , Error {} - - abstract void myAbstractMethod(); - } - - void VarArgsMethod1(Number... num) { - ; - } - - void VarArgsMethod2(float f, double d, Number... num) { - ; - } -} - -@interface Colors { -} - -interface Inter { - void interfaceMethod(); -} - -enum MyEnum { - RED, - GREEN, - BLUE; -} --- old/test/tools/apt/Basics/Misc.java 2012-01-19 16:21:33.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,49 +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. - */ - - -/* - * Class with miscellaneous structures to exercise printing. - */ - -import java.util.Collection; - -public final class Misc implements Marker2, Marker3 { - private static final long longConstant = Long.MAX_VALUE; - - private static final String asciispecials = "\t\n\u0007"; - - public void covar(Collection s) {return;} - - public void contravar(Collection s) {return;} - - public S varUse(int i) {return null;} - - Object o = (new Object() {}); // verify fix for 5019108 -} - -interface Marker1 {} - -interface Marker2 extends Marker1 {} - -interface Marker3 {} --- old/test/tools/apt/Basics/MyMarker.java 2012-01-19 16:21:34.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,27 +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. - */ - - - -public @interface MyMarker { -} --- old/test/tools/apt/Basics/MySimple.java 2012-01-19 16:21:34.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,28 +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. - */ - - - -public @interface MySimple { - String value() default "default"; -} --- old/test/tools/apt/Basics/NestedClassAnnotations.java 2012-01-19 16:21:34.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,50 +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. - */ - - -import annot.*; -import annot.annot2.*; - -public class NestedClassAnnotations { - static double d; - - public void foo() { - return; - } - - public static void baz() { - } - - private double bar(int baz) { - @AnnotShangri_la - int local = 0; - return (double) baz; - } - - @MySimple("value") @MyMarker - @AnnotMarker @AnnotSimple("foo") - @AnnotMarker2 @AnnotSimple2("bar") - static class NestedClass { - protected int field; - } -} --- old/test/tools/apt/Basics/ParameterAnnotations.java 2012-01-19 16:21:34.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,47 +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. - */ - - -import annot.*; -import annot.annot2.*; - -public class ParameterAnnotations { - static double d; - - public void foo() { - return; - } - - private double bar(@MySimple("value") @MyMarker - @AnnotMarker @AnnotSimple("foo") - @AnnotMarker2 @AnnotSimple2("bar") - int baz) { - @AnnotShangri_la - int local = 0; - return (double) baz; - } - - static class NestedClass { - protected int field; - } -} --- old/test/tools/apt/Basics/StaticFieldAnnotations.java 2012-01-19 16:21:34.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,47 +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. - */ - - -import annot.*; -import annot.annot2.*; - -public class StaticFieldAnnotations { - @MySimple("value") @MyMarker - @AnnotMarker @AnnotSimple("foo") - @AnnotMarker2 @AnnotSimple2("bar") - static double d; - - public void foo() { - return; - } - - private double bar(int baz) { - @AnnotShangri_la - int local = 0; - return (double) baz; - } - - static class NestedClass { - protected int field; - } -} --- old/test/tools/apt/Basics/StaticMethodAnnotations.java 2012-01-19 16:21:35.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,50 +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. - */ - - -import annot.*; -import annot.annot2.*; - -public class StaticMethodAnnotations { - static double d; - - public void foo() { - return; - } - - @MySimple("value") @MyMarker - @AnnotMarker @AnnotSimple("foo") - @AnnotMarker2 @AnnotSimple2("bar") - public static void baz() { - } - - private double bar(int baz) { - @AnnotShangri_la - int local = 0; - return (double) baz; - } - - static class NestedClass { - protected int field; - } -} --- old/test/tools/apt/Basics/TestGetPackageApf.java 2012-01-19 16:21:35.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,118 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * This class is used to test getPackage on classes that are - * not already loaded. - */ -public class TestGetPackageApf implements AnnotationProcessorFactory { - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new TestGetPackageAp(env); - } - - private static class TestGetPackageAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - TestGetPackageAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - boolean failed = false; - String packageNames[] = { - "", // unnamed package - "java.lang.annotation", - "java.lang", - "java.util", - "java.awt.image.renderable", - "foo.bar", - "foo", - "p1", - // "p1.p2", // class p1.p2 obscures package p1.p2 - }; - - for(String packageName: packageNames) { - PackageDeclaration p = env.getPackage(packageName); - if (p == null) { - failed = true; - System.err.println("ERROR: No declaration found for ``" + packageName + "''."); - } - else if (!packageName.equals(p.getQualifiedName())) { - failed = true; - System.err.println("ERROR: Unexpected package name; expected " + packageName + - "got " + p.getQualifiedName()); - } - } - - String notPackageNames[] = { - "XXYZZY", - "java.lang.String", - "1", - "1.2", - "3.14159", - "To be or not to be is a tautology", - "1+2=3", - }; - - for(String notPackageName: notPackageNames) { - PackageDeclaration p = env.getPackage(notPackageName); - if (p != null) { - failed = true; - System.err.println("ERROR: Unexpected declaration: ``" + p + "''."); - } - } - - if (failed) - throw new RuntimeException("Errors found testing getPackage."); - } - } -} --- old/test/tools/apt/Basics/TestGetTypeDeclarationApf.java 2012-01-19 16:21:35.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,140 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * This class is used to test getTypeDeclaration on classes that are - * not already loaded. - */ -public class TestGetTypeDeclarationApf implements AnnotationProcessorFactory { - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new TestGetTypeDeclarationAp(env); - } - - private static class TestGetTypeDeclarationAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - TestGetTypeDeclarationAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - String classNames[] = { - "java.lang.String", // should be already available - "java.lang.Thread.State", // should be already available - "java.util.Collection", - "java.util.Map.Entry", - "foo.bar.Baz.Xxyzzy.Wombat", - "foo.bar.Baz.Xxyzzy", - "foo.bar.Baz", - "foo.bar.Quux", - "foo.bar.Quux.Xxyzzy", - "foo.bar.Quux.Xxyzzy.Wombat", - "NestedClassAnnotations", - "NestedClassAnnotations.NestedClass", - }; - - for(String className: classNames) { - TypeDeclaration t = env.getTypeDeclaration(className); - if (t == null) - throw new RuntimeException("No declaration found for " + className); - if (! t.getQualifiedName().equals(className)) - throw new RuntimeException("Class with wrong name found for " + className); - } - - // Test obscuring behavior; i.e. nested class C1 in class - // p1 where p1 is member of package p2 should be favored - // over class C1 in package p1.p2. - String nonuniqueCanonicalNames[] = { - "p1.p2.C1", - }; - for(String className: nonuniqueCanonicalNames) { - ClassDeclaration c1 = (ClassDeclaration) env.getTypeDeclaration(className); - ClassDeclaration c2 = (ClassDeclaration) c1.getDeclaringType(); - PackageDeclaration p = env.getPackage("p1"); - - if (!p.equals(c1.getPackage()) || - c2 == null || - !"C1".equals(c1.getSimpleName())) { - throw new RuntimeException("Bad class declaration"); - } - } - - String notClassNames[] = { - "", - "XXYZZY", - "java", - "java.lang", - "java.lang.Bogogogous", - "1", - "1.2", - "3.14159", - "To be or not to be is a tautology", - "1+2=3", - "foo+.x", - "foo+x", - "+", - "?", - "***", - "java.*", - }; - - for(String notClassName: notClassNames) { - Declaration t = env.getTypeDeclaration(notClassName); - if (t != null) { - System.err.println("Unexpected declaration:" + t); - throw new RuntimeException("Declaration found for ``" + notClassName + "''."); - } - } - - } - } -} --- old/test/tools/apt/Basics/annot/AnnotMarker.java 2012-01-19 16:21:35.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,28 +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. - */ - - -package annot; - -public @interface AnnotMarker { -} --- old/test/tools/apt/Basics/annot/AnnotShangri_la.java 2012-01-19 16:21:35.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,34 +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. - */ - - -package annot; - -/* - * This annotation is used by the tests only to annotate local - * variables; therefore, this annotation should not affect the - * discovery process and should not appear in the list printed by - * -XListAnnotationTypes. - */ -public @interface AnnotShangri_la { -} --- old/test/tools/apt/Basics/annot/AnnotSimple.java 2012-01-19 16:21:36.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,29 +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. - */ - - -package annot; - -public @interface AnnotSimple { - String value() default "default"; -} --- old/test/tools/apt/Basics/annot/annot2/AnnotMarker2.java 2012-01-19 16:21:36.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,28 +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. - */ - - -package annot.annot2; - -public @interface AnnotMarker2 { -} --- old/test/tools/apt/Basics/annot/annot2/AnnotSimple2.java 2012-01-19 16:21:36.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,29 +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. - */ - - -package annot.annot2; - -public @interface AnnotSimple2 { - String value() default "default"; -} --- old/test/tools/apt/Basics/com.sun.mirror.apt.AnnotationProcessorFactory 2012-01-19 16:21:36.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -NullAPF --- old/test/tools/apt/Basics/foo/bar/Baz.java 2012-01-19 16:21:36.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,33 +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. - */ - - -package foo.bar; - -public class Baz { - public class Xxyzzy { - public class Wombat { - } - } - -} --- old/test/tools/apt/Basics/foo/bar/Quux.java 2012-01-19 16:21:37.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,33 +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. - */ - - -package foo.bar; - -public class Quux { - public class Xxyzzy { - public class Wombat { - } - } - -} --- old/test/tools/apt/Basics/golden.txt 2012-01-19 16:21:37.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Set of annotations found:[MyMarker, MySimple, annot.AnnotMarker, annot.AnnotSimple, annot.annot2.AnnotMarker2, annot.annot2.AnnotSimple2] --- old/test/tools/apt/Basics/goldenAggregate.txt 2012-01-19 16:21:37.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,14 +0,0 @@ - -public class Aggregate { - - private Aggregate(); - - private static double hypot(double arg0, - double arg1); - - public static void main(java.lang.String[] arg0); - - public boolean equals(Aggregate arg0); - - public int hashcode(); -} --- old/test/tools/apt/Basics/p1/p2.java 2012-01-19 16:21:37.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,29 +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. - */ - - -package p1; - -public class p2 { - public static class C1 {} -} --- old/test/tools/apt/Basics/p1/p2/C1.java 2012-01-19 16:21:38.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,28 +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. - */ - - -package p1.p2; - -public class C1 { -} --- old/test/tools/apt/Basics/print.sh 2012-01-19 16:21:38.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,102 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 2004, 2009, 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. -# - -# @test -# @bug 5008759 4998341 5018369 5032476 5060121 5096932 5096931 -# @run shell ../verifyVariables.sh -# @run shell print.sh -# @summary test availabilty of print option -# @author Joseph D. Darcy - -OS=`uname -s`; -case "${OS}" in - CYGWIN* ) - DIFFOPTS="--strip-trailing-cr" - ;; - - * ) - ;; -esac - -# Compile file directly, without TESTJAVACOPTS -# Don't use @build or @compile as these implicitly use jtreg -javacoption values -# and it is important that this file be compiled as expected, for later comparison -# against a golden file. -"${TESTJAVA}/bin/javac" ${TESTTOOLVMOPTS} -d ${TESTCLASSES} ${TESTSRC}/Aggregate.java - -# Construct path to apt executable -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} \ --print " - -printf "%s\n" "APT = ${APT}" - -PRINT_FILES="${TESTSRC}/MisMatch.java \ -${TESTSRC}/GenClass.java \ -${TESTSRC}/Misc.java \ -${TESTSRC}/Lacuna.java" - -for i in ${PRINT_FILES} -do - # Delete any existing class file - FILENAME=`basename $i .java` - rm -f ${FILENAME}.class - - printf "%s\n" "Printing ${i}" - ${APT} ${i} - - RESULT=$? - case "$RESULT" in - 0 ) - ;; - - * ) - echo "Problem printing file ${i}." - exit 1 - esac - - # Verify compilation did not occur - if [ -f ${FILENAME}.class ]; then - printf "Improper compilation occured for %s.\n" ${i} - exit 1 - fi - -done - -# check for mutliple methods and no static initializer - -${APT} -XclassesAsDecls -cp ${TESTCLASSES} -print Aggregate > aggregate.txt -diff ${DIFFOPTS} aggregate.txt ${TESTSRC}/goldenAggregate.txt - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "Expected output not received" - exit 1 -esac - -exit 0 --- old/test/tools/apt/Compile/ClassDeclApf.java 2012-01-19 16:21:38.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,120 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import java.io.*; - -import static java.util.Collections.*; - -/* - * This class is used to test the ability to store static state across - * apt rounds. - */ -public class ClassDeclApf implements AnnotationProcessorFactory { - static int round = -1; - - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new ClassDeclAp(env); - } - - private static class ClassDeclAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - ClassDeclAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - // Simple inefficient drain - void drain(InputStream is, OutputStream os) { - try { - while (is.available() > 0 ) - os.write(is.read()); - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - - } - - public void process() { - int size = env.getSpecifiedTypeDeclarations().size(); - - try { - round++; - switch (size) { - case 0: - if (round == 0) { - drain(new FileInputStream("./tmp/classes/Round1Class.class"), - env.getFiler().createClassFile("Round1Class")); - } else - throw new RuntimeException("Got " + size + " decl's in round " + round); - break; - - case 1: - if (round == 1) { - drain(new FileInputStream("./tmp/classes/AhOneClass.class"), - env.getFiler().createClassFile("AhOneClass")); - - drain(new FileInputStream("./tmp/classes/AndAhTwoClass.class"), - env.getFiler().createClassFile("AndAhTwoClass")); - } else - throw new RuntimeException("Got " + size + " decl's in round " + round); - break; - case 2: - if (round != 2) { - throw new RuntimeException("Got " + size + " decl's in round " + round); - } - break; - } - - } catch (java.io.IOException ioe) { - throw new RuntimeException(); - } - - } - - } -} --- old/test/tools/apt/Compile/ClassDeclApf2.java 2012-01-19 16:21:38.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,123 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import java.io.*; - -import static java.util.Collections.*; - -/* - * This class is used to test the the interaction of -XclassesAsDecls - * with command line options handling. - */ -public class ClassDeclApf2 implements AnnotationProcessorFactory { - static int round = -1; - - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new ClassDeclAp(env); - } - - private static class ClassDeclAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - ClassDeclAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - // Simple inefficient drain - void drain(InputStream is, OutputStream os) { - try { - while (is.available() > 0 ) - os.write(is.read()); - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - } - - public void process() { - int size = env.getSpecifiedTypeDeclarations().size(); - Filer f = env.getFiler(); - - try { - round++; - switch (size) { - case 3: - if (round == 0) { - drain(new FileInputStream("./tmp/classes/Round1Class.class"), - f.createClassFile("Round1Class")); - } else - throw new RuntimeException("Got " + size + " decl's in round " + round); - break; - - case 1: - if (round == 1) { - f.createSourceFile("AhOne").println("public class AhOne {}"); - System.out.println("Before writing AndAhTwoClass"); - drain(new FileInputStream("./tmp/classes/AndAhTwoClass.class"), - f.createClassFile("AndAhTwoClass")); - System.out.println("After writing AndAhTwoClass"); - } else - throw new RuntimeException("Got " + size + " decl's in round " + round); - break; - - case 2: - if (round != 2) { - throw new RuntimeException("Got " + size + " decl's in round " + round); - } - break; - default: - throw new RuntimeException("Unexpected number of declarations:" + size + - "\n Specified:" + env.getSpecifiedTypeDeclarations() + - "\n Included:" + env.getTypeDeclarations() ); - } - - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - } - } -} --- old/test/tools/apt/Compile/Dummy1.java 2012-01-19 16:21:39.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -@Round1 class Dummy1{} --- old/test/tools/apt/Compile/ErrorAPF.java 2012-01-19 16:21:39.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,82 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Construct a processor that does nothing but report an error. - */ -public class ErrorAPF implements AnnotationProcessorFactory { - static class ErrorAP implements AnnotationProcessor { - AnnotationProcessorEnvironment env; - ErrorAP(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - Messager messager = env.getMessager(); - messager.printError("It's a mad, mad, mad, mad world"); - messager.printError("Something wicked this way comes"); - - for(TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations()) - messager.printError(typeDecl.getPosition(), "Boring class name"); - } - } - - static Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new ErrorAP(env); - } -} --- old/test/tools/apt/Compile/HelloAnnotation.java 2012-01-19 16:21:39.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,8 +0,0 @@ -/* /nodynamiccopyright/ */ -import java.lang.annotation.*; -@Target(ElementType.ANNOTATION_TYPE) -@Retention(RetentionPolicy.RUNTIME) -@HelloAnnotation -@interface HelloAnnotation { - Target value() default @Target(ElementType.METHOD); -} --- old/test/tools/apt/Compile/HelloWorld.java 2012-01-19 16:21:39.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,6 +0,0 @@ -/* /nodynamiccopyright/ */ -public class HelloWorld { - public static void main(String argv[]) { - System.out.println("Hello World."); - } -} --- old/test/tools/apt/Compile/Round1Apf.java 2012-01-19 16:21:39.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,121 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import java.io.File; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Factory to help test updated discovery policy. - */ -public class Round1Apf implements AnnotationProcessorFactory { - // Process @Round1 - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("Round1")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - private static int round = 0; - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new Round1Ap(env, atds.size() == 0); - } - - private static class Round1Ap implements AnnotationProcessor, RoundCompleteListener { - private final AnnotationProcessorEnvironment env; - private final boolean empty; - - Round1Ap(AnnotationProcessorEnvironment env, boolean empty) { - this.env = env; - this.empty = empty; - } - - public void process() { - Round1Apf.round++; - try { - if (!empty) { - Filer f = env.getFiler(); - f.createSourceFile("Dummy2").println("@Round2 class Dummy2{}"); - f.createTextFile(Filer.Location.SOURCE_TREE, - "", - new File("foo.txt"), - null).println("xxyzzy"); - f.createClassFile("Vacant"); - f.createBinaryFile(Filer.Location.CLASS_TREE, - "", - new File("onezero")); - } - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - - System.out.println("Round1Apf: " + round); - env.addListener(this); - } - - public void roundComplete(RoundCompleteEvent event) { - RoundState rs = event.getRoundState(); - - if (event.getSource() != this.env) - throw new RuntimeException("Wrong source!"); - - Filer f = env.getFiler(); - try { - f.createSourceFile("AfterTheBell").println("@Round2 class AfterTheBell{}"); - throw new RuntimeException("Inappropriate source file creation."); - } catch (java.io.IOException ioe) {} - - - System.out.printf("\t[final round: %b, error raised: %b, "+ - "source files created: %b, class files created: %b]%n", - rs.finalRound(), - rs.errorRaised(), - rs.sourceFilesCreated(), - rs.classFilesCreated()); - - System.out.println("Round1Apf: " + round + " complete"); - } - } -} --- old/test/tools/apt/Compile/Round2Apf.java 2012-01-19 16:21:40.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,126 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import java.io.IOException; -import java.io.File; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Factory to help test updated discovery policy. - */ -public class Round2Apf implements AnnotationProcessorFactory { - // Process @Round2 - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("Round2")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - private static int round = 0; - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new Round2Ap(env, atds.size() == 0); - } - - private static class Round2Ap implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - private final boolean empty; - - Round2Ap(AnnotationProcessorEnvironment env, boolean empty) { - this.env = env; - this.empty = empty; - } - - public void process() { - Round2Apf.round++; - Filer f = env.getFiler(); - try { - f.createSourceFile("Dummy2").println("@Round2 class Dummy2{}"); - throw new RuntimeException("Duplicate file creation allowed"); - } catch (IOException io) {} - - try { - f.createTextFile(Filer.Location.SOURCE_TREE, - "", - new File("foo.txt"), - null).println("xxyzzy"); - throw new RuntimeException("Duplicate file creation allowed"); - } catch (IOException io) {} - - try { - f.createClassFile("Vacant"); - throw new RuntimeException("Duplicate file creation allowed"); - } catch (IOException io) {} - - try { - f.createBinaryFile(Filer.Location.CLASS_TREE, - "", - new File("onezero")); - throw new RuntimeException("Duplicate file creation allowed"); - } catch (IOException io) {} - - - - try { - if (!empty) { - // Create corresponding files of opposite kind to - // the files created by Round1Apf; these should - // only generate warnings - f.createClassFile("Dummy2"); - f.createSourceFile("Vacant").println("class Vacant{}"); - - f.createSourceFile("Dummy3").println("@Round3 class Dummy3{}"); - - // This should generated a warning too - f.createClassFile("Dummy3"); - } - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - - System.out.println("Round2Apf: " + round); - } - } -} --- old/test/tools/apt/Compile/Round3Apf.java 2012-01-19 16:21:40.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,85 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Factory to help test updated discovery policy. - */ -public class Round3Apf implements AnnotationProcessorFactory { - // Process @Round3 - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("Round3")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - private static int round = 0; - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new Round3Ap(env, atds.size() == 0); - } - - private static class Round3Ap implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - private final boolean empty; - - Round3Ap(AnnotationProcessorEnvironment env, boolean empty) { - this.env = env; - this.empty = empty; - } - - public void process() { - Round3Apf.round++; - try { - if (!empty) - env.getFiler().createSourceFile("Dummy4").println("@Round4 class Dummy4{}"); - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - - System.out.println("Round3Apf: " + round); - } - } -} --- old/test/tools/apt/Compile/Round4Apf.java 2012-01-19 16:21:40.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,98 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Factory to help test updated discovery policy. - */ -public class Round4Apf implements AnnotationProcessorFactory { - // Process @Round4 - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("Round4")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - private static int round = 0; - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new Round4Ap(env, atds.size() == 0); - } - - private static class Round4Ap implements AnnotationProcessor, RoundCompleteListener { - private final AnnotationProcessorEnvironment env; - private final boolean empty; - - Round4Ap(AnnotationProcessorEnvironment env, boolean empty) { - this.env = env; - this.empty = empty; - } - - public void process() { - Round4Apf.round++; - try { - if (!empty) - env.getFiler().createSourceFile("Dummy5").println("@Round5 class Dummy5{}"); - } catch (java.io.IOException ioe) { - throw new RuntimeException(ioe); - } - - System.out.println("Round4Apf: " + round); - env.addListener(this); - } - - public void roundComplete(RoundCompleteEvent event) { - RoundState rs = event.getRoundState(); - - System.out.println("\t" + rs.toString()); - - System.out.println("Round4Apf: " + round + " complete"); - - if (rs.finalRound()) { - System.out.println("Valediction"); - } - } - } -} --- old/test/tools/apt/Compile/Rounds.java 2012-01-19 16:21:40.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,33 +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. - */ - - -@interface Round1{} - -@interface Round2{} - -@interface Round3{} - -@interface Round4{} - -@interface Round5{} --- old/test/tools/apt/Compile/StaticApf.java 2012-01-19 16:21:40.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,104 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; - -/* - * This class is used to test the ability to store static state across - * apt rounds. - */ -public class StaticApf implements AnnotationProcessorFactory { - static int round = -1; - - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new StaticAp(env); - } - - private static class StaticAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - StaticAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - int size = env.getSpecifiedTypeDeclarations().size(); - - try { - round++; - switch (size) { - case 0: - if (round == 0) { - env.getFiler().createSourceFile("Round1").print("class Round1 {}"); - } else - throw new RuntimeException("Got " + size + " decl's in round " + round); - break; - - case 1: - if (round == 1) { - env.getFiler().createSourceFile("AhOne").print("class AhOne {}"); - env.getFiler().createSourceFile("AndAhTwo").print("class AndAhTwo {}"); - env.getFiler().createClassFile("Foo"); - } else - throw new RuntimeException("Got " + size + " decl's in round " + round); - break; - case 2: - if (round != 2) { - throw new RuntimeException("Got " + size + " decl's in round " + round); - } - break; - } - - } catch (java.io.IOException ioe) { - throw new RuntimeException(); - } - - } - - } -} --- old/test/tools/apt/Compile/WarnAPF.java 2012-01-19 16:21:41.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,101 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Map; -import java.util.Arrays; - - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Construct a processor that does nothing but report a warning. - */ -public class WarnAPF implements AnnotationProcessorFactory { - static class WarnAP implements AnnotationProcessor { - AnnotationProcessorEnvironment env; - WarnAP(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - Messager messager = env.getMessager(); - messager.printWarning("Beware the ides of March!"); - - for(TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations()) { - messager.printNotice(typeDecl.getPosition(), "You are about to be warned"); - messager.printWarning(typeDecl.getPosition(), "Strange class name"); - - for(AnnotationMirror annotMirror : typeDecl.getAnnotationMirrors()) { - messager.printNotice("MIRROR " + annotMirror.getPosition().toString()); - - Map map = - annotMirror.getElementValues(); - if (map.keySet().size() > 0) - for(AnnotationTypeElementDeclaration key : map.keySet() ) { - AnnotationValue annotValue = map.get(key); - Object o = annotValue.getValue(); - // asserting getPosition is non-null - messager.printNotice("VALUE " + annotValue.getPosition().toString()); - } - else { - Collection ateds = - annotMirror.getAnnotationType().getDeclaration().getMethods(); - for(AnnotationTypeElementDeclaration ated : ateds ) { - AnnotationValue annotValue = ated.getDefaultValue(); - Object o = annotValue.getValue(); - messager.printNotice("VALUE " + "HelloAnnotation.java:5"); - } - } - } - } - } - } - - static final Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = unmodifiableCollection(Arrays.asList(types)); - } - public Collection supportedAnnotationTypes() {return supportedTypes;} - - static final Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = unmodifiableCollection(Arrays.asList(options)); - } - public Collection supportedOptions() {return supportedOptions;} - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new WarnAP(env); - } -} --- old/test/tools/apt/Compile/WrappedStaticApf.java 2012-01-19 16:21:41.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,36 +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. - */ - - -import com.sun.mirror.apt.AnnotationProcessorFactory; - -/* - * Pass an instantiated StaticApf object to the - * com.sun.tools.apt.Main.process entry point. - */ -public class WrappedStaticApf { - public static void main(String argv[]) { - AnnotationProcessorFactory factory = new StaticApf(); - System.exit(com.sun.tools.apt.Main.process(factory, argv)); - } -} --- old/test/tools/apt/Compile/compile.sh 2012-01-19 16:21:41.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,533 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 2004, 2009, 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. -# - -# @test -# @bug 5033855 4990902 5023880 5043516 5048534 5048535 5041279 5048539 5067261 5068145 5023881 4996963 5095716 6191667 6433634 -# @run shell ../verifyVariables.sh -# @build ErrorAPF -# @build WarnAPF -# @build StaticApf -# @build ClassDeclApf -# @build ClassDeclApf2 -# @build Rounds -# @build Round1Apf Round2Apf Round3Apf Round4Apf -# @build WrappedStaticApf -# @run shell compile.sh -# @summary Test simple usages of apt, including delegating to javac -# @author Joseph D. Darcy - -# If the file *does* exist, exit with an error -TestNoFile() { - if [ -f ${1} ]; then - printf "%s\n" "File ${1} found." - exit 1 - fi -} - -# If the file does not exist, exit with an error -TestFile() { - if [ ! -f ${1} ]; then - printf "%s\n" "File ${1} not found." - exit 1 - fi -} - - -OS=`uname -s`; -case "${OS}" in - Windows* ) - SEP=";" - ;; - - CYGWIN* ) - DIFFOPTS="--strip-trailing-cr" - SEP=";" - ;; - - * ) - SEP=":" - ;; -esac - - -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -XDsuppress-tool-api-removal-message " -JAVA="${TESTJAVA}/bin/java ${TESTVMOPTS} " -JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} " - -unset CLASSPATH - - -# --------------------------------------------------------------- -echo "Verify that source 1.6 is not supported -rm -f HelloWorld.class - -printf "%s\n" "-source 1.6" > options0 -printf "%s\n" "${TESTSRC}/HelloWorld.java" >> options0 -${APT} @options0 - -RESULT=$? -case "$RESULT" in - 0 ) - echo "FAILED: accepted source 1.6" - exit 1 - ;; -esac - -TestNoFile "HelloWorld.class" - -# --------------------------------------------------------------- - -echo "Verify that target 1.6 is not supported -rm -f HelloWorld.class - -printf "%s\n" "-target 1.6" > options00 -printf "%s\n" "${TESTSRC}/HelloWorld.java" >> options00 -${APT} @options00 - -RESULT=$? -case "$RESULT" in - 0 ) - echo "FAILED: accepted target 1.6" - exit 1 - ;; -esac - -TestNoFile "HelloWorld.class" - -# --------------------------------------------------------------- - -echo "Testing javac pass-through with -A in options file" -rm -f HelloWorld.class - -printf "%s\n" "-A" > options1 -printf "%s\n" "-d ." >> options1 -printf "%s\n" "${TESTSRC}/HelloWorld.java" >> options1 -${APT} @options1 - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: javac with -A in options file did not compile" - exit 1 -esac -TestFile "HelloWorld.class" - - -# --------------------------------------------------------------- - -echo "Verifying reporting an error will prevent compilation" -rm -f HelloWorld.class -if [ ! -f HelloWorld.java ]; then - cp ${TESTSRC}/HelloWorld.java . -fi - - -printf "%s\n" "-factory ErrorAPF" > options2 -printf "%s\n" "-d ." >> options2 -printf "%s\n" "-cp ${TESTCLASSES}" >> options2 -printf "%s\n" "HelloWorld.java" >> options2 -${APT} @options2 2> output - -TestNoFile "HelloWorld.class" - -diff ${DIFFOPTS} output ${TESTSRC}/golden.txt - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: did not record expected error messages" - exit 1 -esac - - - -# --------------------------------------------------------------- - -echo "Verifying reporting a warning *won't* prevent compilation" - -rm -f HelloAnnotation.class -if [ ! -f HelloAnnotation.java ]; then - cp ${TESTSRC}/HelloAnnotation.java . -fi - - -printf "%s\n" "-factory WarnAPF" > options3 -printf "%s\n" "-d ." >> options3 -printf "%s\n" "-cp ${TESTCLASSES}" >> options3 -printf "%s\n" "HelloAnnotation.java" >> options3 -${APT} @options3 2> output - -diff ${DIFFOPTS} output ${TESTSRC}/goldenWarn.txt - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: did not record expected warning messages" - exit 1 -esac - -TestFile "HelloAnnotation.class" - -# --------------------------------------------------------------- - -echo "Verifying static state is available across apt rounds; -factory, -cp" - -mkdir -p ./src -mkdir -p ./class - -rm -Rf ./src/* -rm -Rf ./class/* - -printf "%s\n" "-factory StaticApf" > options4 -printf "%s\n" "-s ./src" >> options4 -printf "%s\n" "-d ./class" >> options4 -printf "%s\n" "-cp ${TESTCLASSES}" >> options4 -# printf "%s\n" "-XPrintAptRounds" >> options4 -${APT} @options4 - -TestFile "./class/AndAhTwo.class" - -# --------------------------------------------------------------- - -echo "Verifying static state is available across apt rounds; -factory, -factorypath" - -rm -Rf ./src/* -rm -Rf ./class/* - -printf "%s\n" "-factory StaticApf" > options5 -printf "%s\n" "-s ./src" >> options5 -printf "%s\n" "-d ./class" >> options5 -printf "%s\n" "-factorypath ${TESTCLASSES}" >> options5 -# printf "%s\n" "-XPrintAptRounds" >> options5 -${APT} @options5 - -TestFile "./class/AndAhTwo.class" - -# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -# Create jar file for StaticApf -JAR="${TESTJAVA}/bin/jar " -mkdir -p META-INF/services -cp ${TESTSRC}/servicesStaticApf META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTCLASSES}/StaticApf*.class . -${JAR} cf0 staticApf.jar StaticApf*.class META-INF - -# --------------------------------------------------------------- - -echo "Verifying static state is available across apt rounds; -cp" - -rm -Rf ./src/* -rm -Rf ./class/* - -printf "%s\n" "-cp staticApf.jar" > options6 -printf "%s\n" "-s ./src" >> options6 -printf "%s\n" "-d ./class" >> options6 -printf "%s\n" "-XPrintAptRounds" >> options6 -${APT} @options6 - -TestFile "./class/AndAhTwo.class" - -# --------------------------------------------------------------- - -echo "Verifying static state is available across apt rounds; -factorypath" - -rm -Rf ./src/* -rm -Rf ./class/* - -printf "%s\n" "-factorypath staticApf.jar" > options7 -printf "%s\n" "-s ./src" >> options7 -printf "%s\n" "-d ./class" >> options7 -printf "%s\n" "-XPrintAptRounds" >> options7 -${APT} @options7 - -TestFile "./class/AndAhTwo.class" - -# --------------------------------------------------------------- - -echo "Verifying -XclassesAsDecls handles class files properly" - -rm -Rf ./src/* -rm -Rf ./class/* - -mkdir -p ./tmp/classes - -${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AhOneClass.java ${TESTSRC}/src/AndAhTwoClass.java - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: javac failed to succesfully compile." - exit 1 -esac - -printf "%s\n" "-factorypath ${TESTCLASSES}" > options7a -printf "%s\n" "-factory ClassDeclApf" >> options7a -printf "%s\n" "-s ./src" >> options7a -printf "%s\n" "-d ./class" >> options7a -printf "%s\n" "-XPrintAptRounds" >> options7a -printf "%s\n" "-XclassesAsDecls" >> options7a -${APT} @options7a - -TestFile "./class/AndAhTwoClass.class" - -# --------------------------------------------------------------- - -echo "Verifying -XclassesAsDecls works with command-line arguments" - -rm -Rf ./src/* -rm -Rf ./class/* -rm -Rf ./tmp/classes - -mkdir -p ./tmp/classes - -${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AndAhTwoClass.java - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: javac failed to succesfully compile." - exit 1 -esac - -printf "%s\n" "-factorypath ${TESTCLASSES}" > options7b -printf "%s\n" "-factory ClassDeclApf2" >> options7b -printf "%s\n" "-XPrintAptRounds" >> options7b -printf "%s\n" "-XclassesAsDecls" >> options7b -printf "%s\n" "-cp ${TESTCLASSES}" >> options7b -printf "%s\n" "ErrorAPF" >> options7b -printf "%s\n" "WarnAPF" >> options7b -printf "%s\n" "-s ./src" >> options7b -printf "%s\n" "-d ./class" >> options7b -printf "%s\n" "ClassDeclApf" >> options7b -${APT} @options7b - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: apt exited with an error code." - exit 1 -esac - -TestFile "./class/AndAhTwoClass.class" -TestFile "./class/AhOne.class" - -# --------------------------------------------------------------- - -echo "Verifying -XclassesAsDecls works with all source files" - -rm -Rf ./src/* -rm -Rf ./class/* -rm -Rf ./tmp/classes - -mkdir -p ./tmp/classes - -${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AndAhTwoClass.java - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: javac failed to succesfully compile." - exit 1 -esac - -printf "%s\n" "-factorypath ${TESTCLASSES}" > options7c -printf "%s\n" "-factory ClassDeclApf2" >> options7c -printf "%s\n" "-s ./src" >> options7c -printf "%s\n" "-d ./class" >> options7c -printf "%s\n" "-sourcepath ${TESTSRC}" >> options7c -printf "%s\n" "${TESTSRC}/HelloAnnotation.java" >> options7c -printf "%s\n" "${TESTSRC}/HelloWorld.java" >> options7c -printf "%s\n" "${TESTSRC}/Dummy1.java" >> options7c -printf "%s\n" "-XPrintAptRounds" >> options7c -printf "%s\n" "-XclassesAsDecls" >> options7c -printf "%s\n" "-cp ${TESTCLASSES}" >> options7c -${APT} @options7c - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: apt exited with an error code." - exit 1 -esac - -TestFile "./class/AndAhTwoClass.class" -TestFile "./class/AhOne.class" -TestFile "./class/HelloWorld.class" - -# --------------------------------------------------------------- - -echo "Verifying -XclassesAsDecls works with mixed class and source files" - -rm -Rf ./src/* -rm -Rf ./class/* -rm -Rf ./tmp/classes - -mkdir -p ./tmp/classes - -${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AndAhTwoClass.java - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: javac failed to succesfully compile." - exit 1 -esac - -printf "%s\n" "-factorypath ${TESTCLASSES}" > options7d -printf "%s\n" "-factory ClassDeclApf2" >> options7d -printf "%s\n" "-s ./src" >> options7d -printf "%s\n" "-XclassesAsDecls" >> options7d -printf "%s\n" "ClassDeclApf" >> options7d -printf "%s\n" "-d ./class" >> options7d -printf "%s\n" "ErrorAPF" >> options7d -printf "%s\n" "-XPrintAptRounds" >> options7d -printf "%s\n" "${TESTSRC}/HelloWorld.java" >> options7d -printf "%s\n" "-cp ${TESTCLASSES}" >> options7d -${APT} @options7d - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: apt exited with an error code." - exit 1 -esac - -TestFile "./class/AndAhTwoClass.class" -TestFile "./class/AhOne.class" -TestFile "./class/HelloWorld.class" - -# --------------------------------------------------------------- - -echo "Testing productive factories are called on subsequent rounds" - -rm -Rf ./src/* -rm -Rf ./class/* - -rm -Rf META-INF/services/* -cp ${TESTSRC}/servicesRound1 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTCLASSES}/Round1Apf*.class . -${JAR} cf0 round1Apf.jar Round1Apf*.class META-INF - -rm -Rf META-INF/services/* -cp ${TESTSRC}/servicesRound2 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTCLASSES}/Round2Apf*.class . -${JAR} cf0 round2Apf.jar Round2Apf*.class META-INF - -rm -Rf META-INF/services/* -cp ${TESTSRC}/servicesRound3 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTCLASSES}/Round3Apf*.class . -${JAR} cf0 round3Apf.jar Round3Apf*.class META-INF - -rm -Rf META-INF/services/* -cp ${TESTSRC}/servicesRound4 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTCLASSES}/Round4Apf*.class . -${JAR} cf0 round4Apf.jar Round4Apf*.class META-INF - -cp ${TESTCLASSES}/Round?.class . -${JAR} cf0 rounds.jar Round?.class - -# cleanup file to prevent accidental discovery in current directory -rm -Rf META-INF/services/* - -printf "%s\n" "-factorypath round1Apf.jar${SEP}round2Apf.jar${SEP}round3Apf.jar${SEP}round4Apf.jar" > options8 -printf "%s\n" "-classpath rounds.jar" >> options8 -printf "%s\n" "-s ./src" >> options8 -printf "%s\n" "-d ./class" >> options8 -#printf "%s\n" "-XPrintFactoryInfo" >> options8 -#printf "%s\n" "-XPrintAptRounds" >> options8 -printf "%s\n" "${TESTSRC}/Dummy1.java" >> options8 -${APT} @options8 > multiRoundOutput 2> multiRoundError - -diff ${DIFFOPTS} multiRoundOutput ${TESTSRC}/goldenFactory.txt - -RESULT=$? -case "$RESULT" in - 0 ) - ;; - - * ) - echo "FAILED: unexpected factory state" - exit 1 -esac - -TestFile "./class/Dummy5.class" - -# --------------------------------------------------------------- - -echo "Verifying static state with programmatic apt entry; no factory options" -rm -Rf ./src/* -rm -Rf ./class/* -${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -s ./src -d ./class -XPrintAptRounds -TestFile "./class/AndAhTwo.class" - -echo "Verifying static state with programmatic apt entry; -factory" -rm -Rf ./src/* -rm -Rf ./class/* -${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -factory ErrorAPF -s ./src -d ./class -XPrintAptRounds -TestFile "./class/AndAhTwo.class" - -echo "Verifying static state with programmatic apt entry; -factorypath" -rm -Rf ./src/* -rm -Rf ./class/* -${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -factorypath round1Apf.jar -s ./src -d ./class -XPrintAptRounds -TestFile "./class/AndAhTwo.class" - -echo "Verifying static state with programmatic apt entry; -factory and -factorypath" -rm -Rf ./src/* -rm -Rf ./class/* -${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -factorypath round1Apf.jar -factory Round1Apf -s ./src -d ./class -XPrintAptRounds -TestFile "./class/AndAhTwo.class" - -exit 0 --- old/test/tools/apt/Compile/golden.txt 2012-01-19 16:21:41.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,6 +0,0 @@ -error: It's a mad, mad, mad, mad world -error: Something wicked this way comes -HelloWorld.java:2: error: Boring class name -public class HelloWorld { - ^ -3 errors --- old/test/tools/apt/Compile/goldenFactory.txt 2012-01-19 16:21:41.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,29 +0,0 @@ -Round1Apf: 1 - [final round: false, error raised: false, source files created: true, class files created: true] -Round1Apf: 1 complete -Round1Apf: 2 -Round2Apf: 1 - [final round: false, error raised: false, source files created: true, class files created: true] -Round1Apf: 2 complete -Round1Apf: 3 -Round2Apf: 2 -Round3Apf: 1 - [final round: false, error raised: false, source files created: true, class files created: false] -Round1Apf: 3 complete -Round1Apf: 4 -Round2Apf: 3 -Round3Apf: 2 -Round4Apf: 1 - [final round: false, error raised: false, source files created: true, class files created: false] -Round1Apf: 4 complete - [final round: false, error raised: false, source files created: true, class files created: false] -Round4Apf: 1 complete -Round1Apf: 5 -Round2Apf: 4 -Round3Apf: 3 -Round4Apf: 2 - [final round: true, error raised: false, source files created: false, class files created: false] -Round1Apf: 5 complete - [final round: true, error raised: false, source files created: false, class files created: false] -Round4Apf: 2 complete -Valediction --- old/test/tools/apt/Compile/goldenWarn.txt 2012-01-19 16:21:42.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,14 +0,0 @@ -warning: Beware the ides of March! -HelloAnnotation.java:6: Note: You are about to be warned -@interface HelloAnnotation { - ^ -HelloAnnotation.java:6: warning: Strange class name -@interface HelloAnnotation { - ^ -Note: MIRROR HelloAnnotation.java:6 -Note: VALUE HelloAnnotation.java:6 -Note: MIRROR HelloAnnotation.java:6 -Note: VALUE HelloAnnotation.java:6 -Note: MIRROR HelloAnnotation.java:6 -Note: VALUE HelloAnnotation.java:5 -2 warnings --- old/test/tools/apt/Compile/servicesRound1 2012-01-19 16:21:42.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Round1Apf --- old/test/tools/apt/Compile/servicesRound2 2012-01-19 16:21:42.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Round2Apf --- old/test/tools/apt/Compile/servicesRound3 2012-01-19 16:21:42.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Round3Apf --- old/test/tools/apt/Compile/servicesRound4 2012-01-19 16:21:42.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Round4Apf --- old/test/tools/apt/Compile/servicesStaticApf 2012-01-19 16:21:43.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -StaticApf --- old/test/tools/apt/Compile/src/AhOneClass.java 2012-01-19 16:21:43.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -public class AhOneClass {} --- old/test/tools/apt/Compile/src/AndAhTwoClass.java 2012-01-19 16:21:43.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -public class AndAhTwoClass {} --- old/test/tools/apt/Compile/src/Round1Class.java 2012-01-19 16:21:43.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -public class Round1Class {} --- old/test/tools/apt/Discovery/Dee.java 2012-01-19 16:21:43.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,72 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; -import java.util.Collections; - -public class Dee implements AnnotationProcessorFactory { - static class DeeProc implements AnnotationProcessor { - DeeProc(AnnotationProcessorEnvironment ape) {} - - public void process() { - return; - } - } - - static Collection supportedTypes; - static { - String types[] = {"dum"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - /* - * Return the same processor independent of what annotations are - * present, if any. - */ - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new DeeProc(env); - } -} --- old/test/tools/apt/Discovery/Dum.java 2012-01-19 16:21:44.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,72 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; -import java.util.Collections; - -public class Dum implements AnnotationProcessorFactory { - static class DumProc implements AnnotationProcessor { - DumProc(AnnotationProcessorEnvironment ape) {} - - public void process() { - return; - } - } - - static Collection supportedTypes; - static { - String types[] = {"dee"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - /* - * Return the same processor independent of what annotations are - * present, if any. - */ - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new DumProc(env); - } -} --- old/test/tools/apt/Discovery/Empty.java 2012-01-19 16:21:44.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,26 +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. - */ - - -public class Empty { -} --- old/test/tools/apt/Discovery/PhantomTouch.java 2012-01-19 16:21:44.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,93 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; -import java.util.Collections; -import java.io.*; - -public class PhantomTouch implements AnnotationProcessorFactory { - static class PhantomTouchProc implements AnnotationProcessor { - AnnotationProcessorEnvironment ape; - PhantomTouchProc(AnnotationProcessorEnvironment ape) { - this.ape = ape; - } - - public void process() { - // Only run the processor on the initial apt invocation - if (ape.getSpecifiedTypeDeclarations().size() == 0) { - boolean result; - try { - // Create temporary file - java.io.File f = new java.io.File("touched"); - result = f.createNewFile(); - - if (result) { - // Create new source file - PrintWriter pw = ape.getFiler().createSourceFile("HelloWorld"); - pw.println("public class HelloWorld {"); - pw.println(" // Phantom hello world"); - pw.println(" public static void main(String argv[]) {"); - pw.println(" System.out.println(\"Hello World\");"); - pw.println(" }"); - pw.println("}"); - } else - throw new RuntimeException("touched file already exists!"); - } catch (java.io.IOException e) { - result = false; - } - } - } - } - - static final Collection supportedOptions; - static final Collection supportedTypes; - - static { - String options[] = {""}; - supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options)); - - String types[] = {"*"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - public Collection supportedAnnotationTypes() {return supportedTypes;} - public Collection supportedOptions() {return supportedOptions;} - - - /* - * Return the same processor independent of what annotations are - * present, if any. - */ - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new PhantomTouchProc(env); - } -} --- old/test/tools/apt/Discovery/PhantomUpdate.java 2012-01-19 16:21:44.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2006, 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. - */ - - -/* - * JSR 269 annotation processor to test combined apt + JSR 269 - * annotation processor file generation and option passing. - */ - -import javax.annotation.processing.*; -import static javax.lang.model.SourceVersion.*; -import javax.lang.model.element.*; -import javax.lang.model.type.*; -import javax.lang.model.util.*; -import java.util.*; -import java.io.*; - -@SupportedAnnotationTypes("*") // Process all annotations -@SupportedSourceVersion(RELEASE_6) -public class PhantomUpdate extends AbstractProcessor { - boolean firstRound = true; - - public boolean process(Set annotations, - RoundEnvironment roundEnv) { - if (firstRound) { - verifyOptions(); - printGoodbyeWorld(); - firstRound = false; - } - return true; // Claim all annotations - } - - /* - * Expected options are "foo" and "bar=baz". - */ - private void verifyOptions() { - Map actualOptions = processingEnv.getOptions(); - Map expectedOptions = new LinkedHashMap(); - expectedOptions.put("foo", null); - expectedOptions.put("bar", "baz"); - - if (!actualOptions.equals(expectedOptions) ) { - System.err.println("Expected options " + expectedOptions + - "\n but got " + actualOptions); - throw new RuntimeException("Options mismatch"); - } - } - - private void printGoodbyeWorld() { - try { - // Create new source file - PrintWriter pw = new PrintWriter(processingEnv.getFiler().createSourceFile("GoodbyeWorld").openWriter()); - pw.println("public class GoodbyeWorld {"); - pw.println(" // PhantomUpdate Goodbye world"); - pw.println(" public static void main(String argv[]) {"); - pw.println(" System.out.println(\"Goodbye World\");"); - pw.println(" }"); - pw.println("}"); - pw.close(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} --- old/test/tools/apt/Discovery/Touch.java 2012-01-19 16:21:44.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,116 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; -import java.util.Collections; -import java.io.*; - -public class Touch implements AnnotationProcessorFactory { - static class TouchProc implements AnnotationProcessor { - AnnotationProcessorEnvironment ape; - TouchProc(AnnotationProcessorEnvironment ape) { - this.ape = ape; - } - - public void process() { - boolean result; - // Only run the processor on the initial apt invocation - Collection tdecls = ape.getSpecifiedTypeDeclarations(); - - if (tdecls.size() == 1) { - for(TypeDeclaration decl: tdecls) { - if (! decl.getSimpleName().equals("Touch") ) - return; - } - - try { - // Create temporary file - java.io.File f = new java.io.File("touched"); - result = f.createNewFile(); - - - Filer filer = ape.getFiler(); - - // Create new source file - PrintWriter pw = filer.createSourceFile("HelloWorld"); - pw.println("public class HelloWorld {"); - pw.println(" public static void main(String argv[]) {"); - pw.println(" System.out.println(\"Hello World\");"); - pw.println(" }"); - pw.println("}"); - - // Create new class file and copy Empty.class - OutputStream os = filer.createClassFile("Empty"); - FileInputStream fis = new FileInputStream("Empty.clazz"); - int datum; - while((datum = fis.read()) != -1) - os.write(datum); - - } catch (java.io.IOException e) { - result = false; - } - if (!result) - throw new RuntimeException("touched file already exists or other error"); - } - - } - - } - - static Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - /* - * Return the same processor independent of what annotations are - * present, if any. - */ - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new TouchProc(env); - } -} --- old/test/tools/apt/Discovery/discovery.sh 2012-01-19 16:21:45.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,410 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 1999, 2008, 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. -# - -# @test -# @bug 4984412 4985113 4908512 4990905 4998007 4998218 5002340 5023882 6370261 6363481 -# @run shell ../verifyVariables.sh -# @compile PhantomUpdate.java -# @run shell discovery.sh -# @summary Test consistency of annotation discovery -# @author Joseph D. Darcy - - -# If the file does not exist, exit with an error -TestFile() { - if [ ! -f ${1} ]; then - printf "%s\n" "File ${1} not found." - exit 1 - fi -} - -OS=`uname -s`; -case "${OS}" in - Windows* | CYGWIN* ) - SEP=";" - ;; - - * ) - SEP=":" - ;; -esac - -TOOLSJAR=${TESTJAVA}/lib/tools.jar - -OLDCP=${CLASSPATH} - -JARCP=tweedle.jar${SEP}touch.jar${SEP}${TOOLSJAR} -SOURCEP=${TESTSRC} -FULLCP=${JARCP}${SEP}${SOURCEP} -BADCP=tweedle.jar${SEP}badTouch.jar${SEP}${TOOLSJAR} - -# Construct path to apt executable -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} " - - -# Construct path to apt executable, no compilation -APTNC="${APT} -nocompile " - - -printf "%s\n" "APT = ${APT}" - -# Construct path to javac executable -JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TOOLSJAR} -d . " -JAR="${TESTJAVA}/bin/jar " - -$JAVAC ${TESTSRC}/Dee.java ${TESTSRC}/Dum.java ${TESTSRC}/Touch.java ${TESTSRC}/PhantomTouch.java ${TESTSRC}/Empty.java -RESULT=$? - -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Compilation failed." - exit 1 -esac - -mv Empty.class Empty.clazz - -echo "Making services directory and copying services information." -mkdir -p META-INF/services -mkdir -p phantom - -rm -f touch.jar -rm -f badTouch.jar - -cp ${TESTSRC}/servicesTweedle META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 tweedle.jar Dee*.class Dum*.class META-INF - -rm -f META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTSRC}/servicesTouch ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 touch.jar Touch*.class META-INF - -rm -f META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTSRC}/servicesPhantomTouch ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 phantom/phantom.jar PhantomTouch*.class META-INF - -# cleanup file to prevent accidental discovery in current directory -rm -f META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -# Jar files created; verify right output file is touched - -#--------------------------------------------------------- - -# Test different combinations of classpath, sourcepath, and -# destination directories - - -# -# Classpath on commandline; no output directories -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -printf "%s\n" "-classpath ${JARCP}" > options1 -printf "%s\n" "-sourcepath ${SOURCEP}" >> options1 -printf "%s\n" "${TESTSRC}/Touch.java" >> options1 - -${APTNC} @options1 - -echo "Testing case 1" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - -# -# Class path set through environment variable -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -CLASSPATH=${JARCP} -export CLASSPATH -printf "%s\n" "-sourcepath ${SOURCEP}" > options2 -printf "%s\n" "${TESTSRC}/Touch.java" >> options2 - -${APTNC} @options2 - -echo "Testing case 2" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - -# -# No explicit source path -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -CLASSPATH=${FULLCP} -export CLASSPATH -printf "%s\n" "${TESTSRC}/Touch.java" > options3 - -${APTNC} @options3 - -echo "Testing case 3" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - - -# -# Classpath on commandline; class output directory -# - -rm -f touched -rm -f HelloWorld.java -rm -Rf classes/Empty.class - -unset CLASSPATH -printf "%s\n" "-classpath ${JARCP}" > options4 -printf "%s\n" "-sourcepath ${SOURCEP}" >> options4 -printf "%s\n" "-d classes" >> options4 -printf "%s\n" "${TESTSRC}/Touch.java" >> options4 - -${APTNC} @options4 - -echo "Testing case 4" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "classes/Empty.class" - -# -# Classpath on commandline; source output directory -# - -rm -f touched -rm -Rf src -rm -f Empty.class - -unset CLASSPATH -printf "%s\n" "-classpath ${JARCP}" > options5 -printf "%s\n" "-sourcepath ${SOURCEP}" >> options5 -printf "%s\n" "-s src" >> options5 -printf "%s\n" "${TESTSRC}/Touch.java" >> options5 - -${APTNC} @options5 - -echo "Testing case 5" -TestFile "touched" -TestFile "src/HelloWorld.java" -TestFile "Empty.class" - - -# -# Classpath on commandline; class and source output directory -# - -rm -f touched -rm -Rf src -rm -Rf classes - -unset CLASSPATH -printf "%s\n" "-classpath ${JARCP}" > options6 -printf "%s\n" "-sourcepath ${SOURCEP}" >> options6 -printf "%s\n" "-d classes" >> options6 -printf "%s\n" "-s src" >> options6 -printf "%s\n" "${TESTSRC}/Touch.java" >> options6 - -${APTNC} @options6 - -echo "Testing case 6" -TestFile "touched" -TestFile "src/HelloWorld.java" -TestFile "classes/Empty.class" - -# -# Classpath appended to bootclasspath; no output directories -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -printf "%s\n" "-Xbootclasspath/a:${JARCP}" > options7 -printf "%s\n" "-classpath /dev/null" >> options7 -printf "%s\n" "${TESTSRC}/Touch.java" >> options7 - -${APTNC} @options7 - -echo "Testing case 7" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - -# -# Classpath in extdirs; no output directories -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -printf "%s\n" "-extdirs ." > options8 -printf "%s\n" "-classpath ${TOOLSJAR}" >> options8 -printf "%s\n" "${TESTSRC}/Touch.java" >> options8 - -${APTNC} @options8 - -echo "Testing case 8" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - -# -# Classpath in extdirs, take 2; no output directories -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -printf "%s\n" "-Djava.ext.dirs=." > options9 -printf "%s\n" "-classpath ${TOOLSJAR}" >> options9 -printf "%s\n" "${TESTSRC}/Touch.java" >> options9 - -${APTNC} @options9 - -echo "Testing case 9" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - -# -# Classpath in -endorseddirs; no output directories -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -printf "%s\n" "-endorseddirs ." > options10 -printf "%s\n" "-classpath ${TOOLSJAR}" >> options10 -printf "%s\n" "${TESTSRC}/Touch.java" >> options10 - -${APTNC} @options10 - -echo "Testing case 10" -TestFile "touched" -TestFile "HelloWorld.java" -TestFile "Empty.class" - -# -# Testing apt invocation with no command line options -# - -rm -f touched -rm -f HelloWorld.java -rm -f Empty.class - -unset CLASSPATH -CLASSPATH=./phantom/phantom.jar -export CLASSPATH - -${APT} - -echo "Testing empty command line" -TestFile "touched" -TestFile "HelloWorld.java" - - -# -# Verify apt and JSR 269 annotation processors can be run from same -# invocation and both use the output directories -# - -rm -f touched -rm -f src/HelloWorld.java -rm -f src/GoodbyeWorld.java -rm -f classes/HelloWorld.class -rm -f classes/GoodbyeWorld.class - -unset CLASSPATH - - -printf "%s\n" "-classpath ./phantom/phantom.jar" > options11 -printf "%s\n" "-sourcepath ${SOURCEP}" >> options11 -printf "%s\n" "-factory PhantomTouch " >> options11 -printf "%s\n" "-s src" >> options11 -printf "%s\n" "-d classes" >> options11 -printf "%s\n" "-A" >> options11 -printf "%s\n" "-Afoo" >> options11 -printf "%s\n" "-Abar=baz" >> options11 -printf "%s\n" "-processorpath $TESTCLASSES" >> options11 -printf "%s\n" "-processor PhantomUpdate" >> options11 - -${APT} @options11 - -echo "Testing combined apt and JSR 269 processing" -TestFile touched -TestFile "src/HelloWorld.java" -TestFile "src/GoodbyeWorld.java" -TestFile "classes/HelloWorld.class" -TestFile "classes/GoodbyeWorld.class" - -# -# Verify running with badTouch doesn't exit successfully -# - -rm -f ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory -cp ${TESTSRC}/servicesBadTouch ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 badTouch.jar Touch*.class META-INF - - -unset CLASSPATH -printf "%s\n" "-classpath ${BADCP}" > optionsBad -printf "%s\n" "-sourcepath ${SOURCEP}" >> optionsBad -printf "%s\n" "${TESTSRC}/Touch.java" >> optionsBad - -${APTNC} @optionsBad 2> /dev/null - -RESULT=$? - -case "${RESULT}" in - 0 ) - echo "Improper exit zero with bad services information." - exit 1 - ;; -esac - - -exit 0; --- old/test/tools/apt/Discovery/servicesBadTouch 2012-01-19 16:21:45.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Touche --- old/test/tools/apt/Discovery/servicesPhantomTouch 2012-01-19 16:21:45.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -PhantomTouch --- old/test/tools/apt/Discovery/servicesTouch 2012-01-19 16:21:45.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Touch --- old/test/tools/apt/Discovery/servicesTweedle 2012-01-19 16:21:45.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,2 +0,0 @@ -Dee -Dum --- old/test/tools/apt/Misc/Marked.java 2012-01-19 16:21:46.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,51 +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. - */ - - -class Marked { - - @Marker - class marked1 {}; - - - class Unmarked1 {}; - - @Marker - class marked2 {}; - - - class Unmarked2 {}; - - @Marker - class marked3 {}; - - - class Unmarked3 {}; - - @Marker - class marked4 {}; - - - class Unmarked4 {}; - -} --- old/test/tools/apt/Misc/Marker.java 2012-01-19 16:21:46.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -public @interface Marker {} --- old/test/tools/apt/Misc/Misc.java 2012-01-19 16:21:46.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,84 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.HashSet; -import java.util.Map; -import java.util.Arrays; -import java.util.Collections; - -public class Misc implements AnnotationProcessorFactory { - static class MiscCheck implements AnnotationProcessor { - AnnotationProcessorEnvironment ape; - MiscCheck(AnnotationProcessorEnvironment ape) { - this.ape = ape; - } - - public void process() { - Collection decls = ape. - getDeclarationsAnnotatedWith((AnnotationTypeDeclaration) - ape.getTypeDeclaration("Marker")); - - // Should write more robust test that examines the - // annotation mirrors for the declaration in question. - for(Declaration decl: decls) { - if (!decl.getSimpleName().startsWith("marked") ) - throw new RuntimeException(); - } - } - } - - - static Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - Collection supportedOptions = - Collections.unmodifiableCollection(new HashSet()); - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - /* - * Return the same processor independent of what annotations are - * present, if any. - */ - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment ape) { - return new MiscCheck(ape); - } -} --- old/test/tools/apt/Misc/misc.sh 2012-01-19 16:21:46.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,100 +0,0 @@ -#!/bin/sh - -# -# 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. -# - -# @test -# @bug 5007250 -# @run shell ../verifyVariables.sh -# @run shell misc.sh -# @summary Miscelleneous tests -# @author Joseph D. Darcy - -OS=`uname -s`; -case "${OS}" in - Windows* | CYGWIN* ) - SEP=";" - ;; - - * ) - SEP=":" - ;; -esac - -JARCP=misc.jar -SOURCEP=${TESTSRC} - -# Construct path to apt executable -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -nocompile " - -printf "%s\n" "APT = ${APT}" - -# Construct path to javac executable -JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . " -JAR="${TESTJAVA}/bin/jar " - -${JAVAC} ${TESTSRC}/Misc.java ${TESTSRC}/Marked.java -RESULT=$? - -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Compilation failed." - exit 1 -esac - - -echo "Making services directory and copying services information." -mkdir -p META-INF/services - -cp ${TESTSRC}/servicesMisc META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 misc.jar Misc*.class META-INF - -# Jar files created; verify options properly present on both initial -# and recursive apt runs - -#--------------------------------------------------------- - -unset CLASSPATH - -printf "%s\n" "-classpath ${JARCP}" > options -printf "%s\n" "-sourcepath ${SOURCEP}" >> options -printf "%s\n" "${TESTSRC}/Marked.java" >> options - -${APT} @options - -RESULT=$? -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Problem with result" - exit 1 - ;; -esac - -exit 0; --- old/test/tools/apt/Misc/servicesMisc 2012-01-19 16:21:46.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,2 +0,0 @@ -Misc - --- old/test/tools/apt/Options/Marked.java 2012-01-19 16:21:47.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,27 +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. - */ - - -@Marker -class Marked { -} --- old/test/tools/apt/Options/Marker.java 2012-01-19 16:21:47.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,25 +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. - */ - - -public @interface Marker {} --- old/test/tools/apt/Options/OptionChecker.java 2012-01-19 16:21:47.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,117 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Map; -import java.util.Arrays; -import java.util.Collections; - -public class OptionChecker implements AnnotationProcessorFactory { - static class OptionCheck implements AnnotationProcessor { - AnnotationProcessorEnvironment ape; - OptionCheck(AnnotationProcessorEnvironment ape) { - this.ape = ape; - } - - public void process() { - Map options = ape.getOptions(); - if (options.containsKey("-Afoo") && - options.containsKey("-Abar") && - options.containsKey("-classpath") ) { - System.out.println("Expected options found."); - return; // All is well - } else { - System.err.println("Unexpected options values: " + options); - throw new RuntimeException(); - } - } - } - - static class HelloWorld implements AnnotationProcessor { - AnnotationProcessorEnvironment ape; - HelloWorld(AnnotationProcessorEnvironment ape) { - this.ape = ape; - } - - public void process() { - java.io.PrintWriter pw; - try { - pw = ape.getFiler().createSourceFile("HelloWorld"); - } catch (Exception e) { - throw new RuntimeException(e); - } - - pw.println("public class HelloWorld {"); - pw.println(" public static void main (String argv[]) {"); - pw.println(" System.out.println(\"Hello apt world.\");"); - pw.println(" }"); - pw.println("}"); - } - } - - - static Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {"-Afoo", "-Abar"}; - supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - /* - * Return the same processor independent of what annotations are - * present, if any. - */ - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment ape) { - - if (atds.contains(ape.getTypeDeclaration("Marker"))) { - System.out.println("Returning composite processor."); - return AnnotationProcessors.getCompositeAnnotationProcessor(new OptionCheck(ape), - new HelloWorld(ape)); - } - else { - System.out.println("Returning single processor."); - return new OptionCheck(ape); - } - } -} --- old/test/tools/apt/Options/options.sh 2012-01-19 16:21:47.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,116 +0,0 @@ -#!/bin/sh - -# -# 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. -# - -# @test -# @bug 4993950 4993277 -# @run shell ../verifyVariables.sh -# @run shell options.sh -# @summary Test availabilty of command line options in processors -# @author Joseph D. Darcy - -OS=`uname -s`; -case "${OS}" in - Windows* | CYGWIN* ) - SEP=";" - ;; - - * ) - SEP=":" - ;; -esac - -JARCP=option.jar -SOURCEP=${TESTSRC} - - -# Construct path to apt executable -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -nocompile " - -printf "%s\n" "APT = ${APT}" - -# Construct path to javac executable -JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . " -JAR="${TESTJAVA}/bin/jar " - -${JAVAC} ${TESTSRC}/OptionChecker.java -RESULT=$? - -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Compilation failed." - exit 1 -esac - - -echo "Making services directory and copying services information." -mkdir -p META-INF/services - -cp ${TESTSRC}/servicesOptions META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 option.jar OptionChecker*.class META-INF - -# Jar files created; verify options properly present on both initial -# and recursive apt runs - -#--------------------------------------------------------- - -unset CLASSPATH - -printf "%s\n" "-classpath ${JARCP}" > options -printf "%s\n" "-sourcepath ${SOURCEP}" >> options -printf "%s\n" "${TESTSRC}/Marked.java" >> options - -${APT} @options - -RESULT=$? -case "${RESULT}" in - 0 ) - echo "Failed to indentify missing options" - exit 1 - ;; - - * ) - ;; -esac - -printf "%s\n" "-Afoo -Abar" >> options - -${APT} @options - -RESULT=$? -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Options not found properly." - exit 1 - ;; -esac - -exit 0; --- old/test/tools/apt/Options/servicesOptions 2012-01-19 16:21:48.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -OptionChecker --- old/test/tools/apt/Scanners/Counter.java 2012-01-19 16:21:48.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,108 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * Used to verify counts from different kinds of declaration scanners. - */ -public class Counter implements AnnotationProcessorFactory { - static class CounterProc implements AnnotationProcessor { - static class CountingVisitor extends SimpleDeclarationVisitor { - int count; - int count() { - return count; - } - - CountingVisitor() { - count = 0; - } - - public void visitDeclaration(Declaration d) { - count++; - System.out.println(d.getSimpleName()); - } - } - - AnnotationProcessorEnvironment env; - CounterProc(AnnotationProcessorEnvironment env) { - this.env = env; - } - - public void process() { - for(TypeDeclaration td: env.getSpecifiedTypeDeclarations() ) { - CountingVisitor sourceOrder = new CountingVisitor(); - CountingVisitor someOrder = new CountingVisitor(); - - System.out.println("Source Order Scanner"); - td.accept(getSourceOrderDeclarationScanner(sourceOrder, - NO_OP)); - - System.out.println("\nSome Order Scanner"); - td.accept(getDeclarationScanner(someOrder, - NO_OP)); - - if (sourceOrder.count() != someOrder.count() ) - throw new RuntimeException("Counts from different scanners don't agree"); - } - - } - } - - static Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new CounterProc(env); - } - -} --- old/test/tools/apt/Scanners/MemberOrderApf.java 2012-01-19 16:21:48.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,86 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Arrays; - -import static java.util.Collections.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -/* - * The processor of this factory verifies class members are returned - * in source-code order. - */ -public class MemberOrderApf implements AnnotationProcessorFactory { - // Process any set of annotations - private static final Collection supportedAnnotations - = unmodifiableCollection(Arrays.asList("*")); - - // No supported options - private static final Collection supportedOptions = emptySet(); - - public Collection supportedAnnotationTypes() { - return supportedAnnotations; - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new MemberOrderAp(env); - } - - private static class MemberOrderAp implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - MemberOrderAp(AnnotationProcessorEnvironment env) { - this.env = env; - } - - private void verifyOrder(Collection decls) { - int count = 0; - for(Declaration decl: decls) { - VisitOrder order = decl.getAnnotation(VisitOrder.class); - if (order.value() <= count) - throw new RuntimeException("Out of order declarations"); - count = order.value(); - } - } - - public void process() { - for(TypeDeclaration td: env.getSpecifiedTypeDeclarations()) { - verifyOrder(td.getFields()); - verifyOrder(td.getMethods()); - } - } - } -} --- old/test/tools/apt/Scanners/Order.java 2012-01-19 16:21:48.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,54 +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. - */ - - - -@VisitOrder(1) -public class Order { - @VisitOrder(2) - static double d; - - @VisitOrder(3) - private Order() {} - - @VisitOrder(4) - int i; - - @VisitOrder(5) - static class InnerOrder { - @VisitOrder(6) - InnerOrder(){} - - @VisitOrder(7) - String toString() {return "";} - } - - @VisitOrder(8) - String toString() {return "";} - - @VisitOrder(9) - InnerOrder io; - - @VisitOrder(10) - String foo() {return toString();} -} --- old/test/tools/apt/Scanners/Scanner.java 2012-01-19 16:21:48.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,123 +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. - */ - - -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import java.util.Collection; -import java.util.Set; -import java.util.Map; -import java.util.Arrays; -import java.util.Collections; - - -public class Scanner implements AnnotationProcessorFactory { - static class ScannerProc implements AnnotationProcessor { - AnnotationProcessorEnvironment env; - ScannerProc(AnnotationProcessorEnvironment env) { - this.env = env; - } - - static class CountingVisitor extends SimpleDeclarationVisitor { - int count; - CountingVisitor() { - count = 0; - } - - public void visitDeclaration(Declaration d) { - count++; - - Collection ams = d.getAnnotationMirrors(); - if (ams == null) - throw new RuntimeException("Declaration " + d + - " not annotated with visit order."); - else { - if (ams.size() != 1) - throw new RuntimeException("Declaration " + d + - " has wrong number of declarations."); - else { - for(AnnotationMirror am: ams) { - Map elementValues = am.getElementValues(); - for(AnnotationTypeElementDeclaration atmd: elementValues.keySet()) { - if (!atmd.getDeclaringType().toString().equals("VisitOrder")) - throw new RuntimeException("Annotation " + atmd + - " is the wrong type."); - else { - AnnotationValue av = - elementValues.get(atmd); - Integer value = (Integer) av.getValue(); - if (value.intValue() != count) - throw new RuntimeException("Expected declaration " + d + - " to be in position " + count + - " instead of " + value.intValue()); - - System.out.println("Declaration " + d + - ": visit order " + value.intValue()); - } - } - - } - } - } - - } - } - - public void process() { - for(TypeDeclaration td: env.getSpecifiedTypeDeclarations() ) { - td.accept(DeclarationVisitors.getSourceOrderDeclarationScanner(new CountingVisitor(), - DeclarationVisitors.NO_OP)); - } - } - } - - - static Collection supportedTypes; - static { - String types[] = {"*"}; - supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types)); - } - - static Collection supportedOptions; - static { - String options[] = {""}; - supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options)); - } - - public Collection supportedOptions() { - return supportedOptions; - } - - public Collection supportedAnnotationTypes() { - return supportedTypes; - } - - public AnnotationProcessor getProcessorFor(Set atds, - AnnotationProcessorEnvironment env) { - return new ScannerProc(env); - } - -} --- old/test/tools/apt/Scanners/TestEnum.java 2012-01-19 16:21:49.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,31 +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. - */ - - -public enum TestEnum { - QUIZ, - EXAM, - MIDTERM, - FINAL, - QUALIFIER; -} --- old/test/tools/apt/Scanners/VisitOrder.java 2012-01-19 16:21:49.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,32 +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. - */ - - -/* - * Integer to indicate what order a declaration is expected to be - * visited in by a DeclarationScanner. - */ - -@interface VisitOrder { - int value(); -} --- old/test/tools/apt/Scanners/scanner.sh 2012-01-19 16:21:49.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,146 +0,0 @@ -#!/bin/sh - -# -# 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. -# - -# @test -# @bug 4989093 5009164 5023880 5029482 6206786 -# @run shell ../verifyVariables.sh -# @run shell scanner.sh -# @summary Test source order scanner -# @author Joseph D. Darcy - -OS=`uname -s`; -case "${OS}" in - Windows* | CYGWIN* ) - SEP=";" - ;; - - * ) - SEP=":" - ;; -esac - -JARCP=scanner.jar - -# Construct path to apt executable -APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -nocompile " - -printf "%s\n" "APT = ${APT}" - -# Construct path to javac executable -JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . " -JAR="${TESTJAVA}/bin/jar " - -${JAVAC} ${TESTSRC}/Scanner.java ${TESTSRC}/VisitOrder.java ${TESTSRC}/Counter.java ${TESTSRC}/MemberOrderApf.java -RESULT=$? - -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Compilation failed." - exit 1 -esac - - -echo "Making services directory and copying services information." -mkdir -p META-INF/services - -cp ${TESTSRC}/servicesScanner META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory - -${JAR} cf0 scanner.jar Scanner*.class META-INF - -# Jar files created; verify options properly present on both initial -# and recursive apt runs - -#--------------------------------------------------------- - -unset CLASSPATH - -printf "%s\n" "-classpath ${JARCP}" > options -printf "%s\n" "-sourcepath ${TESTSRC}" >> options -printf "%s\n" "${TESTSRC}/Order.java" >> options - -${APT} @options - -RESULT=$? -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Program elements visited in wrong order" - exit 1 - ;; -esac - -#--------------------------------------------------------- - -# Verify that plain decl' scanner and source order decl' scanner -# record the same number of elements for an enum - -printf "%s\n" "-factorypath ." > options2 -printf "%s\n" "-factory Counter" >> options2 -printf "%s\n" "-sourcepath ${TESTSRC}" >> options2 -printf "%s\n" "${TESTSRC}/TestEnum.java" >> options2 - - -$APT @options2 - -RESULT=$? -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Improper counts" - exit 1 - ;; -esac - -#--------------------------------------------------------- - -# Verify that members happen to be returned in source order - -printf "%s\n" "-factorypath ." > options3 -printf "%s\n" "-factory MemberOrderApf" >> options3 -printf "%s\n" "-sourcepath ${TESTSRC}" >> options3 -printf "%s\n" "${TESTSRC}/Order.java" >> options3 - -$APT @options3 - -RESULT=$? -case "${RESULT}" in - 0 ) - ;; - - * ) - echo "Improper counts" - exit 1 - ;; -esac - - -exit 0; --- old/test/tools/apt/Scanners/servicesScanner 2012-01-19 16:21:49.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1 +0,0 @@ -Scanner --- old/test/tools/apt/lib/Ignore.java 2012-01-19 16:21:49.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,41 +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. - */ - - -import java.lang.annotation.*; - -/** - * An annotation used to indicate that a test -- a method annotated - * with @Test -- should not be executed. - * - * @author Scott Seligman - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface Ignore { - - /** - * Reason for ignoring this test. - */ - String value() default ""; -} --- old/test/tools/apt/lib/Test.java 2012-01-19 16:21:50.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,49 +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. - */ - - -import java.lang.annotation.*; - -/** - * An annotation used to indicate that a method constitutes a test, - * and which provides the expected result. The method must take no parameters. - * - * @author Scott Seligman - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface Test { - - /** - * An array containing the method's expected result (or - * elements of the result if the return type is a Collection). - * Value is ignored if return type is void. - * Entries are converted to strings via {@link String#valueOf(Object)}. - */ - String[] result() default {}; - - /** - * True if the order of the elements in result() is significant. - */ - boolean ordered() default false; -} --- old/test/tools/apt/lib/TestProcessor.java 2012-01-19 16:21:50.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,132 +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. - */ - - -import java.lang.reflect.Method; -import java.util.*; -import com.sun.mirror.apt.*; - - -/** - * Annotation processor for the @Test annotation. - * Invokes each method so annotated, and verifies the result. - * Throws an Error on failure. - * - * @author Scott Seligman - */ -public class TestProcessor implements AnnotationProcessor { - - AnnotationProcessorEnvironment env; - - // The tester that's running. - Tester tester = Tester.activeTester; - - TestProcessor(AnnotationProcessorEnvironment env, - Tester tester) { - this.env = env; - this.tester = tester; - } - - - /** - * Reflectively invoke the @Test-annotated methods of the live - * tester. Those methods perform the actual exercising of the - * mirror API. Then back here to verify the results by - * reading the live annotations. Convoluted, you say? - */ - public void process() { - System.out.printf("\n> Processing %s\n", tester.getClass()); - - boolean failed = false; // true if a test returns wrong result - - for (Method m : tester.getClass().getDeclaredMethods()) { - Test anno = m.getAnnotation(Test.class); - Ignore ignore = m.getAnnotation(Ignore.class); - if (anno != null) { - if (ignore == null) { - System.out.println(">> Invoking test " + m.getName()); - Object result; - try { - result = m.invoke(tester); - } catch (Exception e) { - throw new Error("Test invocation failed", e); - } - boolean ok = true; // result of this test - if (Collection.class.isAssignableFrom(m.getReturnType())) { - ok = verifyResults((Collection) result, - anno.result(), anno.ordered()); - } else if (m.getReturnType() != void.class) { - ok = verifyResult(result, anno.result()); - } - if (!ok) { - System.out.println(">>> Expected: " + anno); - System.out.println(">>> Got: " + result); - failed = true; - } - } else { - System.out.println(">> Ignoring test " + m.getName()); - if (ignore.value().length() > 0) { - System.out.println(">>> Reason: " + ignore.value()); - } - } - } - } - if (failed) { - throw new Error("Test(s) returned unexpected result"); - } - } - - /** - * Verify that a single-valued (non-Collection) result matches - * its expected value. - */ - private boolean verifyResult(Object result, String[] expected) { - assert expected.length == 1 : - "Single-valued test expecting " + expected.length + " results"; - return expected[0].equals(String.valueOf(result)); - } - - /** - * Verify that a multi-valued result (a Collection) matches - * its expected values. - */ - private boolean verifyResults(Collection result, - String[] expected, boolean ordered) { - if (result.size() != expected.length) { - return false; - } - - // Convert result to an array of strings. - String[] res = new String[result.size()]; - int i = 0; - for (Object e : result) { - res[i++] = String.valueOf(e); - } - - if (!ordered) { - Arrays.sort(res); - Arrays.sort(expected); - } - return Arrays.equals(res, expected); - } -} --- old/test/tools/apt/lib/TestProcessorFactory.java 2012-01-19 16:21:50.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,80 +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. - */ - - -import java.util.*; -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; - - -/** - * A factory for generating the TestProcessor annotation processor, which - * processes the @Test annotation. - * - * @author Scott Seligman - */ -public class TestProcessorFactory implements AnnotationProcessorFactory { - - public Collection supportedOptions() { - return new ArrayList(); - } - - public Collection supportedAnnotationTypes() { - ArrayList res = new ArrayList(); - res.add("Test"); - res.add("Ignore"); - return res; - } - - public AnnotationProcessor getProcessorFor( - Set as, - AnnotationProcessorEnvironment env) { - // The tester that's running. - Tester tester = Tester.activeTester; - - try { - // Find the tester's class declaration. - ClassDeclaration testerDecl = null; - for (TypeDeclaration decl : env.getSpecifiedTypeDeclarations()) { - if (decl.getQualifiedName().equals( - tester.getClass().getName())) { - testerDecl = (ClassDeclaration) decl; - break; - } - } - - // Give the tester access to its own declaration and to the env. - tester.thisClassDecl = testerDecl; - tester.env = env; - - // Initializer the tester. - tester.init(); - - return new TestProcessor(env, tester); - - } catch (Exception e) { - throw new Error("Couldn't create test annotation processor", e); - } - } -} --- 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; - } -} --- old/test/tools/apt/mirror/declaration/AnnoMirror.java 2012-01-19 16:21:51.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5014539 - * @summary Tests AnnotationMirror and AnnotationValue methods. - * @library ../../lib - * @compile -source 1.5 AnnoMirror.java - * @run main/othervm AnnoMirror - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; - - -public class AnnoMirror extends Tester { - - public static void main(String[] args) { - (new AnnoMirror()).run(); - } - - - @Test(result={"AT1"}) - @AT1 - AnnotationType getAnnotationType() { - AnnotationMirror anno = getAnno("getAnnotationType", "AT1"); - return anno.getAnnotationType(); - } - - @Test(result={}) - @AT1 - Set getElementValuesNone() { - AnnotationMirror anno = getAnno("getElementValuesNone", "AT1"); - return anno.getElementValues().entrySet(); - } - - - // The seemingly out-of-place parens in the following "result" - // entry are needed due to the shortcut of having the test return - // the entry set directly. - @Test(result={"i()=2", - "b()=true", - "k()=java.lang.Boolean.class", - "a()=@AT1"}) - @AT2(i = 1+1, - b = true, - k = Boolean.class, - a = @AT1) - Set getElementValues() { - AnnotationMirror anno = getAnno("getElementValues", "AT2"); - return anno.getElementValues().entrySet(); - } - - @Test(result={"@AT1(\"zax\")", - "@AT2(i=2, b=true, k=java.lang.Boolean.class, a=@AT1)", - "@AT3(arr={1})", - "@AT4({2, 3, 4})"}) - Collection toStringTests() { - for (MethodDeclaration m : thisClassDecl.getMethods()) { - if (m.getSimpleName().equals("toStringTestsHelper")) { - return m.getAnnotationMirrors(); - } - } - throw new AssertionError(); - } - - @AT1("zax") - @AT2(i = 1+1, - b = true, - k = Boolean.class, - a = @AT1) - @AT3(arr={1}) - @AT4({2,3,4}) - private void toStringTestsHelper() { - } -} - - -/* - * Annotations used for testing. - */ - -@interface AT1 { - String value() default ""; -} - -@interface AT2 { - int i(); - boolean b(); - Class k(); - AT1 a(); -} - -@interface AT3 { - int[] arr(); -} - -@interface AT4 { - int[] value(); -} --- old/test/tools/apt/mirror/declaration/AnnoTypeDecl.java 2012-01-19 16:21:51.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5014539 - * @summary AnnotationTypeDeclaration tests - * @library ../../lib - * @compile -source 1.5 AnnoTypeDecl.java - * @run main/othervm AnnoTypeDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class AnnoTypeDecl extends Tester { - - public static void main(String[] args) { - (new AnnoTypeDecl()).run(); - } - - - private AnnotationTypeDeclaration at; - - protected void init() { - at = (AnnotationTypeDeclaration) env.getTypeDeclaration("AT"); - } - - - // Declaration methods - - @Test(result="annotation type") - Collection accept() { - final Collection res = new ArrayList(); - - at.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitClassDeclaration(ClassDeclaration c) { - res.add("class"); - } - public void visitInterfaceDeclaration(InterfaceDeclaration i) { - res.add("interface"); - } - public void visitAnnotationTypeDeclaration( - AnnotationTypeDeclaration a) { - res.add("annotation type"); - } - }); - return res; - } - - - // AnnotationTypeDeclaration methods - - @Test(result={"s()"}) - Collection getMethods() { - return at.getMethods(); - } -} - - -// An annotation type to use for testing. - -@interface AT { - String s(); -} --- old/test/tools/apt/mirror/declaration/AnnoTypeElemDecl.java 2012-01-19 16:21:51.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 4993299 5010385 5014539 - * @summary AnnotationTypeElementDeclaration tests - * @library ../../lib - * @compile -source 1.5 AnnoTypeElemDecl.java - * @run main/othervm AnnoTypeElemDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class AnnoTypeElemDecl extends Tester { - - public static void main(String[] args) { - (new AnnoTypeElemDecl()).run(); - } - - - // Some annotation type elements to use. - private AnnotationTypeElementDeclaration elem1 = null; // s() - private AnnotationTypeElementDeclaration elem2 = null; // i() - private AnnotationTypeElementDeclaration elem3 = null; // b() - - protected void init() { - for (TypeDeclaration at : thisClassDecl.getNestedTypes()) { - for (MethodDeclaration meth : at.getMethods()) { - AnnotationTypeElementDeclaration elem = - (AnnotationTypeElementDeclaration) meth; - if (elem.getSimpleName().equals("s")) { - elem1 = elem; // s() - } else if (elem.getSimpleName().equals("i")) { - elem2 = elem; // i() - } else { - elem3 = elem; // b() - } - } - } - } - - - // Declaration methods - - @Test(result="anno type element") - Collection accept() { - final Collection res = new ArrayList(); - - elem1.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitExecutableDeclaration(ExecutableDeclaration e) { - res.add("executable"); - } - public void visitMethodDeclaration(MethodDeclaration m) { - res.add("method"); - } - public void visitAnnotationTypeElementDeclaration( - AnnotationTypeElementDeclaration a) { - res.add("anno type element"); - } - }); - return res; - } - - @Test(result={"@AnnoTypeElemDecl.AT2"}) - Collection getAnnotationMirrors() { - return elem1.getAnnotationMirrors(); - } - - @Test(result=" Sed Quis custodiet ipsos custodes?\n") - String getDocComment() { - return elem1.getDocComment(); - } - - @Test(result={"public", "abstract"}) - Collection getModifiers() { - return elem1.getModifiers(); - } - - @Test(result="AnnoTypeElemDecl.java") - String getPosition() { - return elem1.getPosition().file().getName(); - } - - @Test(result="s") - String getSimpleName() { - return elem1.getSimpleName(); - } - - - // MemberDeclaration method - - @Test(result="AnnoTypeElemDecl.AT1") - TypeDeclaration getDeclaringType() { - return elem1.getDeclaringType(); - } - - - // ExecutableDeclaration methods - - @Test(result={}) - Collection getFormalTypeParameters() { - return elem1.getFormalTypeParameters(); - } - - @Test(result={}) - Collection getParameters() { - return elem1.getParameters(); - } - - @Test(result={}) - Collection getThrownTypes() { - return elem1.getThrownTypes(); - } - - @Test(result="false") - Boolean isVarArgs() { - return elem1.isVarArgs(); - } - - - // AnnotationTypeElementDeclaration method - - @Test(result="\"default\"") - AnnotationValue getDefaultValue1() { - return elem1.getDefaultValue(); - } - - @Test(result="null") - AnnotationValue getDefaultValue2() { - return elem2.getDefaultValue(); - } - - // 5010385: getValue() returns null for boolean type elements - @Test(result="false") - Boolean getDefaultValue3() { - return (Boolean) elem3.getDefaultValue().getValue(); - } - - - // toString - - @Test(result="s()") - String toStringTest() { - return elem1.toString(); - } - - - // Declarations used by tests. - - @interface AT1 { - /** - * Sed Quis custodiet ipsos custodes? - */ - @AT2 - String s() default "default"; - - int i(); - - boolean b() default false; - } - - @interface AT2 { - } -} --- old/test/tools/apt/mirror/declaration/AnnoVal.java 2012-01-19 16:21:51.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,200 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5014539 5034991 - * @summary Tests AnnotationValue methods. - * @library ../../lib - * @compile -source 1.5 AnnoVal.java - * @run main/othervm AnnoVal - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; - - -public class AnnoVal extends Tester { - - public static void main(String[] args) { - (new AnnoVal()).run(); - } - - @Test(result={ - "i Integer 2", - "l Long 4294967296", - "d Double 3.14", - "b Boolean true", - "c Character @", - "s String sigh", - // The following results reflect some implementation details. - "k ClassTypeImpl java.lang.Boolean", - "kb PrimitiveTypeImpl boolean", - "ka ArrayTypeImpl java.lang.Boolean[]", - "kab ArrayTypeImpl int[][]", - "w ClassTypeImpl java.lang.Long", - "e EnumConstantDeclarationImpl TYPE", - "sa ArrayList [\"up\", \"down\"]", - "a AnnotationMirrorImpl @AT1"}) - @AT2(i = 1 + 1, - l = 1024 * 1024 * 1024 * 4L, - d = 3.14, - b = true, - c = '@', - s = "sigh", - k = Boolean.class, - kb = boolean.class, - ka = Boolean[].class, // bugid 5020899 - kab = int[][].class, // " - w = Long.class, - e = java.lang.annotation.ElementType.TYPE, - sa = {"up", "down"}, - a = @AT1) - Collection getValue() { - Collection res = new ArrayList(); - AnnotationMirror anno = getAnno("getValue", "AT2"); - - for (Map.Entry e : - anno.getElementValues().entrySet()) { - Object val = e.getValue().getValue(); - res.add(String.format("%s %s %s", - e.getKey().getSimpleName(), - simpleClassName(val), - val)); - } - return res; - } - - @Test(result={ - "int i 2", - "long l 4294967296L", - "double d 3.14", - "boolean b true", - "char c '@'", - "java.lang.String s \"sigh\"", - "java.lang.Class k java.lang.Boolean.class", - "java.lang.Class kb boolean.class", - "java.lang.Class ka java.lang.Boolean[].class", - "java.lang.Class kab int[][].class", - "java.lang.Class w java.lang.Long.class", - "java.lang.annotation.ElementType e java.lang.annotation.ElementType.TYPE", - "java.lang.String[] sa {\"up\", \"down\"}", - "AT1 a @AT1"}) - Collection toStringTests() { - Collection res = new ArrayList(); - AnnotationMirror anno = getAnno("getValue", "AT2"); - - for (Map.Entry e : - anno.getElementValues().entrySet()) { - res.add(String.format("%s %s %s", - e.getKey().getReturnType(), - e.getKey().getSimpleName(), - e.getValue().toString())); - } - return res; - } - - @Test(result={ - "byte b 0x0b", - "float f 3.0f", - "double nan 0.0/0.0", - "double hi 1.0/0.0", - "float lo -1.0f/0.0f", - "char newline '\\n'", - "char ff '\\u00ff'", - "java.lang.String s \"\\\"high\\tlow\\\"\"", - "java.lang.String smiley \"\\u263a\""}) - @AT3(b = 11, - f = 3, - nan = 0.0/0.0, - hi = 1.0/0.0, - lo = -1.0f/0.0f, - newline = '\n', - ff = '\u00FF', - s = "\"high\tlow\"", - smiley = "\u263A") - Collection toStringFancy() { - Collection res = new ArrayList(); - AnnotationMirror anno = getAnno("toStringFancy", "AT3"); - - for (Map.Entry e : - anno.getElementValues().entrySet()) { - res.add(String.format("%s %s %s", - e.getKey().getReturnType(), - e.getKey().getSimpleName(), - e.getValue().toString())); - } - return res; - } - - - /** - * Returns the simple name of an object's class. - */ - private String simpleClassName(Object o) { - return (o == null) - ? "null" - : o.getClass().getName().replaceFirst(".*\\.", ""); - } -} - - -/* - * Annotations used for testing. - */ - -@interface AT1 { - String value() default ""; -} - -@interface AT2 { - int i(); - long l(); - double d(); - boolean b(); - char c(); - String s(); - Class k(); - Class kb(); - Class ka(); - Class kab(); - Class w(); - java.lang.annotation.ElementType e(); - String[] sa(); - AT1 a(); -} - -@interface AT3 { - byte b(); - float f(); - double nan(); - double hi(); - float lo(); - char newline(); - char ff(); - String s(); - String smiley(); -} --- old/test/tools/apt/mirror/declaration/ClassDecl.java 2012-01-19 16:21:51.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 4997614 - * @summary ClassDeclaration tests - * @library ../../lib - * @compile -source 1.5 ClassDecl.java - * @run main/othervm ClassDecl - */ - - -import java.io.Serializable; -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -/** - * Sed Quis custodiet ipsos custodes? - */ -@AT1 -@AT2 -public class ClassDecl extends Tester { - - public static void main(String[] args) { - (new ClassDecl()).run(); - } - - - private ClassDeclaration nested = null; // a nested type - private ClassDeclaration object = null; // java.lang.object - - // A constructor to be found - private ClassDecl() { - } - - // Another constructor to be found - private ClassDecl(int i) { - this(); - } - - // An extra field to be found - static int i; - - // Static initializer isn't among this class's methods. - static { - i = 7; - } - - // A nested class with some accoutrements - private static strictfp class NestedClass implements Serializable { - void m1() {} - void m2() {} - void m2(int i) {} - } - - protected void init() { - nested = (ClassDeclaration) - thisClassDecl.getNestedTypes().iterator().next(); - object = (ClassDeclaration) - env.getTypeDeclaration("java.lang.Object"); - } - - - // Declaration methods - - @Test(result="class") - Collection accept() { - final Collection res = new ArrayList(); - - thisClassDecl.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitClassDeclaration(ClassDeclaration c) { - res.add("class"); - } - public void visitEnumDeclaration(EnumDeclaration e) { - res.add("enum"); - } - }); - return res; - } - - @Test(result={"@AT1", "@AT2"}) - Collection getAnnotationMirrors() { - return thisClassDecl.getAnnotationMirrors(); - } - - @Test(result=" Sed Quis custodiet ipsos custodes?\n") - String getDocComment() { - return thisClassDecl.getDocComment(); - } - - @Test(result={"public"}) - Collection getModifiers1() { - return thisClassDecl.getModifiers(); - } - - // Check that static nested class has "static" modifier, even though - // the VM doesn't set that bit. - @Test(result={"private", "static", "strictfp"}) - Collection getModifiers2() { - return nested.getModifiers(); - } - - @Test(result="ClassDecl.java") - String getPosition() { - return thisClassDecl.getPosition().file().getName(); - } - - @Test(result="ClassDecl") - String getSimpleName1() { - return thisClassDecl.getSimpleName(); - } - - @Test(result="NestedClass") - String getSimpleName2() { - return nested.getSimpleName(); - } - - - // MemberDeclaration method - - @Test(result="null") - TypeDeclaration getDeclaringType1() { - return thisClassDecl.getDeclaringType(); - } - - @Test(result="ClassDecl") - TypeDeclaration getDeclaringType2() { - return nested.getDeclaringType(); - } - - - // TypeDeclaration methods - - @Test(result={"nested", "object", "i"}) - Collection getFields() { - return thisClassDecl.getFields(); - } - - @Test(result={}) - Collection getFormalTypeParameters1() { - return thisClassDecl.getFormalTypeParameters(); - } - - @Test(result="T") - Collection getFormalTypeParameters2() { - return nested.getFormalTypeParameters(); - } - - @Test(result="ClassDecl.NestedClass") - Collection getNestedTypes() { - return thisClassDecl.getNestedTypes(); - } - - @Test(result="") - PackageDeclaration getPackage1() { - return thisClassDecl.getPackage(); - } - - @Test(result="java.lang") - PackageDeclaration getPackage2() { - return object.getPackage(); - } - - @Test(result="ClassDecl") - String getQualifiedName1() { - return thisClassDecl.getQualifiedName(); - } - - @Test(result="ClassDecl.NestedClass") - String getQualifiedName2() { - return nested.getQualifiedName(); - } - - @Test(result="java.lang.Object") - String getQualifiedName3() { - return object.getQualifiedName(); - } - - @Test(result="java.io.Serializable") - Collection getSuperinterfaces() { - return nested.getSuperinterfaces(); - } - - - // ClassDeclaration methods - - @Test(result={"ClassDecl()", "ClassDecl(int)"}) - Collection getConstructors1() { - return thisClassDecl.getConstructors(); - } - - // Check for default constructor. - // 4997614: visitConstructionDeclaration reports info when there is no ctor - @Test(result={"NestedClass()"}) - Collection getConstructors2() { - return nested.getConstructors(); - } - - @Test(result={"m1()", "m2()", "m2(int)"}) - Collection getMethods() { - return nested.getMethods(); - } - - @Test(result={"Tester"}) - ClassType getSuperclass() { - return thisClassDecl.getSuperclass(); - } - - @Test(result={"null"}) - ClassType objectHasNoSuperclass() { - return object.getSuperclass(); - } -} - - -// Annotations used for testing. - -@interface AT1 { -} - -@interface AT2 { -} --- old/test/tools/apt/mirror/declaration/ConstExpr.java 2012-01-19 16:21:52.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 5027675 5048535 - * @summary Tests FieldDeclaration.getConstantExpression method - * @library ../../lib - * @compile -source 1.5 ConstExpr.java - * @run main/othervm ConstExpr - */ - - -import java.math.RoundingMode; -import java.util.*; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import static java.math.RoundingMode.UP; - -import static com.sun.mirror.util.DeclarationVisitors.*; - - -public class ConstExpr extends Tester { - - public static void main(String[] args) { - (new ConstExpr()).run(); - } - - - // Declarations used by tests - - public static final byte B = (byte) 0xBE; - public static final short S = (short) 32767; - public static final int I = -4; - public static final long l = 4294967296L; - public static final float f = 3.5f; - public static final double PI = Math.PI; - public static final char C = 'C'; - public static final String STR = "cheese"; - - public static final char SMILEY = '\u263A'; - public static final String TWOLINES = "ab\ncd"; - - public static final double D1 = Double.POSITIVE_INFINITY; - public static final double D2 = Double.NEGATIVE_INFINITY; - public static final double D3 = Double.NaN; - public static final float F1 = Float.POSITIVE_INFINITY; - public static final float F2 = Float.NEGATIVE_INFINITY; - public static final float F3 = Float.NaN; - - public static final String NOSTR = null; // not a compile-time constant - public static final RoundingMode R = UP; // not a compile-time constant - - - @Test(result={ - "0xbe", - "32767", - "-4", - "4294967296L", - "3.5f", - "3.141592653589793", - "'C'", - "\"cheese\"", - - "'\\u263a'", - "\"ab\\ncd\"", - - "1.0/0.0", - "-1.0/0.0", - "0.0/0.0", - "1.0f/0.0f", - "-1.0f/0.0f", - "0.0f/0.0f", - - "null", - "null" - }, - ordered=true) - Collection getConstantExpression() { - final Collection res = new ArrayList(); - - thisClassDecl.accept( - DeclarationVisitors.getSourceOrderDeclarationScanner( - NO_OP, - new SimpleDeclarationVisitor() { - public void visitFieldDeclaration(FieldDeclaration f) { - res.add(f.getConstantExpression()); - } - })); - return res; - } -} --- old/test/tools/apt/mirror/declaration/ConstructorDecl.java 2012-01-19 16:21:52.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 4993299 - * @summary ConstructorDeclaration tests - * @library ../../lib - * @compile -source 1.5 ConstructorDecl.java - * @run main/othervm ConstructorDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class ConstructorDecl extends Tester { - - /** - * Sed Quis custodiet ipsos custodes? - */ - @AT1 - public ConstructorDecl() { - } - - - public static void main(String[] args) { - (new ConstructorDecl()).run(); - } - - - private ConstructorDeclaration ctor = null; // a constructor - private ConstructorDeclaration ctorDef = null; // a default c'tor - private ConstructorDeclaration ctorInner = null; // an inner class c'tor - - protected void init() { - ctor = getAConstructor(thisClassDecl); - ctorDef = getAConstructor((ClassDeclaration) - env.getTypeDeclaration("C1")); - ctorInner = getAConstructor((ClassDeclaration) - env.getTypeDeclaration("C1.C2")); - } - - // Return a constructor of a class. - private ConstructorDeclaration getAConstructor(ClassDeclaration c) { - return c.getConstructors().iterator().next(); - } - - - // Declaration methods - - @Test(result="constructor") - Collection accept() { - final Collection res = new ArrayList(); - - ctor.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitExecutableDeclaration(ExecutableDeclaration e) { - res.add("executable"); - } - public void visitConstructorDeclaration(ConstructorDeclaration c) { - res.add("constructor"); - } - }); - return res; - } - - @Test(result={"@AT1"}) - Collection getAnnotationMirrors() { - return ctor.getAnnotationMirrors(); - } - - @Test(result=" Sed Quis custodiet ipsos custodes?\n") - String getDocComment() { - return ctor.getDocComment(); - } - - @Test(result={"public"}) - Collection getModifiers() { - return ctor.getModifiers(); - } - - @Test(result="ConstructorDecl.java") - String getPosition() { - return ctor.getPosition().file().getName(); - } - - @Test(result="ConstructorDecl.java") - String getPositionDefault() { - return ctorDef.getPosition().file().getName(); - } - - @Test(result="ConstructorDecl") - String getSimpleName() { - return ctor.getSimpleName(); - } - - @Test(result="C2") - String getSimpleNameInner() { - return ctorInner.getSimpleName(); - } - - - // MemberDeclaration method - - @Test(result="ConstructorDecl") - TypeDeclaration getDeclaringType() { - return ctor.getDeclaringType(); - } - - - // ExecutableDeclaration methods - - @Test(result={}) - Collection getFormalTypeParameters1() { - return ctor.getFormalTypeParameters(); - } - - @Test(result={"N extends java.lang.Number"}) - Collection getFormalTypeParameters2() { - return ctorInner.getFormalTypeParameters(); - } - - @Test(result={}) - Collection getParameters1() { - return ctor.getParameters(); - } - - // 4993299: verify synthetic parameters to inner class constructors - // aren't visible - @Test(result={"N n1", "N n2", "java.lang.String[] ss"}, - ordered=true) - Collection getParameters2() { - return ctorInner.getParameters(); - } - - @Test(result={"java.lang.Throwable"}) - Collection getThrownTypes() { - return ctorInner.getThrownTypes(); - } - - @Test(result="false") - Boolean isVarArgs1() { - return ctor.isVarArgs(); - } - - @Test(result="true") - Boolean isVarArgs2() { - return ctorInner.isVarArgs(); - } - - - // toString - - @Test(result=" C2(N, N, String...)") - @Ignore("This is what it would be nice to see.") - String toStringTest() { - return ctorInner.toString(); - } -} - - -// Classes and interfaces used for testing. - -class C1 { - class C2 { - C2(N n1, N n2, String... ss) throws Throwable { - } - } -} - -@interface AT1 { -} --- old/test/tools/apt/mirror/declaration/EnumDecl.java 2012-01-19 16:21:52.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 4989987 5010050 - * @summary EnumDeclaration tests - * @library ../../lib - * @compile -source 1.5 EnumDecl.java - * @run main/othervm EnumDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class EnumDecl extends Tester { - - public static void main(String[] args) { - (new EnumDecl()).run(); - } - - - private EnumDeclaration eDecl; - - protected void init() { - eDecl = (EnumDeclaration) env.getTypeDeclaration("E"); - } - - - // Declaration methods - - @Test(result="enum") - Collection accept() { - final Collection res = new ArrayList(); - - eDecl.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitClassDeclaration(ClassDeclaration c) { - res.add("class"); - } - public void visitEnumDeclaration(EnumDeclaration e) { - res.add("enum"); - } - }); - return res; - } - - - // ClassDeclaration methods - - // 4989987: Verify synthetic enum constructor parameters are not visible - @Test(result={"E(java.lang.String)"}) - Collection getConstructors() { - return eDecl.getConstructors(); - } - - // 4989987: Verify synthetic enum constructor parameters are not visible - @Test(result={"java.lang.String color"}) - Collection getConstructorParams() { - return eDecl.getConstructors().iterator().next().getParameters(); - } - - @Test(result={"values()", "valueOf(java.lang.String)"}) - Collection getMethods() { - return eDecl.getMethods(); - } - - // 5010050: Cannot find parameter names for valueOf(String name) method... - @Test(result={"java.lang.String name"}) - Collection getMethodParams() { - for (MethodDeclaration m : eDecl.getMethods()) { - if (m.getSimpleName().equals("valueOf")) { - return m.getParameters(); - } - } - throw new AssertionError(); - } - - - // EnumDeclaration methods - - @Test(result={"stop", "slow", "go"}) - Collection getEnumConstants() { - return eDecl.getEnumConstants(); - } -} - - -// An enum to use for testing. - -enum E { - stop("red"), - slow("amber"), - go("green"); - - private String color; - E(String color) { - this.color = color; - } -} --- old/test/tools/apt/mirror/declaration/FieldDecl.java 2012-01-19 16:21:52.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,161 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5008309 - * @summary FieldDeclaration tests - * @library ../../lib - * @compile -source 1.5 FieldDecl.java - * @run main/othervm FieldDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class FieldDecl extends Tester { - - public static void main(String[] args) { - (new FieldDecl()).run(); - } - - - private FieldDeclaration f1 = null; // a field - private FieldDeclaration f2 = null; // a static field - private FieldDeclaration f3 = null; // a constant field - - protected void init() { - f1 = getField("aField"); - f2 = getField("aStaticField"); - f3 = getField("aConstantField"); - } - - - // Declaration methods - - @Test(result="field") - Collection accept() { - final Collection res = new ArrayList(); - - f1.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitFieldDeclaration(FieldDeclaration f) { - res.add("field"); - } - public void visitEnumConstantDeclaration( - EnumConstantDeclaration e) { - res.add("enum const"); - } - }); - return res; - } - - @Test(result={"@FieldDecl.AT1"}) - Collection getAnnotationMirrors() { - return f1.getAnnotationMirrors(); - } - - @Test(result=" Sed Quis custodiet ipsos custodes?\n") - String getDocComment() { - return f1.getDocComment(); - } - - @Test(result={"public"}) - Collection getModifiers() { - return f1.getModifiers(); - } - - @Test(result="FieldDecl.java") - String getPosition() { - return f1.getPosition().file().getName(); - } - - @Test(result="aField") - String getSimpleName() { - return f1.getSimpleName(); - } - - - // MemberDeclaration method - - @Test(result="FieldDecl") - TypeDeclaration getDeclaringType() { - return f1.getDeclaringType(); - } - - - // FieldDeclaration methods - - @Test(result="java.util.List") - TypeMirror getType1() { - return f1.getType(); - } - - @Test(result="int") - TypeMirror getType2() { - return f2.getType(); - } - - @Test(result="null") - Object getConstantValue1() { - return f1.getConstantValue(); - } - - // 5008309: FieldDeclaration.getConstantValue() doesn't return anything - @Test(result="true") - Object getConstantValue2() { - return f3.getConstantValue(); - } - - - // toString - - @Test(result="aField") - String toStringTest() { - return f1.toString(); - } - - - // Declarations used by tests. - - /** - * Sed Quis custodiet ipsos custodes? - */ - @AT1 - public List aField = new ArrayList(); - - static int aStaticField; - - public static final boolean aConstantField = true; - - - @interface AT1 { - } -} --- old/test/tools/apt/mirror/declaration/GetAnno.java 2012-01-19 16:21:52.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4989091 5050782 5051962 - * @summary Tests Declaration.getAnnotation method - * @library ../../lib - * @compile -source 1.5 GetAnno.java - * @run main/othervm GetAnno - */ - - -import java.lang.annotation.*; -import java.util.*; - -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; - -import static java.lang.annotation.RetentionPolicy.*; - - -public class GetAnno extends Tester { - - public static void main(String[] args) { - (new GetAnno()).run(); - } - - - // Annotations used by tests - - @Retention(RUNTIME) - @interface AT1 { - long l(); - String s(); - RetentionPolicy e(); - String[] sa(); - AT2 a(); - } - - @Inherited - @interface AT2 { - } - - @interface AT3 { - Class value() default String.class; - } - - // Array-valued elements of various kinds. - @interface AT4 { - boolean[] bs(); - long[] ls(); - String[] ss(); - RetentionPolicy[] es(); - AT2[] as(); - } - - - @Test(result="@GetAnno$AT1(l=7, s=sigh, e=CLASS, sa=[in, out], " + - "a=@GetAnno$AT2())") - @AT1(l=7, s="sigh", e=CLASS, sa={"in", "out"}, a=@AT2) - public Annotation getAnnotation() { - MethodDeclaration m = getMethod("getAnnotation"); - AT1 a = m.getAnnotation(AT1.class); - if (a.l() != 7 || !a.s().equals("sigh") || a.e() != CLASS) - throw new AssertionError(); - return a; - } - - @Test(result="null") - public Annotation getAnnotationNotThere() { - return thisClassDecl.getAnnotation(Deprecated.class); - } - - @Test(result="@GetAnno$AT4(bs=[true, false], " + - "ls=[9, 8], " + - "ss=[black, white], " + - "es=[CLASS, SOURCE], " + - "as=[@GetAnno$AT2(), @GetAnno$AT2()])") - @AT4(bs={true, false}, - ls={9, 8}, - ss={"black", "white"}, - es={CLASS, SOURCE}, - as={@AT2, @AT2}) - public AT4 getAnnotationArrayValues() { - MethodDeclaration m = getMethod("getAnnotationArrayValues"); - return m.getAnnotation(AT4.class); - } - - @Test(result="@GetAnno$AT3(value=java.lang.String)") - @AT3(String.class) - public AT3 getAnnotationWithClass1() { - MethodDeclaration m = getMethod("getAnnotationWithClass1"); - return m.getAnnotation(AT3.class); - } - - @Test(result="java.lang.String") - public TypeMirror getAnnotationWithClass2() { - AT3 a = getAnnotationWithClass1(); - try { - Class c = a.value(); - throw new AssertionError(); - } catch (MirroredTypeException e) { - return e.getTypeMirror(); - } - } - - @Test(result="boolean") - @AT3(boolean.class) - public TypeMirror getAnnotationWithPrim() { - MethodDeclaration m = getMethod("getAnnotationWithPrim"); - AT3 a = m.getAnnotation(AT3.class); - try { - Class c = a.value(); - throw new AssertionError(); - } catch (MirroredTypeException e) { - return e.getTypeMirror(); - } - } - - // 5050782 - @Test(result="null") - public AT2 getInheritedAnnotation() { - return thisClassDecl.getAnnotation(AT2.class); - } - - /** - * Verify that an annotation created by Declaration.getAnnotation() - * has the same hash code as a like annotation created by core - * reflection. - */ - @Test(result="true") - @AT1(l=7, s="sigh", e=CLASS, sa={"in", "out"}, a=@AT2) - public boolean getAnnotationHashCode() { - MethodDeclaration m1 = getMethod("getAnnotationHashCode"); - AT1 a1 = m1.getAnnotation(AT1.class); - java.lang.reflect.Method m2 = null; - try { - m2 = this.getClass().getMethod("getAnnotationHashCode"); - } catch (NoSuchMethodException e) { - assert false; - } - AT1 a2 = m2.getAnnotation(AT1.class); - return a1.hashCode() == a2.hashCode(); - } -} --- old/test/tools/apt/mirror/declaration/InterfaceDecl.java 2012-01-19 16:21:53.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,243 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 4993303 5004618 5010746 - * @summary InterfaceDeclaration tests - * @library ../../lib - * @compile -source 1.5 InterfaceDecl.java - * @run main/othervm InterfaceDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -/** - * Sed Quis custodiet ipsos custodes? - */ -@AT1 -@AT2 -public class InterfaceDecl extends Tester { - - public static void main(String[] args) { - (new InterfaceDecl()).run(); - } - - - private InterfaceDeclaration iDecl = null; // an interface - private InterfaceDeclaration nested = null; // a nested interface - - protected void init() { - iDecl = (InterfaceDeclaration) env.getTypeDeclaration("I"); - nested = (InterfaceDeclaration) - iDecl.getNestedTypes().iterator().next(); - } - - - // Declaration methods - - @Test(result="interface") - Collection accept() { - final Collection res = new ArrayList(); - - iDecl.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitClassDeclaration(ClassDeclaration c) { - res.add("class"); - } - public void visitInterfaceDeclaration(InterfaceDeclaration e) { - res.add("interface"); - } - public void visitAnnotationTypeDeclaration( - AnnotationTypeDeclaration e) { - res.add("annotation type"); - } - }); - return res; - } - - @Test(result="true") - boolean equals1() { - return iDecl.equals(iDecl); - } - - @Test(result="false") - boolean equals2() { - return iDecl.equals(nested); - } - - @Test(result="true") - boolean equals3() { - return iDecl.equals(env.getTypeDeclaration("I")); - } - - - @Test(result={"@AT1", "@AT2"}) - Collection getAnnotationMirrors() { - return iDecl.getAnnotationMirrors(); - } - - @Test(result=" Sed Quis custodiet ipsos custodes?\n") - String getDocComment() { - return iDecl.getDocComment(); - } - - // Check that interface has "abstract" modifier, even though it's implict - // in the source code. - @Test(result={"abstract"}) - Collection getModifiers1() { - return iDecl.getModifiers(); - } - - // Check that nested interface has "static" modifier, even though - // it's implicit in the source code and the VM doesn't set that bit. - @Test(result={"public", "abstract", "static"}) - Collection getModifiers2() { - return nested.getModifiers(); - } - - @Test(result="InterfaceDecl.java") - String getPosition() { - return iDecl.getPosition().file().getName(); - } - - @Test(result="I") - String getSimpleName1() { - return iDecl.getSimpleName(); - } - - @Test(result="Nested") - String getSimpleName2() { - return nested.getSimpleName(); - } - - - // MemberDeclaration method - - @Test(result="null") - TypeDeclaration getDeclaringType1() { - return iDecl.getDeclaringType(); - } - - @Test(result="I") - TypeDeclaration getDeclaringType2() { - return nested.getDeclaringType(); - } - - - // TypeDeclaration methods - - @Test(result={"i"}) - Collection getFields() { - return iDecl.getFields(); - } - - @Test(result={"T extends java.lang.Number"}) - Collection getFormalTypeParameters1() { - return iDecl.getFormalTypeParameters(); - } - - @Test(result={}) - Collection getFormalTypeParameters2() { - return nested.getFormalTypeParameters(); - } - - // 4993303: verify policy on Object methods being visible - @Test(result={"m()", "toString()"}) - Collection getMethods() { - return nested.getMethods(); - } - - @Test(result="I.Nested") - Collection getNestedTypes() { - return iDecl.getNestedTypes(); - } - - @Test(result="") - PackageDeclaration getPackage1() { - return iDecl.getPackage(); - } - - @Test(result="java.util") - PackageDeclaration getPackage2() { - InterfaceDeclaration set = - (InterfaceDeclaration) env.getTypeDeclaration("java.util.Set"); - return set.getPackage(); - } - - @Test(result="I") - String getQualifiedName1() { - return iDecl.getQualifiedName(); - } - - @Test(result="I.Nested") - String getQualifiedName2() { - return nested.getQualifiedName(); - } - - @Test(result="java.util.Set") - String getQualifiedName3() { - InterfaceDeclaration set = - (InterfaceDeclaration) env.getTypeDeclaration("java.util.Set"); - return set.getQualifiedName(); - } - - @Test(result="java.lang.Runnable") - Collection getSuperinterfaces() { - return iDecl.getSuperinterfaces(); - } -} - - -// Interfaces used for testing. - -/** - * Sed Quis custodiet ipsos custodes? - */ -@AT1 -@AT2 -interface I extends Runnable { - int i = 6; - void m1(); - void m2(); - void m2(int j); - - interface Nested { - void m(); - String toString(); - } -} - -@interface AT1 { -} - -@interface AT2 { -} --- old/test/tools/apt/mirror/declaration/MethodDecl.java 2012-01-19 16:21:53.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,244 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5010746 - * @summary MethodDeclaration tests - * @library ../../lib - * @compile -source 1.5 MethodDecl.java - * @run main/othervm MethodDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class MethodDecl extends Tester { - - public static void main(String[] args) { - (new MethodDecl()).run(); - } - - - private MethodDeclaration meth1 = null; // a method - private MethodDeclaration meth2 = null; // another method - - protected void init() { - meth1 = getMethod("m1"); - meth2 = getMethod("m2"); - } - - - // Declaration methods - - @Test(result="method") - Collection accept() { - final Collection res = new ArrayList(); - - meth1.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitExecutableDeclaration(ExecutableDeclaration e) { - res.add("executable"); - } - public void visitMethodDeclaration(MethodDeclaration m) { - res.add("method"); - } - public void visitAnnotationTypeElementDeclaration( - AnnotationTypeElementDeclaration a) { - res.add("anno type element"); - } - }); - return res; - } - - @Test(result={"@AT1"}) - Collection getAnnotationMirrors() { - return meth1.getAnnotationMirrors(); - } - - @Test(result=" Sed Quis custodiet ipsos custodes?\n") - String getDocComment() { - return meth1.getDocComment(); - } - - @Test(result={"private", "static", "strictfp"}) - Collection getModifiers() { - return meth1.getModifiers(); - } - - // Interface methods are implicitly public and abstract. - @Test(result={"public", "abstract"}) - Collection getModifiersInterface() { - for (TypeDeclaration t : thisClassDecl.getNestedTypes()) { - for (MethodDeclaration m : t.getMethods()) { - return m.getModifiers(); - } - } - throw new AssertionError(); - } - - @Test(result="MethodDecl.java") - String getPosition() { - return meth1.getPosition().file().getName(); - } - - @Test(result="m2") - String getSimpleName() { - return meth2.getSimpleName(); - } - - - // MemberDeclaration method - - @Test(result="MethodDecl") - TypeDeclaration getDeclaringType() { - return meth1.getDeclaringType(); - } - - - // ExecutableDeclaration methods - - @Test(result={}) - Collection getFormalTypeParameters1() { - return meth1.getFormalTypeParameters(); - } - - @Test(result={"T", "N extends java.lang.Number"}, - ordered=true) - Collection getFormalTypeParameters2() { - return meth2.getFormalTypeParameters(); - } - - @Test(result={}) - Collection getParameters1() { - return meth1.getParameters(); - } - - @Test(result={"N n", "java.lang.String[] ss"}, - ordered=true) - Collection getParameters2() { - return meth2.getParameters(); - } - - @Test(result="true") - boolean parameterEquals1() { - ParameterDeclaration p1 = - getMethod("m3").getParameters().iterator().next(); - ParameterDeclaration p2 = - getMethod("m3").getParameters().iterator().next(); - return p1.equals(p2); - } - - @Test(result="false") - boolean parameterEquals2() { - ParameterDeclaration p1 = - getMethod("m3").getParameters().iterator().next(); - ParameterDeclaration p2 = - getMethod("m4").getParameters().iterator().next(); - return p1.equals(p2); - } - - @Test(result="true") - boolean parameterHashCode() { - ParameterDeclaration p1 = - getMethod("m3").getParameters().iterator().next(); - ParameterDeclaration p2 = - getMethod("m3").getParameters().iterator().next(); - return p1.hashCode() == p2.hashCode(); - } - - @Test(result={"java.lang.Throwable"}) - Collection getThrownTypes() { - return meth2.getThrownTypes(); - } - - @Test(result="false") - Boolean isVarArgs1() { - return meth1.isVarArgs(); - } - - @Test(result="true") - Boolean isVarArgs2() { - return meth2.isVarArgs(); - } - - - // MethodDeclaration methods - - @Test(result="void") - TypeMirror getReturnType1() { - return meth1.getReturnType(); - } - - @Test(result="N") - TypeMirror getReturnType2() { - return meth2.getReturnType(); - } - - - // toString - - @Test(result=" m2(N, java.lang.String...)") - @Ignore("This is what it would be nice to see.") - String toStringTest() { - return meth2.toString(); - } - - - // Declarations used by tests. - - /** - * Sed Quis custodiet ipsos custodes? - */ - @AT1 - private static strictfp void m1() { - } - - private N m2(N n, String... ss) throws Throwable { - return null; - } - - private void m3(String s) { - } - - private void m4(String s) { - } - - // A nested interface - interface I { - void m(); - } -} - - -// Annotation type used by tests. - -@interface AT1 { -} --- old/test/tools/apt/mirror/declaration/PackageDecl.java 2012-01-19 16:21:53.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5031168 - * @summary PackageDeclaration tests - * @library ../../lib - * @compile -source 1.5 PackageDecl.java - * @run main/othervm PackageDecl - */ - - -import java.io.File; -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import pkg1.pkg2.*; - - -/** - * Sed Quis custodiet ipsos custodes? - */ -public class PackageDecl extends Tester { - - public PackageDecl() { - super(System.getProperty("test.src", ".") + File.separator + - "pkg1" + File.separator + "package-info.java"); - } - - public static void main(String[] args) { - (new PackageDecl()).run(); - } - - - private PackageDeclaration pkg1 = null; // a package - private PackageDeclaration pkg2 = null; // a subpackage - - protected void init() { - pkg1 = env.getPackage("pkg1"); - pkg2 = env.getPackage("pkg1.pkg2"); - } - - - // Declaration methods - - @Test(result="package") - Collection accept() { - final Collection res = new ArrayList(); - - pkg1.accept(new SimpleDeclarationVisitor() { - public void visitTypeDeclaration(TypeDeclaration t) { - res.add("type"); - } - public void visitPackageDeclaration(PackageDeclaration p) { - res.add("package"); - } - }); - return res; - } - - @Test(result={"@pkg1.AnAnnoType"}) - Collection getAnnotationMirrors() { - return pkg1.getAnnotationMirrors(); - } - - @Test(result=" Herein lieth the package comment.\n" + - " A doc comment it be, and wonderous to behold.\n") - String getDocCommentFromPackageInfoFile() { - return pkg1.getDocComment(); - } - - @Test(result="\nHerein lieth the package comment.\n" + - "An HTML file it be, and wonderous to behold.\n\n") - @Ignore("Not yet supported") - String getDocCommentFromHtmlFile() { - return pkg2.getDocComment(); - } - - @Test(result={}) - Collection getModifiers() { - return pkg1.getModifiers(); - } - - @Test(result="null") - SourcePosition getPosition() { - return thisClassDecl.getPackage().getPosition(); - } - - @Test(result="package-info.java") - String getPositionFromPackageInfoFile() { - return pkg1.getPosition().file().getName(); - } - - @Test(result="pkg1/pkg2/package.html") - @Ignore("Not yet supported") - String getPositionFromHtmlFile() { - return pkg2.getPosition().file().getName() - .replace(File.separatorChar, '/'); - } - - @Test(result="pkg1") - String getSimpleName1() { - return pkg1.getSimpleName(); - } - - @Test(result="pkg2") - String getSimpleName2() { - return pkg2.getSimpleName(); - } - - - // PackageDeclaration methods - - @Test(result="pkg1.AnAnnoType") - Collection getAnnotationTypes() { - return pkg1.getAnnotationTypes(); - } - - @Test(result={"pkg1.AClass", "pkg1.AnEnum"}) - Collection getClasses() { - return pkg1.getClasses(); - } - - @Test(result="pkg1.AnEnum") - Collection getEnums() { - return pkg1.getEnums(); - } - - @Test(result={"pkg1.AnInterface", "pkg1.AnAnnoType"}) - Collection getInterfaces() { - return pkg1.getInterfaces(); - } - - @Test(result="pkg1") - String getQualifiedName1() { - return pkg1.getQualifiedName(); - } - - @Test(result="pkg1.pkg2") - String getQualifiedName2() { - return pkg2.getQualifiedName(); - } -} --- old/test/tools/apt/mirror/declaration/ParameterDecl.java 2012-01-19 16:21:53.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5031171 - * @summary ParameterDeclaration tests - * @library ../../lib - * @run main/othervm ParameterDecl - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class ParameterDecl extends Tester { - - public static void main(String[] args) { - (new ParameterDecl()).run(); - } - - - // Declarations used by tests - - @interface AT1 { - } - - @interface AT2 { - boolean value(); - } - - private void m1(@AT1 @AT2(true) final int p1) { - } - - private void m2(int p1) { - } - - - private ParameterDeclaration p1 = null; // a parameter - - protected void init() { - p1 = getMethod("m1").getParameters().iterator().next(); - } - - - // Declaration methods - - @Test(result="param") - Collection accept() { - final Collection res = new ArrayList(); - - p1.accept(new SimpleDeclarationVisitor() { - public void visitFieldDeclaration(FieldDeclaration f) { - res.add("field"); - } - public void visitParameterDeclaration(ParameterDeclaration p) { - res.add("param"); - } - }); - return res; - } - - @Test(result={"@ParameterDecl.AT1", "@ParameterDecl.AT2(true)"}) - Collection getAnnotationMirrors() { - return p1.getAnnotationMirrors(); - } - - @Test(result={"final"}) - Collection getModifiers() { - return p1.getModifiers(); - } - - @Test(result="ParameterDecl.java") - String getPosition() { - return p1.getPosition().file().getName(); - } - - @Test(result="p1") - String getSimpleName() { - return p1.getSimpleName(); - } - - - // ParameterDeclaration methods - - @Test(result="int") - TypeMirror getType() { - return p1.getType(); - } - - - // toString, equals - - @Test(result="int p1") - String toStringTest() { - return p1.toString(); - } - - @Test(result="true") - boolean equalsTest1() { - ParameterDeclaration p = - getMethod("m1").getParameters().iterator().next(); - return p1.equals(p); - } - - // Not all p1's are equal. - @Test(result="false") - boolean equalsTest2() { - ParameterDeclaration p2 = - getMethod("m2").getParameters().iterator().next(); - return p1.equals(p2); - } -} --- old/test/tools/apt/mirror/declaration/pkg1/AClass.java 2012-01-19 16:21:53.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,28 +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. - */ - - -package pkg1; - -public class AClass { -} --- old/test/tools/apt/mirror/declaration/pkg1/AnAnnoType.java 2012-01-19 16:21:54.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,29 +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. - */ - - - -package pkg1; - -public @interface AnAnnoType { -} --- old/test/tools/apt/mirror/declaration/pkg1/AnEnum.java 2012-01-19 16:21:54.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,28 +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. - */ - - -package pkg1; - -enum AnEnum { -} --- old/test/tools/apt/mirror/declaration/pkg1/AnInterface.java 2012-01-19 16:21:54.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,29 +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. - */ - - - -package pkg1; - -public interface AnInterface { -} --- old/test/tools/apt/mirror/declaration/pkg1/package-info.java 2012-01-19 16:21:54.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,30 +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. - */ - - -/** - * Herein lieth the package comment. - * A doc comment it be, and wonderous to behold. - */ -@AnAnnoType -package pkg1; --- old/test/tools/apt/mirror/declaration/pkg1/pkg2/AnInterface.java 2012-01-19 16:21:54.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,27 +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. - */ - -package pkg1.pkg2; - -public interface AnInterface { -} --- old/test/tools/apt/mirror/declaration/pkg1/pkg2/package.html 2012-01-19 16:21:55.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,36 +0,0 @@ - - - - - - - - -Herein lieth the package comment. -An HTML file it be, and wonderous to behold. - - - --- old/test/tools/apt/mirror/type/AnnoTyp.java 2012-01-19 16:21:55.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 - * @summary AnnotationType tests - * @library ../../lib - * @compile -source 1.5 AnnoTyp.java - * @run main/othervm AnnoTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class AnnoTyp extends Tester { - - public static void main(String[] args) { - (new AnnoTyp()).run(); - } - - - // Declaration used by tests - - @interface AT { - } - - - private AnnotationType at; // an annotation type - - @AT - protected void init() { - at = getAnno("init", "AnnoTyp.AT").getAnnotationType(); - } - - - // TypeMirror methods - - @Test(result="anno type") - Collection accept() { - final Collection res = new ArrayList(); - - at.accept(new SimpleTypeVisitor() { - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - public void visitClassType(ClassType t) { - res.add("class"); - } - public void visitInterfaceType(InterfaceType t) { - res.add("interface"); - } - public void visitAnnotationType(AnnotationType t) { - res.add("anno type"); - } - }); - return res; - } - - - // AnnotationType method - - @Test(result="AnnoTyp.AT") - AnnotationTypeDeclaration getDeclaration() { - return at.getDeclaration(); - } -} --- old/test/tools/apt/mirror/type/ArrayTyp.java 2012-01-19 16:21:55.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5009357 - * @summary ArrayType tests - * @library ../../lib - * @compile -source 1.5 ArrayTyp.java - * @run main/othervm ArrayTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class ArrayTyp extends Tester { - - public static void main(String[] args) { - (new ArrayTyp()).run(); - } - - - // Declaration used by tests - - private boolean[] bs; - private String[][] bss; - - - private ArrayType arr; // an array type - private ArrayType arrarr; // a multi-dimensional array type - - protected void init() { - arr = (ArrayType) getField("bs").getType(); - arrarr = (ArrayType) getField("bss").getType(); - } - - - // TypeMirror methods - - @Test(result="array") - Collection accept() { - final Collection res = new ArrayList(); - - arr.accept(new SimpleTypeVisitor() { - public void visitTypeMirror(TypeMirror t) { - res.add("type"); - } - public void visitArrayType(ArrayType t) { - res.add("array"); - } - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - }); - return res; - } - - @Test(result="boolean[]") - String toStringTest() { - return arr.toString(); - } - - @Test(result="java.lang.String[][]") - String toStringTestMulti() { - return arrarr.toString(); - } - - - // ArrayType method - - @Test(result="boolean") - TypeMirror getComponentType() { - return (PrimitiveType) arr.getComponentType(); - } - - @Test(result="java.lang.String[]") - TypeMirror getComponentTypeMulti() { - return (ArrayType) arrarr.getComponentType(); - } -} --- old/test/tools/apt/mirror/type/ClassTyp.java 2012-01-19 16:21:55.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,240 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5009360 5055963 - * @summary ClassType tests - * @library ../../lib - * @run main/othervm ClassTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class ClassTyp extends Tester { - - public static void main(String[] args) { - (new ClassTyp()).run(); - } - - - // Declarations used by tests - - static class C1 extends AbstractSet implements Set { - class C2 { - } - - static class C3 { - class C4 { - } - } - - public Iterator iterator() { - return null; - } - - public int size() { - return 0; - } - } - - - // Generate some class types to test. - private C1 f0; - private C1 f1; - private C1 f2; - private C1.C3 f3; - private C1.C2 f4; - private C1.C2 f5; - private C1 f6; - private C1.C3.C4 f7; - private static final int NUMTYPES = 8; - - // Type mirrors corresponding to the types of the above fields - private ClassType[] t = new ClassType[NUMTYPES]; - - // One more type: our own. - private ClassTyp me = this; - - - protected void init() { - for (int i = 0; i < t.length; i++) { - t[i] = (ClassType) getField("f"+i).getType(); - } - } - - - // TypeMirror methods - - @Test(result="class") - Collection accept() { - final Collection res = new ArrayList(); - - t[0].accept(new SimpleTypeVisitor() { - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - public void visitClassType(ClassType t) { - res.add("class"); - } - public void visitInterfaceType(InterfaceType t) { - res.add("interface"); - } - }); - return res; - } - - @Test(result="true") - boolean equals1() { - return t[0].equals(t[0]); - } - - @Test(result="false") - boolean equals2() { - return t[0].equals(t[1]); - } - - // Raw type is not same as type instantiated with unbounded type var. - @Test(result="false") - boolean equals3() { - return t[0].equals(t[2]); - } - - // C1 is same type as C1 - @Test(result="true") - boolean equals4() { - return t[0].equals(t[6]); - } - - @Test(result={ - "ClassTyp.C1", - "ClassTyp.C1", - "ClassTyp.C1", - "ClassTyp.C1.C3", - "ClassTyp.C1.C2", - "ClassTyp.C1.C2", - "ClassTyp.C1", - "ClassTyp.C1.C3.C4" - }, - ordered=true) - Collection toStringTests() { - Collection res = new ArrayList(); - for (ClassType c : t) { - res.add(c.toString()); - } - return res; - } - - - // DeclaredType methods - - @Test(result={"T1"}) - Collection getActualTypeArguments1() { - return t[0].getActualTypeArguments(); - } - - @Test(result={}) - Collection getActualTypeArguments2() { - return t[2].getActualTypeArguments(); - } - - @Test(result={"T2"}) - Collection getActualTypeArguments3() { - return t[3].getActualTypeArguments(); - } - - @Test(result="null") - DeclaredType getContainingType1() { - ClassType thisType = (ClassType) getField("me").getType(); - return thisType.getContainingType(); - } - - @Test(result="ClassTyp") - DeclaredType getContainingType2() { - return t[0].getContainingType(); - } - - @Test(result="ClassTyp.C1") - DeclaredType getContainingType3() { - return t[3].getContainingType(); - } - - @Test(result="ClassTyp.C1") - DeclaredType getContainingType4() { - return t[4].getContainingType(); - } - - @Test(result={"java.util.Set"}) - Collection getSuperinterfaces() { - return t[0].getSuperinterfaces(); - } - - - // ClassType methods - - @Test(result="ClassTyp.C1") - ClassDeclaration getDeclaration1() { - return t[0].getDeclaration(); - } - - @Test(result="ClassTyp.C1.C3") - ClassDeclaration getDeclaration2() { - return t[3].getDeclaration(); - } - - @Test(result="ClassTyp.C1.C2") - ClassDeclaration getDeclaration3a() { - return t[4].getDeclaration(); - } - - @Test(result="ClassTyp.C1.C2") - ClassDeclaration getDeclaration3b() { - return t[5].getDeclaration(); - } - - @Test(result="true") - boolean getDeclarationEq() { - return t[0].getDeclaration() == t[6].getDeclaration(); - } - - @Test(result="java.util.AbstractSet") - ClassType getSuperclass1() { - return t[0].getSuperclass(); - } - - @Test(result="java.lang.Object") - ClassType getSuperclass2() { - return t[4].getSuperclass(); - } - - @Test(result="null") - ClassType getSuperclassOfObject() { - return t[4].getSuperclass().getSuperclass(); - } -} --- old/test/tools/apt/mirror/type/EnumTyp.java 2012-01-19 16:21:56.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 - * @summary EnumType tests - * @library ../../lib - * @compile -source 1.5 EnumTyp.java - * @run main/othervm EnumTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class EnumTyp extends Tester { - - public static void main(String[] args) { - (new EnumTyp()).run(); - } - - - // Declarations used by tests - - enum Suit { - CIVIL, - CRIMINAL - } - - private Suit s; - - - private EnumType e; // an enum type - - protected void init() { - e = (EnumType) getField("s").getType(); - } - - - // TypeMirror methods - - @Test(result="enum") - Collection accept() { - final Collection res = new ArrayList(); - - e.accept(new SimpleTypeVisitor() { - public void visitTypeMirror(TypeMirror t) { - res.add("type"); - } - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - public void visitClassType(ClassType t) { - res.add("class"); - } - public void visitEnumType(EnumType t) { - res.add("enum"); - } - public void visitInterfaceType(InterfaceType t) { - res.add("interface"); - } - }); - return res; - } - - - // EnumType method - - @Test(result="EnumTyp.Suit") - EnumDeclaration getDeclaration() { - return e.getDeclaration(); - } -} --- old/test/tools/apt/mirror/type/InterfaceTyp.java 2012-01-19 16:21:56.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5055963 - * @summary InterfaceType tests - * @library ../../lib - * @run main/othervm InterfaceTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class InterfaceTyp extends Tester { - - public static void main(String[] args) { - (new InterfaceTyp()).run(); - } - - - // Declarations used by tests - - interface I1 extends Set { - interface I2 { - } - } - - - // Generate some interface types to test - private I1 f0; - private I1 f1; - private I1 f2; - private I1.I2 f3; - private I1.I2 f4; - private I1 f5; - private I3 f6; - private static final int NUMTYPES = 7; - - // Type mirrors corresponding to the types of the above fields - private InterfaceType[] t = new InterfaceType[NUMTYPES]; - - protected void init() { - for (int i = 0; i < t.length; i++) { - t[i] = (InterfaceType) getField("f"+i).getType(); - } - } - - - // TypeMirror methods - - @Test(result="interface") - Collection accept() { - final Collection res = new ArrayList(); - - t[0].accept(new SimpleTypeVisitor() { - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - public void visitClassType(ClassType t) { - res.add("class"); - } - public void visitInterfaceType(InterfaceType t) { - res.add("interface"); - } - }); - return res; - } - - @Test(result="true") - boolean equals1() { - return t[0].equals(t[0]); - } - - @Test(result="false") - boolean equals2() { - return t[0].equals(t[1]); - } - - // Raw type is not same as type instantiated with unbounded type var. - @Test(result="false") - boolean equals3() { - return t[0].equals(t[2]); - } - - // I1 is same type as I1 - @Test(result="true") - boolean equals4() { - return t[0].equals(t[5]); - } - - @Test(result={ - "InterfaceTyp.I1", - "InterfaceTyp.I1", - "InterfaceTyp.I1", - "InterfaceTyp.I1.I2", - "InterfaceTyp.I1.I2", - "InterfaceTyp.I1", - "I3" - }, - ordered=true) - Collection toStringTests() { - Collection res = new ArrayList(); - for (InterfaceType i : t) { - res.add(i.toString()); - } - return res; - } - - - // DeclaredType methods - - @Test(result={"T1"}) - Collection getActualTypeArguments1() { - return t[0].getActualTypeArguments(); - } - - @Test(result={}) - Collection getActualTypeArguments2() { - return t[2].getActualTypeArguments(); - } - - @Test(result={"java.lang.String"}) - Collection getActualTypeArguments3() { - return t[3].getActualTypeArguments(); - } - - @Test(result="InterfaceTyp") - DeclaredType getContainingType1() { - return t[0].getContainingType(); - } - - @Test(result="InterfaceTyp.I1") - DeclaredType getContainingType2() { - return t[3].getContainingType(); - } - - @Test(result="null") - DeclaredType getContainingTypeTopLevel() { - return t[6].getContainingType(); - } - - @Test(result={"java.util.Set"}) - Collection getSuperinterfaces() { - return t[0].getSuperinterfaces(); - } - - - - // InterfaceType method - - @Test(result="InterfaceTyp.I1") - InterfaceDeclaration getDeclaration1() { - return t[0].getDeclaration(); - } - - @Test(result="InterfaceTyp.I1.I2") - InterfaceDeclaration getDeclaration2a() { - return t[3].getDeclaration(); - } - - @Test(result="InterfaceTyp.I1.I2") - InterfaceDeclaration getDeclaration2b() { - return t[4].getDeclaration(); - } - - @Test(result="true") - boolean getDeclarationCaching() { - return t[0].getDeclaration() == t[5].getDeclaration(); - } -} - - -// A top-level interface used by tests. - -interface I3 { -} --- old/test/tools/apt/mirror/type/PrimitiveTyp.java 2012-01-19 16:21:56.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 - * @summary PrimitiveType tests - * @library ../../lib - * @compile -source 1.5 PrimitiveTyp.java - * @run main/othervm PrimitiveTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class PrimitiveTyp extends Tester { - - public static void main(String[] args) { - (new PrimitiveTyp()).run(); - } - - - // Declaration used by tests - - private boolean b; - - - private PrimitiveType prim; // a primitive type - - protected void init() { - prim = (PrimitiveType) getField("b").getType(); - } - - - // TypeMirror methods - - @Test(result="primitive") - Collection accept() { - final Collection res = new ArrayList(); - - prim.accept(new SimpleTypeVisitor() { - public void visitTypeMirror(TypeMirror t) { - res.add("type"); - } - public void visitPrimitiveType(PrimitiveType t) { - res.add("primitive"); - } - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - }); - return res; - } - - @Test(result="boolean") - String toStringTest() { - return prim.toString(); - } - - - // PrimitiveType method - - @Test(result="BOOLEAN") - PrimitiveType.Kind getKind() { - return prim.getKind(); - } -} --- old/test/tools/apt/mirror/type/TypeVar.java 2012-01-19 16:21:56.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 - * @summary TypeVariable tests - * @library ../../lib - * @compile -source 1.5 TypeVar.java - * @run main/othervm TypeVar - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class TypeVar extends Tester { - - public static void main(String[] args) { - (new TypeVar()).run(); - } - - - // Declarations used by tests - - private T t; - private S s; - - - private TypeVariable tvT; // type variable T - private TypeVariable tvS; // type variable S - - protected void init() { - tvT = (TypeVariable) getField("t").getType(); - tvS = (TypeVariable) getField("s").getType(); - } - - - // TypeMirror methods - - @Test(result="type var") - Collection accept() { - final Collection res = new ArrayList(); - - tvT.accept(new SimpleTypeVisitor() { - public void visitTypeMirror(TypeMirror t) { - res.add("type"); - } - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - public void visitTypeVariable(TypeVariable t) { - res.add("type var"); - } - }); - return res; - } - - @Test(result="T") - String toStringTest1() { - return tvT.toString(); - } - - @Test(result="S") - String toStringTest2() { - return tvS.toString(); - } - - - // TypeVariable method - - @Test(result="S extends java.lang.Number & java.lang.Runnable") - TypeParameterDeclaration getDeclaration() { - return tvS.getDeclaration(); - } -} --- old/test/tools/apt/mirror/type/WildcardTyp.java 2012-01-19 16:21:56.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,170 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 4853450 5009396 5010636 5031156 - * @summary WildcardType tests - * @library ../../lib - * @compile -source 1.5 WildcardTyp.java - * @run main/othervm WildcardTyp - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class WildcardTyp extends Tester { - - public static void main(String[] args) { - (new WildcardTyp()).run(); - } - - - // Declarations to use for testing - - interface G { - } - - interface G1 { - } - - interface G2> { - } - - // Some wildcard types to test. - private G f0; // unbound - private G f1; // covariant - private G f2; // contravariant - private G f3; // - private G1 f4; // "true" upper bound is an intersection type - private G2 f5; // 'true" upper bound is a recursive F-bound and - // not expressible - private static final int NUMTYPES = 6; - - // Type mirrors corresponding to the wildcard types of the above fields - private WildcardType[] t = new WildcardType[NUMTYPES]; - - - protected void init() { - for (int i = 0; i < t.length; i++) { - DeclaredType type = (DeclaredType) getField("f"+i).getType(); - t[i] = (WildcardType) - type.getActualTypeArguments().iterator().next(); - } - } - - private WildcardType wildcardFor(String field) { - DeclaredType d = (DeclaredType) getField(field).getType(); - return (WildcardType) d.getActualTypeArguments().iterator().next(); - } - - - // TypeMirror methods - - @Test(result="wild thing") - Collection accept() { - final Collection res = new ArrayList(); - - t[0].accept(new SimpleTypeVisitor() { - public void visitTypeMirror(TypeMirror t) { - res.add("type"); - } - public void visitReferenceType(ReferenceType t) { - res.add("ref type"); - } - public void visitWildcardType(WildcardType t) { - res.add("wild thing"); - } - }); - return res; - } - - @Test(result={ - "?", - "? extends java.lang.Number", - "? super java.lang.Number", - "? extends java.lang.Object", - "?", - "?" - }, - ordered=true) - Collection toStringTests() { - Collection res = new ArrayList(); - for (WildcardType w : t) { - res.add(w.toString()); - } - return res; - } - - - // WildcardType methods - - @Test(result={ - "null", - "null", - "java.lang.Number", - "null", - "null", - "null" - }, - ordered=true) - Collection getLowerBounds() { - Collection res = new ArrayList(); - for (WildcardType w : t) { - Collection bounds = w.getLowerBounds(); - int num = bounds.size(); - if (num > 1) { - throw new AssertionError("Bounds abound"); - } - res.add((num > 0) ? bounds.iterator().next() : null); - } - return res; - } - - @Test(result={ - "null", - "java.lang.Number", - "null", - "java.lang.Object", - "null", - "null" - }, - ordered=true) - Collection getUpperBounds() { - Collection res = new ArrayList(); - for (WildcardType w : t) { - Collection bounds = w.getUpperBounds(); - int num = bounds.size(); - if (num > 1) { - throw new AssertionError("Bounds abound"); - } - res.add((num > 0) ? bounds.iterator().next() : null); - } - return res; - } -} --- old/test/tools/apt/mirror/util/Overrides.java 2012-01-19 16:21:57.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 5037165 - * @summary Test the Declarations.overrides method - * @library ../../lib - * @run main/othervm Overrides - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - - -public class Overrides extends Tester { - - public static void main(String[] args) { - (new Overrides()).run(); - } - - - // Declarations used by tests - - static class A { - void m1(int i) {}; // does not override itself - void m2(int i) {}; - static void m3(int i) {}; - } - - static class B extends A { - void m1(int j) {}; // overrides A.m1 - void m1(String i) {}; // does not override A.m1 - void m4(int i) {}; // does not override A.m1 - } - - static class C extends B { - void m1(int i) {}; // overrides A.m1 and B.m1 - void m2(int i) {}; // overrides A.m2 - } - - static class D extends A { - static void m3(int i) {}; // does not override A.m3 - } - - static class E { - void m1(int i) {}; // does not override A.m1 - } - - - - private Declarations decls; - - private TypeDeclaration A; - private TypeDeclaration B; - private TypeDeclaration C; - private TypeDeclaration D; - private TypeDeclaration E; - private MethodDeclaration Am1; - private MethodDeclaration Am2; - private MethodDeclaration Am3; - private MethodDeclaration Bm1; - private MethodDeclaration Bm1b; - private MethodDeclaration Bm4; - private MethodDeclaration Cm1; - private MethodDeclaration Cm2; - private MethodDeclaration Dm3; - private MethodDeclaration Em1; - - protected void init() { - decls = env.getDeclarationUtils(); - - A = env.getTypeDeclaration("Overrides.A"); - B = env.getTypeDeclaration("Overrides.B"); - C = env.getTypeDeclaration("Overrides.C"); - D = env.getTypeDeclaration("Overrides.D"); - E = env.getTypeDeclaration("Overrides.E"); - - Am1 = getMethod(A, "m1", "i"); - Am2 = getMethod(A, "m2", "i"); - Am3 = getMethod(A, "m3", "i"); - Bm1 = getMethod(B, "m1", "j"); - Bm1b = getMethod(B, "m1", "i"); - Bm4 = getMethod(B, "m4", "i"); - Cm1 = getMethod(C, "m1", "i"); - Cm2 = getMethod(C, "m2", "i"); - Dm3 = getMethod(D, "m3", "i"); - Em1 = getMethod(E, "m1", "i"); - } - - private MethodDeclaration getMethod(TypeDeclaration t, - String methodName, String paramName) { - for (MethodDeclaration m : t.getMethods()) { - if (methodName.equals(m.getSimpleName()) && - paramName.equals(m.getParameters().iterator().next() - .getSimpleName())) { - return m; - } - } - throw new AssertionError(); - } - - - // Declarations methods - - @Test(result={"false", - "true", - "false", - "false", - "true", - "true", - "true", - "false", - "false"}, - ordered=true) - List overrides() { - return Arrays.asList( - decls.overrides(Am1, Am1), - decls.overrides(Bm1, Am1), - decls.overrides(Bm1b,Am1), - decls.overrides(Bm4, Am1), - decls.overrides(Cm1, Am1), - decls.overrides(Cm1, Bm1), - decls.overrides(Cm2, Am2), - decls.overrides(Dm3, Am3), - decls.overrides(Em1, Am1)); - } -} --- old/test/tools/apt/mirror/util/TypeCreation.java 2012-01-19 16:21:57.000000000 -0800 +++ /dev/null 2012-01-10 11:47:00.807870926 -0800 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2004, 2008, 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. - */ - - -/* - * @test - * @bug 5033381 - * @summary Test the type creation methods in Types. - * @library ../../lib - * @run main/othervm TypeCreation - */ - - -import java.util.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.type.*; -import com.sun.mirror.util.*; - -import static com.sun.mirror.type.PrimitiveType.Kind.*; - - -public class TypeCreation extends Tester { - - public static void main(String[] args) { - (new TypeCreation()).run(); - } - - - // Declarations used by tests - - class A { - } - - class O { - class I { - } - } - - - private Types types; - - private TypeDeclaration A; - private TypeDeclaration O; - private TypeDeclaration I; - - private DeclaredType AType; - - protected void init() { - types = env.getTypeUtils(); - A = env.getTypeDeclaration("TypeCreation.A"); - O = env.getTypeDeclaration("TypeCreation.O"); - I = env.getTypeDeclaration("TypeCreation.O.I"); - - AType = types.getDeclaredType(A); - } - - - @Test(result="boolean") - PrimitiveType getPrimitiveType() { - return types.getPrimitiveType(BOOLEAN); - } - - @Test(result="void") - VoidType getVoidType() { - return types.getVoidType(); - } - - @Test(result="boolean[]") - ArrayType getArrayType1() { - return types.getArrayType( - types.getPrimitiveType(BOOLEAN)); - } - - @Test(result="TypeCreation.A[]") - ArrayType getArrayType2() { - return types.getArrayType(AType); - } - - @Test(result="? extends TypeCreation.A") - WildcardType getWildcardType() { - Collection uppers = new ArrayList(); - Collection downers = new ArrayList(); - uppers.add(AType); - return types.getWildcardType(uppers, downers); - } - - @Test(result="TypeCreation.O") - DeclaredType getDeclaredType1() { - TypeDeclaration stringDecl = env.getTypeDeclaration("java.lang.String"); - DeclaredType stringType = types.getDeclaredType(stringDecl); - return types.getDeclaredType(O, stringType); - } - - @Test(result="TypeCreation.O.I") - DeclaredType getDeclaredType2() { - TypeDeclaration numDecl = env.getTypeDeclaration("java.lang.Number"); - DeclaredType numType = types.getDeclaredType(numDecl); - DeclaredType OType = getDeclaredType1(); - return types.getDeclaredType(OType, I, numType); - } -}