提交 f5f032cd 编写于 作者: L lana

Merge

#
# 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 @@ JAVAC_JAR = $(LIB_DIR)/javac.jar
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 @@ endif
#----- useful macros
TOOLS = javac javadoc javah javap apt
TOOLS = javac javadoc javah javap
SOURCE_LEVEL = 5
BOOTSTRAP_TARGET_LEVEL = 5
......@@ -319,28 +318,6 @@ $(JAVAP_JAR): $(JAVAP_JAVA_FILES) \
( $(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 @@ $(BUILDTOOLCLASSES_DIR)/%.class : $(BUILDTOOLSRC_DIR)/%.java
#----- 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 @@ quick-check: $(patsubst %, $(DIST_LIB_DIR)/%.jar, $(TOOLS))
- $(TESTJAVA) -jar $(JAVADOC_JAR) -version
$(TESTJAVA) -jar $(JAVAH_JAR) -version
- $(TESTJAVA) -jar $(JAVAP_JAR) -version
$(TESTJAVA) -jar $(APT_JAR) -version
#-----
......
#
# 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 @@ javap.tests = \
#
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
......
......@@ -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 @@
/>
<target name="build-all-tools"
depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt"
depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap"
/>
<target name="build-all-classes" depends="build-bootstrap-javac,-create-import-jdk-stubs">
<build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/>
<build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes}"/>
</target>
<!-- clean -->
......@@ -656,42 +656,6 @@
<target name="javap" depends="build-javap,jtreg-javap,findbugs-javap"/>
<!--
**** apt targets.
-->
<target name="build-bootstrap-apt" depends="build-bootstrap-javac">
<build-bootstrap-classes includes="${apt.includes}"/>
<build-bootstrap-jar name="apt" includes="${apt.includes}"
jarclasspath="javac.jar"/>
<build-bootstrap-tool name="apt"/>
</target>
<target name="build-apt" depends="build-javac,build-classes-apt">
<build-jar name="apt" includes="${apt.includes}" jarclasspath="javac.jar"/>
<build-tool name="apt"/>
</target>
<target name="build-classes-apt" depends="build-classes-javac">
<build-classes includes="${apt.includes}"/>
</target>
<target name="javadoc-apt" depends="build-apt,-def-javadoc-tool">
<javadoc-tool name="apt" includes="${apt.includes}"/>
</target>
<target name="jtreg-apt" depends="build-apt,-def-jtreg">
<jtreg-tool name="apt" tests="${apt.tests}"/>
</target>
<target name="findbugs-apt" depends="build-apt,-def-findbugs">
<findbugs-tool name="apt"/>
</target>
<target name="apt" depends="build-apt,jtreg-apt,findbugs-apt"/>
<!--
**** Create import JDK stubs.
-->
......@@ -967,7 +931,6 @@
<filename name="java/"/>
<filename name="javax/"/>
<filename name="com/sun/javadoc/"/>
<filename name="com/sun/mirror/"/>
<filename name="com/sun/source/"/>
</or>
</packageset>
......@@ -1005,7 +968,7 @@
samevm="@{samevm}" verbose="@{verbose}"
failonerror="false" resultproperty="jtreg.@{name}.result"
javacoptions="-g"
vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}:${build.classes.dir} @{jpda.jvmargs}">
vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}${path.separator}${build.classes.dir} @{jpda.jvmargs}">
<arg line="@{keywords}"/>
<arg line="@{options}"/>
<arg line="@{tests}"/>
......
......@@ -7,7 +7,7 @@ edit, run, test and debug the tools in the OpenJDK langtools
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.
......
#!/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
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
......
/*
* 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.
*
* <p> 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}.
*
* <p> 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();
}
/*
* 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.
*
* <p> 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 <i>specified</i> types.
* The type declarations said to be <i>included</i> in this invocation
* consist of the specified types and any types nested within them.
*
* <p> {@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 <tt>"-encoding"</tt>) to option value.
* For an option with no value (such as <tt>"-help"</tt>), the
* corresponding value in the map is <tt>null</tt>.
*
* <p> Options beginning with <tt>"-A"</tt> are <i>processor-specific.</i>
* Such options are unrecognized by the tool, but intended to be used by
* some annotation processor.
*
* @return the options passed to the tool
*/
Map<String,String> 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<TypeDeclaration> 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 <i>included</i>}
* 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<TypeDeclaration> getTypeDeclarations();
/**
* Returns the declarations annotated with the given annotation type.
* Only declarations of the types
* {@linkplain AnnotationProcessorEnvironment <i>included</i>}
* 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<Declaration> 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);
}
/*
* 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 <i>support</i> these types.
*
* <p> Each implementation of an <tt>AnnotationProcessorFactory</tt>
* 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 <tt>"-A"</tt>. For example, if this factory recognizes
* options such as <tt>-Adebug -Aloglevel=3</tt>, it will
* return the strings <tt>"-Adebug"</tt> and <tt>"-Aloglevel"</tt>.
*
* <p> 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<String> 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
* <tt>"<i>name</i>.*"</tt>
* representing the set of all annotation types
* with canonical names beginning with <tt>"<i>name</i>."</tt>
* Finally, <tt>"*"</tt> by itself represents the set of all
* annotation types.
*
* @return the names of the annotation types supported by this factory
*/
Collection<String> supportedAnnotationTypes();
/**
* Returns an annotation processor for a set of annotation
* types. The set will be empty if the factory supports
* &quot;<tt>*</tt>&quot; 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
* <tt>AnnotationProcessorFactory</tt> 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 <tt>null</tt> if the types are not supported or the
* processor cannot be created
*/
AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
AnnotationProcessorEnvironment env);
}
/*
* 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 {}
/*
* 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<AnnotationProcessor> aps =
new LinkedList<AnnotationProcessor>();
/**
* Constructs a new composite annotation processor.
* @param aps the component annotation processors
*/
public CompositeAnnotationProcessor(Collection<AnnotationProcessor> 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 <tt>process</tt> 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<AnnotationProcessor> aps) {
return new CompositeAnnotationProcessor(aps);
}
}
/*
* 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 <i>auxiliary</i> files.
*
* <p> 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 <tt>-s</tt> and <tt>-d</tt>.)
* Auxiliary files may be created in either location.
*
* <p> 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.
*
* <p> The {@linkplain java.nio.charset.Charset charset} used to
* encode the file is determined by the implementation.
* An annotation processing tool may have an <tt>-encoding</tt>
* 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
* <tt>loc</tt>, <tt>pkg</tt>, and <tt>relPath</tt>.
*
* <p> 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
* <tt>loc</tt>, <tt>pkg</tt>, and <tt>relPath</tt>.
*
* @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
}
}
/*
* 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 <tt>Messager</tt> 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 <tt>printError(null, msg)</tt>.
* @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 <tt>printWarning(null, msg)</tt>.
* @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 <tt>printNotice(null, msg)</tt>.
* @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);
}
/*
* 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.
*
* <p>While this class extends the serializable <tt>EventObject</tt>, 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 <tt>AnnotationProcessorEnvironment</tt> 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();
}
}
/*
* 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);
}
/*
* 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 <tt>true</tt> if this was the last round of annotation
* processing; returns <tt>false</tt> if there will be a subsequent round.
*/
boolean finalRound();
/**
* Returns <tt>true</tt> if an error was raised in this round of processing;
* returns <tt>false</tt> otherwise.
*/
boolean errorRaised();
/**
* Returns <tt>true</tt> if new source files were created in this round of
* processing; returns <tt>false</tt> otherwise.
*/
boolean sourceFilesCreated();
/**
* Returns <tt>true</tt> if new class files were created in this round of
* processing; returns <tt>false</tt> otherwise.
*/
boolean classFilesCreated();
}
/*
* 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.
*
* <p>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;
/*
* 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.
*
* <p> Annotations should not be compared using reference-equality
* ("<tt>==</tt>"). 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.
*
* <p>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<AnnotationTypeElementDeclaration, AnnotationValue> getElementValues();
}
/*
* 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<AnnotationTypeElementDeclaration> getMethods();
}
/*
* 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();
}
/*
* 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:
* <ul><li> a wrapper class (such as {@link Integer}) for a primitive type
* <li> {@code String}
* <li> {@code TypeMirror}
* <li> {@code EnumConstantDeclaration}
* <li> {@code AnnotationMirror}
* <li> {@code Collection<AnnotationValue>}
* (representing the elements, in order, if the value is an array)
* </ul>
*
* @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.
*
* <p>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();
}
/*
* 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.
*
* <p> While a <tt>ClassDeclaration</tt> represents the <i>declaration</i>
* of a class, a {@link ClassType} represents a class <i>type</i>.
* See {@link TypeDeclaration} for more on this distinction.
*
* <p> {@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 <tt>java.lang.Object</tt>,
* 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<ConstructorDeclaration> getConstructors();
/**
* {@inheritDoc}
*/
Collection<MethodDeclaration> getMethods();
}
/*
* 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 {
}
/*
* 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.
*
* <p> 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 <tt>true</tt> 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 <tt>null</tt>
* 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<AnnotationMirror> getAnnotationMirrors();
/**
* Returns the annotation of this declaration having the specified
* type. The annotation may be either inherited or directly
* present on this declaration.
*
* <p> The annotation returned by this method could contain an element
* whose value is of type <tt>Class</tt>.
* 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 <tt>Class</tt> 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 <tt>Class[]</tt>-valued element
* will result in a {@link MirroredTypesException}.
*
* <blockquote>
* <i>Note:</i> 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.
* </blockquote>
*
* @param <A> the annotation type
* @param annotationType the <tt>Class</tt> object corresponding to
* the annotation type
* @return the annotation of this declaration having the specified type
*
* @see #getAnnotationMirrors()
*/
<A extends Annotation> A getAnnotation(Class<A> annotationType);
/**
* Returns the modifiers of this declaration, excluding annotations.
* Implicit modifiers, such as the <tt>public</tt> and <tt>static</tt>
* modifiers of interface members, are included.
*
* @return the modifiers of this declaration in undefined order;
* an empty collection if there are none
*/
Collection<Modifier> 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<E>} is <tt>"Set"</tt>.
* 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 <tt>null</tt> if the position is unknown or not applicable.
*
* <p> 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);
}
/*
* 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();
}
/*
* 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<EnumConstantDeclaration> getEnumConstants();
}
/*
* 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 <tt>true</tt> if this method or constructor accepts a variable
* number of arguments.
*
* @return <tt>true</tt> 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<TypeParameterDeclaration> 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<ParameterDeclaration> getParameters();
/**
* Returns the exceptions and other throwables listed in this
* method or constructor's <tt>throws</tt> clause.
*
* @return the exceptions and other throwables listed in the
* <tt>throws</tt> clause, or an empty collection if there are none
*/
Collection<ReferenceType> getThrownTypes();
}
/*
* 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 <tt>null</tt> otherwise.
* The value will be of a primitive type or <tt>String</tt>.
* 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 <tt>null</tt> otherwise
*/
Object getConstantValue();
/**
* Returns the text of a <i>constant expression</i> representing the
* value of this field if this field is a compile-time constant.
* Returns <tt>null</tt> otherwise.
* The value will be of a primitive type or <tt>String</tt>.
* 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 <tt>null</tt> otherwise
*/
String getConstantExpression();
}
/*
* 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.
*
* <p> While an <tt>InterfaceDeclaration</tt> represents the
* <i>declaration</i> of an interface, an {@link InterfaceType}
* represents an interface <i>type</i>.
* 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 {
}
/*
* 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();
}
/*
* 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();
}
/*
* 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.
*
* <p> 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 <tt>public</tt> */ PUBLIC,
/** The modifier <tt>protected</tt> */ PROTECTED,
/** The modifier <tt>private</tt> */ PRIVATE,
/** The modifier <tt>abstract</tt> */ ABSTRACT,
/** The modifier <tt>static</tt> */ STATIC,
/** The modifier <tt>final</tt> */ FINAL,
/** The modifier <tt>transient</tt> */ TRANSIENT,
/** The modifier <tt>volatile</tt> */ VOLATILE,
/** The modifier <tt>synchronized</tt> */ SYNCHRONIZED,
/** The modifier <tt>native</tt> */ NATIVE,
/** The modifier <tt>strictfp</tt> */ 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;
}
}
/*
* 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.
*
* <p> {@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 <i>canonical</i> 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<ClassDeclaration> 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<EnumDeclaration> 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<InterfaceDeclaration> 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<AnnotationTypeDeclaration> getAnnotationTypes();
}
/*
* 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();
}
/*
* 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.
*
* <p> <a name="DECL_VS_TYPE"></a>
* While a <tt>TypeDeclaration</tt> represents the <i>declaration</i>
* of a class or interface, a {@link DeclaredType} represents a class
* or interface <i>type</i>, the latter being a use
* (or <i>invocation</i>) 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<String>} and {@code java.util.Set<Number>}
* (and many others), and to the raw type {@code java.util.Set}.
*
* <p> {@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 <i>canonical</i>
* 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<E>} is <tt>"java.util.Set"</tt>.
*
* @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<TypeParameterDeclaration> 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<InterfaceType> 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<FieldDeclaration> 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
* <tt>toString</tt>, that correspond to the methods of
* <tt>java.lang.Object</tt>.
*
* @return the methods that are directly declared,
* or an empty collection if there are none
*
* @see com.sun.mirror.util.DeclarationFilter
*/
Collection<? extends MethodDeclaration> 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<TypeDeclaration> getNestedTypes();
}
/*
* 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 <i>extends</i> clause.
* If there is no explicit <i>extends</i> clause, then
* <tt>java.lang.Object</tt> is considered to be the sole bound.
*
* @return the bounds of this type parameter
*/
Collection<ReferenceType> 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();
}
/*
* 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}.
*
* <p>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;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--
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.
-->
</head>
<body bgcolor="white">
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.
<p> 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.
<h4> Characteristics of the API </h4>
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.
<p> 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.
<p> The API does not provide direct support for generating new code.
<h4> Declarations and Types </h4>
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 <tt>Declaration</tt> represents a
program element such as a package, class, or method.
The interface hierarchy is depicted
<a href="com/sun/mirror/declaration/package-tree.html"> here</a>.
<p> 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
<a href="com/sun/mirror/type/package-tree.html"> here</a>.
<p> 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
<tt>java.util.Set</tt> defines the raw type <tt>java.util.Set</tt>,
the parameterized type {@code java.util.Set<String>},
and much more. Only the declaration can be annotated, for example,
and only a type can appear in a method signature.
<p> 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.
<h4> Utilities and Tool Support </h4>
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.
<p> 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
</body>
</html>
/*
* 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();
}
/*
* 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();
}
/*
* 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.
*
* <p> While a {@link ClassDeclaration} represents the <i>declaration</i>
* of a class, a <tt>ClassType</tt> represents a class <i>type</i>.
* 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 <tt>java.lang.Object</tt>,
* for which this method returns <tt>null</tt>.
*
* <p> For example, the class type extended by
* {@code java.util.TreeSet<String>} is
* {@code java.util.AbstractSet<String>}.
*
* @return the class type that is a direct supertype of this one,
* or <tt>null</tt> if there is none
*/
ClassType getSuperclass();
}
/*
* 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<String>}
* as well as raw types.
*
* <p> While a <tt>TypeDeclaration</tt> represents the <i>declaration</i>
* of a class or interface, a <tt>DeclaredType</tt> represents a class
* or interface <i>type</i>, the latter being a use of the former.
* See {@link TypeDeclaration} for more on this distinction.
*
* <p> A <tt>DeclaredType</tt> may represent a type
* for which details (declaration, supertypes, <i>etc.</i>) are unknown.
* This may be the result of a processing error, such as a missing class file,
* and is indicated by {@link #getDeclaration()} returning <tt>null</tt>.
* 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.
*
* <p> 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 <tt>null</tt> if this is a top-level type.
*
* <p> For example, the containing type of {@code O.I<S>}
* is the type {@code O}, and the containing type of
* {@code O<T>.I<S>} is the type {@code O<T>}.
*
* @return the type that contains this type,
* or <tt>null</tt> 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<String>.Inner<Number>}), 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<TypeMirror> 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.
*
* <p> For example, the interface type extended by
* {@code java.util.Set<String>} is {@code java.util.Collection<String>}.
*
* @return the interface types that are direct supertypes of this type,
* or an empty collection if there are none
*/
Collection<InterfaceType> getSuperinterfaces();
}
/*
* 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();
}
/*
* 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.
*
* <p> While an {@link InterfaceDeclaration} represents the
* <i>declaration</i> of an interface, an <tt>InterfaceType</tt>
* represents an interface <i>type</i>.
* 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();
}
/*
* 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 <tt>null</tt> 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 <tt>"void"</tt> for
* the pseudo-type representing the type of <tt>void</tt>.
*
* @return the fully qualified name of the type being accessed
*/
public String getQualifiedName() {
return name;
}
}
/*
* 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<TypeMirror> types; // cannot be serialized
private Collection<String> 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<TypeMirror> types) {
super("Attempt to access Class objects for TypeMirrors " + types);
this.types = types;
names = new ArrayList<String>();
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 <tt>null</tt> if unavailable
*/
public Collection<TypeMirror> 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 <tt>"void"</tt> for
* the pseudo-type representing the type of <tt>void</tt>.
*
* @return the fully qualified names, in order, of the types being
* accessed
*/
public Collection<String> getQualifiedNames() {
return Collections.unmodifiableCollection(names);
}
}
/*
* 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
* <tt>boolean</tt>, <tt>byte</tt>, <tt>short</tt>, <tt>int</tt>,
* <tt>long</tt>, <tt>char</tt>, <tt>float</tt>, and <tt>double</tt>.
*
* @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 <tt>boolean</tt> */ BOOLEAN,
/** The primitive type <tt>byte</tt> */ BYTE,
/** The primitive type <tt>short</tt> */ SHORT,
/** The primitive type <tt>int</tt> */ INT,
/** The primitive type <tt>long</tt> */ LONG,
/** The primitive type <tt>char</tt> */ CHAR,
/** The primitive type <tt>float</tt> */ FLOAT,
/** The primitive type <tt>double</tt> */ DOUBLE
}
}
/*
* 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 {
}
/*
* 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 <tt>void</tt>, are represented
* by type mirrors as well.
*
* <p> 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 <tt>true</tt> 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);
}
/*
* 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();
}
/*
* 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 <tt>void</tt>.
*
* @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 {
}
/*
* 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: <pre><tt>
* ?
* ? extends Number
* ? super T
* </tt></pre>
*
* <p> A wildcard may have its upper bound explicitly set by an
* <tt>extends</tt> clause, its lower bound explicitly set by a
* <tt>super</tt> 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<ReferenceType> 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<ReferenceType> getLowerBounds();
}
/*
* 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}.
*
* <p>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;
/*
* 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 <i>select</i> or to <i>match</i> 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.
*
* <p> A subclass can create an arbitrary filter simply by implementing
* the {@link #matches(Declaration)} method.
*
* <p> Examples.
* <p> Selecting the <tt>public</tt> declarations from a collection:
* <blockquote><pre>
* result = FILTER_PUBLIC.filter(decls); </pre></blockquote>
* Selecting class declarations (including enums):
* <blockquote><pre>
* classFilter = DeclarationFilter.getFilter(ClassDeclaration.class);
* result = classFilter.filter(decls); </pre></blockquote>
* Selecting class declarations but excluding enums:
* <blockquote><pre>
* enumFilter = DeclarationFilter.getFilter(EnumDeclaration.class);
* compoundFilter = classFilter.and(enumFilter.not());
* result = compoundFilter.filter(decls); </pre></blockquote>
* Selecting declarations named "Bob":
* <blockquote><pre>
* nameFilter = new DeclarationFilter() {
* public boolean matches(Declaration d) {
* return d.getSimpleName().equals("Bob");
* }
* };
* result = nameFilter.filter(decls); </pre></blockquote>
*
* @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 <tt>public</tt> declarations.
*/
public static final DeclarationFilter FILTER_PUBLIC =
new AccessFilter(PUBLIC);
/**
* A filter that selects only <tt>protected</tt> declarations.
*/
public static final DeclarationFilter FILTER_PROTECTED =
new AccessFilter(PROTECTED);
/**
* A filter that selects only <tt>public</tt> or <tt>protected</tt>
* declarations.
*/
public static final DeclarationFilter FILTER_PUBLIC_OR_PROTECTED =
new AccessFilter(PUBLIC, PROTECTED);
/**
* A filter that selects only package-private (<i>default</i>)
* declarations.
*/
public static final DeclarationFilter FILTER_PACKAGE =
new AccessFilter();
/**
* A filter that selects only <tt>private</tt> 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 <tt>mods</tt>
*/
public static DeclarationFilter getFilter(
final Collection<Modifier> 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<? extends Declaration> 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 <tt>true</tt>;
* subclasses should override this.
*
* @param decl the declaration to match
* @return <tt>true</tt> 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 <tt>filter</tt> offers control over the result type.
*
* @param <D> type of the declarations being filtered
* @param decls declarations being filtered
* @return the declarations matched by this filter
*/
public <D extends Declaration> Collection<D> filter(Collection<D> decls) {
ArrayList<D> res = new ArrayList<D>(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 <tt>filter</tt>, but the result type is specified explicitly.
*
* @param <D> type of the declarations being returned
* @param decls declarations being filtered
* @param resType type of the declarations being returned --
* the reflective view of <tt>D</tt>
* @return the declarations matched by this filter, restricted to those
* of the specified type
*/
public <D extends Declaration> Collection<D>
filter(Collection<? extends Declaration> decls, Class<D> resType) {
ArrayList<D> res = new ArrayList<D>(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<Modifier> 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));
}
}
}
/*
* 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.
*
* <p> 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);
}
}
/*
* 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
* <tt>visit<i>Xxx</i></tt> 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);
}
/*
* 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 <tt>DeclarationVisitor</tt> 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 <tt>DeclarationVisitor</tt> 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.
*
* <p>The <tt>pre</tt> and <tt>post</tt>
* <tt>DeclarationVisitor</tt> 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 <tt>DeclarationVisitor</tt> 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.
*
* <p>The <tt>pre</tt> and <tt>post</tt>
* <tt>DeclarationVisitor</tt> 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);
}
}
/*
* 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 <tt>true</tt> 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 <i>implement</i> the latter.
*
* @param sub the first method
* @param sup the second method
* @return <tt>true</tt> if and only if the first method overrides
* the second
*/
boolean overrides(MethodDeclaration sub, MethodDeclaration sup);
}
/*
* 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.
*
* <p> 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 <tt>SimpleDeclarationVisitor</tt>.
*/
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);
}
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册