Initial load

This commit is contained in:
J. Duke 2007-12-01 00:00:00 +00:00
parent 686d76f772
commit f57b87e8f6
2973 changed files with 295817 additions and 0 deletions

3
langtools/.hgignore Normal file
View File

@ -0,0 +1,3 @@
^build/
^dist/
^nbproject/private/

View File

@ -0,0 +1,27 @@
OPENJDK ASSEMBLY EXCEPTION
The OpenJDK source code made available by Sun at openjdk.java.net and
openjdk.dev.java.net ("OpenJDK Code") is distributed under the terms of the
GNU General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
only ("GPL2"), with the following clarification and special exception.
Linking this OpenJDK Code statically or dynamically with other code
is making a combined work based on this library. Thus, the terms
and conditions of GPL2 cover the whole combination.
As a special exception, Sun gives you permission to link this
OpenJDK Code with certain code licensed by Sun as indicated at
http://openjdk.java.net/legal/exception-modules-2007-05-08.html
("Designated Exception Modules") to produce an executable,
regardless of the license terms of the Designated Exception Modules,
and to copy and distribute the resulting executable under GPL2,
provided that the Designated Exception Modules continue to be
governed by the licenses under which they were offered by Sun.
As such, it allows licensees and sublicensees of Sun's GPL2 OpenJDK Code to
build an executable that includes those portions of necessary code that Sun
could not provide under GPL2 (or that Sun has provided under GPL2 with the
Classpath exception). If you modify or add to the OpenJDK code, that new
GPL2 code may still be combined with Designated Exception Modules if the
new code is made subject to this exception by its copyright holder.

347
langtools/LICENSE Normal file
View File

@ -0,0 +1,347 @@
The GNU General Public License (GPL)
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share
and change it. By contrast, the GNU General Public License is intended to
guarantee your freedom to share and change free software--to make sure the
software is free for all its users. This General Public License applies to
most of the Free Software Foundation's software and to any other program whose
authors commit to using it. (Some other Free Software Foundation software is
covered by the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for this service if you wish),
that you receive source code or can get it if you want it, that you can change
the software or use pieces of it in new free programs; and that you know you
can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny
you these rights or to ask you to surrender the rights. These restrictions
translate to certain responsibilities for you if you distribute copies of the
software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for
a fee, you must give the recipients all the rights that you have. You must
make sure that they, too, receive or can get the source code. And you must
show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2)
offer you this license which gives you legal permission to copy, distribute
and/or modify the software.
Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If the
software is modified by someone else and passed on, we want its recipients to
know that what they have is not the original, so that any problems introduced
by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We
wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program proprietary.
To prevent this, we have made it clear that any patent must be licensed for
everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification
follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice
placed by the copyright holder saying it may be distributed under the terms of
this General Public License. The "Program", below, refers to any such program
or work, and a "work based on the Program" means either the Program or any
derivative work under copyright law: that is to say, a work containing the
Program or a portion of it, either verbatim or with modifications and/or
translated into another language. (Hereinafter, translation is included
without limitation in the term "modification".) Each licensee is addressed as
"you".
Activities other than copying, distribution and modification are not covered by
this License; they are outside its scope. The act of running the Program is
not restricted, and the output from the Program is covered only if its contents
constitute a work based on the Program (independent of having been made by
running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source code as
you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this License
and to the absence of any warranty; and give any other recipients of the
Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may
at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus
forming a work based on the Program, and copy and distribute such modifications
or work under the terms of Section 1 above, provided that you also meet all of
these conditions:
a) You must cause the modified files to carry prominent notices stating
that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in whole or
in part contains or is derived from the Program or any part thereof, to be
licensed as a whole at no charge to all third parties under the terms of
this License.
c) If the modified program normally reads commands interactively when run,
you must cause it, when started running for such interactive use in the
most ordinary way, to print or display an announcement including an
appropriate copyright notice and a notice that there is no warranty (or
else, saying that you provide a warranty) and that users may redistribute
the program under these conditions, and telling the user how to view a copy
of this License. (Exception: if the Program itself is interactive but does
not normally print such an announcement, your work based on the Program is
not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Program, and can be reasonably
considered independent and separate works in themselves, then this License, and
its terms, do not apply to those sections when you distribute them as separate
works. But when you distribute the same sections as part of a whole which is a
work based on the Program, the distribution of the whole must be on the terms
of this License, whose permissions for other licensees extend to the entire
whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise the
right to control the distribution of derivative or collective works based on
the Program.
In addition, mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or
distribution medium does not bring the other work under the scope of this
License.
3. You may copy and distribute the Program (or a work based on it, under
Section 2) in object code or executable form under the terms of Sections 1 and
2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable source
code, which must be distributed under the terms of Sections 1 and 2 above
on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three years, to
give any third party, for a charge no more than your cost of physically
performing source distribution, a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of Sections 1
and 2 above on a medium customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only
for noncommercial distribution and only if you received the program in
object code or executable form with such an offer, in accord with
Subsection b above.)
The source code for a work means the preferred form of the work for making
modifications to it. For an executable work, complete source code means all
the source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and installation
of the executable. However, as a special exception, the source code
distributed need not include anything that is normally distributed (in either
source or binary form) with the major components (compiler, kernel, and so on)
of the operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the source
code from the same place counts as distribution of the source code, even though
third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as
expressly provided under this License. Any attempt otherwise to copy, modify,
sublicense or distribute the Program is void, and will automatically terminate
your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it.
However, nothing else grants you permission to modify or distribute the Program
or its derivative works. These actions are prohibited by law if you do not
accept this License. Therefore, by modifying or distributing the Program (or
any work based on the Program), you indicate your acceptance of this License to
do so, and all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program),
the recipient automatically receives a license from the original licensor to
copy, distribute or modify the Program subject to these terms and conditions.
You may not impose any further restrictions on the recipients' exercise of the
rights granted herein. You are not responsible for enforcing compliance by
third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues), conditions
are imposed on you (whether by court order, agreement or otherwise) that
contradict the conditions of this License, they do not excuse you from the
conditions of this License. If you cannot distribute so as to satisfy
simultaneously your obligations under this License and any other pertinent
obligations, then as a consequence you may not distribute the Program at all.
For example, if a patent license would not permit royalty-free redistribution
of the Program by all those who receive copies directly or indirectly through
you, then the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply and
the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or
other property right claims or to contest validity of any such claims; this
section has the sole purpose of protecting the integrity of the free software
distribution system, which is implemented by public license practices. Many
people have made generous contributions to the wide range of software
distributed through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing to
distribute software through any other system and a licensee cannot impose that
choice.
This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an explicit
geographical distribution limitation excluding those countries, so that
distribution is permitted only in or among countries not thus excluded. In
such case, this License incorporates the limitation as if written in the body
of this License.
9. The Free Software Foundation may publish revised and/or new versions of the
General Public License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new problems
or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any later
version", you have the option of following the terms and conditions either of
that version or of any later version published by the Free Software Foundation.
If the Program does not specify a version number of this License, you may
choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs
whose distribution conditions are different, write to the author to ask for
permission. For software which is copyrighted by the Free Software Foundation,
write to the Free Software Foundation; we sometimes make exceptions for this.
Our decision will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing and reuse of
software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible
use to the public, the best way to achieve this is to make it free software
which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach
them to the start of each source file to most effectively convey the exclusion
of warranty; and each file should have at least the "copyright" line and a
pointer to where the full notice is found.
One line to give the program's name and a brief idea of what it does.
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it
starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free
software, and you are welcome to redistribute it under certain conditions;
type 'show c' for details.
The hypothetical commands 'show w' and 'show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may be
called something other than 'show w' and 'show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school,
if any, to sign a "copyright disclaimer" for the program, if necessary. Here
is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
'Gnomovision' (which makes passes at compilers) written by James Hacker.
signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General Public
License instead of this License.
"CLASSPATH" EXCEPTION TO THE GPL
Certain source files distributed by Sun Microsystems, Inc. are subject to
the following clarification and special exception to the GPL, but only where
Sun has expressly included in the particular source file's header the words
"Sun designates this particular file as subject to the "Classpath" exception
as provided by Sun in the LICENSE file that accompanied this code."
Linking this library statically or dynamically with other modules is making
a combined work based on this library. Thus, the terms and conditions of
the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,
and to copy and distribute the resulting executable under terms of your
choice, provided that you also meet, for each linked independent module,
the terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library. If
you modify this library, you may extend this exception to your version of
the library, but you are not obligated to do so. If you do not wish to do
so, delete this exception statement from your version.

43
langtools/README Normal file
View File

@ -0,0 +1,43 @@
Building the "langtools" workspace.
The "langtools" workspace can be built from the command line with Ant.
The build file is make/build.xml, in conjunction with make/build.properties.
Some additional user-specific properties files are also read, to allow
you to customize selected properties as needed.
Individual tools within the workspace can also be built and worked on
with NetBeans, using the projects in the make/netbeans directory.
The "langtools" workspace can also be built from the command line with
GNU Make, although the Makefile is simply a wrapper around the Ant
build file. This is provided for systems (such as the full OpenJDK build)
that expect to be able to build this workspace with GNU Make.
System Requirements:
Ant: version 1.6.5 or later
NetBeans: version 5.0 or later (optional)
JDK: currently version 1.5.0, although 1.6.0 is recommended
OS: any system supporting the above tools
For more information:
Ant: http://ant.apache.org/
GNU Make: http://www.gnu.org/software/make/
NetBeans: http://www.netbeans.org/
Testing the "langtools" workspace.
The primary set of tests for the compiler is the compiler TCK. This
tests that the compiler performs according to the specifications in
JLS and JVMS.
In addition, there is a substantial collection of regression and unit
tests for all the tools in the maain langtools test/ directory.
Finally, there is a small set of tests to do basic validation of a build
of the langtools workspace for use by JDK. These tests check the contents
of the dist/ directory generated by the build, and verify that the various
tools can do basic "Hello World"-style processing. These tests should be
run by jtreg, with the -jdk option set a version of JDK capable of running
the default output of the javac compiler in this workspace. Currently,
this means JDK 6 or better.

1616
langtools/THIRD_PARTY_README Normal file

File diff suppressed because it is too large Load Diff

180
langtools/make/Makefile Normal file
View File

@ -0,0 +1,180 @@
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# Makefile for langtools: wrapper around Ant build.xml file
#
# On Solaris, the 'make' utility from Sun will not work with these makefiles.
# This little rule is only understood by Sun's make, and is harmless
# when seen by the GNU make tool. If using Sun's make, this causes the
# make command to fail.
#
SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
#
# Minimal platform defs
# Need FullPath because we can't rely on gnumake abspath, until we use v3.81
#
SYSTEM_UNAME := $(shell uname)
ifeq ($(SYSTEM_UNAME), Windows_NT)
DEV_NULL = NUL
else
ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
DEV_NULL = NUL
USING_CYGWIN = true
else
DEV_NULL = /dev/null
endif
endif
ifdef USING_CYGWIN
define FullPath
$(shell cygpath -a -s -m $1 2> $(DEV_NULL))
endef
else
define FullPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
endef
endif
#
# Makefile args
#
ifdef QUIET
ANT_OPTIONS += -quiet
endif
ifdef VERBOSE
ANT_OPTIONS += -verbose -diagnostics
endif
ifdef JDK_VERSION
ANT_OPTIONS += -Djdk.version=$(JDK_VERSION)
endif
ifdef FULL_VERSION
ANT_OPTIONS += -Dfull.version='$(FULL_VERSION)' # will contain spaces
endif
ifdef MILESTONE
ANT_OPTIONS += -Dmilestone=$(MILESTONE)
endif
ifdef BUILD_NUMBER
ANT_OPTIONS += -Dbuild.number=$(BUILD_NUMBER)
else
ifdef JDK_BUILD_NUMBER
ANT_OPTIONS += -Dbuild.number=$(JDK_BUILD_NUMBER)
endif
endif
ifeq ($(VARIANT), DBG)
ANT_OPTIONS += -Djavac.debug=true
else
ifeq ($(VARIANT), OPT)
ANT_OPTIONS += -Djavac.debug=false
endif
endif
# Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN)
# and the somewhat misnamed CLASS_VERSION (-target NN)
ifdef TARGET_CLASS_VERSION
ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION)
else
ifdef JAVAC_TARGET_ARG
ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG)
endif
endif
ifdef ALT_BOOTDIR
ANT_OPTIONS += -Dboot.java.home=$(ALT_BOOTDIR)
ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
endif
ifdef ALT_OUTPUTDIR
OUTPUTDIR = $(ALT_OUTPUTDIR)
ANT_OPTIONS += -Dbuild.dir=$(ALT_OUTPUTDIR)/build
ANT_OPTIONS += -Ddist.dir=$(ALT_OUTPUTDIR)/dist
else
OUTPUTDIR = ..
endif
#ABS_OUTPUTDIR = $(abspath $(OUTPUTDIR))
ABS_OUTPUTDIR = $(call FullPath,$(OUTPUTDIR))
ANT_TMPDIR = $(ABS_OUTPUTDIR)/build/ant-tmp
ANT_OPTS = ANT_OPTS=-Djava.io.tmpdir='$(ANT_TMPDIR)'
ifdef FINDBUGS_HOME
ANT_OPTIONS += -Dfindbugs.home=$(FINDBUGS_HOME)
endif
ifdef ANT_HOME
ANT = $(ANT_HOME)/bin/ant
ifneq ($(shell test -x $(ANT) && echo OK), OK)
$(error $(ANT) not found -- please update ANT_HOME)
endif
else
ANT = ant
ifneq ($(shell test -x "`which $(ANT)`" && echo OK), OK)
$(error 'ant' not found -- please set ANT_HOME or put 'ant' on your PATH)
endif
endif
# Default target and expected 'do everything' target
all: build
# Standard make clobber target
clobber: clean
# All ant targets of interest
ANT_TARGETS = build clean sanity post-sanity diagnostics # for now
# Create a make target for each
$(ANT_TARGETS):
@ mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $(OUTPUTDIR)/build/ant-diagnostics.log
$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) $(ANT_OPTIONS) $@
#-------------------------------------------------------------------
#
# Targets for Sun's internal JPRT build system
CD = cd
ZIP = zip
JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
jprt_build_product jprt_build_debug jprt_build_fastdebug: all
( $(CD) $(OUTPUTDIR) && \
$(ZIP) -q -r $(JPRT_ARCHIVE_BUNDLE) build dist )
#-------------------------------------------------------------------
# Declare these phony (not filenames)
.PHONY: $(ANT_TARGETS) all clobber \
jprt_build_product jprt_build_debug jprt_build_fastdebug

View File

@ -0,0 +1,419 @@
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
#
# Makefile for building the langtools workspace.
#
#
# On Solaris, the 'make' utility from Sun will not work with these makefiles.
# This little rule is only understood by Sun's make, and is harmless
# when seen by the GNU make tool. If using Sun's make, this causes the
# make command to fail.
#
SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
#----- cancel implicit rules
%: %.o
%: %.obj
%: %.dll
%: %.c
%: %.cc
%: %.C
%: %.p
%: %.f
%: %.s
%: %.F
%: %.r
%: %.S
%: %.mod
%: %.sh
%: %,v
%: RCS/%,v
#----- imports
ifdef ALT_BOOT_JAVA_HOME
BOOT_JAVA_HOME = $(ALT_BOOT_JAVA_HOME)
else
ifdef ALT_BOOTDIR
BOOT_JAVA_HOME = $(ALT_BOOTDIR)
else
BOOT_JAVA_HOME=/java/re/jdk/1.5.0/archive/fcs/binaries/solaris-sparc
endif
endif
BOOT_JAVA=$(BOOT_JAVA_HOME)/bin/java
BOOT_JAVAC=$(BOOT_JAVA_HOME)/bin/javac
BOOTJAR=$(BOOT_JAVA_HOME)/bin/jar
ifdef ALT_TESTJAVA_HOME
TESTJAVA_HOME = $(ALT_TESTJAVA_HOME)
else
TESTJAVA_HOME=/java/re/jdk/1.6.0/archive/fcs/binaries/solaris-sparc
endif
TESTJAVA=$(TESTJAVA_HOME)/bin/java
ifdef ALT_FINDBUGS_HOME
FINDBUGS_HOME = $(ALT_FINDBUGS_HOME)
else
FINDBUGS_HOME = /java/devtools/share/findbugs/1.1.2-rc4
endif
FINDBUGS = $(FINDBUGS_HOME)/bin/findbugs
#----- commands
CHMOD = chmod
CP = cp
ECHO = echo # FIXME
FIND = find
MKDIR = mkdir
SED = sed
ZIP = zip
#----- locations and deliverables
TOPDIR = ..
SRC_BIN_DIR = $(TOPDIR)/src/share/bin
SRC_CLASSES_DIR = $(TOPDIR)/src/share/classes
BUILD_DIR = $(TOPDIR)/build
CLASSES_DIR = $(BUILD_DIR)/classes
GENSRC_DIR = $(BUILD_DIR)/gensrc
DIST_DIR = $(TOPDIR)/dist
BIN_DIR = $(DIST_DIR)/bin
LIB_DIR = $(DIST_DIR)/lib
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
BUILDTOOLSRC_DIR = tools
BUILDTOOLCLASSES_DIR = $(BUILD_DIR)/toolclasses
#-----
ifndef JDK_MAJOR_VERSION
JDK_MAJOR_VERSION = 1
endif
ifndef JDK_MINOR_VERSION
JDK_MINOR_VERSION = 7
endif
ifndef JDK_MICRO_VERSION
JDK_MICRO_VERSION = 0
endif
ifndef JDK_VERSION
JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
endif
ifndef MILESTONE
MILESTONE = internal
endif
# RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is set
ifneq ($(MILESTONE),fcs)
RELEASE = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
else
RELEASE = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
endif
# FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set
ifdef BUILD_NUMBER
FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
else
BUILD_NUMBER = b00
USER_RELEASE_SUFFIX := $(shell echo $(USER)_`date '+%d_%b_%Y_%H_%M' | tr "A-Z" "a-z"`)
FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
endif
#----- useful macros
TOOLS = javac javadoc javah javap apt
SOURCE_LEVEL = 5
BOOTSTRAP_TARGET_LEVEL = 5
TARGET_LEVEL = 6
ifndef TARGET_JAVA
TARGET_JAVA = java
endif
NO_PROPRIETARY_API_WARNINGS = -XDignore.symbol.file=true
SELF = $(lastword $(MAKEFILE_LIST))
#-----
# the default is to generate the following:
# dist/{bin,lib}:
# lang tools compiled to run on the target JDK
default:
$(MAKE) -f $(SELF) \
MILESTONE=bootstrap \
TARGET_LEVEL=$(BOOTSTRAP_TARGET_LEVEL) \
TARGET_JAVA=$(BOOT_JAVA_HOME)/bin/java \
GENSRC_DIR=$(BUILD_DIR)/bootstrap/gensrc \
CLASSES_DIR=$(BUILD_DIR)/bootstrap/classes \
BIN_DIR=$(BUILD_DIR)/bootstrap/bin \
LIB_DIR=$(BUILD_DIR)/bootstrap/lib \
$(BUILD_DIR)/bootstrap/lib/javac.jar \
$(BUILD_DIR)/bootstrap/bin/javac
$(MAKE) -f $(SELF) \
BOOT_JAVAC=$(BUILD_DIR)/bootstrap/bin/javac \
tools
# for jdk, we generate the following:
# dist/bootstrap/{bin,lib}:
# lang tools compiled to run on the boot JDK
# dist/lib/classes.jar:
# lang tools recompiled to run on the target JDK,
# ready for inclusion in rt.jar and tools.jar
# dist/lib/src.zip
# .properties and .java files for classes in classes.jar,
# ready for jdk src.zip
jdk:
$(MAKE) -f $(SELF) \
MILESTONE=bootstrap \
TARGET_LEVEL=$(BOOTSTRAP_TARGET_LEVEL) \
TARGET_JAVA=$(BOOT_JAVA_HOME)/bin/java \
GENSRC_DIR=$(BUILD_DIR)/bootstrap/gensrc \
CLASSES_DIR=$(BUILD_DIR)/bootstrap/classes \
BIN_DIR=$(DIST_DIR)/bootstrap/bin \
LIB_DIR=$(DIST_DIR)/bootstrap/lib \
tools
$(MAKE) -f $(SELF) \
BOOT_JAVAC=$(DIST_DIR)/bootstrap/bin/javac \
LIB_DIR=$(BUILD_DIR)/jdk/lib \
$(DIST_DIR)/lib/classes.jar \
$(DIST_DIR)/lib/src.zip
tools: $(TOOLS:%=$(LIB_DIR)/%.jar) $(TOOLS:%=$(BIN_DIR)/%)
clean:
$(RM) -r $(BUILD_DIR)
really-clean: clean
$(RM) -r $(DIST_DIR)
jprt_product_build \
jprt_debug_build \
jprt_fastdebug_build: lib
#----- javac
JAVAC_DIRS = \
javax/annotation/processing \
javax/lang/model \
javax/tools \
com/sun/source \
com/sun/tools/javac
JAVAC_RESOURCE_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAC_DIRS)) -name SCCS -prune -o -name \*.properties -print )
JAVAC_JAVA_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAC_DIRS)) -name SCCS -prune -o -name \*.java -print ) \
$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAC_RESOURCE_FILES)) \
$(GENSRC_DIR)/com/sun/tools/javac/resources/version.java
$(JAVAC_JAR): $(JAVAC_JAVA_FILES)
$(MKDIR) -p $(CLASSES_DIR) $(@D)
$(BOOT_JAVAC) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(NO_PROPRIETARY_API_WARNINGS) $(JAVAC_JAVA_FILES)
( $(ECHO) Main-Class: com.sun.tools.javac.Main ) > $(BUILD_DIR)/javac.mf
$(BOOTJAR) -cfm $@ $(BUILD_DIR)/javac.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAC_DIRS))
#----- javadoc
### FIXME -- javadoc has a couple of extra non-property resource files
### that need to be included
JAVADOC_DIRS = \
com/sun/javadoc \
com/sun/tools/doclets \
com/sun/tools/javadoc
JAVADOC_RESOURCE_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVADOC_DIRS)) -name SCCS -prune -o -name \*.properties -print )
JAVADOC_JAVA_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVADOC_DIRS)) -name SCCS -prune -o -name \*.java -print ) \
$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVADOC_RESOURCE_FILES))
$(JAVADOC_JAR): $(JAVADOC_JAVA_FILES) $(JAVAC_JAR)
$(MKDIR) -p $(CLASSES_DIR) $(@D)
$(BOOT_JAVAC) -sourcepath "" -classpath $(JAVAC_JAR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(JAVADOC_JAVA_FILES)
( $(ECHO) Main-Class: com.sun.tools.javadoc.Main ; $(ECHO) Class-Path: javac.jar ) > $(BUILD_DIR)/javadoc.mf
$(BOOTJAR) -cfm $@ $(BUILD_DIR)/javadoc.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVADOC_DIRS))
#----- javah
JAVAH_DIRS = \
com/sun/tools/javah
JAVAH_RESOURCE_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAH_DIRS)) -name SCCS -prune -o -name \*.properties -print )
JAVAH_JAVA_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAH_DIRS)) -name SCCS -prune -o -name \*.java -print ) \
$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAH_RESOURCE_FILES))
$(JAVAH_JAR): $(JAVAH_JAVA_FILES) $(JAVADOC_JAR)
$(MKDIR) -p $(CLASSES_DIR) $(@D)
$(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(JAVAH_JAVA_FILES)
( $(ECHO) Main-Class: com.sun.tools.javah.Main ; $(ECHO) Class-Path: javadoc.jar ) > $(BUILD_DIR)/javah.mf
$(BOOTJAR) -cfm $@ $(BUILD_DIR)/javah.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAH_DIRS))
#----- javap
JAVAP_DIRS = \
sun/tools/javap
JAVAP_RESOURCE_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAP_DIRS)) -name SCCS -prune -o -name \*.properties -print )
JAVAP_JAVA_FILES = \
$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAP_DIRS)) -name SCCS -prune -o -name \*.java -print ) \
$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAP_RESOURCE_FILES))
$(JAVAP_JAR): $(JAVAP_JAVA_FILES) \
$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAP_RESOURCE_FILES))
$(MKDIR) -p $(CLASSES_DIR)
$(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(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
$(GENSRC_DIR)/%.java: $(SRC_CLASSES_DIR)/%.properties $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class
$(MKDIR) -p $(@D)
$(BOOT_JAVA) -cp $(BUILDTOOLCLASSES_DIR)/CompileProperties CompileProperties $< $(patsubst $(CLASSES_DIR)/%.class,$(GENSRC_DIR)/%.java,$@)
$(GENSRC_DIR)/%.java: $(GENSRC_DIR)/%.properties $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class
$(MKDIR) -p $(@D)
$(BOOT_JAVA) -cp $(BUILDTOOLCLASSES_DIR)/CompileProperties CompileProperties $< $(patsubst $(CLASSES_DIR)/%.class,$(GENSRC_DIR)/%.java,$@)
$(GENSRC_DIR)/%.properties: $(SRC_CLASSES_DIR)/%.properties-template
$(MKDIR) -p $(@D)
$(SED) -e 's/$$(JDK_VERSION)/$(JDK_VERSION)/' \
-e 's/$$(FULL_VERSION)/$(FULL_VERSION)/' \
-e 's/$$(RELEASE)/$(RELEASE)/' \
< $< > $@
$(BUILDTOOLCLASSES_DIR)/%.class : $(BUILDTOOLSRC_DIR)/%.java
$(MKDIR) -p $(@D)
$(BOOT_JAVAC) -d $(@D) $<
#----- all classes
$(DIST_DIR)/%/classes.jar: $(JAVAC_JAR) $(JAVADOC_JAR) $(JAVAH_JAR) $(JAVAP_JAR) $(APT_JAR)
$(MKDIR) -p $(@D)
$(BOOTJAR) -cf $@ -C $(CLASSES_DIR) .
#----- src.zip
SRC_ZIP_FILES = $(shell $(FIND) $(SRC_CLASSES_DIR) \( -name SCCS -o -name \*-template \) -prune -o -type f -print )
$(DIST_DIR)/%/src.zip: $(SRC_ZIP_FILES)
abs_src_zip=`cd $(@D) ; pwd`/$(@F) ; \
( cd $(SRC_CLASSES_DIR) ; $(FIND) . \( -name SCCS -o -name \*-template \) -prune -o -type f -print | $(ZIP) -q $$abs_src_zip -@ ) ; \
( cd $(SRC_CLASSES_DIR) ; $(FIND) . -name SCCS -prune -o -name \*-template -print | $(SED) -e 's/-template//' ) | ( cd $(GENSRC_DIR) ; $(ZIP) -q $$abs_src_zip -@ )
#----- bin files
$(BIN_DIR)/%: $(SRC_BIN_DIR)/launcher.sh-template
$(MKDIR) -p $(@D)
$(SED) -e 's|#PROGRAM#|$(@F)|' -e 's|#TARGET_JAVA#|$(TARGET_JAVA)|' $< > $@
$(CHMOD) +x $@
#-----
findbugs: $(BUILD_DIR)/findbugs.txt
$(BUILD_DIR)/findbugs.txt: $(CLASSES_JAR)
$(MKDIR) -p $(@D)
$(FINDBUGS) -textui -javahome $(BOOT_JAVA_HOME) -high -emacs -outputFile $@ $<
#-----
quick-check: $(patsubst %, $(DIST_LIB_DIR)/%.jar, $(TOOLS))
$(TESTJAVA) -jar $(JAVAC_JAR) -version
- $(TESTJAVA) -jar $(JAVADOC_JAR) -version
$(TESTJAVA) -jar $(JAVAH_JAR) -version
- $(TESTJAVA) -jar $(JAVAP_JAR) -version
$(TESTJAVA) -jar $(APT_JAR) -version
#-----
.PHONY: \
all \
build \
build-tools \
clean \
default \
findbugs \
jprt_product_build \
jprt_debug_build \
jprt_fastdebug_build \
tools

43
langtools/make/README Normal file
View File

@ -0,0 +1,43 @@
Building the "langtools" workspace.
The "langtools" workspace can be built from the command line with Ant.
The build file is make/build.xml, in conjunction with make/build.properties.
Some additional user-specific properties files are also read, to allow
you to customize selected properties as needed.
Individual tools within the workspace can also be built and worked on
with NetBeans, using the projects in the make/netbeans directory.
The "langtools" workspace can also be built from the command line with
GNU Make, although the Makefile is simply a wrapper around the Ant
build file. This is provided for systems (such as the full OpenJDK build)
that expect to be able to build this workspace with GNU Make.
System Requirements:
Ant: version 1.6.5 or later
NetBeans: version 5.0 or later (optional)
JDK: currently version 1.5.0, although 1.6.0 is recommended
OS: any system supporting the above tools
For more information:
Ant: http://ant.apache.org/
GNU Make: http://www.gnu.org/software/make/
NetBeans: http://www.netbeans.org/
Testing the "langtools" workspace.
The primary set of tests for the compiler is the compiler TCK. This
tests that the compiler performs according to the specifications in
JLS and JVMS.
In addition, there is a substantial collection of regression and unit
tests for all the tools in the maain langtools test/ directory.
Finally, there is a small set of tests to do basic validation of a build
of the langtools workspace for use by JDK. These tests check the contents
of the dist/ directory generated by the build, and verify that the various
tools can do basic "Hello World"-style processing. These tests should be
run by jtreg, with the -jdk option set a version of JDK capable of running
the default output of the javac compiler in this workspace. Currently,
this means JDK 6 or better.

View File

@ -0,0 +1,135 @@
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# This is the JDK used to build and run the bootstrap version of javac.
# The bootstrap javac is used to compile both boostrap versions of the
# other tools, and product versions of all the tools.
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# boot.java.home = /opt/jdk/1.5.0
boot.java = ${boot.java.home}/bin/java
boot.javac = ${boot.java.home}/bin/javac
boot.javac.target = 5
# This is the JDK used to run the product version of the tools,
# for example, for testing. If you're building a complete JDK, specify that.
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# target.java.home = /opt/jdk/1.6.0
target.java = ${target.java.home}/bin/java
# Version info -- override as needed
jdk.version = 1.7.0
build.number = b00
milestone = internal
# FIXME -- these need to match the standard values
# If we include date in full.version (ie for developer build)
# we will need to make sure the build is idempotent (i.e.
# repeated builds don't rebuild the tools, because of new
# timestamps
# FIXME -- need to include openjdk as needed
release = ${jdk.version}-${milestone}
bootstrap.release = ${release}_bootstrap
full.version = ${release}-${build.number}
bootstrap.full.version = ${bootstrap.release}-${build.number}
# options for the <javac> tasks used to compile the tools
javac.target = 6
javac.debug = true
javac.debuglevel = source,lines
javac.no.jdk.warnings = -XDignore.symbol.file=true
# set the following to -version to verify the versions of javac being used
javac.version.opt =
# in time, there should be no exceptions to -Xlint:all
javac.lint.opts = -Xlint:all,-unchecked,-deprecation,-fallthrough,-cast,-serial -Werror
# options for the <javadoc> task for javac
javadoc.jls3.url=http://java.sun.com/docs/books/jls/
javadoc.jls3.cite=&lt;a href=&quot;${javadoc.jls3.url}&quot;&gt;The Java Language Specification, Third Edition&lt;/a&gt;
javadoc.jls3.option=-tag "jls3:a:See &lt;cite&gt;${javadoc.jls3.cite}&lt;/cite&gt;:"
# jtreg, used to run the JDK regression tests
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# jtreg.home = /opt/jtreg/3.2.2_02
# findbugs
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# findbugs.home = /opt/findbugs/1.2.1
#------------------------------------------------------------
# The following properties define the packages for each of the tools.
# Syntactically, they should be suitable as arguments for the "includes"
# parameter of Ant filesets. In particular, note the trailing '/'.
javac.includes = \
javax/annotation/processing/ \
javax/lang/model/ \
javax/tools/ \
com/sun/source/ com/sun/tools/javac/
javac.tests = \
tools/javac
javadoc.includes = \
com/sun/javadoc/ \
com/sun/tools/javadoc/
javadoc.tests = \
tools/javadoc/
doclets.includes = \
com/sun/tools/doclets/
doclets.tests = \
com/sun/javadoc/
javah.includes = \
com/sun/tools/javah/
javah.tests = \
tools/javah/
javap.includes = \
sun/tools/javap/
javap.tests = \
tools/javap/
apt.includes = \
com/sun/mirror/ \
com/sun/tools/apt/
apt.tests = \
tools/apt/

759
langtools/make/build.xml Normal file
View File

@ -0,0 +1,759 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Sun designates this
particular file as subject to the "Classpath" exception as provided
by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->
<!--
This is the main build file for the complete langtools workspace.
It is used both when working on the tools in NetBeans, and when building
JDK itself, in which case it is invoked from the wrapper Makefile.
-->
<project name="langtools" default="build" basedir="..">
<!-- The following locations can be used to override default property values. -->
<!-- Use this location for customizations specific to this instance of this workspace -->
<property file="build.properties"/>
<!-- Use this location for customizations common to all OpenJDK langtools workspaces -->
<property file="${user.home}/.openjdk/${ant.project.name}-build.properties"/>
<!-- Use this location for customizations common to all OpenJDK workspaces -->
<property file="${user.home}/.openjdk/build.properties"/>
<!-- Convenient shorthands for standard locations within the workspace. -->
<property name="build.dir" location="build"/>
<property name="build.bootstrap.dir" location="${build.dir}/bootstrap"/>
<property name="build.coverage.dir" location="${build.dir}/coverage"/>
<property name="build.classes.dir" location="${build.dir}/classes"/>
<property name="build.gensrc.dir" location="${build.dir}/gensrc"/>
<property name="build.javadoc.dir" location="${build.dir}/javadoc"/>
<property name="build.jtreg.dir" location="${build.dir}/jtreg"/>
<property name="build.toolclasses.dir" location="${build.dir}/toolclasses"/>
<property name="dist.dir" location="dist"/>
<property name="dist.bin.dir" location="${dist.dir}/bin"/>
<property name="dist.coverage.dir" location="${dist.dir}/coverage"/>
<property name="dist.findbugs.dir" location="${dist.dir}/findbugs"/>
<property name="dist.lib.dir" location="${dist.dir}/lib"/>
<property name="make.dir" location="make"/>
<property name="make.tools.dir" location="${make.dir}/tools"/>
<property name="src.dir" location="src"/>
<property name="src.bin.dir" location="${src.dir}/share/bin"/>
<property name="src.classes.dir" location="${src.dir}/share/classes"/>
<property name="test.dir" location="test"/>
<!-- java.marker is set to a marker file to check for within a Java install dir.
The best file to check for across Solaris/Linux/Windows/MacOS is one of the
executables; regrettably, that is OS-specific. -->
<condition property="java.marker" value="bin/java">
<os family="unix"/>
</condition>
<condition property="java.marker" value="bin/java.exe">
<os family="windows"/>
</condition>
<!-- Standard property values, if not overriden by earlier settings. -->
<property file="${make.dir}/build.properties"/>
<!-- Standard target to build deliverables for JDK build. -->
<target name="build" depends="build-bootstrap-tools,build-all-classes">
<copy todir="${dist.dir}/bootstrap">
<fileset dir="${build.bootstrap.dir}" includes="bin/,lib/"/>
</copy>
<chmod dir="${dist.dir}/bootstrap/bin" perm="ugo+rx">
<include name="*"/>
</chmod>
<mkdir dir="${dist.lib.dir}"/>
<jar file="${dist.lib.dir}/classes.jar" basedir="${build.classes.dir}"/>
<zip file="${dist.lib.dir}/src.zip" basedir="${src.classes.dir}"/>
</target>
<target name="build-bootstrap-tools" depends="build-bootstrap-javac,build-bootstrap-javadoc,build-bootstrap-doclets,build-bootstrap-javah"/>
<target name="build-all-tools" depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt"/>
<target name="build-all-classes" depends="build-classes-javac,build-classes-javadoc,build-classes-doclets,build-classes-javah,build-classes-javap,build-classes-apt"/>
<!-- clean -->
<target name="clean" description="Delete all generated files">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<!-- Additional targets for running tools on the build -->
<!-- An alternative for the following would be to do a single jtreg run for all tests.
However, that would currently be slower, since we would have to run all the tests
with samevm="false", since not all test directories currently support samevm="true". -->
<target name="jtreg" depends="jtreg-javac,jtreg-javadoc,jtreg-doclets,jtreg-javah,jtreg-javap,jtreg-apt"/>
<target name="findbugs" depends="-def-findbugs,build-all-tools">
<property name="findbugs.reportLevel" value="medium"/>
<mkdir dir="${dist.findbugs.dir}"/>
<findbugs
home="${findbugs.home}"
projectName="JDK langtools ${full.version}"
output="xml"
outputFile="${dist.findbugs.dir}/findbugs.xml"
reportLevel="${findbugs.reportLevel}"
failOnError="false"
errorProperty="findbugs.all.errors"
warningsProperty="findbugs.all.warnings"
jvmargs="-Xmx512M">
<class location="${build.classes.dir}"/>
<sourcePath>
<pathelement location="${src.classes.dir}"/>
</sourcePath>
</findbugs>
<exec executable="sh">
<arg value="${findbugs.home}/bin/convertXmlToText"/>
<arg value="-longBugCodes"/>
<arg value="-html:${findbugs.home}/src/xsl/fancy.xsl"/>
<arg value="${dist.findbugs.dir}/findbugs.xml"/>
<redirector output="${dist.findbugs.dir}/findbugs.html"/>
</exec>
</target>
<target name="coverage" depends="-def-cobertura,build-all-classes,instrument-classes,jtreg,coverage-report"/>
<target name="instrument-classes" depends="-def-cobertura">
<!-- only define the following property when we want coverage info -->
<path id="coverage.classpath">
<pathelement location="${build.coverage.dir}/classes"/>
<path refid="cobertura.classpath"/>
</path>
<property name="coverage.options" value="-Dnet.sourceforge.cobertura.datafile=${build.coverage.dir}/cobertura.ser"/>
<property name="coverage.classpath" refid="coverage.classpath"/>
<mkdir dir="${build.coverage.dir}/classes"/>
<delete file="${build.coverage.dir}/cobertura.ser"/>
<cobertura-instrument todir="${build.coverage.dir}/classes"
datafile="${build.coverage.dir}/cobertura.ser">
<fileset dir="${build.classes.dir}"
includes="**/*.class" excludes="**/resources/*.class"/>
</cobertura-instrument>
</target>
<target name="coverage-report" depends="-def-cobertura">
<mkdir dir="${dist.coverage.dir}"/>
<cobertura-report
srcdir="${src.classes.dir}"
destdir="${dist.coverage.dir}"
datafile="${build.coverage.dir}/cobertura.ser"/>
<cobertura-report
format="xml"
srcdir="${src.classes.dir}"
destdir="${dist.coverage.dir}"
datafile="${build.coverage.dir}/cobertura.ser"/>
</target>
<!-- javac targets -->
<target name="build-bootstrap-javac" depends="-def-build-bootstrap-tool">
<build-bootstrap-tool name="javac" includes="${javac.includes}"/>
</target>
<target name="build-classes-javac" depends="build-bootstrap-javac">
<build-classes name="javac" includes="${javac.includes}"/>
</target>
<target name="build-javac" depends="build-bootstrap-javac">
<build-tool name="javac" includes="${javac.includes}"/>
</target>
<target name="javadoc-javac" depends="build-javac,-def-javadoc-tool">
<javadoc-tool name="javac" includes="${javac.includes}" options="${javadoc.jls3.option}"/>
</target>
<target name="jtreg-javac" depends="build-javac,-def-jtreg">
<jtreg-tool name="javac" samevm="true" tests="${javac.tests}"/>
</target>
<target name="findbugs-javac" depends="build-javac,-def-findbugs">
<findbugs-tool name="javac"/>
</target>
<target name="javac" depends="build-javac,jtreg-javac,findbugs-javac"/>
<!-- javadoc targets -->
<target name="build-bootstrap-javadoc" depends="build-bootstrap-javac">
<build-bootstrap-tool name="javadoc"
includes="${javadoc.includes}"
jarclasspath="javac.jar doclets.jar"/>
</target>
<target name="build-classes-javadoc" depends="build-classes-javac">
<build-classes name="javadoc" includes="${javadoc.includes}"/>
</target>
<target name="build-javadoc" depends="build-javac">
<build-tool name="javadoc"
includes="${javadoc.includes}"
jarclasspath="javac.jar doclets.jar"/>
</target>
<target name="javadoc-javadoc" depends="build-javadoc,-def-javadoc-tool">
<javadoc-tool name="javadoc" includes="${javadoc.includes}"/>
</target>
<target name="jtreg-javadoc" depends="build-javadoc,-def-jtreg">
<jtreg-tool name="javadoc" samevm="false" tests="${javadoc.tests}"/>
</target>
<target name="findbugs-javadoc" depends="build-javadoc,-def-findbugs">
<findbugs-tool name="javadoc"/>
</target>
<target name="javadoc" depends="build-javadoc,jtreg-javadoc,findbugs-javadoc"/>
<!-- doclets targets -->
<target name="build-bootstrap-doclets" depends="build-bootstrap-javadoc,-def-build-bootstrap-jar">
<build-bootstrap-jar name="doclets"
includes="${doclets.includes}"
jarmainclass="com.sun.tools.javadoc.Main"
jarclasspath="javadoc.jar"/>
</target>
<target name="build-classes-doclets" depends="build-classes-javadoc">
<build-classes name="doclets" includes="${doclets.includes}"/>
</target>
<target name="build-doclets" depends="build-javadoc">
<!-- just jar, no bin for doclets -->
<build-jar name="doclets"
includes="${doclets.includes}"
jarclasspath="javadoc.jar"/>
</target>
<!-- (no javadoc for doclets) -->
<target name="jtreg-doclets" depends="build-doclets,-def-jtreg">
<jtreg-tool name="doclets" samevm="false" tests="${doclets.tests}"/>
</target>
<target name="findbugs-doclets" depends="build-doclets,-def-findbugs">
<findbugs-tool name="doclets"/>
</target>
<target name="doclets" depends="build-doclets,jtreg-doclets,findbugs-doclets"/>
<!-- javah targets -->
<target name="build-bootstrap-javah" depends="build-bootstrap-javadoc">
<build-bootstrap-tool name="javah"
includes="${javah.includes}"
jarclasspath="javadoc.jar doclets.jar javac.jar"/>
</target>
<target name="build-javah" depends="build-javadoc">
<build-tool name="javah"
includes="${javah.includes}"
jarclasspath="javadoc.jar doclets.jar javac.jar"/>
</target>
<target name="build-classes-javah" depends="build-classes-javadoc">
<build-classes name="javah" includes="${javah.includes}"/>
</target>
<!-- (no javadoc for javah) -->
<target name="jtreg-javah" depends="build-javah,-def-jtreg">
<jtreg-tool name="javah" samevm="true" tests="${javah.tests}"/>
</target>
<target name="findbugs-javah" depends="build-javah,-def-findbugs">
<findbugs-tool name="javah"/>
</target>
<target name="javah" depends="build-javah,jtreg-javah,findbugs-javah"/>
<!-- javap targets -->
<target name="build-bootstrap-javap" depends="-def-build-bootstrap-tool">
<build-bootstrap-tool name="javap"
includes="${javap.includes}"
jarmainclass="sun.tools.javap.Main"/>
</target>
<target name="build-classes-javap" depends="build-bootstrap-javac">
<build-classes name="javap" includes="${javap.includes}"/>
</target>
<target name="build-javap" depends="build-bootstrap-javac">
<build-tool name="javap"
includes="${javap.includes}"
jarmainclass="sun.tools.javap.Main"/>
</target>
<!-- (no javadoc for javap) -->
<target name="jtreg-javap" depends="build-javap,-def-jtreg">
<jtreg-tool name="javap" samevm="true" tests="${javap.tests}"/>
</target>
<target name="findbugs-javap" depends="build-javap,-def-findbugs">
<findbugs-tool name="javap"/>
</target>
<target name="javap" depends="build-javap,jtreg-javap,findbugs-javap"/>
<!-- apt targets -->
<target name="build-bootstrap-apt" depends="build-bootstrap-javac">
<build-bootstrap-tool name="apt"
includes="${apt.includes}"
jarclasspath="javac.jar"/>
</target>
<target name="build-apt" depends="build-javac">
<build-tool name="apt"
includes="${apt.includes}"
jarclasspath="javac.jar"/>
</target>
<target name="build-classes-apt" depends="build-classes-javac">
<build-classes name="apt" 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" samevm="true" 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"/>
<!-- Check targets -->
<target name="-check-boot.java.home" depends="-def-check">
<check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/>
</target>
<target name="-check-target.java.home" depends="-def-check">
<check name="target java" property="target.java.home" marker="${java.marker}"/>
</target>
<target name="-check-cobertura.home" depends="-def-check">
<check name="cobertura" property="cobertura.home" marker="cobertura.jar"/>
</target>
<target name="-check-findbugs.home" depends="-def-check">
<check name="findbugs" property="findbugs.home" marker="lib/findbugs.jar"/>
</target>
<target name="-check-jtreg.home" depends="-def-check">
<check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/>
</target>
<!-- Ant macro and preset defs -->
<target name="-def-build-tool" depends="-def-build-jar">
<macrodef name="build-tool">
<attribute name="name"/>
<attribute name="includes"/>
<attribute name="excludes" default="**/package-info.java"/>
<attribute name="bin.dir" default="${dist.bin.dir}"/>
<attribute name="classes.dir" default="${build.classes.dir}"/>
<attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
<attribute name="lib.dir" default="${dist.lib.dir}"/>
<attribute name="java" default="java"/>
<attribute name="javac.bootclasspath" default="-J-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
<attribute name="javac.target" default="${javac.target}"/>
<attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/>
<attribute name="jarclasspath" default=""/>
<attribute name="release" default="${release}"/>
<attribute name="full.version" default="${full.version}"/>
<sequential>
<build-jar
name="@{name}"
gensrc.dir="@{gensrc.dir}"
classes.dir="@{classes.dir}"
lib.dir="@{lib.dir}"
includes="@{includes}"
excludes="@{excludes}"
jarmainclass="@{jarmainclass}"
jarclasspath="@{jarclasspath}"
release="@{release}"
full.version="@{full.version}"
javac.bootclasspath="@{javac.bootclasspath}"
javac.target="@{javac.target}"
/>
<mkdir dir="@{bin.dir}"/>
<copy file="${src.bin.dir}/launcher.sh-template" tofile="@{bin.dir}/@{name}">
<filterset begintoken="#" endtoken="#">
<filter token="PROGRAM" value="@{name}"/>
<filter token="TARGET_JAVA" value="@{java}"/>
</filterset>
</copy>
<chmod file="@{bin.dir}/@{name}" perm="ugo+rx"/>
</sequential>
</macrodef>
</target>
<target name="-def-build-jar" depends="-def-build-classes">
<macrodef name="build-jar">
<attribute name="name"/>
<attribute name="includes"/>
<attribute name="excludes" default="**/package-info.java"/>
<attribute name="classes.dir" default="${build.classes.dir}"/>
<attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
<attribute name="lib.dir" default="${dist.lib.dir}"/>
<attribute name="javac.bootclasspath" default="-J-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
<attribute name="javac.target" default="${javac.target}"/>
<attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/>
<attribute name="jarclasspath" default=""/>
<attribute name="release" default="${release}"/>
<attribute name="full.version" default="${full.version}"/>
<sequential>
<build-classes
name="@{name}"
gensrc.dir="@{gensrc.dir}"
classes.dir="@{classes.dir}"
includes="@{includes}"
excludes="@{excludes}"
release="@{release}"
full.version="@{full.version}"
javac.bootclasspath="@{javac.bootclasspath}"
javac.target="@{javac.target}"
/>
<mkdir dir="@{lib.dir}"/>
<jar destfile="@{lib.dir}/@{name}.jar"
basedir="@{classes.dir}"
includes="@{includes}">
<manifest>
<attribute name="Main-Class" value="@{jarmainclass}"/>
<attribute name="Class-Path" value="@{jarclasspath}"/>
</manifest>
</jar>
</sequential>
</macrodef>
</target>
<target name="-def-build-classes" depends="-def-pcompile">
<macrodef name="build-classes">
<attribute name="name"/>
<attribute name="includes"/>
<attribute name="excludes" default="**/package-info.java"/>
<attribute name="classes.dir" default="${build.classes.dir}"/>
<attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
<attribute name="javac.bootclasspath" default="${build.bootstrap.dir}/classes"/>
<attribute name="javac.target" default="${javac.target}"/>
<attribute name="release" default="${release}"/>
<attribute name="full.version" default="${full.version}"/>
<sequential>
<mkdir dir="@{gensrc.dir}"/>
<mkdir dir="@{classes.dir}"/>
<pcompile srcdir="${src.classes.dir}"
destdir="@{gensrc.dir}"
includes="@{includes}"/>
<copy todir="@{gensrc.dir}">
<fileset dir="${src.classes.dir}" includes="${javac.includes}"/>
<globmapper from="*.properties-template" to="*.properties"/>
<filterset begintoken="$(" endtoken=")">
<filter token="JDK_VERSION" value="${jdk.version}"/>
<filter token="RELEASE" value="@{release}"/>
<filter token="FULL_VERSION" value="@{full.version}"/>
</filterset>
</copy>
<pcompile srcdir="@{gensrc.dir}"
destdir="@{gensrc.dir}"
includes="**/*.properties"/>
<javac fork="true"
srcdir="@{gensrc.dir}"
destdir="@{classes.dir}"
includes="@{includes}"
sourcepath=""
includeAntRuntime="no"
target="@{javac.target}">
<compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/>
<compilerarg line="${javac.version.opt}"/>
<compilerarg line="-Xlint"/>
</javac>
<javac fork="true"
srcdir="${src.classes.dir}"
destdir="@{classes.dir}"
includes="@{includes}"
excludes="@{excludes}"
sourcepath=""
includeAntRuntime="no"
target="@{javac.target}"
debug="${javac.debug}"
debuglevel="${javac.debuglevel}">
<compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/>
<compilerarg value="-Xbootclasspath/p:@{classes.dir}"/>
<compilerarg line="${javac.no.jdk.warnings}"/>
<compilerarg line="${javac.version.opt}"/>
<compilerarg line="${javac.lint.opts}"/>
</javac>
<copy todir="@{classes.dir}">
<fileset dir="${src.classes.dir}">
<include name="@{includes}"/>
<exclude name="**/*.java"/>
<exclude name="**/*.properties"/>
<exclude name="**/*-template"/>
<exclude name="**/package.html"/>
</fileset>
</copy>
</sequential>
</macrodef>
</target>
<target name="-def-build-bootstrap-tool" depends="-check-boot.java.home,-def-build-tool">
<presetdef name="build-bootstrap-tool">
<build-tool
javac.target="${boot.javac.target}"
gensrc.dir="${build.bootstrap.dir}/gensrc"
classes.dir="${build.bootstrap.dir}/classes"
bin.dir="${build.bootstrap.dir}/bin"
lib.dir="${build.bootstrap.dir}/lib"
java="${boot.java}"
javac.bootclasspath=""
release="${bootstrap.release}"
full.version="${bootstrap.full.version}"/>
</presetdef>
</target>
<target name="-def-build-bootstrap-jar" depends="-def-build-jar">
<presetdef name="build-bootstrap-jar">
<build-jar
javac.target="${boot.javac.target}"
gensrc.dir="${build.bootstrap.dir}/gensrc"
classes.dir="${build.bootstrap.dir}/classes"
lib.dir="${build.bootstrap.dir}/lib"
javac.bootclasspath=""
release="${bootstrap.release}"
full.version="${bootstrap.full.version}"/>
</presetdef>
</target>
<target name="-def-pcompile">
<mkdir dir="${build.toolclasses.dir}"/>
<javac srcdir="${make.tools.dir}/CompileProperties"
destdir="${build.toolclasses.dir}/"
classpath="${ant.home}/lib/ant.jar"/>
<taskdef name="pcompile"
classname="CompilePropertiesTask"
classpath="${build.toolclasses.dir}/"/>
</target>
<target name="-def-javadoc-tool" depends="-check-target.java.home">
<macrodef name="javadoc-tool">
<attribute name="name"/>
<attribute name="includes"/>
<attribute name="options" default=""/>
<attribute name="source" default="1.5"/> <!-- FIXME -->
<sequential>
<property name="javadoc.options" value=""/> <!-- default, can be overridden per user or per project -->
<!-- Note: even with this default value, includes
from src.classes.dir get javadoc'd; see packageset below -->
<property name="javadoc.packagenames" value="none"/> <!-- default, can be overridden per user or per project -->
<javadoc
executable="${target.java.home}/bin/javadoc"
destdir="${build.javadoc.dir}/@{name}"
source="@{source}"
windowtitle="UNOFFICIAL"
failonerror="true"
use="true"
author="false"
version="false"
packagenames="${javadoc.packagenames}" >
<header><![CDATA[<strong>Unofficial Javadoc</strong> generated from developer sources for preview purposes only]]></header>
<arg line="@{options}"/>
<bootclasspath>
<path location="${build.classes.dir}"/>
<path location="${target.java.home}/jre/lib/rt.jar"/>
</bootclasspath>
<sourcepath>
<pathelement location="${src.classes.dir}"/>
</sourcepath>
<!-- XXX just <fileset> (restricted further to **/*.java) and no <packageset> -->
<!-- means that {@link some.package} will not work, which is no good. -->
<!-- (It correctly skips excluded single classes, but not if packageset is also included, -->
<!-- which also causes duplicates in the class index for included files.) -->
<packageset dir="${src.classes.dir}" includes="@{includes}">
<or>
<filename name="java/"/>
<filename name="javax/"/>
<filename name="com/sun/javadoc/"/>
<filename name="com/sun/mirror/"/>
<filename name="com/sun/source/"/>
</or>
</packageset>
</javadoc>
</sequential>
</macrodef>
</target>
<target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home">
<taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant">
<classpath>
<pathelement location="${jtreg.home}/lib/jtreg.jar"/>
<pathelement location="${jtreg.home}/lib/javatest.jar"/>
</classpath>
</taskdef>
<macrodef name="jtreg-tool">
<attribute name="name"/>
<attribute name="tests"/>
<attribute name="jdk" default="${target.java.home}"/>
<attribute name="samevm" default="false"/>
<attribute name="verbose" default="summary"/>
<attribute name="options" default=""/>
<attribute name="keywords" default="-keywords:!ignore"/>
<attribute name="jpda.jvmargs" default=""/>
<sequential>
<property name="coverage.options" value=""/> <!-- default -->
<property name="coverage.classpath" value=""/> <!-- default -->
<jtreg
dir="${test.dir}"
workDir="${build.jtreg.dir}/@{name}/work"
reportDir="${build.jtreg.dir}/@{name}/report"
jdk="@{jdk}"
samevm="@{samevm}" verbose="@{verbose}"
failonerror="false" resultproperty="jtreg.@{name}.result"
javacoptions="-g"
vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}:${build.classes.dir} @{jpda.jvmargs}">
<arg line="@{keywords}"/>
<arg line="@{options}"/>
<arg line="@{tests}"/>
</jtreg>
<!-- the next two properties are for convenience, when only
a single instance of jtreg will be invoked. -->
<condition property="jtreg.passed">
<equals arg1="${jtreg.javac.result}" arg2="0"/>
</condition>
<property name="jtreg.report" value="${build.jtreg.dir}/@{name}/report"/>
</sequential>
</macrodef>
<property name="jtreg.defined" value="true"/>
</target>
<target name="-def-cobertura" depends="-check-cobertura.home">
<path id="cobertura.classpath">
<fileset dir="${cobertura.home}">
<include name="cobertura.jar"/>
<include name="lib/**/*.jar"/>
</fileset>
</path>
<taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
</target>
<target name="-def-findbugs" unless="findbugs.defined" depends="-check-findbugs.home">
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask">
<classpath>
<pathelement location="${findbugs.home}/lib/findbugs.jar"/>
</classpath>
</taskdef>
<macrodef name="findbugs-tool">
<attribute name="name"/>
<attribute name="output" default="emacs"/>
<attribute name="outputFile" default=""/>
<attribute name="reportLevel" default="high"/>
<sequential>
<findbugs
home="${findbugs.home}"
output="@{output}"
outputFile="@{outputFile}"
reportLevel="@{reportLevel}"
failOnError="false"
errorProperty="findbugs.@{name}.errors"
warningsProperty="findbugs.@{name}.warnings"
jvmargs="-Xmx512M" >
<class location="${dist.dir}/lib/@{name}.jar"/>
<auxClasspath>
<pathelement location="${build.classes.dir}"/>
</auxClasspath>
<sourcePath>
<pathelement location="${src.classes.dir}"/>
</sourcePath>
</findbugs>
</sequential>
</macrodef>
<property name="findbugs.defined" value="true"/>
</target>
<target name="-def-check">
<macrodef name="check">
<attribute name="name"/>
<attribute name="property"/>
<attribute name="marker"/>
<sequential>
<fail message="Cannot locate @{name}: please set @{property} to its location">
<condition>
<not>
<isset property="@{property}"/>
</not>
</condition>
</fail>
<fail message="@{name} is not installed in ${@{property}}">
<condition>
<not>
<available file="${@{property}}/@{marker}"/>
</not>
</condition>
</fail>
</sequential>
</macrodef>
</target>
<!-- standard JDK target -->
<target name="sanity"
description="display settings of congiguration values">
<echo level="info">ant.home = ${ant.home}</echo>
<echo level="info">boot.java.home = ${boot.java.home}</echo>
<echo level="info">target.java.home = ${target.java.home}</echo>
<echo level="info">jtreg.home = ${jtreg.home}</echo>
<echo level="info">findbugs.home = ${findbugs.home}</echo>
</target>
<!-- useful debugging targets -->
<target name="diagnostics">
<diagnostics/>
</target>
<target name="post-sanity" depends="-def-jtreg,sanity,build"
description="perform basic validation after a standard build">
<jtreg
dir="make/test"
workDir="${build.jtreg.dir}/post-sanity/work"
reportDir="${build.jtreg.dir}/post-sanity/report"
jdk="${target.java.home}"
verbose="summary"
failonerror="false" resultproperty="jtreg.post-sanity.result">
</jtreg>
</target>
</project>

241
langtools/make/jprt.config Normal file
View File

@ -0,0 +1,241 @@
#!echo "This is not a shell script"
#############################################################################
#
# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
#############################################################################
#
# JPRT shell configuration for building.
#
# Input environment variables:
# ALT_BOOTDIR
# ALT_SLASH_JAVA
# ALT_JDK_IMPORT_PATH
# Windows Only:
# PATH
# PROCESSOR_IDENTIFIER
# ROOTDIR
#
# Output variable settings:
# make Full path to GNU make
#
# Output environment variables:
# PATH
# Windows Only:
# ALT_DEVTOOLS_PATH (To avoid the C:/UTILS default)
#
# After JDK6, most settings will be found via ALT_SLASH_JAVA or
# by way of other system environment variables. If this was JDK5
# or an older JDK, you might need to export more ALT_* variables.
#
#############################################################################
#############################################################################
# Error
error() # message
{
echo "ERROR: $1"
exit 6
}
# Directory must exist
dirMustExist() # dir name
{
if [ ! -d "$1" ] ; then
error "Directory for $2 does not exist: $1"
fi
}
# File must exist
fileMustExist() # dir name
{
if [ ! -f "$1" ] ; then
error "File for $2 does not exist: $1"
fi
}
#############################################################################
# Should be set by JPRT as the 3 basic inputs
bootdir="${ALT_BOOTDIR}"
slashjava="${ALT_SLASH_JAVA}"
jdk_import="${ALT_JDK_IMPORT_PATH}"
# Check input
dirMustExist "${bootdir}" ALT_BOOTDIR
dirMustExist "${slashjava}" ALT_SLASH_JAVA
dirMustExist "${jdk_import}" ALT_JDK_IMPORT_PATH
# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
osname=`uname -s`
if [ "${osname}" = SunOS ] ; then
# SOLARIS: Sparc or X86
osarch=`uname -p`
if [ "${osarch}" = sparc ] ; then
solaris_arch=sparc
else
solaris_arch=i386
fi
# Add basic solaris system paths
path4sdk=/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
# Get the previous JDK to be used to bootstrap the build
path4sdk=${bootdir}/bin:${path4sdk}
# Ant
ANT_HOME=${slashjava}/devtools/share/ant/1.7.0
export ANT_HOME
antbindir=${ANT_HOME}/bin
fileMustExist "${antbindir}/ant" ant
path4sdk=${antbindir}:${path4sdk}
# Find GNU make
make=/usr/sfw/bin/gmake
if [ ! -f ${make} ] ; then
make=/opt/sfw/bin/gmake
if [ ! -f ${make} ] ; then
make=${slashjava}/devtools/${solaris_arch}/bin/gnumake
fi
fi
fileMustExist "${make}" make
# File creation mask
umask 002
elif [ "${osname}" = Linux ] ; then
# LINUX: X86, AMD64
osarch=`uname -m`
if [ "${osarch}" = i686 ] ; then
linux_arch=i586
elif [ "${osarch}" = x86_64 ] ; then
linux_arch=amd64
fi
# Add basic paths
path4sdk=/usr/bin:/bin:/usr/sbin:/sbin
# Get the previous JDK to be used to bootstrap the build
path4sdk=${bootdir}/bin:${path4sdk}
# Ant
ANT_HOME=${slashjava}/devtools/share/ant/1.7.0
export ANT_HOME
antbindir=${ANT_HOME}/bin
fileMustExist "${antbindir}/ant" ant
path4sdk=${antbindir}:${path4sdk}
# Find GNU make
make=/usr/bin/make
fileMustExist "${make}" make
umask 002
else
# Windows: Differs on CYGWIN vs. MKS
# Also, blanks in pathnames gives GNU make headaches, so anything placed
# in any ALT_* variable should be the short windows dosname.
# WINDOWS: Install and use MKS or CYGWIN (should have already been done)
# Assumption here is that you are in a shell window via MKS or cygwin.
# MKS install should have defined the environment variable ROOTDIR.
# We also need to figure out which one we have: X86, AMD64
if [ "`echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64`" != "" ] ; then
windows_arch=amd64
else
windows_arch=i586
fi
# We need to determine if we are running a CYGWIN shell or an MKS shell
# (if uname isn't available, then it will be unix_toolset=unknown)
unix_toolset=unknown
if [ "`uname -a | fgrep Cygwin`" = "" -a -d "${ROOTDIR}" ] ; then
# We kind of assume ROOTDIR is where MKS is and it's ok
unix_toolset=MKS
mkshome=`dosname -s "${ROOTDIR}"`
# Utility to convert to short pathnames without spaces
dosname="${mkshome}/mksnt/dosname -s"
# Most unix utilities are in the mksnt directory of ROOTDIR
unixcommand_path="${mkshome}/mksnt"
path4sdk="${unixcommand_path}"
dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
devtools_path="${slashjava}/devtools/win32/bin"
path4sdk="${devtools_path};${path4sdk}"
# Normally this need not be set, but on Windows it's default is C:/UTILS
ALT_DEVTOOLS_PATH="${devtools_path}"
export ALT_DEVTOOLS_PATH
dirMustExist "${devtools_path}" ALT_DEVTOOLS_PATH
# Find GNU make
make="${devtools_path}/gnumake.exe"
fileMustExist "${make}" make
elif [ "`uname -a | fgrep Cygwin`" != "" -a -f /bin/cygpath ] ; then
# For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
unix_toolset=CYGWIN
# Utility to convert to short pathnames without spaces
dosname="/usr/bin/cygpath -a -m -s"
# Most unix utilities are in the /usr/bin
unixcommand_path="/usr/bin"
path4sdk="${unixcommand_path}"
dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
# Find GNU make
make="${unixcommand_path}/make.exe"
fileMustExist "${make}" make
else
echo "WARNING: Cannot figure out if this is MKS or CYGWIN"
fi
# WINDOWS: Get the previous JDK to be used to bootstrap the build
path4sdk="${bootdir}/bin;${path4sdk}"
# Ant
ANT_HOME=${slashjava}/devtools/share/ant/1.7.0
export ANT_HOME
antbindir=${ANT_HOME}/bin
fileMustExist "${antbindir}/ant" ant
path4sdk="${antbindir};${path4sdk}"
# Turn all \\ into /, remove duplicates and trailing /
slash_path="`echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g'`"
# For windows, it's hard to know where the system is, so we just add this
# to PATH.
path4sdk="${slash_path};${PATH}"
# Convert path4sdk to cygwin style
if [ "${unix_toolset}" = CYGWIN ] ; then
path4sdk="`/usr/bin/cygpath -p ${path4sdk}`"
fi
fi
# Export PATH setting
PATH="${path4sdk}"
export PATH
# Things we need to unset
unset LD_LIBRARY_PATH
unset LD_LIBRARY_PATH_32
unset LD_LIBRARY_PATH_64
unset JAVA_HOME

View File

@ -0,0 +1,55 @@
#
# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# Properties for jprt
jprt.tools.default.release=jdk1.7.0
# Specific platform list
jprt.build.platforms=\
solaris_sparc_5.10,\
solaris_sparcv9_5.10,\
solaris_i586_5.10,\
solaris_x64_5.10,\
linux_i586,\
linux_x64,\
windows_i586,\
windows_x64
# The different build flavors we want
jprt.build.flavors=product
# Explicitly designate what the 32bit match is for the 64bit build
jprt.solaris_sparcv9.build.platform.match32=solaris_sparc_5.10
jprt.solaris_sparcv9_5.10.build.platform.match32=solaris_sparc_5.10
jprt.solaris_x64.build.platform.match32=solaris_i586_5.10
jprt.solaris_x64_5.10.build.platform.match32=solaris_i586_5.10
# Standard list of jprt test targets for this workspace
jprt.test.targets=
# Directories needed to build
jprt.bundle.src.dirs=make src
jprt.bundle.exclude.src.dirs=build dist

View File

@ -0,0 +1,28 @@
Working on the "langtools" workspace using NetBeans.
This directory (make/netbeans) contains NetBeans projects that
allow you to work on the various tools using the NetBeans IDE.
NetBeans 5.0 or later is required and sufficient to use these
projects. This is different from other projects in OpenJDK,
which requires version 6.0 or later.
The following projects are provided:
compiler: for working on the compiler, javac
javadoc: for working on the documentation tool, javadoc
doclets: for working on the standard doclets used by the
documentation tool, javadoc
javah: for working on the C header tool, javah
javap: for working on the disassembler, javap
apt: for working on the annotation processing tool, apt.
Note that this is just provided for completeness;
the tool has been superceded by new features in javac,
and work on apt itself is discouraged.
However, any tool can be worked on from any project; the only difference
between these projects is the behavior of the standard NetBeans actions,
so that "Build" in the compiler project will build the compiler, etc.

View File

@ -0,0 +1,15 @@
"apt" project README.
This project is for working on the annotation processing tool (apt)
in the OpenJDK langtools component.
The tool was provided in Java 1.5, but has been superceded by new
features in the compiler (javac) in Java 6. apt itself is now
deprecated, and any further devlopment on it is strongly discouraged.
The main class for the tool is com.sun.tools.apt.Main.
NetBeans 5.0 or later is required and sufficient to use this
project, and others in the OpenJDK langtools component.
This is different from other projects in OpenJDK, which
require version 6.0 or later.

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
Build file for the annotation processing tool, apt.
- The basic functionality of the build is imported from make/build.xml.
- Additional support for NetBeans actions is imported from
make/netbeans/common/shared.xml.
- This file gives the final customizations.
This tool is now deprecated, and any further development is strongly
discouraged.
-->
<project name="apt" default="build" basedir="../../..">
<property name="tool.name" value="apt"/>
<import file="../common/shared.xml"/>
<!--
Alias the following imported targets, giving descriptions as appropriate.
NetBeans will emphasize targets with descriptions in the Ant Targets list,
and will display the targets in the context menu (under Run Target) for
this file in the Projects viewer.
-->
<target name="build" depends="build-apt" description="Build the annotation processing tool, apt."/>
<target name="debug" depends="-debug-nb" description="Debug the annotation processing tool, apt."/>
<target name="-jtreg" depends="jtreg-apt"/>
<target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the annotation processing tool, apt."/>
</project>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE project [
<!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
<!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
]>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>apt</name>
<properties>
<property name="root">../../..</property>
</properties>
<folders>
<source-folder>
<label>langtools</label>
<location>${root}</location>
</source-folder>
<source-folder>
<label>Source files</label>
<type>java</type>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder>
<label>Test files</label>
<type>tests</type>
<location>${root}/test</location>
</source-folder>
<source-folder>
<label>Build files</label>
<type>build</type>
<location>${root}/make</location>
</source-folder>
</folders>
<ide-actions>
&standard-ide-actions-no-javadoc;
</ide-actions>
<export>
<type>folder</type>
<location>${root}/build/classes</location>
<build-target>build</build-target>
</export>
<view>
<items>
<source-folder style="tree">
<label>Source files</label>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder style="tree">
<label>Test files</label>
<location>${root}/test</location>
</source-folder>
<source-folder style="tree">
<label>Build files</label>
<location>${root}/make</location>
</source-folder>
<source-file>
<label>README</label>
<location>README</location>
</source-file>
</items>
<context-menu>
&standard-context-menu-items-no-javadoc;
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
<built-to>${root}/build/classes</built-to>
<source-level>1.5</source-level> <!-- FIXME -->
</compilation-unit>
</java-data>
</configuration>
</project>

View File

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
The file contains targets for NetBeans action that are shared across
all langtools projects.
-->
<project name="shared" default="build" basedir="../../..">
<!--
Instead of importing the main build file, we could call it when needed.
That would reduce the list of Ant targets that get displayed for this
file, but it also complicates the interface between the project build
file and the main build file. For example, some imported targets
would have to be reclared, properties would have to be restructured,
and it would be harder to run results (e.g. in properties) from nested
targets.
-->
<import file="../../build.xml"/>
<property name="tool.mainclass" value="com.sun.tools.${tool.name}.Main"/>
<property name="tool.default.args" value="-version"/>
<!-- compile a single file -->
<!-- for compile-single, etc, we might want different targets for
javac and not javac, because of bootstrap issues -->
<target name="compile-single" depends="build-bootstrap-javac">
<fail unless="includes">Must set property 'includes'</fail>
<javac fork="true" executable="${build.bootstrap.dir}/bin/javac"
srcdir="${src.classes.dir}"
destdir="${build.classes.dir}"
includes="${includes}"
sourcepath=""
includeAntRuntime="no"
target="${target}"
debug="${javac.debug}"
debuglevel="${javac.debuglevel}"/>
</target>
<!-- run tool -->
<target name="run" depends="build,-def-run" description="run ${tool.description}">
<run/>
</target>
<!-- run a selected class -->
<target name="run-single" depends="-def-run">
<fail unless="run.classname">Must set property 'run.classname'</fail>
<run name="${run.classname}" mainclass="${run.classname}" default.args=""/>
</target>
<!-- run jtreg tests, and display results in NetBeans -->
<target name="-jtreg-nb" depends="-jtreg" if="netbeans.home" unless="jtreg.passed">
<nbbrowse file="${jtreg.report}/report.html"/>
<fail>Some tests failed; see report for details.</fail>
</target>
<!-- debug tool in NetBeans -->
<target name="-debug-nb" depends="build,-def-run,-def-start-debugger" if="netbeans.home">
<start-debugger/>
<run jpda.jvmargs="${jpda.jvmargs}"/>
</target>
<!-- debug a selected class -->
<target name="debug-single-nb" depends="-def-start-debugger,-def-run">
<fail unless="debug.classname">Must set property 'debug.classname'</fail>
<start-debugger/>
<run name="${debug.classname}" mainclass="${debug.classname}" default.args=""
jpda.jvmargs="${jpda.jvmargs}"/>
</target>
<!-- debug a jtreg test -->
<target name="debug-jtreg-nb" depends="-def-start-debugger,-def-jtreg">
<fail unless="jtreg.tests">Must set property 'jtreg.tests'</fail>
<start-debugger/>
<jtreg-tool name="${tool.name}" samevm="false" tests="${jtreg.tests}"
jpda.jvmargs="${jpda.jvmargs}"/>
</target>
<!-- update a class being debugged -->
<target name="debug-fix">
<fail unless="class">Must set property 'class'</fail>
<antcall target="compile-single">
<param name="includes" value="${class}.java"/>
</antcall>
<nbjpdareload>
<fileset dir="${build.classes.dir}">
<include name="${class}.class"/>
</fileset>
</nbjpdareload>
</target>
<!-- create javadoc documentation -->
<target name="-javadoc-nb" depends="-javadoc" if="netbeans.home">
<nbbrowse file="${build.javadoc.dir}/${tool.name}/index.html"/>
</target>
<!-- default target for those projects that don't have public API docs;
override as needed for projects with public API docs.-->
<target name="-javadoc"/>
<!-- macro to run a tool or selected class - used by run* and debug* tasks -->
<target name="-def-run">
<macrodef name="run">
<attribute name="name" default="${tool.name}"/>
<attribute name="mainclass" default="${tool.mainclass}"/>
<attribute name="default.args" default="${tool.default.args}"/>
<attribute name="jpda.jvmargs" default=""/>
<sequential>
<input addproperty="run.args" message="Run @{name} with options" defaultvalue="@{default.args}"/>
<java fork="true" jvm="${target.java}" classname="@{mainclass}">
<bootclasspath>
<pathelement location="${build.classes.dir}"/>
<pathelement location="${target.java.home}/jre/lib/rt.jar"/>
</bootclasspath>
<jvmarg line="@{jpda.jvmargs}"/>
<arg line="${run.args}"/>
</java>
</sequential>
</macrodef>
</target>
<!-- macro to start the debugger and set a property containg the args needed by the run task -->
<target name="-def-start-debugger" if="netbeans.home">
<macrodef name="start-debugger">
<attribute name="jpda.jvmargs.property" default="jpda.jvmargs"/>
<sequential>
<nbjpdastart name="${ant.project.name}" addressproperty="jpda.address" transport="dt_socket">
<bootclasspath>
<pathelement location="${build.classes.dir}"/>
<pathelement location="${target.java.home}/jre/lib/rt.jar"/>
</bootclasspath>
<sourcepath>
<pathelement location="${src.classes.dir}"/>
</sourcepath>
</nbjpdastart>
<property
name="@{jpda.jvmargs.property}"
value="-Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,address=${jpda.address}"
/>
</sequential>
</macrodef>
</target>
</project>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
This file defines the actions that will appear on the project's context
menu, in the Projects viewer.
It is normally included as an entity into a project's project.xml file.
For information on these actions, see
- NetBeans: Setting Up Projects
at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html
- NetBeans: Advanced Freeform Project Configuration
at http://www.netbeans.org/kb/41/freeform-config.html
-->
<ide-action name="build"/>
<ide-action name="rebuild"/>
<ide-action name="clean"/>
<separator/>
<ide-action name="run"/>
<ide-action name="debug"/>
<separator/>
<ide-action name="test"/>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
This file defines the actions that will appear on the project's context
menu, in the Projects viewer.
It is normally included as an entity into a project's project.xml file.
For information on these actions, see
- NetBeans: Setting Up Projects
at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html
- NetBeans: Advanced Freeform Project Configuration
at http://www.netbeans.org/kb/41/freeform-config.html
-->
<ide-action name="build"/>
<ide-action name="rebuild"/>
<ide-action name="clean"/>
<ide-action name="javadoc"/>
<separator/>
<ide-action name="run"/>
<ide-action name="debug"/>
<separator/>
<ide-action name="test"/>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
This file defines the standard actions accepted by langtools projects.
It is normally included as an entity into a project's project.xml file.
For information on these actions, see
- NetBeans: Setting Up Projects
at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html
- NetBeans: Advanced Freeform Project Configuration
at http://www.netbeans.org/kb/41/freeform-config.html
-->
<action name="build">
<target>build</target>
</action>
<action name="clean">
<target>clean</target>
</action>
<action name="rebuild">
<target>clean</target>
<target>build</target>
</action>
<action name="compile.single">
<target>compile-single</target>
<property name="srcdir">${root}/src/share/classes</property>
<context>
<property>includes</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>relative-path</format>
<arity>
<separated-files>,</separated-files>
</arity>
</context>
</action>
<action name="run">
<target>run</target>
</action>
<action name="run.single">
<target>run-single</target>
<context>
<property>run.classname</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>java-name</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<!--
Note: NetBeans does not appear to support context menu items
on shell scripts :-(
-->
<action name="run.single">
<target>jtreg</target>
<context>
<property>jtreg.tests</property>
<folder>${root}/test</folder>
<pattern>\.(java|sh)$</pattern>
<format>relative-path</format>
<arity>
<separated-files>,</separated-files>
</arity>
</context>
</action>
<action name="test">
<target>jtreg</target>
</action>
<action name="debug">
<target>debug-nb</target>
</action>
<action name="debug.single">
<target>debug-single-nb</target>
<context>
<property>debug.classname</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>java-name</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<!--
Note: NetBeans does not appear to support context menu items
on shell scripts :-(
-->
<action name="debug.single">
<target>debug-jtreg-nb</target>
<context>
<property>jtreg.tests</property>
<folder>${root}/test</folder>
<pattern>\.(java|sh)$</pattern>
<format>relative-path</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<action name="debug.fix">
<target>debug-fix</target>
<property name="srcdir">${root}/src/share/classes</property>
<context>
<property>class</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>relative-path-noext</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<action name="javadoc">
<target>javadoc-nb</target>
</action>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
This file defines the standard actions accepted by langtools projects.
It is normally included as an entity into a project's project.xml file.
For information on these actions, see
- NetBeans: Setting Up Projects
at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html
- NetBeans: Advanced Freeform Project Configuration
at http://www.netbeans.org/kb/41/freeform-config.html
-->
<action name="build">
<target>build</target>
</action>
<action name="clean">
<target>clean</target>
</action>
<action name="rebuild">
<target>clean</target>
<target>build</target>
</action>
<action name="compile.single">
<target>compile-single</target>
<property name="srcdir">${root}/src/share/classes</property>
<context>
<property>includes</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>relative-path</format>
<arity>
<separated-files>,</separated-files>
</arity>
</context>
</action>
<action name="run">
<target>run</target>
</action>
<action name="run.single">
<target>run-single</target>
<context>
<property>run.classname</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>java-name</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<!--
Note: NetBeans does not appear to support context menu items
on shell scripts :-(
-->
<action name="run.single">
<target>jtreg</target>
<context>
<property>jtreg.tests</property>
<folder>${root}/test</folder>
<pattern>\.(java|sh)$</pattern>
<format>relative-path</format>
<arity>
<separated-files>,</separated-files>
</arity>
</context>
</action>
<action name="test">
<target>jtreg</target>
</action>
<action name="debug">
<target>debug-nb</target>
</action>
<action name="debug.single">
<target>debug-single-nb</target>
<context>
<property>debug.classname</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>java-name</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<!--
Note: NetBeans does not appear to support context menu items
on shell scripts :-(
-->
<action name="debug.single">
<target>debug-jtreg-nb</target>
<context>
<property>jtreg.tests</property>
<folder>${root}/test</folder>
<pattern>\.(java|sh)$</pattern>
<format>relative-path</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<action name="debug.fix">
<target>debug-fix</target>
<property name="srcdir">${root}/src/share/classes</property>
<context>
<property>class</property>
<folder>${root}/src/share/classes</folder>
<pattern>\.java$</pattern>
<format>relative-path-noext</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
<action name="javadoc">
<target>javadoc-nb</target>
</action>

View File

@ -0,0 +1,11 @@
"compiler" project README.
This project is for working on the compiler tool (javac)
in the OpenJDK langtools component.
The main class for the tool is com.sun.tools.javac.Main.
NetBeans 5.0 or later is required and sufficient to use this
project, and others in the OpenJDK langtools component.
This is different from other projects in OpenJDK, which
require version 6.0 or later.

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
Build file for the compiler.
- The basic functionality of the build is imported from make/build.xml.
- Additional support for NetBeans actions is imported from
make/netbeans/common/shared.xml.
- This file gives the final customizations.
-->
<project name="compiler" default="build" basedir="../../..">
<property name="tool.name" value="javac"/>
<import file="../common/shared.xml"/>
<!--
Alias the following imported targets, giving descriptions as appropriate.
NetBeans will emphasize targets with descriptions in the Ant Targets list,
and will display the targets in the context menu (under Run Target) for
this file in the Projects viewer.
-->
<target name="build" depends="build-javac" description="Build the compiler."/>
<target name="debug" depends="-debug-nb" description="Debug the compiler."/>
<target name="-javadoc" depends="javadoc-javac"/>
<target name="javadoc" depends="-javadoc-nb" description="Generate javadoc documentation for the compiler."/>
<target name="-jtreg" depends="jtreg-javac"/>
<target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the compiler."/>
</project>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE project [
<!ENTITY standard-ide-actions SYSTEM "../../common/standard-ide-actions.ent">
<!ENTITY standard-context-menu-items SYSTEM "../../common/standard-context-menu-items.ent">
]>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>compiler</name>
<properties>
<property name="root">../../..</property>
</properties>
<folders>
<source-folder>
<label>langtools</label>
<location>${root}</location>
</source-folder>
<source-folder>
<label>Source files</label>
<type>java</type>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder>
<label>Test files</label>
<type>tests</type>
<location>${root}/test</location>
</source-folder>
<source-folder>
<label>Build files</label>
<type>build</type>
<location>${root}/make</location>
</source-folder>
</folders>
<ide-actions>
&standard-ide-actions;
</ide-actions>
<export>
<type>folder</type>
<location>${root}/build/classes</location>
<build-target>build</build-target>
</export>
<view>
<items>
<source-folder style="tree">
<label>Source files</label>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder style="tree">
<label>Test files</label>
<location>${root}/test</location>
</source-folder>
<source-folder style="tree">
<label>Build files</label>
<location>${root}/make</location>
</source-folder>
<source-file>
<label>README</label>
<location>README</location>
</source-file>
</items>
<context-menu>
&standard-context-menu-items;
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
<built-to>${root}/build/classes</built-to>
<source-level>1.5</source-level> <!-- FIXME -->
</compilation-unit>
</java-data>
</configuration>
</project>

View File

@ -0,0 +1,16 @@
"doclets" project README.
This project is for working on the standard doclets used by
the documentation tool (javadoc) in the OpenJDK langtools component.
The doclets are invoked as part of the documentation tool (javadoc).
Using this project, you can also browse javadoc and any tools in langtools.
If you build the doclets, javadoc will be built automatically as well,
if necessary.
The doclets are found in com.sun.tools.doclets.
NetBeans 5.0 or later is required and sufficient to use this
project, and others in the OpenJDK langtools component.
This is different from other projects in OpenJDK, which
require version 6.0 or later.

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
Build file for the standard doclets used by documentation tool, javadoc.
- The basic functionality of the build is imported from make/build.xml.
- Additional support for NetBeans actions is imported from
make/netbeans/common/shared.xml.
- This file gives the final customizations.
-->
<project name="doclets" default="build" basedir="../../..">
<property name="tool.name" value="doclets"/>
<import file="../common/shared.xml"/>
<!--
Alias the following imported targets, giving descriptions as appropriate.
NetBeans will emphasize targets with descriptions in the Ant Targets list,
and will display the targets in the context menu (under Run Target) for
this file in the Projects viewer.
-->
<target name="build" depends="build-doclets" description="Build the standard doclets for the documentation tool, javadoc."/>
<target name="debug" depends="-debug-nb" description="Debug the standard doclets for the documentation tool, javadoc."/>
<target name="-jtreg" depends="jtreg-doclets"/>
<target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the standard doclets used by the documentation tool, javadoc."/>
</project>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE project [
<!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
<!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
]>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>doclets</name>
<properties>
<property name="root">../../..</property>
</properties>
<folders>
<source-folder>
<label>langtools</label>
<location>${root}</location>
</source-folder>
<source-folder>
<label>Source files</label>
<type>java</type>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder>
<label>Test files</label>
<type>tests</type>
<location>${root}/test</location>
</source-folder>
<source-folder>
<label>Build files</label>
<type>build</type>
<location>${root}/make</location>
</source-folder>
</folders>
<ide-actions>
&standard-ide-actions-no-javadoc;
</ide-actions>
<export>
<type>folder</type>
<location>${root}/build/classes</location>
<build-target>build</build-target>
</export>
<view>
<items>
<source-folder style="tree">
<label>Source files</label>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder style="tree">
<label>Test files</label>
<location>${root}/test</location>
</source-folder>
<source-folder style="tree">
<label>Build files</label>
<location>${root}/make</location>
</source-folder>
<source-file>
<label>README</label>
<location>README</location>
</source-file>
</items>
<context-menu>
&standard-context-menu-items-no-javadoc;
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
<built-to>${root}/build/classes</built-to>
<source-level>1.5</source-level> <!-- FIXME -->
</compilation-unit>
</java-data>
</configuration>
</project>

View File

@ -0,0 +1,16 @@
"javadoc" project README.
This project is for working on the documentation tool (javadoc)
in the OpenJDK langtools component.
javadoc is built on top of the compiler (javac). Using this
project, you can also browse javac and any tools in langtools.
If you build javadoc, javac will be built automatically as well,
if necessary.
The main class for the tool is com.sun.tools.javadoc.Main.
NetBeans 5.0 or later is required and sufficient to use this
project, and others in the OpenJDK langtools component.
This is different from other projects in OpenJDK, which
require version 6.0 or later.

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
Build file for the documentation tool, javadoc.
- The basic functionality of the build is imported from make/build.xml.
- Additional support for NetBeans actions is imported from
make/netbeans/common/shared.xml.
- This file gives the final customizations.
-->
<project name="javadoc" default="build" basedir="../../..">
<property name="tool.name" value="javadoc"/>
<import file="../common/shared.xml"/>
<!--
Alias the following imported targets, giving descriptions as appropriate.
NetBeans will emphasize targets with descriptions in the Ant Targets list,
and will display the targets in the context menu (under Run Target) for
this file in the Projects viewer.
-->
<target name="build" depends="build-javadoc" description="Build the documentation tool, javadoc."/>
<target name="debug" depends="-debug-nb" description="Debug the documentation tool, javadoc."/>
<target name="-javadoc" depends="javadoc-javadoc"/>
<target name="javadoc" depends="-javadoc-nb" description="Generate javadoc documentation for the Doclet API."/>
<target name="-jtreg" depends="jtreg-javadoc"/>
<target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the documentation tool, javadoc."/>
</project>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE project [
<!ENTITY standard-ide-actions SYSTEM "../../common/standard-ide-actions.ent">
<!ENTITY standard-context-menu-items SYSTEM "../../common/standard-context-menu-items.ent">
]>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>javadoc</name>
<properties>
<property name="root">../../..</property>
</properties>
<folders>
<source-folder>
<label>langtools</label>
<location>${root}</location>
</source-folder>
<source-folder>
<label>Source files</label>
<type>java</type>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder>
<label>Test files</label>
<type>tests</type>
<location>${root}/test</location>
</source-folder>
<source-folder>
<label>Build files</label>
<type>build</type>
<location>${root}/make</location>
</source-folder>
</folders>
<ide-actions>
&standard-ide-actions;
</ide-actions>
<export>
<type>folder</type>
<location>${root}/build/classes</location>
<build-target>build</build-target>
</export>
<view>
<items>
<source-folder style="tree">
<label>Source files</label>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder style="tree">
<label>Test files</label>
<location>${root}/test</location>
</source-folder>
<source-folder style="tree">
<label>Build files</label>
<location>${root}/make</location>
</source-folder>
<source-file>
<label>README</label>
<location>README</location>
</source-file>
</items>
<context-menu>
&standard-context-menu-items;
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
<built-to>${root}/build/classes</built-to>
<source-level>1.5</source-level> <!-- FIXME -->
</compilation-unit>
</java-data>
</configuration>
</project>

View File

@ -0,0 +1,21 @@
"javah" project README.
This project is for working on the native header tool (javah)
in the OpenJDK langtools component.
javah is built on top of the documentation tool (javadoc). Using this
project, you can also browse javadoc and any other tools in langtools.
If you build javah, javadoc will be built automatically as well,
if necessary.
javah is in the process of being converted so that it runs directly on
top of the compiler, javac, using the annotation processing API,
instead of on top of the documentation tool, javadoc, using the
Doclet API.
The main class for the tool is com.sun.tools.javah.Main.
NetBeans 5.0 or later is required and sufficient to use this
project, and others in the OpenJDK langtools component.
This is different from other projects in OpenJDK, which
require version 6.0 or later.

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
Build file for the native header tool, javah.
- The basic functionality of the build is imported from make/build.xml.
- Additional support for NetBeans actions is imported from
make/netbeans/common/shared.xml.
- This file gives the final customizations.
-->
<project name="javah" default="build" basedir="../../..">
<property name="tool.name" value="javah"/>
<import file="../common/shared.xml"/>
<!--
Alias the following imported targets, giving descriptions as appropriate.
NetBeans will emphasize targets with descriptions in the Ant Targets list,
and will display the targets in the context menu (under Run Target) for
this file in the Projects viewer.
-->
<target name="build" depends="build-javah" description="Build the native header tool, javah."/>
<target name="debug" depends="-debug-nb" description="Debug the native header tool, javah."/>
<target name="-jtreg" depends="jtreg-javah"/>
<target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the native header tool, javah."/>
</project>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE project [
<!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
<!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
]>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>javah</name>
<properties>
<property name="root">../../..</property>
</properties>
<folders>
<source-folder>
<label>langtools</label>
<location>${root}</location>
</source-folder>
<source-folder>
<label>Source files</label>
<type>java</type>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder>
<label>Test files</label>
<type>tests</type>
<location>${root}/test</location>
</source-folder>
<source-folder>
<label>Build files</label>
<type>build</type>
<location>${root}/make</location>
</source-folder>
</folders>
<ide-actions>
&standard-ide-actions-no-javadoc;
</ide-actions>
<export>
<type>folder</type>
<location>${root}/build/classes</location>
<build-target>build</build-target>
</export>
<view>
<items>
<source-folder style="tree">
<label>Source files</label>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder style="tree">
<label>Test files</label>
<location>${root}/test</location>
</source-folder>
<source-folder style="tree">
<label>Build files</label>
<location>${root}/make</location>
</source-folder>
<source-file>
<label>README</label>
<location>README</location>
</source-file>
</items>
<context-menu>
&standard-context-menu-items-no-javadoc;
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
<built-to>${root}/build/classes</built-to>
<source-level>1.5</source-level> <!-- FIXME -->
</compilation-unit>
</java-data>
</configuration>
</project>

View File

@ -0,0 +1,11 @@
"javap" project README.
This project is for working on the disassembler tool (javap)
in the OpenJDK langtools component.
The main class for the tool is sun.tools.javap.Main.
NetBeans 5.0 or later is required and sufficient to use this
project, and others in the OpenJDK langtools component.
This is different from other projects in OpenJDK, which
require version 6.0 or later.

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!--
Build file for the disassembler tool, javap.
- The basic functionality of the build is imported from make/build.xml.
- Additional support for NetBeans actions is imported from
make/netbeans/common/shared.xml.
- This file gives the final customizations.
-->
<project name="javap" default="build" basedir="../../..">
<property name="tool.name" value="javap"/>
<import file="../common/shared.xml"/>
<!--
Alias the following imported targets, giving descriptions as appropriate.
NetBeans will emphasize targets with descriptions in the Ant Targets list,
and will display the targets in the context menu (under Run Target) for
this file in the Projects viewer.
-->
<target name="build" depends="build-javap" description="Build the disassembler tool, javap."/>
<target name="debug" depends="-debug-nb" description="Debug the disassembler tool, javap."/>
<target name="-jtreg" depends="jtreg-javap"/>
<target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the disassembler tool, javap."/>
</project>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of Sun Microsystems nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE project [
<!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
<!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
]>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>javap</name>
<properties>
<property name="root">../../..</property>
</properties>
<folders>
<source-folder>
<label>langtools</label>
<location>${root}</location>
</source-folder>
<source-folder>
<label>Source files</label>
<type>java</type>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder>
<label>Test files</label>
<type>tests</type>
<location>${root}/test</location>
</source-folder>
<source-folder>
<label>Build files</label>
<type>build</type>
<location>${root}/make</location>
</source-folder>
</folders>
<ide-actions>
&standard-ide-actions-no-javadoc;
</ide-actions>
<export>
<type>folder</type>
<location>${root}/build/classes</location>
<build-target>build</build-target>
</export>
<view>
<items>
<source-folder style="tree">
<label>Source files</label>
<location>${root}/src/share/classes</location>
</source-folder>
<source-folder style="tree">
<label>Test files</label>
<location>${root}/test</location>
</source-folder>
<source-folder style="tree">
<label>Build files</label>
<location>${root}/make</location>
</source-folder>
<source-file>
<label>README</label>
<location>README</location>
</source-file>
</items>
<context-menu>
&standard-context-menu-items-no-javadoc;
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
<built-to>${root}/build/classes</built-to>
<source-level>1.5</source-level> <!-- FIXME -->
</compilation-unit>
</java-data>
</configuration>
</project>

View File

@ -0,0 +1,19 @@
/**
* This class is used to test the results of the langtools build.
*/
public class HelloWorld {
public HelloWorld();
/**
* The old standby!
* @param args The parameters are ignored.
*/
public static void main(java.lang.String... args);
/**
* This declaration is for the benefit of javah tests.
*/
public native void test();
}

View File

@ -0,0 +1,21 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: test
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_test
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,45 @@
/*
* Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
// NOTE: The javadoc comments are used by the apt tests.
/**
* This class is used to test the results of the langtools build.
*/
public class HelloWorld
{
/**
* The old standby!
* @param args The parameters are ignored.
*/
public static void main(String... args) {
System.out.println("Hello World!");
}
/**
* This declaration is for the benefit of javah tests.
*/
public native void test();
}

View File

@ -0,0 +1,15 @@
./HelloWorld.html
./allclasses-frame.html
./allclasses-noframe.html
./constant-values.html
./deprecated-list.html
./help-doc.html
./index-all.html
./index.html
./overview-tree.html
./package-frame.html
./package-list
./package-summary.html
./package-tree.html
./resources/inherit.gif
./stylesheet.css

View File

@ -0,0 +1,7 @@
Compiled from "HelloWorld.java"
public class HelloWorld extends java.lang.Object{
public HelloWorld();
public static void main(java.lang.String[]);
public native void test();
}

View File

@ -0,0 +1,4 @@
This is a small quick test suite to (provide a framework to)
verify the output of a JDK build of the langtools component.
It verifies the contents exist and are minimally functional.

View File

View File

@ -0,0 +1,42 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify basic execution of the bootstrap javac compiler.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java"
${TOPDIR}/dist/bootstrap/bin/javac -d . "${TESTSRC}"/../HelloWorld.java
"${TESTJAVAEXE}" -classpath . HelloWorld > HelloWorld.tmp
if [ "`cat HelloWorld.tmp`" = "Hello World!" ]; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,43 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify the basic execution of the bootstrap javadoc tool.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
rm -rf doc
mkdir doc
${TOPDIR}/dist/bootstrap/bin/javadoc -d doc "${TESTSRC}"/../HelloWorld.java
( cd doc ; find . -type f -print | LANG=C sort) > javadoc.tmp
if diff ${TESTSRC}/../HelloWorld.javadoc.gold.txt javadoc.tmp ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,40 @@
#!/bin/sh
#
# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify the basic execution of the bootstrap javah tool.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
${TOPDIR}/dist/bootstrap/bin/javac -d . "${TESTSRC}"/../HelloWorld.java
${TOPDIR}/dist/bootstrap/bin/javah -classpath . -d . HelloWorld
if diff ${TESTSRC}/../HelloWorld.gold.h HelloWorld.h ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,9 @@
./bootstrap/bin/javac
./bootstrap/bin/javadoc
./bootstrap/bin/javah
./bootstrap/lib/doclets.jar
./bootstrap/lib/javac.jar
./bootstrap/lib/javadoc.jar
./bootstrap/lib/javah.jar
./lib/classes.jar
./lib/src.zip

View File

@ -0,0 +1,42 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary
# Verify the contents of the dist directory by name,
# to make sure all necessary files are present.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../..
( cd ${TOPDIR}/dist ; find . -type f -print | LANG=C sort ) > contents.tmp
if diff ${TESTSRC}/contents.gold.txt contents.tmp ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,42 @@
#!/bin/sh
#
# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.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

View File

@ -0,0 +1,38 @@
META-INF/MANIFEST.MF
com/sun/tools/apt/Main.class
com/sun/tools/apt/main/Main.class
com/sun/tools/apt/resources/apt.class
com/sun/tools/apt/resources/apt_ja.class
com/sun/tools/apt/resources/apt_zh_CN.class
com/sun/tools/doclets/formats/html/resources/standard.class
com/sun/tools/doclets/formats/html/resources/standard_ja.class
com/sun/tools/doclets/formats/html/resources/standard_zh_CN.class
com/sun/tools/doclets/internal/toolkit/resources/doclet.xml
com/sun/tools/doclets/internal/toolkit/resources/doclets.class
com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.class
com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.class
com/sun/tools/doclets/internal/toolkit/resources/inherit.gif
com/sun/tools/javac/Main.class
com/sun/tools/javac/main/Main.class
com/sun/tools/javac/resources/compiler.class
com/sun/tools/javac/resources/compiler_ja.class
com/sun/tools/javac/resources/compiler_zh_CN.class
com/sun/tools/javac/resources/javac.class
com/sun/tools/javac/resources/javac_ja.class
com/sun/tools/javac/resources/javac_zh_CN.class
com/sun/tools/javac/resources/legacy.class
com/sun/tools/javac/resources/version.class
com/sun/tools/javadoc/Main.class
com/sun/tools/javadoc/resources/javadoc.class
com/sun/tools/javadoc/resources/javadoc_ja.class
com/sun/tools/javadoc/resources/javadoc_zh_CN.class
com/sun/tools/javah/Main.class
com/sun/tools/javah/resources/Linux_ppc.class
com/sun/tools/javah/resources/Linux_sparc.class
com/sun/tools/javah/resources/SunOS_sparc.class
com/sun/tools/javah/resources/SunOS_sparcv9.class
com/sun/tools/javah/resources/l10n.class
com/sun/tools/javah/resources/l10n_ja.class
com/sun/tools/javah/resources/l10n_zh_CN.class
com/sun/tools/javah/resources/win32_x86.class
sun/tools/javap/Main.class

View File

@ -0,0 +1,50 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary verify that selected files exist in classes.jar
# It would be too brittle to check the complete contents of classes.jar,
# so instead, we check for the following
# - Main classes
# - contents of resource directories
# - any other non-.class files
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAREXE="${TESTJAVA:+${TESTJAVA}/bin/}jar"
${TESTJAREXE} -tf ${TOPDIR}/dist/lib/classes.jar | grep -v '/$' > files.lst
egrep 'Main\.class$|resources' files.lst > expect1.lst
grep -v '.class$' files.lst > expect2.lst
LANG=C sort -u expect1.lst expect2.lst > expect.lst
if diff ${TESTSRC}/classes.gold.txt expect.lst ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,44 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify basic execution of the javac classes in classes.jar.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java"
"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
com.sun.tools.javac.Main \
-d . "${TESTSRC}"/../HelloWorld.java
"${TESTJAVAEXE}" -classpath . HelloWorld > HelloWorld.tmp
if [ "`cat HelloWorld.tmp`" = "Hello World!" ]; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,47 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify the basic execution of the javadoc classes in classes.jar.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java"
rm -rf doc
mkdir doc
"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
com.sun.tools.javadoc.Main \
-d doc "${TESTSRC}"/../HelloWorld.java
( cd doc ; find . -type f -print | LANG=C sort ) > javadoc.tmp
if diff ${TESTSRC}/../HelloWorld.javadoc.gold.txt javadoc.tmp ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,46 @@
#!/bin/sh
#
# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify the basic execution of the javah classes in classes.jar.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java"
"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
com.sun.tools.javac.Main \
-d . "${TESTSRC}"/../HelloWorld.java
"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
com.sun.tools.javah.Main \
-classpath . -d . HelloWorld
if diff ${TESTSRC}/../HelloWorld.gold.h HelloWorld.h ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,46 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary Verify the basic execution of the javap classes in classes.jar.
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java"
"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
com.sun.tools.javac.Main \
-d . "${TESTSRC}"/../HelloWorld.java
"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
sun.tools.javap.Main \
-classpath . HelloWorld > javap.tmp
if diff ${TESTSRC}/../HelloWorld.javap.gold.txt javap.tmp ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,53 @@
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
com/sun/tools/doclets/formats/html/resources/standard_ja.properties
com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties
com/sun/tools/doclets/internal/toolkit/builders/package.html
com/sun/tools/doclets/internal/toolkit/package.html
com/sun/tools/doclets/internal/toolkit/resources/doclet.xml
com/sun/tools/doclets/internal/toolkit/resources/doclets.properties
com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties
com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties
com/sun/tools/doclets/internal/toolkit/resources/inherit.gif
com/sun/tools/doclets/internal/toolkit/taglets/package.html
com/sun/tools/doclets/internal/toolkit/util/links/package.html
com/sun/tools/doclets/internal/toolkit/util/package.html
com/sun/tools/doclets/package.html
com/sun/tools/javac/Main.java
com/sun/tools/javac/main/Main.java
com/sun/tools/javac/resources/compiler.properties
com/sun/tools/javac/resources/compiler_ja.properties
com/sun/tools/javac/resources/compiler_zh_CN.properties
com/sun/tools/javac/resources/javac.properties
com/sun/tools/javac/resources/javac_ja.properties
com/sun/tools/javac/resources/javac_zh_CN.properties
com/sun/tools/javac/resources/legacy.properties
com/sun/tools/javac/services/javax.tools.JavaCompilerTool
com/sun/tools/javadoc/Main.java
com/sun/tools/javadoc/resources/javadoc.properties
com/sun/tools/javadoc/resources/javadoc_ja.properties
com/sun/tools/javadoc/resources/javadoc_zh_CN.properties
com/sun/tools/javah/Main.java
com/sun/tools/javah/resources/Linux_ppc.properties
com/sun/tools/javah/resources/Linux_sparc.properties
com/sun/tools/javah/resources/SunOS_sparc.properties
com/sun/tools/javah/resources/SunOS_sparcv9.properties
com/sun/tools/javah/resources/l10n.properties
com/sun/tools/javah/resources/l10n_ja.properties
com/sun/tools/javah/resources/l10n_zh_CN.properties
com/sun/tools/javah/resources/win32_x86.properties
javax/lang/model/overview.html
javax/tools/overview.html
sun/tools/javap/Main.java

View File

@ -0,0 +1,50 @@
#!/bin/sh
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @summary verify that selected files exist in src.zip
# It would be too brittle to check the complete contents of src.zip,
# so instead, we check for the following
# - Main classes
# - contents of resource directories
# - any other non-.class files
TESTSRC=${TESTSRC:-.}
TOPDIR=${TESTSRC}/../../..
TESTJAREXE="${TESTJAVA:+${TESTJAVA}/bin/}jar"
unzip -l ${TOPDIR}/dist/lib/src.zip | awk '{print $4}' | egrep -v '^$|/$|^Name$|-' > files.lst
egrep 'Main\.java$|resources' files.lst > expect1.lst
grep -v '.java$' files.lst > expect2.lst
LANG=C sort -u expect1.lst expect2.lst > expect.lst
if diff ${TESTSRC}/src.gold.txt expect.lst ; then
echo "Test passed."
else
echo "Test failed."
exit 1
fi

View File

@ -0,0 +1,403 @@
/*
* Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
/** Translates a .properties file into a .java file containing the
* definition of a java.util.Properties subclass which can then be
* compiled with javac. <P>
*
* Usage: java CompileProperties [path to .properties file] [path to .java file to be output] [super class]
*
* Infers the package by looking at the common suffix of the two
* inputs, eliminating "classes" from it.
*
* @author Scott Violet
* @author Kenneth Russell
*/
public class CompileProperties {
public static void main(String[] args) {
CompileProperties cp = new CompileProperties();
boolean ok = cp.run(args);
if ( !ok ) {
System.exit(1);
}
}
static interface Log {
void info(String msg);
void verbose(String msg);
void error(String msg, Exception e);
}
private String propfiles[];
private String outfiles[] ;
private String supers[] ;
private int compileCount = 0;
private boolean quiet = false;
private Log log;
public void setLog(Log log) {
this.log = log;
}
public boolean run(String[] args) {
if (log == null) {
log = new Log() {
public void error(String msg, Exception e) {
System.err.println("ERROR: CompileProperties: " + msg);
if ( e != null ) {
System.err.println("EXCEPTION: " + e.toString());
e.printStackTrace();
}
}
public void info(String msg) {
System.out.println(msg);
}
public void verbose(String msg) {
if (!quiet)
System.out.println(msg);
}
};
}
boolean ok = true;
/* Original usage */
if (args.length == 2 && args[0].charAt(0) != '-' ) {
ok = createFile(args[0], args[1], "ListResourceBundle");
} else if (args.length == 3) {
ok = createFile(args[0], args[1], args[2]);
} else if (args.length == 0) {
usage(log);
ok = false;
} else {
/* New batch usage */
ok = parseOptions(args);
if ( ok && compileCount == 0 ) {
log.error("options parsed but no files to compile", null);
ok = false;
}
/* Need at least one file. */
if ( !ok ) {
usage(log);
} else {
/* Process files */
for ( int i = 0; i < compileCount && ok ; i++ ) {
ok = createFile(propfiles[i], outfiles[i], supers[i]);
}
}
}
return ok;
}
private boolean parseOptions(String args[]) {
boolean ok = true;
if ( compileCount > 0 ) {
String new_propfiles[] = new String[compileCount + args.length];
String new_outfiles[] = new String[compileCount + args.length];
String new_supers[] = new String[compileCount + args.length];
System.arraycopy(propfiles, 0, new_propfiles, 0, compileCount);
System.arraycopy(outfiles, 0, new_outfiles, 0, compileCount);
System.arraycopy(supers, 0, new_supers, 0, compileCount);
propfiles = new_propfiles;
outfiles = new_outfiles;
supers = new_supers;
} else {
propfiles = new String[args.length];
outfiles = new String[args.length];
supers = new String[args.length];
}
for ( int i = 0; i < args.length ; i++ ) {
if ( "-compile".equals(args[i]) && i+3 < args.length ) {
propfiles[compileCount] = args[++i];
outfiles[compileCount] = args[++i];
supers[compileCount] = args[++i];
compileCount++;
} else if ( "-optionsfile".equals(args[i]) && i+1 < args.length ) {
String filename = args[++i];
FileInputStream finput = null;
byte contents[] = null;
try {
finput = new FileInputStream(filename);
int byteCount = finput.available();
if ( byteCount <= 0 ) {
log.error("The -optionsfile file is empty", null);
ok = false;
} else {
contents = new byte[byteCount];
int bytesRead = finput.read(contents);
if ( byteCount != bytesRead ) {
log.error("Cannot read all of -optionsfile file", null);
ok = false;
}
}
} catch ( IOException e ) {
log.error("cannot open " + filename, e);
ok = false;
}
if ( finput != null ) {
try {
finput.close();
} catch ( IOException e ) {
ok = false;
log.error("cannot close " + filename, e);
}
}
if ( ok = true && contents != null ) {
String tokens[] = (new String(contents)).split("\\s+");
if ( tokens.length > 0 ) {
ok = parseOptions(tokens);
}
}
if ( !ok ) {
break;
}
} else if ( "-quiet".equals(args[i]) ) {
quiet = true;
} else {
log.error("argument error", null);
ok = false;
}
}
return ok;
}
private boolean createFile(String propertiesPath, String outputPath,
String superClass) {
boolean ok = true;
log.verbose("parsing: " + propertiesPath);
Properties p = new Properties();
try {
p.load(new FileInputStream(propertiesPath));
} catch ( FileNotFoundException e ) {
ok = false;
log.error("Cannot find file " + propertiesPath, e);
} catch ( IOException e ) {
ok = false;
log.error("IO error on file " + propertiesPath, e);
}
if ( ok ) {
String packageName = inferPackageName(propertiesPath, outputPath);
log.verbose("inferred package name: " + packageName);
List<String> sortedKeys = new ArrayList<String>();
for ( Object key : p.keySet() ) {
sortedKeys.add((String)key);
}
Collections.sort(sortedKeys);
Iterator keys = sortedKeys.iterator();
StringBuffer data = new StringBuffer();
while (keys.hasNext()) {
Object key = keys.next();
data.append(" { \"" + escape((String)key) + "\", \"" +
escape((String)p.get(key)) + "\" },\n");
}
// Get class name from java filename, not the properties filename.
// (zh_TW properties might be used to create zh_HK files)
File file = new File(outputPath);
String name = file.getName();
int dotIndex = name.lastIndexOf('.');
String className;
if (dotIndex == -1) {
className = name;
} else {
className = name.substring(0, dotIndex);
}
String packageString = "";
if (packageName != null && !packageName.equals("")) {
packageString = "package " + packageName + ";\n\n";
}
Writer writer = null;
try {
writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(outputPath), "8859_1"));
MessageFormat format = new MessageFormat(FORMAT);
writer.write(format.format(new Object[] { packageString, className, superClass, data }));
} catch ( IOException e ) {
ok = false;
log.error("IO error writing to file " + outputPath, e);
}
if ( writer != null ) {
try {
writer.flush();
} catch ( IOException e ) {
ok = false;
log.error("IO error flush " + outputPath, e);
}
try {
writer.close();
} catch ( IOException e ) {
ok = false;
log.error("IO error close " + outputPath, e);
}
}
log.verbose("wrote: " + outputPath);
}
return ok;
}
private static void usage(Log log) {
log.info("usage:");
log.info(" java CompileProperties path_to_properties_file path_to_java_output_file [super_class]");
log.info(" -OR-");
log.info(" java CompileProperties {-compile path_to_properties_file path_to_java_output_file super_class} -or- -optionsfile filename");
log.info("");
log.info("Example:");
log.info(" java CompileProperties -compile test.properties test.java ListResourceBundle");
log.info(" java CompileProperties -optionsfile option_file");
log.info("option_file contains: -compile test.properties test.java ListResourceBundle");
}
private static String escape(String theString) {
// This is taken from Properties.saveConvert with changes for Java strings
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len*2);
for(int x=0; x<len; x++) {
char aChar = theString.charAt(x);
switch(aChar) {
case '\\':outBuffer.append('\\'); outBuffer.append('\\');
break;
case '\t':outBuffer.append('\\'); outBuffer.append('t');
break;
case '\n':outBuffer.append('\\'); outBuffer.append('n');
break;
case '\r':outBuffer.append('\\'); outBuffer.append('r');
break;
case '\f':outBuffer.append('\\'); outBuffer.append('f');
break;
default:
if ((aChar < 0x0020) || (aChar > 0x007e)) {
outBuffer.append('\\');
outBuffer.append('u');
outBuffer.append(toHex((aChar >> 12) & 0xF));
outBuffer.append(toHex((aChar >> 8) & 0xF));
outBuffer.append(toHex((aChar >> 4) & 0xF));
outBuffer.append(toHex( aChar & 0xF));
} else {
if (specialSaveChars.indexOf(aChar) != -1) {
outBuffer.append('\\');
}
outBuffer.append(aChar);
}
}
}
return outBuffer.toString();
}
private static String inferPackageName(String inputPath, String outputPath) {
// Normalize file names
inputPath = new File(inputPath).getPath();
outputPath = new File(outputPath).getPath();
// Split into components
String sep;
if (File.separatorChar == '\\') {
sep = "\\\\";
} else {
sep = File.separator;
}
String[] inputs = inputPath.split(sep);
String[] outputs = outputPath.split(sep);
// Match common names, eliminating first "classes" entry from
// each if present
int inStart = 0;
int inEnd = inputs.length - 2;
int outEnd = outputs.length - 2;
int i = inEnd;
int j = outEnd;
while (i >= 0 && j >= 0) {
if (!inputs[i].equals(outputs[j]) ||
(inputs[i].equals("gensrc") && inputs[j].equals("gensrc"))) {
++i;
++j;
break;
}
--i;
--j;
}
String result;
if (i < 0 || j < 0 || i >= inEnd || j >= outEnd) {
result = "";
} else {
if (inputs[i].equals("classes") && outputs[j].equals("classes")) {
++i;
}
inStart = i;
StringBuffer buf = new StringBuffer();
for (i = inStart; i <= inEnd; i++) {
buf.append(inputs[i]);
if (i < inEnd) {
buf.append('.');
}
}
result = buf.toString();
}
return result;
}
private static final String FORMAT =
"{0}" +
"import java.util.ListResourceBundle;\n\n" +
"public final class {1} extends {2} '{'\n" +
" protected final Object[][] getContents() '{'\n" +
" return new Object[][] '{'\n" +
"{3}" +
" };\n" +
" }\n" +
"}\n";
// This comes from Properties
private static char toHex(int nibble) {
return hexDigit[(nibble & 0xF)];
}
// This comes from Properties
private static final char[] hexDigit = {
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
};
// Note: different from that in Properties
private static final String specialSaveChars = "\"";
}

View File

@ -0,0 +1,96 @@
/*
* Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.MatchingTask;
public class CompilePropertiesTask extends MatchingTask {
public void setSrcDir(File srcDir) {
this.srcDir = srcDir;
}
public void setDestDir(File destDir) {
this.destDir = destDir;
}
public void setSuperclass(String superclass) {
this.superclass = superclass;
}
public void execute() {
CompileProperties.Log log = new CompileProperties.Log() {
public void error(String msg, Exception e) {
log(msg, Project.MSG_ERR);
}
public void info(String msg) {
log(msg, Project.MSG_INFO);
}
public void verbose(String msg) {
log(msg, Project.MSG_VERBOSE);
}
};
List<String> mainOpts = new ArrayList<String>();
int count = 0;
DirectoryScanner s = getDirectoryScanner(srcDir);
for (String path: s.getIncludedFiles()) {
if (path.endsWith(".properties")) {
String destPath =
path.substring(0, path.length() - ".properties".length()) +
".java";
File srcFile = new File(srcDir, path);
File destFile = new File(destDir, destPath);
// Arguably, the comparison in the next line should be ">", not ">="
// but that assumes the resolution of the last modified time is fine
// grained enough; in practice, it is better to use ">=".
if (destFile.exists() && destFile.lastModified() >= srcFile.lastModified())
continue;
destFile.getParentFile().mkdirs();
mainOpts.add("-compile");
mainOpts.add(srcFile.getPath());
mainOpts.add(destFile.getPath());
mainOpts.add(superclass);
count++;
}
}
if (mainOpts.size() > 0) {
log("Generating " + count + " resource files to " + destDir, Project.MSG_INFO);
CompileProperties cp = new CompileProperties();
cp.setLog(log);
boolean ok = cp.run((String[])mainOpts.toArray(new String[mainOpts.size()]));
if (!ok)
throw new BuildException("CompileProperties failed.");
}
}
private File srcDir;
private File destDir;
private String superclass = "java.util.ListResourceBundle";
}

View File

@ -0,0 +1,50 @@
#!/bin/sh
#
# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
mydir="`dirname $0`"
mylib="`dirname $mydir`"/lib
# By default, put the jar file and its dependencies on the bootclasspath.
# This is always required on a Mac, because the system langtools classes
# are always on the main class path; in addition, it may be required on
# standard versions of JDK (i.e. using rt.jar and tools.jar) because some
# langtools interfaces are in rt.jar.
# Assume that the jar file being invoked lists all the necessary langtools
# jar files in its Class-Path manifest entry, so there is no need to search
# dependent jar files for additional dependencies.
if [ "$LANGTOOLS_USE_BOOTCLASSPATH" != "no" ]; then
cp=`unzip -c $mylib/#PROGRAM#.jar META-INF/MANIFEST.MF |
grep "Class-Path:" |
sed -e 's|Class-Path: *||' -e 's|\([a-z]*\.jar\) *|'"$mylib"'/\1:|g'`
bcp="$mylib/#PROGRAM#.jar":$cp
fi
# javac currently assumes that assertions are enabled in the launcher
ea=-ea:com.sun.tools
"#TARGET_JAVA#" ${bcp:+-Xbootclasspath/p:"$bcp"} ${ea} -jar "${mydir}"/../lib/#PROGRAM#.jar "$@"

View File

@ -0,0 +1,79 @@
/*
* Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents an annotation.
* An annotation associates a value with each element of an annotation type.
*
* @author Scott Seligman
* @since 1.5
*/
public interface AnnotationDesc {
/**
* Returns the annotation type of this annotation.
*
* @return the annotation type of this annotation.
*/
AnnotationTypeDoc annotationType();
/**
* Returns this annotation's elements and their values.
* Only those explicitly present in the annotation are
* included, not those assuming their default values.
* Returns an empty array if there are none.
*
* @return this annotation's elements and their values.
*/
ElementValuePair[] elementValues();
/**
* Represents an association between an annotation type element
* and one of its values.
*
* @author Scott Seligman
* @since 1.5
*/
public interface ElementValuePair {
/**
* Returns the annotation type element.
*
* @return the annotation type element.
*/
AnnotationTypeElementDoc element();
/**
* Returns the value associated with the annotation type element.
*
* @return the value associated with the annotation type element.
*/
AnnotationValue value();
}
}

View File

@ -0,0 +1,44 @@
/*
* Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents an annotation type.
*
* @author Scott Seligman
* @since 1.5
*/
public interface AnnotationTypeDoc extends ClassDoc {
/**
* Returns the elements of this annotation type.
* Returns an empty array if there are none.
*
* @return the elements of this annotation type.
*/
AnnotationTypeElementDoc[] elements();
}

View File

@ -0,0 +1,44 @@
/*
* Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents an element of an annotation type.
*
* @author Scott Seligman
* @since 1.5
*/
public interface AnnotationTypeElementDoc extends MethodDoc {
/**
* Returns the default value of this element.
* Returns null if this element has no default.
*
* @return the default value of this element.
*/
AnnotationValue defaultValue();
}

View File

@ -0,0 +1,59 @@
/*
* Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a value of an annotation type element.
*
* @author Scott Seligman
* @since 1.5
*/
public interface AnnotationValue {
/**
* Returns the value.
* The type of the returned object is one of the following:
* <ul><li> a wrapper class for a primitive type
* <li> <code>String</code>
* <li> <code>Type</code> (representing a class literal)
* <li> <code>FieldDoc</code> (representing an enum constant)
* <li> <code>AnnotationDesc</code>
* <li> <code>AnnotationValue[]</code>
* </ul>
*
* @return the value.
*/
Object value();
/**
* Returns a string representation of the value.
*
* @return the text of a Java language annotation value expression
* whose value is the value of this element.
*/
String toString();
}

View File

@ -0,0 +1,340 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a java class or interface and provides access to
* information about the class, the class's comment and tags, and the
* members of the class. A ClassDoc only exists if it was
* processed in this run of javadoc. References to classes
* which may or may not have been processed in this run are
* referred to using Type (which can be converted to ClassDoc,
* if possible).
*
* @see Type
*
* @since 1.2
* @author Kaiyang Liu (original)
* @author Robert Field (rewrite)
*/
public interface ClassDoc extends ProgramElementDoc, Type {
/**
* Return true if this class is abstract. Return true
* for all interfaces.
*/
boolean isAbstract();
/**
* Return true if this class implements or interface extends
* <code>java.io.Serializable</code>.
*
* Since <code>java.io.Externalizable</code> extends
* <code>java.io.Serializable</code>,
* Externalizable objects are also Serializable.
*/
boolean isSerializable();
/**
* Return true if this class implements or interface extends
* <code>java.io.Externalizable</code>.
*/
boolean isExternalizable();
/**
* Return the serialization methods for this class or
* interface.
*
* @return an array of MethodDoc objects that represents
* the serialization methods for this class or interface.
*/
MethodDoc[] serializationMethods();
/**
* Return the Serializable fields of this class or interface.
* <p>
* Return either a list of default fields documented by
* <code>serial</code> tag<br>
* or return a single <code>FieldDoc</code> for
* <code>serialPersistentField</code> member.
* There should be a <code>serialField</code> tag for
* each Serializable field defined by an <code>ObjectStreamField</code>
* array component of <code>serialPersistentField</code>.
*
* @return an array of <code>FieldDoc</code> objects for the Serializable
* fields of this class or interface.
*
* @see #definesSerializableFields()
* @see SerialFieldTag
*/
FieldDoc[] serializableFields();
/**
* Return true if Serializable fields are explicitly defined with
* the special class member <code>serialPersistentFields</code>.
*
* @see #serializableFields()
* @see SerialFieldTag
*/
boolean definesSerializableFields();
/**
* Return the superclass of this class. Return null if this is an
* interface.
*
* <p> <i>This method cannot accommodate certain generic type constructs.
* The <code>superclassType</code> method should be used instead.</i>
*
* @return the ClassDoc for the superclass of this class, null if
* there is no superclass.
* @see #superclassType
*/
ClassDoc superclass();
/**
* Return the superclass of this class. Return null if this is an
* interface. A superclass is represented by either a
* <code>ClassDoc</code> or a <code>ParametrizedType</code>.
*
* @return the superclass of this class, or null if there is no superclass.
* @since 1.5
*/
Type superclassType();
/**
* Test whether this class is a subclass of the specified class.
* If this is an interface, return false for all classes except
* <code>java.lang.Object</code> (we must keep this unexpected
* behavior for compatibility reasons).
*
* @param cd the candidate superclass.
* @return true if cd is a superclass of this class.
*/
boolean subclassOf(ClassDoc cd);
/**
* Return interfaces implemented by this class or interfaces extended
* by this interface. Includes only directly-declared interfaces, not
* inherited interfaces.
* Return an empty array if there are no interfaces.
*
* <p> <i>This method cannot accommodate certain generic type constructs.
* The <code>interfaceTypes</code> method should be used instead.</i>
*
* @return an array of ClassDoc objects representing the interfaces.
* @see #interfaceTypes
*/
ClassDoc[] interfaces();
/**
* Return interfaces implemented by this class or interfaces extended
* by this interface. Includes only directly-declared interfaces, not
* inherited interfaces.
* Return an empty array if there are no interfaces.
*
* @return an array of interfaces, each represented by a
* <code>ClassDoc</code> or a <code>ParametrizedType</code>.
* @since 1.5
*/
Type[] interfaceTypes();
/**
* Return the formal type parameters of this class or interface.
* Return an empty array if there are none.
*
* @return the formal type parameters of this class or interface.
* @since 1.5
*/
TypeVariable[] typeParameters();
/**
* Return the type parameter tags of this class or interface.
* Return an empty array if there are none.
*
* @return the type parameter tags of this class or interface.
* @since 1.5
*/
ParamTag[] typeParamTags();
/**
* Return
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">included</a>
* fields in this class or interface.
* Excludes enum constants if this is an enum type.
*
* @return an array of FieldDoc objects representing the included
* fields in this class or interface.
*/
FieldDoc[] fields();
/**
* Return fields in this class or interface, filtered to the specified
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">access
* modifier option</a>.
* Excludes enum constants if this is an enum type.
*
* @param filter Specify true to filter according to the specified access
* modifier option.
* Specify false to include all fields regardless of
* access modifier option.
* @return an array of FieldDoc objects representing the included
* fields in this class or interface.
*/
FieldDoc[] fields(boolean filter);
/**
* Return the enum constants if this is an enum type.
* Return an empty array if there are no enum constants, or if
* this is not an enum type.
*
* @return the enum constants if this is an enum type.
*/
FieldDoc[] enumConstants();
/**
* Return
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">included</a>
* methods in this class or interface.
* Same as <code>methods(true)</code>.
*
* @return an array of MethodDoc objects representing the included
* methods in this class or interface. Does not include
* constructors or annotation type elements.
*/
MethodDoc[] methods();
/**
* Return methods in this class or interface, filtered to the specified
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">access
* modifier option</a>. Does not include constructors or annotation
* type elements.
*
* @param filter Specify true to filter according to the specified access
* modifier option.
* Specify false to include all methods regardless of
* access modifier option.
* @return an array of MethodDoc objects representing the included
* methods in this class or interface.
*/
MethodDoc[] methods(boolean filter);
/**
* Return
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">included</a>
* constructors in this class. An array containing the default
* no-arg constructor is returned if no other constructors exist.
* Return empty array if this is an interface.
*
* @return an array of ConstructorDoc objects representing the included
* constructors in this class.
*/
ConstructorDoc[] constructors();
/**
* Return constructors in this class, filtered to the specified
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">access
* modifier option</a>. Return an array containing the default
* no-arg constructor if no other constructors exist.
*
* @param filter Specify true to filter according to the specified access
* modifier option.
* Specify false to include all constructors regardless of
* access modifier option.
* @return an array of ConstructorDoc objects representing the included
* constructors in this class.
*/
ConstructorDoc[] constructors(boolean filter);
/**
* Return
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">included</a>
* nested classes and interfaces within this class or interface.
* This includes both static and non-static nested classes.
* (This method should have been named <code>nestedClasses()</code>,
* as inner classes are technically non-static.) Anonymous and local classes
* or interfaces are not included.
*
* @return an array of ClassDoc objects representing the included classes
* and interfaces defined in this class or interface.
*/
ClassDoc[] innerClasses();
/**
* Return nested classes and interfaces within this class or interface
* filtered to the specified
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">access
* modifier option</a>.
* This includes both static and non-static nested classes.
* Anonymous and local classes are not included.
*
* @param filter Specify true to filter according to the specified access
* modifier option.
* Specify false to include all nested classes regardless of
* access modifier option.
* @return a filtered array of ClassDoc objects representing the included
* classes and interfaces defined in this class or interface.
*/
ClassDoc[] innerClasses(boolean filter);
/**
* Find the specified class or interface within the context of this class doc.
* Search order: 1) qualified name, 2) nested in this class or interface,
* 3) in this package, 4) in the class imports, 5) in the package imports.
* Return the ClassDoc if found, null if not found.
*/
ClassDoc findClass(String className);
/**
* Get the list of classes and interfaces declared as imported.
* These are called "single-type-import declarations" in the
* Java Language Specification.
*
* @return an array of ClassDoc representing the imported classes.
*
* @deprecated Import declarations are implementation details that
* should not be exposed here. In addition, not all imported
* classes are imported through single-type-import declarations.
*/
@Deprecated
ClassDoc[] importedClasses();
/**
* Get the list of packages declared as imported.
* These are called "type-import-on-demand declarations" in the
* Java Language Specification.
*
* @return an array of PackageDoc representing the imported packages.
*
* @deprecated Import declarations are implementation details that
* should not be exposed here. In addition, this method's
* return type does not allow for all type-import-on-demand
* declarations to be returned.
*/
@Deprecated
PackageDoc[] importedPackages();
}

View File

@ -0,0 +1,35 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a constructor of a java class.
*
* @since 1.2
* @author Robert Field
*/
public interface ConstructorDoc extends ExecutableMemberDoc {
}

View File

@ -0,0 +1,265 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
import java.text.BreakIterator;
import java.util.Locale;
/**
* Represents Java language constructs (package, class, constructor,
* method, field) which have comments and have been processed by this
* run of javadoc. All Doc objects are unique, that is, they
* are == comparable.
*
* @since 1.2
* @author Robert Field
* @author Scott Seligman (generics, enums, annotations)
*/
public interface Doc extends Comparable<Object> {
/**
* Return the text of the comment for this doc item.
* Tags have been removed.
*/
String commentText();
/**
* Return all tags in this Doc item.
*
* @return an array of {@link Tag} objects containing all tags on
* this Doc item.
*/
Tag[] tags();
/**
* Return tags of the specified {@linkplain Tag#kind() kind} in
* this Doc item.
*
* For example, if 'tagname' has value "@serial", all tags in
* this Doc item of kind "@serial" will be returned.
*
* @param tagname name of the tag kind to search for.
* @return an array of Tag containing all tags whose 'kind()'
* matches 'tagname'.
*/
Tag[] tags(String tagname);
/**
* Return the see also tags in this Doc item.
*
* @return an array of SeeTag containing all @see tags.
*/
SeeTag[] seeTags();
/**
* Return comment as an array of tags. Includes inline tags
* (i.e. {&#64link <i>reference</i>} tags) but not
* block tags.
* Each section of plain text is represented as a {@link Tag}
* of {@linkplain Tag#kind() kind} "Text".
* Inline tags are represented as a {@link SeeTag} of kind "@see"
* and name "@link".
*
* @return an array of {@link Tag}s representing the comment
*/
Tag[] inlineTags();
/**
* Return the first sentence of the comment as an array of tags.
* Includes inline tags
* (i.e. {&#64link <i>reference</i>} tags) but not
* block tags.
* Each section of plain text is represented as a {@link Tag}
* of {@linkplain Tag#kind() kind} "Text".
* Inline tags are represented as a {@link SeeTag} of kind "@see"
* and name "@link".
* <p>
* If the locale is English language, the first sentence is
* determined by the rules described in the Java Language
* Specification (first version): &quot;This sentence ends
* at the first period that is followed by a blank, tab, or
* line terminator or at the first tagline.&quot;, in
* addition a line will be terminated by block
* HTML tags: &lt;p&gt; &lt;/p&gt; &lt;h1&gt;
* &lt;h2&gt; &lt;h3&gt; &lt;h4&gt; &lt;h5&gt; &lt;h6&gt;
* &lt;hr&gt; &lt;pre&gt; or &lt;/pre&gt;.
* If the locale is not English, the sentence end will be
* determined by
* {@link BreakIterator#getSentenceInstance(Locale)}.
* @return an array of {@link Tag}s representing the
* first sentence of the comment
*/
Tag[] firstSentenceTags();
/**
* Return the full unprocessed text of the comment. Tags
* are included as text. Used mainly for store and retrieve
* operations like internalization.
*/
String getRawCommentText();
/**
* Set the full unprocessed text of the comment. Tags
* are included as text. Used mainly for store and retrieve
* operations like internalization.
*/
void setRawCommentText(String rawDocumentation);
/**
* Returns the non-qualified name of this Doc item.
*
* @return the name
*/
String name();
/**
* Compares this doc object with the specified object for order. Returns a
* negative integer, zero, or a positive integer as this doc object is less
* than, equal to, or greater than the given object.
* <p>
* This method satisfies the {@link java.lang.Comparable} interface.
*
* @param obj the <code>Object</code> to be compared.
* @return a negative integer, zero, or a positive integer as this Object
* is less than, equal to, or greater than the given Object.
* @exception ClassCastException the specified Object's type prevents it
* from being compared to this Object.
*/
int compareTo(Object obj);
/**
* Is this Doc item a field (but not an enum constant)?
*
* @return true if it represents a field
*/
boolean isField();
/**
* Is this Doc item an enum constant?
*
* @return true if it represents an enum constant
* @since 1.5
*/
boolean isEnumConstant();
/**
* Is this Doc item a constructor?
*
* @return true if it represents a constructor
*/
boolean isConstructor();
/**
* Is this Doc item a method (but not a constructor or annotation
* type element)?
*
* @return true if it represents a method
*/
boolean isMethod();
/**
* Is this Doc item an annotation type element?
*
* @return true if it represents an annotation type element
* @since 1.5
*/
boolean isAnnotationTypeElement();
/**
* Is this Doc item an interface (but not an annotation type)?
*
* @return true if it represents an interface
*/
boolean isInterface();
/**
* Is this Doc item an exception class?
*
* @return true if it represents an exception
*/
boolean isException();
/**
* Is this Doc item an error class?
*
* @return true if it represents a error
*/
boolean isError();
/**
* Is this Doc item an enum type?
*
* @return true if it represents an enum type
* @since 1.5
*/
boolean isEnum();
/**
* Is this Doc item an annotation type?
*
* @return true if it represents an annotation type
* @since 1.5
*/
boolean isAnnotationType();
/**
* Is this Doc item an
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#class">ordinary
* class</a>?
* (i.e. not an interface, annotation type, enum, exception, or error)?
*
* @return true if it represents an ordinary class
*/
boolean isOrdinaryClass();
/**
* Is this Doc item a
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#class">class</a>
* (and not an interface or annotation type)?
* This includes ordinary classes, enums, errors and exceptions.
*
* @return true if it represents a class
*/
boolean isClass();
/**
* Return true if this Doc item is
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">included</a>
* in the result set.
*/
boolean isIncluded();
/**
* Return the source position of the first line of the
* corresponding declaration, or null if
* no position is available. A default constructor returns
* null because it has no location in the source file.
*
* @since 1.4
*/
SourcePosition position();
}

View File

@ -0,0 +1,83 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* This interface provides error, warning and notice printing.
*
* @since 1.2
* @author Robert Field
*/
public interface DocErrorReporter {
/**
* Print error message and increment error count.
*
* @param msg message to print
*/
void printError(String msg);
/**
* Print an error message and increment error count.
*
* @param pos the position item where the error occurs
* @param msg message to print
* @since 1.4
*/
void printError(SourcePosition pos, String msg);
/**
* Print warning message and increment warning count.
*
* @param msg message to print
*/
void printWarning(String msg);
/**
* Print warning message and increment warning count.
*
* @param pos the position item where the warning occurs
* @param msg message to print
* @since 1.4
*/
void printWarning(SourcePosition pos, String msg);
/**
* Print a message.
*
* @param msg message to print
*/
void printNotice(String msg);
/**
* Print a message.
*
* @param pos the position item where the message occurs
* @param msg message to print
* @since 1.4
*/
void printNotice(SourcePosition pos, String msg);
}

View File

@ -0,0 +1,111 @@
/*
* Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* This is an example of a starting class for a doclet,
* showing the entry-point methods. A starting class must
* import com.sun.javadoc.* and implement the
* <code>start(RootDoc)</code> method, as described in the
* <a href="package-summary.html#package_description">package
* description</a>. If the doclet takes command line options,
* it must also implement <code>optionLength</code> and
* <code>validOptions</code>.
*
* <p> A doclet supporting the language features added since 1.1
* (such as generics and annotations) should indicate this
* by implementing <code>languageVersion</code>. In the absence of
* this the doclet should not invoke any of the Doclet API methods
* added since 1.5, and
* the results of several other methods are modified so as
* to conceal the new constructs (such as type parameters) from
* the doclet.
*
* <p> To start the doclet, pass
* <code>-doclet</code> followed by the fully-qualified
* name of the starting class on the javadoc tool command line.
*/
public abstract class Doclet {
/**
* Generate documentation here.
* This method is required for all doclets.
*
* @return true on success.
*/
public static boolean start(RootDoc root) {
return true;
}
/**
* Check for doclet-added options. Returns the number of
* arguments you must specify on the command line for the
* given option. For example, "-d docs" would return 2.
* <P>
* This method is required if the doclet contains any options.
* If this method is missing, Javadoc will print an invalid flag
* error for every option.
*
* @return number of arguments on the command line for an option
* including the option name itself. Zero return means
* option not known. Negative value means error occurred.
*/
public static int optionLength(String option) {
return 0; // default is option unknown
}
/**
* Check that options have the correct arguments.
* <P>
* This method is not required, but is recommended,
* as every option will be considered valid if this method
* is not present. It will default gracefully (to true)
* if absent.
* <P>
* Printing option related error messages (using the provided
* DocErrorReporter) is the responsibility of this method.
*
* @return true if the options are valid.
*/
public static boolean validOptions(String options[][],
DocErrorReporter reporter) {
return true; // default is options are valid
}
/**
* Return the version of the Java Programming Language supported
* by this doclet.
* <p>
* This method is required by any doclet supporting a language version
* newer than 1.1.
*
* @return the language version supported by this doclet.
* @since 1.5
*/
public static LanguageVersion languageVersion() {
return LanguageVersion.JAVA_1_1;
}
}

View File

@ -0,0 +1,140 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a method or constructor of a java class.
*
* @since 1.2
* @author Robert Field
*/
public interface ExecutableMemberDoc extends MemberDoc {
/**
* Return exceptions this method or constructor throws.
* If the type of the exception is a type variable, return the
* <code>ClassDoc</code> of its erasure.
*
* <p> <i>The <code>thrownExceptions</code> method cannot
* accommodate certain generic type constructs. The
* <code>thrownExceptionTypes</code> method should be used
* instead.</i>
*
* @return an array of ClassDoc[] representing the exceptions
* thrown by this method.
* @see #thrownExceptionTypes
*/
ClassDoc[] thrownExceptions();
/**
* Return exceptions this method or constructor throws.
*
* @return an array representing the exceptions thrown by this method.
* Each array element is either a <code>ClassDoc</code> or a
* <code>TypeVariable</code>.
* @since 1.5
*/
Type[] thrownExceptionTypes();
/**
* Return true if this method is native
*/
boolean isNative();
/**
* Return true if this method is synchronized
*/
boolean isSynchronized();
/**
* Return true if this method was declared to take a variable number
* of arguments.
*
* @since 1.5
*/
public boolean isVarArgs();
/**
* Get argument information.
*
* @see Parameter
*
* @return an array of Parameter, one element per argument
* in the order the arguments are present.
*/
Parameter[] parameters();
/**
* Return the throws tags in this method.
*
* @return an array of ThrowTag containing all <code>&#64exception</code>
* and <code>&#64throws</code> tags.
*/
ThrowsTag[] throwsTags();
/**
* Return the param tags in this method, excluding the type
* parameter tags.
*
* @return an array of ParamTag containing all <code>&#64param</code> tags
* corresponding to the parameters of this method.
*/
ParamTag[] paramTags();
/**
* Return the type parameter tags in this method.
*
* @return an array of ParamTag containing all <code>&#64param</code> tags
* corresponding to the type parameters of this method.
* @since 1.5
*/
ParamTag[] typeParamTags();
/**
* Get the signature. It is the parameter list, type is qualified.
* For instance, for a method <code>mymethod(String x, int y)</code>,
* it will return <code>(java.lang.String,int)</code>.
*/
String signature();
/**
* get flat signature. all types are not qualified.
* return a String, which is the flat signiture of this member.
* It is the parameter list, type is not qualified.
* For instance, for a method <code>mymethod(String x, int y)</code>,
* it will return <code>(String, int)</code>.
*/
String flatSignature();
/**
* Return the formal type parameters of this method or constructor.
* Return an empty array if this method or constructor is not generic.
*
* @return the formal type parameters of this method or constructor.
* @since 1.5
*/
TypeVariable[] typeParameters();
}

View File

@ -0,0 +1,79 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a field in a java class.
*
* @see MemberDoc
*
* @since 1.2
* @author Robert Field
*/
public interface FieldDoc extends MemberDoc {
/**
* Get type of this field.
*/
Type type();
/**
* Return true if this field is transient
*/
boolean isTransient();
/**
* Return true if this field is volatile
*/
boolean isVolatile();
/**
* Return the serialField tags in this FieldDoc item.
*
* @return an array of <tt>SerialFieldTag</tt> objects containing
* all <code>@serialField</code> tags.
*/
SerialFieldTag[] serialFieldTags();
/**
* Get the value of a constant field.
*
* @return the value of a constant field. The value is
* automatically wrapped in an object if it has a primitive type.
* If the field is not constant, returns null.
*/
Object constantValue();
/**
* Get the value of a constant field.
*
* @return the text of a Java language expression whose value
* is the value of the constant. The expression uses no identifiers
* other than primitive literals. If the field is
* not constant, returns null.
*/
String constantValueExpression();
}

View File

@ -0,0 +1,47 @@
/*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Java Programming Language version. The constants of this enum
* identify the JDK and J2SE releases containing language changes
* relevant to doclets.
* <p>
* All doclets support at least the 1.1 language version.
* The first release subsequent to this with language changes
* affecting doclets is 1.5.
*
* @since 1.5
*/
public enum LanguageVersion {
/** 1.1 added nested classes and interfaces. */
JAVA_1_1,
/** 1.5 added generic types, annotations, enums, and varArgs. */
JAVA_1_5
}

View File

@ -0,0 +1,47 @@
/*
* Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a member of a java class: field, constructor, or method.
* This is an abstract class dealing with information common to
* method, constructor and field members. Class members of a class
* (innerclasses) are represented instead by ClassDoc.
*
* @see MethodDoc
* @see FieldDoc
* @see ClassDoc
*
* @author Kaiyang Liu (original)
* @author Robert Field (rewrite)
*/
public interface MemberDoc extends ProgramElementDoc {
/**
* Returns true if this member was synthesized by the compiler.
*/
boolean isSynthetic();
}

View File

@ -0,0 +1,94 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a method of a java class.
*
* @since 1.2
* @author Robert Field
*/
public interface MethodDoc extends ExecutableMemberDoc {
/**
* Return true if this method is abstract
*/
boolean isAbstract();
/**
* Get return type.
*
* @return the return type of this method, null if it
* is a constructor.
*/
Type returnType();
/**
* Return the class containing the method that this method overrides.
*
* <p> <i>The <code>overriddenClass</code> method cannot
* accommodate certain generic type constructs. The
* <code>overriddenType</code> method should be used instead.</i>
*
* @return a ClassDoc representing the superclass
* defining a method that this method overrides, or null if
* this method does not override.
*/
ClassDoc overriddenClass();
/**
* Return the type containing the method that this method overrides.
* It may be a <code>ClassDoc</code> or a <code>ParameterizedType</code>.
*
* @return the supertype whose method is overridden, or null if this
* method does not override another in a superclass
* @since 1.5
*/
Type overriddenType();
/**
* Return the method that this method overrides.
*
* @return a MethodDoc representing a method definition
* in a superclass this method overrides, null if
* this method does not override.
*/
MethodDoc overriddenMethod();
/**
* Tests whether this method overrides another.
* The overridden method may be one declared in a superclass or
* a superinterface (unlike {@link #overriddenMethod()}).
*
* <p> When a non-abstract method overrides an abstract one, it is
* also said to <i>implement</i> the other.
*
* @param meth the other method to examine
* @return <tt>true</tt> if this method overrides the other
* @since 1.5
*/
boolean overrides(MethodDoc meth);
}

View File

@ -0,0 +1,129 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a java package. Provides access to information
* about the package, the package's comment and tags, and the
* classes in the package.
* <p>
* Each method whose return type is an array will return an empty
* array (never null) when there are no objects in the result.
*
* @since 1.2
* @author Kaiyang Liu (original)
* @author Robert Field (rewrite)
*/
public interface PackageDoc extends Doc {
/**
* Get all classes and interfaces in the package, filtered to the specified
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">access
* modifier option</a>.
*
* @return filtered classes and interfaces in this package
* @param filter Specifying true filters according to the specified access
* modifier option.
* Specifying false includes all classes and interfaces
* regardless of access modifier option.
* @since 1.4
*/
ClassDoc[] allClasses(boolean filter);
/**
* Get all
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#included">included</a>
* classes and interfaces in the package. Same as allClasses(true).
*
* @return all included classes and interfaces in this package.
*/
ClassDoc[] allClasses();
/**
* Get included
* <a href="{@docRoot}/com/sun/javadoc/package-summary.html#class">ordinary</a>
* classes (that is, exclude exceptions, errors, enums, interfaces, and
* annotation types)
* in this package.
*
* @return included ordinary classes in this package.
*/
ClassDoc[] ordinaryClasses();
/**
* Get included Exception classes in this package.
*
* @return included Exceptions in this package.
*/
ClassDoc[] exceptions();
/**
* Get included Error classes in this package.
*
* @return included Errors in this package.
*/
ClassDoc[] errors();
/**
* Get included enum types in this package.
*
* @return included enum types in this package.
* @since 1.5
*/
ClassDoc[] enums();
/**
* Get included interfaces in this package, omitting annotation types.
*
* @return included interfaces in this package.
*/
ClassDoc[] interfaces();
/**
* Get included annotation types in this package.
*
* @return included annotation types in this package.
* @since 1.5
*/
AnnotationTypeDoc[] annotationTypes();
/**
* Get the annotations of this package.
* Return an empty array if there are none.
*
* @return the annotations of this package.
* @since 1.5
*/
AnnotationDesc[] annotations();
/**
* Lookup a class or interface within this package.
*
* @return ClassDoc of found class or interface,
* or null if not found.
*/
ClassDoc findClass(String className);
}

View File

@ -0,0 +1,67 @@
/*
* Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents an @param documentation tag.
* Stores the name and comment parts of the parameter tag.
* An @param tag may represent either a method or constructor parameter,
* or a type parameter.
*
* @author Robert Field
*
*/
public interface ParamTag extends Tag {
/**
* Return the name of the parameter or type parameter
* associated with this <code>ParamTag</code>.
* The angle brackets delimiting a type parameter are not part of
* its name.
*
* @return the parameter name.
*/
String parameterName();
/**
* Return the parameter comment
* associated with this <code>ParamTag</code>.
*
* @return the parameter comment.
*/
String parameterComment();
/**
* Return true if this <code>ParamTag</code> corresponds to a type
* parameter. Return false if it corresponds to an ordinary parameter
* of a method or constructor.
*
* @return true if this <code>ParamTag</code> corresponds to a type
* parameter.
* @since 1.5
*/
boolean isTypeParameter();
}

View File

@ -0,0 +1,74 @@
/*
* Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Parameter information.
* This includes a parameter type and parameter name.
*
* @author Robert Field
*/
public interface Parameter {
/**
* Get the type of this parameter.
*/
Type type();
/**
* Get local name of this parameter.
* For example if parameter is the short 'index', returns "index".
*/
String name();
/**
* Get type name of this parameter.
* For example if parameter is the short 'index', returns "short".
* <p>
* This method returns a complete string
* representation of the type, including the dimensions of arrays and
* the type arguments of parameterized types. Names are qualified.
*/
String typeName();
/**
* Returns a string representation of the parameter.
* <p>
* For example if parameter is the short 'index', returns "short index".
*
* @return type and parameter name of this parameter.
*/
String toString();
/**
* Get the annotations of this parameter.
* Return an empty array if there are none.
*
* @return the annotations of this parameter.
* @since 1.5
*/
AnnotationDesc[] annotations();
}

View File

@ -0,0 +1,108 @@
/*
* Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents an invocation of a generic class or interface. For example,
* given the generic interface {@code List<E>}, possible invocations
* include:
* <pre>
* {@code List<String>}
* {@code List<T extends Number>}
* {@code List<?>}
* </pre>
* A generic inner class {@code Outer<T>.Inner<S>} might be invoked as:
* <pre>
* {@code Outer<Number>.Inner<String>}
* </pre>
*
* @author Scott Seligman
* @since 1.5
*/
public interface ParameterizedType extends Type {
/**
* Return the generic class or interface that declared this type.
*
* @return the generic class or interface that declared this type.
*/
ClassDoc asClassDoc();
/**
* Return the actual type arguments of this type.
* For a generic type that is nested within some other generic type
* (such as {@code Outer<T>.Inner<S>}),
* only the type arguments of the innermost type are included.
*
* @return the actual type arguments of this type.
*/
Type[] typeArguments();
/**
* Return the class type that is a direct supertype of this one.
* This is the superclass of this type's declaring class,
* with type arguments substituted in.
* Return null if this is an interface type.
*
* <p> For example, if this parameterized type is
* {@code java.util.ArrayList<String>}, the result will be
* {@code java.util.AbstractList<String>}.
*
* @return the class type that is a direct supertype of this one.
*/
Type superclassType();
/**
* Return the interface types directly implemented by or extended by this
* parameterized type.
* These are the interfaces directly implemented or extended
* by this type's declaring class or interface,
* with type arguments substituted in.
* Return an empty array if there are no interfaces.
*
* <p> For example, the interface extended by
* {@code java.util.Set<String>} is {@code java.util.Collection<String>}.
*
* @return the interface types directly implemented by or extended by this
* parameterized type.
*/
Type[] interfaceTypes();
/**
* Return the type that contains this type as a member.
* Return null is this is a top-level type.
*
* <p> For example, the containing type of
* {@code AnInterface.Nested<Number>} is the <code>ClassDoc</code>
* representing {@code AnInterface}, and the containing type of
* {@code Outer<String>.Inner<Number>} is the
* <code>ParameterizedType</code> representing {@code Outer<String>}.
*
* @return the type that contains this type as a member.
*/
Type containingType();
}

View File

@ -0,0 +1,125 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a java program element: class, interface, field,
* constructor, or method.
* This is an abstract class dealing with information common to
* these elements.
*
* @see MemberDoc
* @see ClassDoc
*
* @author Robert Field
*/
public interface ProgramElementDoc extends Doc {
/**
* Get the containing class or interface of this program element.
*
* @return a ClassDoc for this element's containing class or interface.
* If this is a top-level class or interface, return null.
*/
ClassDoc containingClass();
/**
* Get the package that this program element is contained in.
*
* @return a PackageDoc for this element containing package.
* If in the unnamed package, this PackageDoc will have the
* name "".
*/
PackageDoc containingPackage();
/**
* Get the fully qualified name of this program element.
* For example, for the class <code>java.util.Hashtable</code>,
* return "java.util.Hashtable".
* <p>
* For the method <code>bar()</code> in class <code>Foo</code>
* in the unnamed package, return "Foo.bar".
*
* @return the qualified name of the program element as a String.
*/
String qualifiedName();
/**
* Get the modifier specifier integer.
*
* @see java.lang.reflect.Modifier
*/
int modifierSpecifier();
/**
* Get modifiers string.
* For example, for:
* <pre>
* public abstract int foo() { ... }
* </pre>
* return "public abstract".
* Annotations are not included.
*/
String modifiers();
/**
* Get the annotations of this program element.
* Return an empty array if there are none.
*
* @return the annotations of this program element.
* @since 1.5
*/
AnnotationDesc[] annotations();
/**
* Return true if this program element is public.
*/
boolean isPublic();
/**
* Return true if this program element is protected.
*/
boolean isProtected();
/**
* Return true if this program element is private.
*/
boolean isPrivate();
/**
* Return true if this program element is package private.
*/
boolean isPackagePrivate();
/**
* Return true if this program element is static.
*/
boolean isStatic();
/**
* Return true if this program element is final.
*/
boolean isFinal();
}

View File

@ -0,0 +1,109 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents the root of the program structure information
* for one run of javadoc. From this root all other program
* structure information can be extracted.
* Also represents the command line information -- the
* packages, classes and options specified by the user.
*
* @since 1.2
* @author Robert Field
*/
public interface RootDoc extends Doc, DocErrorReporter {
/**
* Command line options.
* <p>
* For example, given:
* <pre>
* javadoc -foo this that -bar other ...</pre>
*
* this method will return:
* <pre>
* options()[0][0] = "-foo"
* options()[0][1] = "this"
* options()[0][2] = "that"
* options()[1][0] = "-bar"
* options()[1][1] = "other"</pre>
*
* @return an array of arrays of String.
*/
String[][] options();
/**
* Return the packages
* <a href="package-summary.html#included">specified</a>
* on the command line.
* If <code>-subpackages</code> and <code>-exclude</code> options
* are used, return all the non-excluded packages.
*
* @return packages specified on the command line.
*/
PackageDoc[] specifiedPackages();
/**
* Return the classes and interfaces
* <a href="package-summary.html#included">specified</a>
* as source file names on the command line.
*
* @return classes and interfaces specified on the command line.
*/
ClassDoc[] specifiedClasses();
/**
* Return the
* <a href="package-summary.html#included">included</a>
classes and interfaces in all packages.
*
* @return included classes and interfaces in all packages.
*/
ClassDoc[] classes();
/**
* Return a PackageDoc for the specified package name.
*
* @param name package name
*
* @return a PackageDoc holding the specified package, null if
* this package is not referenced.
*/
PackageDoc packageNamed(String name);
/**
* Return a ClassDoc for the specified class or interface name.
*
* @param qualifiedName
* <a href="package-summary.html#qualified">qualified</a>
* class or package name
*
* @return a ClassDoc holding the specified class, null if
* this class is not referenced.
*/
ClassDoc classNamed(String qualifiedName);
}

View File

@ -0,0 +1,126 @@
/*
* Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a user-defined cross-reference to related documentation.
* The tag can reference a package, class or member, or can hold
* plain text. (The plain text might be a reference
* to something not online, such as a printed book, or be a hard-coded
* HTML link.) The reference can either be inline with the comment,
* using <code>&#123;@link}</code>, or a separate block comment,
* using <code>@see</code>.
* Method <code>name()</code> returns "@link" (no curly braces) or
* "@see", depending on the tag.
* Method <code>kind()</code> returns "@see" for both tags.
*
* @author Kaiyang Liu (original)
* @author Robert Field (rewrite)
* @author Atul M Dambalkar
*
*/
public interface SeeTag extends Tag {
/**
* Get the label of the <code>@see</code> tag.
* Return null if no label is present.
* For example, for:
* <p>
* &nbsp;&nbsp;<code>@see String#trim() the trim method</code>
* </p>
* return "the trim method".
*/
String label();
/**
* Get the package doc when <code>@see</code> references only a package.
* Return null if the package cannot be found, or if
* <code>@see</code> references any other element (class,
* interface, field, constructor, method) or non-element.
* For example, for:
* <p>
* &nbsp;&nbsp;<code>@see java.lang</code>
* </p>
* return the <code>PackageDoc</code> for <code>java.lang</code>.
*/
public PackageDoc referencedPackage();
/**
* Get the class or interface name of the <code>@see</code> reference.
* The name is fully qualified if the name specified in the
* original <code>@see</code> tag was fully qualified, or if the class
* or interface can be found; otherwise it is unqualified.
* If <code>@see</code> references only a package name, then return
* the package name instead.
* For example, for:
* <p>
* &nbsp;&nbsp;<code>@see String#valueOf(java.lang.Object)</code>
* </p>
* return "java.lang.String".
* For "<code>@see java.lang</code>", return "java.lang".
* Return null if <code>@see</code> references a non-element, such as
* <code>@see &lt;a href="java.sun.com"&gt;</code>.
*/
String referencedClassName();
/**
* Get the class doc referenced by the class name part of @see.
* Return null if the class cannot be found.
* For example, for:
* <p>
* &nbsp;&nbsp;<code>@see String#valueOf(java.lang.Object)</code>
* </p>
* return the <code>ClassDoc</code> for <code>java.lang.String</code>.
*/
ClassDoc referencedClass();
/**
* Get the field, constructor or method substring of the <code>@see</code>
* reference. Return null if the reference is to any other
* element or to any non-element.
* References to member classes (nested classes) return null.
* For example, for:
* <p>
* &nbsp;&nbsp;<code>@see String#startsWith(String)</code>
* </p>
* return "startsWith(String)".
*/
String referencedMemberName();
/**
* Get the member doc for the field, constructor or method
* referenced by <code>@see</code>. Return null if the member cannot
* be found or if the reference is to any other element or to any
* non-element.
* References to member classes (nested classes) return null.
* For example, for:
* <p>
* &nbsp;&nbsp;<code>@see String#startsWith(java.lang.String)</code>
* </p>
* return the <code>MethodDoc</code> for <code>startsWith</code>.
*/
MemberDoc referencedMember();
}

View File

@ -0,0 +1,87 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Documents a Serializable field defined by an ObjectStreamField.
* <pre>
* The class parses and stores the three serialField tag parameters:
*
* - field name
* - field type name
* (fully-qualified or visible from the current import context)
* - description of the valid values for the field
* </pre>
* This tag is only allowed in the javadoc for the special member
* serialPersistentFields.
*
* @author Joe Fialli
*
* @see java.io.ObjectStreamField
*/
public interface SerialFieldTag extends Tag, Comparable<Object> {
/**
* Return the serialziable field name.
*/
public String fieldName();
/**
* Return the field type string.
*/
public String fieldType();
/**
* Return the ClassDoc for field type.
*
* @return null if no ClassDoc for field type is visible from
* containingClass context.
*/
public ClassDoc fieldTypeDoc();
/**
* Return the field comment. If there is no serialField comment, return
* javadoc comment of corresponding FieldDoc.
*/
public String description();
/**
* Compares this Object with the specified Object for order. Returns a
* negative integer, zero, or a positive integer as this Object is less
* than, equal to, or greater than the given Object.
* <p>
* Included to make SerialFieldTag items java.lang.Comparable.
*
* @param obj the <code>Object</code> to be compared.
* @return a negative integer, zero, or a positive integer as this Object
* is less than, equal to, or greater than the given Object.
* @exception ClassCastException the specified Object's type prevents it
* from being compared to this Object.
* @since 1.2
*/
public int compareTo(Object obj);
}

View File

@ -0,0 +1,55 @@
/*
* Copyright 2001-2002 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
import java.io.File;
/**
* This interface describes a source position: filename, line number,
* and column number.
*
* @since 1.4
* @author Neal M Gafter
*/
public interface SourcePosition {
/** The source file. Returns null if no file information is
* available. */
File file();
/** The line in the source file. The first line is numbered 1;
* 0 means no line number information is available. */
int line();
/** The column in the source file. The first column is
* numbered 1; 0 means no column information is available.
* Columns count characters in the input stream; a tab
* advances the column number to the next 8-column tab stop.
*/
int column();
/** Convert the source position to the form "Filename:line". */
String toString();
}

View File

@ -0,0 +1,158 @@
/*
* Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
import java.text.BreakIterator;
import java.util.Locale;
/**
* Represents a simple documentation tag, such as @since, @author, @version.
* Given a tag (e.g. "@since 1.2"), holds tag name (e.g. "@since")
* and tag text (e.g. "1.2"). Tags with structure or which require
* special processing are handled by subclasses such as ParamTag
* (for @param), SeeTag (for @see and {&#064;link}), and ThrowsTag
* (for @throws).
*
* @author Robert Field
* @author Atul M Dambalkar
* @see SeeTag
* @see ParamTag
* @see ThrowsTag
* @see SerialFieldTag
* @see Doc#tags()
*
*/
public interface Tag {
/**
* Return the name of this tag. The name is the string
* starting with "@" that is used in a doc comment, such as
* <code>@return</code>. For inline tags, such as
* <code>{&#064;link}</code>, the curly brackets
* are not part of the name, so in this example the name
* would be simply <code>@link</code>.
*/
String name();
/**
* Return the containing {@link Doc} of this Tag element.
*/
Doc holder();
/**
* Return the kind of this tag.
* similar or synonymous tags. For most tags,
* <code>kind()&nbsp;==&nbsp;name()</code>;
* the following table lists those cases where there is more
* than one tag of a given kind:
* <p>
* <table border="1" cellpadding="4" cellspacing="0">
* <tr><th><tt> kind() </th> <th><tt> name() </th></tr>
* <tr><td><tt> @throws </td> <td><tt> @throws </td></tr>
* <tr><td><tt> @throws </td> <td><tt> @exception </td></tr>
* <tr><td><tt> @see </td> <td><tt> @see </td></tr>
* <tr><td><tt> @see </td> <td><tt> @link </td></tr>
* <tr><td><tt> @see </td> <td><tt> @linkplain </td></tr>
* <tr><td><tt> @serial </td> <td><tt> @serial </td></tr>
* <tr><td><tt> @serial </td> <td><tt> @serialData </td></tr>
* </table>
*/
String kind();
/**
* Return the text of this tag, that is, portion beyond tag name.
*/
String text();
/**
* Convert this object to a string.
*/
String toString();
/**
* For a documentation comment with embedded <code>{&#064;link}</code>
* tags, return an array of <code>Tag</code> objects. The entire
* doc comment is broken down into strings separated by
* <code>{&#064;link}</code> tags, where each successive element
* of the array represents either a string or
* <code>{&#064;link}</code> tag, in order, from start to end.
* Each string is represented by a <code>Tag</code> object of
* name "Text", where {@link #text()} returns the string. Each
* <code>{&#064;link}</code> tag is represented by a
* {@link SeeTag} of name "@link" and kind "@see".
* For example, given the following comment
* tag:
* <p>
* <code>This is a {&#064;link Doc commentlabel} example.</code>
* <p>
* return an array of Tag objects:
* <ul>
* <li> tags[0] is a {@link Tag} with name "Text" and text consisting
* of "This is a "
* <li> tags[1] is a {@link SeeTag} with name "@link", referenced
* class <code>Doc</code> and label "commentlabel"
* <li> tags[2] is a {@link Tag} with name "Text" and text consisting
* of " example."
* </ul>
*
* @return Tag[] array of tags
* @see ParamTag
* @see ThrowsTag
*/
Tag[] inlineTags();
/**
* Return the first sentence of the comment as an array of tags.
* Includes inline tags
* (i.e. {&#64link <i>reference</i>} tags) but not
* block tags.
* Each section of plain text is represented as a {@link Tag}
* of kind "Text".
* Inline tags are represented as a {@link SeeTag} of kind "@link".
* If the locale is English language, the first sentence is
* determined by the rules described in the Java Language
* Specification (first version): &quot;This sentence ends
* at the first period that is followed by a blank, tab, or
* line terminator or at the first tagline.&quot;, in
* addition a line will be terminated by paragraph and
* section terminating HTML tags: &lt;p&gt; &lt;/p&gt; &lt;h1&gt;
* &lt;h2&gt; &lt;h3&gt; &lt;h4&gt; &lt;h5&gt; &lt;h6&gt;
* &lt;hr&gt; &lt;pre&gt; or &lt;/pre&gt;.
* If the locale is not English, the sentence end will be
* determined by
* {@link BreakIterator#getSentenceInstance(Locale)}.
*
* @return an array of {@link Tag} objects representing the
* first sentence of the comment
*/
Tag[] firstSentenceTags();
/**
* Return the source position of this tag.
* @return the source position of this tag.
*/
public SourcePosition position();
}

View File

@ -0,0 +1,79 @@
/*
* Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a @throws or @exception documentation tag.
* Parses and holds the exception name and exception comment.
* Note: @exception is a backwards compatible synonymy for @throws.
*
* @author Robert Field
* @author Atul M Dambalkar
* @see ExecutableMemberDoc#throwsTags()
*
*/
public interface ThrowsTag extends Tag {
/**
* Return the name of the exception
* associated with this <code>ThrowsTag</code>.
*
* @return name of the exception.
*/
String exceptionName();
/**
* Return the exception comment
* associated with this <code>ThrowsTag</code>.
*
* @return exception comment.
*/
String exceptionComment();
/**
* Return a <code>ClassDoc</code> that represents the exception.
* If the type of the exception is a type variable, return the
* <code>ClassDoc</code> of its erasure.
*
* <p> <i>This method cannot accommodate certain generic type
* constructs. The <code>exceptionType</code> method
* should be used instead.</i>
*
* @return <code>ClassDoc</code> that represents the exception.
* @see #exceptionType
*/
ClassDoc exception();
/**
* Return the type of the exception
* associated with this <code>ThrowsTag</code>.
* This may be a <code>ClassDoc</code> or a <code>TypeVariable</code>.
*
* @return the type of the exception.
* @since 1.5
*/
Type exceptionType();
}

View File

@ -0,0 +1,153 @@
/*
* Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a type. A type can be a class or interface, an
* invocation (like {@code List<String>}) of a generic class or interface,
* a type variable, a wildcard type ("<code>?</code>"),
* or a primitive data type (like <code>char</code>).
*
* @since 1.2
* @author Kaiyang Liu (original)
* @author Robert Field (rewrite)
* @author Scott Seligman (generics)
*/
public interface Type {
/**
* Return unqualified name of type excluding any dimension information.
* <p>
* For example, a two dimensional array of String returns
* "<code>String</code>".
*/
String typeName();
/**
* Return qualified name of type excluding any dimension information.
*<p>
* For example, a two dimensional array of String
* returns "<code>java.lang.String</code>".
*/
String qualifiedTypeName();
/**
* Return the simple name of this type excluding any dimension information.
* This is the unqualified name of the type, except that for nested types
* only the identifier of the innermost type is included.
* <p>
* For example, the class {@code Outer.Inner} returns
* "<code>Inner</code>".
*
* @since 1.5
*/
String simpleTypeName();
/**
* Return the type's dimension information, as a string.
* <p>
* For example, a two dimensional array of String returns
* "<code>[][]</code>".
*/
String dimension();
/**
* Return a string representation of the type.
* This includes any dimension information and type arguments.
* <p>
* For example, a two dimensional array of String may return
* "<code>java.lang.String[][]</code>",
* and the parameterized type {@code List<Integer>} may return
* "{@code java.util.List<java.lang.Integer>}".
*
* @return a string representation of the type.
*/
String toString();
/**
* Return true if this type represents a primitive type.
*
* @return true if this type represents a primitive type.
* @since 1.5
*/
boolean isPrimitive();
/**
* Return this type as a <code>ClassDoc</code> if it represents a class
* or interface. Array dimensions are ignored.
* If this type is a <code>ParameterizedType</code>,
* <code>TypeVariable</code>, or <code>WildcardType</code>, return
* the <code>ClassDoc</code> of the type's erasure. If this is an
* <code>AnnotationTypeDoc</code>, return this as a <code>ClassDoc</code>
* (but see {@link #asAnnotationTypeDoc()}).
* If this is a primitive type, return null.
*
* @return the <code>ClassDoc</code> of this type,
* or null if it is a primitive type.
*/
ClassDoc asClassDoc();
/**
* Return this type as a <code>ParameterizedType</code> if it represents
* an invocation of a generic class or interface. Array dimensions
* are ignored.
*
* @return a <code>ParameterizedType</code> if the type is an
* invocation of a generic type, or null if it is not.
* @since 1.5
*/
ParameterizedType asParameterizedType();
/**
* Return this type as a <code>TypeVariable</code> if it represents
* a type variable. Array dimensions are ignored.
*
* @return a <code>TypeVariable</code> if the type is a type variable,
* or null if it is not.
* @since 1.5
*/
TypeVariable asTypeVariable();
/**
* Return this type as a <code>WildcardType</code> if it represents
* a wildcard type.
*
* @return a <code>WildcardType</code> if the type is a wildcard type,
* or null if it is not.
* @since 1.5
*/
WildcardType asWildcardType();
/**
* Return this type as an <code>AnnotationTypeDoc</code> if it represents
* an annotation type. Array dimensions are ignored.
*
* @return an <code>AnnotationTypeDoc</code> if the type is an annotation
* type, or null if it is not.
* @since 1.5
*/
AnnotationTypeDoc asAnnotationTypeDoc();
}

View File

@ -0,0 +1,58 @@
/*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a type variable.
* For example, the generic interface {@code List<E>} has a single
* type variable {@code E}.
* A type variable may have explicit bounds, as in
* {@code C<R extends Remote>}.
*
* @author Scott Seligman
* @since 1.5
*/
public interface TypeVariable extends Type {
/**
* Return the bounds of this type variable.
* These are the types given by the <i>extends</i> clause.
* Return an empty array if there are no explicit bounds.
*
* @return the bounds of this type variable.
*/
Type[] bounds();
/**
* Return the class, interface, method, or constructor within
* which this type variable is declared.
*
* @return the class, interface, method, or constructor within
* which this type variable is declared.
*/
ProgramElementDoc owner();
}

View File

@ -0,0 +1,61 @@
/*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.javadoc;
/**
* Represents a wildcard type argument.
* Examples include: <pre>
* {@code <?>}
* {@code <? extends E>}
* {@code <? super T>}
* </pre>
* A wildcard type can have explicit <i>extends</i> bounds
* or explicit <i>super</i> bounds or neither, but not both.
*
* @author Scott Seligman
* @since 1.5
*/
public interface WildcardType extends Type {
/**
* Return the upper bounds of this wildcard type argument
* as given by the <i>extends</i> clause.
* Return an empty array if no such bounds are explicitly given.
*
* @return the extends bounds of this wildcard type argument
*/
Type[] extendsBounds();
/**
* Return the lower bounds of this wildcard type argument
* as given by the <i>super</i> clause.
* Return an empty array if no such bounds are explicitly given.
*
* @return the super bounds of this wildcard type argument
*/
Type[] superBounds();
}

View File

@ -0,0 +1,152 @@
<html>
<head>
<TITLE>Doclet API Package</TITLE>
<!--
Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Sun designates this
particular file as subject to the "Classpath" exception as provided
by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->
</head>
<body bgcolor="white">
The Doclet API (also called the Javadoc API) provides a mechanism
for clients to inspect the source-level structure of programs and
libraries, including javadoc comments embedded in the source.
This is useful for documentation, program checking, automatic
code generation and many other tools.
<p>
Doclets are invoked by javadoc and use this API to write out
program information to files. For example, the standard doclet is called
by default and writes out documentation to HTML files.
<p>
The invocation is defined by the abstract {@link com.sun.javadoc.Doclet} class
-- the entry point is the {@link com.sun.javadoc.Doclet#start(RootDoc) start} method:
<pre>
public static boolean <b>start</b>(RootDoc root)
</pre>
The {@link com.sun.javadoc.RootDoc} instance holds the root of the program structure
information. From this root all other program structure
information can be extracted.
<p>
<a name="terminology"></a>
<h3>Terminology</h3>
<a name="included"></a>
When calling javadoc, you pass in package names and source file names --
these are called the <em>specified</em> packages and classes.
You also pass in Javadoc options; the <em>access control</em> Javadoc options
(<code>-public</code>, <code>-protected</code>, <code>-package</code>,
and <code>-private</code>) filter program elements, producing a
result set, called the <em>included</em> set, or "documented" set.
(The unfiltered set is also available through
{@link com.sun.javadoc.PackageDoc#allClasses(boolean) allClasses(false)}.)
<p>
<a name="class"></a>
Throughout this API, the term <em>class</em> is normally a
shorthand for "class or interface", as in: {@link com.sun.javadoc.ClassDoc},
{@link com.sun.javadoc.PackageDoc#allClasses() allClasses()}, and
{@link com.sun.javadoc.PackageDoc#findClass(String) findClass(String)}.
In only a couple of other places, it means "class, as opposed to interface",
as in: {@link com.sun.javadoc.Doc#isClass()}.
In the second sense, this API calls out four kinds of classes:
{@linkplain com.sun.javadoc.Doc#isOrdinaryClass() ordinary classes},
{@linkplain com.sun.javadoc.Doc#isEnum() enums},
{@linkplain com.sun.javadoc.Doc#isError() errors} and
{@linkplain com.sun.javadoc.Doc#isException() exceptions}.
Throughout the API, the detailed description of each program element
describes explicitly which meaning is being used.
<p>
<a name="qualified"></a>
A <em>qualified</em> class or interface name is one that has its package
name prepended to it, such as <code>java.lang.String</code>. A non-qualified
name has no package name, such as <code>String</code>.
<p>
<a name="example"></a>
<h3>Example</h3>
The following is an example doclet that
displays information in the <code>@param</code> tags of the processed
classes:
<pre>
import com.sun.javadoc.*;
public class ListParams extends <font color=red title="Doclet API">Doclet</font> {
public static boolean start(<font color=red title="Doclet API">RootDoc</font> root) {
<font color=red title="Doclet API">ClassDoc</font>[] classes = root.<font color=red title="Doclet API">classes</font>();
for (int i = 0; i < classes.length; ++i) {
<font color=red title="Doclet API">ClassDoc</font> cd = classes[i];
printMembers(cd.<font color=red title="Doclet API">constructors</font>());
printMembers(cd.<font color=red title="Doclet API">methods</font>());
}
return true;
}
static void printMembers(<font color=red title="Doclet API">ExecutableMemberDoc</font>[] mems) {
for (int i = 0; i < mems.length; ++i) {
<font color=red title="Doclet API">ParamTag</font>[] params = mems[i].<font color=red title="Doclet API">paramTags</font>();
System.out.println(mems[i].<font color=red title="Doclet API">qualifiedName</font>());
for (int j = 0; j < params.length; ++j) {
System.out.println(" " + params[j].<font color=red title="Doclet API">parameterName</font>()
+ " - " + params[j].<font color=red title="Doclet API">parameterComment</font>());
}
}
}
}
</pre>
Interfaces and methods from the Javadoc API are marked in
<font color=red title="Doclet API">red</font>.
{@link com.sun.javadoc.Doclet Doclet} is an abstract class that specifies
the invocation interface for doclets,
{@link com.sun.javadoc.Doclet Doclet} holds class or interface information,
{@link com.sun.javadoc.ExecutableMemberDoc} is a
superinterface of {@link com.sun.javadoc.MethodDoc} and
{@link com.sun.javadoc.ConstructorDoc},
and {@link com.sun.javadoc.ParamTag} holds information
from "<code>@param</code>" tags.
<p>
This doclet when invoked with a command line like:
<pre>
javadoc -doclet ListParams -sourcepath &lt;source-location&gt; java.util
</pre>
producing output like:
<pre>
...
java.util.ArrayList.add
index - index at which the specified element is to be inserted.
element - element to be inserted.
java.util.ArrayList.remove
index - the index of the element to removed.
...
</pre>
@see com.sun.javadoc.Doclet
@see com.sun.javadoc.RootDoc
</BODY>
</HTML>

View File

@ -0,0 +1,64 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
public interface AnnotationProcessor {
/**
* Process all program elements supported by this annotation processor.
*/
void process();
}

View File

@ -0,0 +1,177 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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);
}

View File

@ -0,0 +1,103 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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);
}

View File

@ -0,0 +1,35 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.mirror.apt;
/**
* Superinterface for all annotation processor event listeners.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
public interface AnnotationProcessorListener extends java.util.EventListener {}

View File

@ -0,0 +1,117 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @since 1.5
* @author Joseph D. Darcy
* @author Scott Seligman
*/
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);
}
}

View File

@ -0,0 +1,150 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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.
*/
enum Location {
/** The location of new source files. */
SOURCE_TREE,
/** The location of new class files. */
CLASS_TREE
}
}

View File

@ -0,0 +1,88 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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);
}

View File

@ -0,0 +1,68 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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();
}
}

View File

@ -0,0 +1,42 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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);
}

View File

@ -0,0 +1,59 @@
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.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.
*
* @author Joseph D. Darcy
* @author Scott Seligman
* @since 1.5
*/
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();
}

View File

@ -0,0 +1,42 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--
Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Sun designates this
particular file as subject to the "Classpath" exception as provided
by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->
</head>
<body bgcolor="white">
Classes used to communicate information between
{@linkplain com.sun.mirror.apt.AnnotationProcessor annotation processors}
and an annotation processing tool.
<p>Note that the <code>apt</code> tool and its associated APIs may be
changed or superseded in future j2se releases.
@since 1.5
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More