Merge
This commit is contained in:
commit
c6e81a130b
1
.hgtags
1
.hgtags
@ -5,3 +5,4 @@ bf2517e15f0c0f950e5b3143c4ca11e2df73dcc1 jdk7-b25
|
||||
18dc4ba4739a537fd146f77da51db16efce28da2 jdk7-b28
|
||||
bfe4572fd301a6fcd120373cdb2eff5d2da0c72c jdk7-b29
|
||||
bee4731164a06ddece1297ae58db24aca6a1c626 jdk7-b30
|
||||
cd8b8f500face60d1566d850857a7fccadbd383a jdk7-b31
|
||||
|
@ -5,3 +5,4 @@ cbc8ad9dd0e085a607427ea35411990982f19a36 jdk7-b25
|
||||
56652b46f328937f6b9b5130f1e4cd80f48868ef jdk7-b28
|
||||
31e08f70e88d77c2053f91c21b49a04296bdc59a jdk7-b29
|
||||
2dab2f712e1832c92acfa63ec0337048b9422c20 jdk7-b30
|
||||
3300a35a0bd56d695b92fe0b34f03ebbfc939064 jdk7-b31
|
||||
|
@ -5,15 +5,12 @@
|
||||
</head>
|
||||
<body style="background-color:lightcyan">
|
||||
<!-- ====================================================== -->
|
||||
<table width="100%" style="background-color:white">
|
||||
+ <table width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href="http://openjdk.java.net" border="0">
|
||||
<img alt="OpenJDK"
|
||||
src="http://openjdk.java.net/images/openjdk.png"
|
||||
width=256
|
||||
style="border-style: none"/>
|
||||
</a>
|
||||
<img alt="OpenJDK"
|
||||
src="http://openjdk.java.net/images/openjdk.png"
|
||||
width=256 />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -54,6 +51,7 @@
|
||||
<li><a href="#bootjdk">Bootstrap JDK</a> </li>
|
||||
<li><a href="#binaryplugs">Binary Plugs</a> </li>
|
||||
<li><a href="#importjdk">Optional Import JDK</a> </li>
|
||||
<li><a href="#ant">Ant</a> </li>
|
||||
<li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
|
||||
<li><a href="#compilers">Compilers</a>
|
||||
<ul>
|
||||
@ -424,24 +422,37 @@
|
||||
you should use <tt>gmake</tt>
|
||||
which will be located in either the <tt>/opt/sfw/bin</tt> or
|
||||
<tt>/usr/sfw/bin</tt> directory.
|
||||
In more recent versions of Solaris GNU make can be found
|
||||
at <tt>/usr/bin/gmake</tt>.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Windows:</strong>
|
||||
Make sure you start your build inside a bash/sh/ksh shell.
|
||||
<br>
|
||||
<b>WARNING:</b> Watch out for make version 3.81, it may
|
||||
not work due to a lack of support for drive letter paths
|
||||
like <tt>C:/</tt>. See
|
||||
<a href="#gmake">section on gmake</a>.
|
||||
not work due to a lack of support for MS-DOS drive letter paths
|
||||
like <tt>C:/</tt> or <tt>C:\</tt>.
|
||||
Use a 3.80 version, or find a newer
|
||||
version that has this problem fixed.
|
||||
version that has this problem fixed, like 3.82.
|
||||
The older 3.80 version of make.exe can be downloaded with this
|
||||
<a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank">
|
||||
link</a>.
|
||||
Use of this older 3.80 make.exe may require that you install the
|
||||
libintl2.dll library or libintl2 cygwin package which is
|
||||
no longer installed by default by the cygwin installer.
|
||||
<br>
|
||||
Also see the
|
||||
<a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
|
||||
mozilla developer center</a>
|
||||
on this topic.
|
||||
<br>
|
||||
It's hoped that when make 3.82 starts shipping in a future cygwin
|
||||
release that this MS-DOS path issue will be fixed.
|
||||
In addition to the above 3.80 make.exe you can download
|
||||
this
|
||||
<a href="http://www.cmake.org/files/cygwin/make.exe">
|
||||
www.cmake.org make.exe</a> which will not have a libintl2.dll
|
||||
dependency.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
@ -507,6 +518,11 @@
|
||||
Install or upgrade the <a href="#freetype">FreeType development
|
||||
package</a>.
|
||||
</li>
|
||||
<li>
|
||||
Install
|
||||
<a href="#ant">Ant</a>, set
|
||||
<tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
|
||||
</li>
|
||||
</ol>
|
||||
</blockquote>
|
||||
<!-- ------------------------------------------------------ -->
|
||||
@ -567,6 +583,11 @@
|
||||
<a href="#cups">CUPS Include files</a>, set
|
||||
<tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
|
||||
</li>
|
||||
<li>
|
||||
Install
|
||||
<a href="#ant">Ant</a>, set
|
||||
<tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
|
||||
</li>
|
||||
</ol>
|
||||
</blockquote>
|
||||
<!-- ------------------------------------------------------ -->
|
||||
@ -654,6 +675,11 @@
|
||||
Install
|
||||
<a href="#dxsdk">Microsoft DirectX SDK</a>.
|
||||
</li>
|
||||
<li>
|
||||
Install
|
||||
<a href="#ant">Ant</a>, set
|
||||
<tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
|
||||
</li>
|
||||
</ol>
|
||||
</blockquote>
|
||||
<!-- ------------------------------------------------------ -->
|
||||
@ -736,6 +762,22 @@
|
||||
and the build will copy the needed files from this import area.
|
||||
</blockquote>
|
||||
<!-- ------------------------------------------------------ -->
|
||||
<h4><a name="ant">Ant</a></h4>
|
||||
<blockquote>
|
||||
All OpenJDK builds require access to least Ant 1.6.5.
|
||||
The Ant tool is available from the
|
||||
<a href="http://ant.apache.org/antlibs/bindownload.cgi" target="_blank">
|
||||
Ant download site</a>.
|
||||
You should always set
|
||||
<tt><a href="#ANT_HOME">ANT_HOME</a></tt>
|
||||
to point to the location of
|
||||
the Ant installation, this is the directory pathname
|
||||
that contains a <tt>bin and lib</tt>.
|
||||
It's also a good idea to also place its <tt>bin</tt> directory
|
||||
in the <tt>PATH</tt> environment variable, although it's
|
||||
not absolutely required.
|
||||
</blockquote>
|
||||
<!-- ------------------------------------------------------ -->
|
||||
<h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
|
||||
<blockquote>
|
||||
See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
|
||||
@ -915,6 +957,21 @@
|
||||
and
|
||||
<tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
|
||||
to refer to place where library and header files are installed.
|
||||
<p>
|
||||
Building the freetype 2 libraries from scratch is also possible,
|
||||
however on Windows refer to the
|
||||
<a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
|
||||
Windows FreeType DLL build instructions</a>.
|
||||
<p>
|
||||
Note that by default FreeType is built with byte code hinting
|
||||
support disabled due to licensing restrictions.
|
||||
In this case, text appearance and metrics are expected to
|
||||
differ from Sun's official JDK build.
|
||||
See
|
||||
<a href="http://freetype.sourceforge.net/freetype2/index.html">
|
||||
the SourceForge FreeType2 Home Page
|
||||
</a>
|
||||
for more information.
|
||||
</blockquote>
|
||||
<!-- ------------------------------------------------------ -->
|
||||
<h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
|
||||
@ -1036,7 +1093,8 @@
|
||||
<tr>
|
||||
<td>make.exe</td>
|
||||
<td>Devel</td>
|
||||
<td>make: The GNU version of the 'make' utility</td>
|
||||
<td>make: The GNU version of the 'make' utility<br>
|
||||
<b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>m4.exe</td>
|
||||
@ -1050,7 +1108,7 @@
|
||||
<td>cpio: A program to manage archives of files</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>awk.exe</td>
|
||||
<td>gawk.exe</td>
|
||||
<td>Utils</td>
|
||||
<td>awk: Pattern-directed scanning and processing language</td>
|
||||
</tr>
|
||||
@ -1061,17 +1119,17 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>zip.exe</td>
|
||||
<td>Utils</td>
|
||||
<td>Archive</td>
|
||||
<td>zip: Package and compress (archive) files</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>unzip.exe</td>
|
||||
<td>Utils</td>
|
||||
<td>Archive</td>
|
||||
<td>unzip: Extract compressed files in a ZIP archive</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>free.exe</td>
|
||||
<td>Utils</td>
|
||||
<td>Procps</td>
|
||||
<td>free: Display amount of free and used memory in the system</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@ -1224,46 +1282,6 @@
|
||||
document) that can impact the build are:
|
||||
<blockquote>
|
||||
<dl>
|
||||
<dt><a name="path"><tt>PATH</tt></a> </dt>
|
||||
<dd>Typically you want to set the <tt>PATH</tt> to include:
|
||||
<ul>
|
||||
<li>The location of the GNU make binary</li>
|
||||
<li>The location of the Bootstrap JDK <tt>java</tt>
|
||||
(see <a href="#bootjdk">Bootstrap JDK</a>)</li>
|
||||
<li>The location of the C/C++ compilers
|
||||
(see <a href="#compilers"><tt>compilers</tt></a>)</li>
|
||||
<li>The location or locations for the Unix command utilities
|
||||
(e.g. <tt>/usr/bin</tt>)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt><tt>MILESTONE</tt> </dt>
|
||||
<dd>
|
||||
The milestone name for the build (<i>e.g.</i>"beta").
|
||||
The default value is "internal".
|
||||
</dd>
|
||||
<dt><tt>BUILD_NUMBER</tt> </dt>
|
||||
<dd>
|
||||
The build number for the build (<i>e.g.</i> "b27").
|
||||
The default value is "b00".
|
||||
</dd>
|
||||
<dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
|
||||
<dd>The <tt>ARCH_DATA_MODEL</tt> variable
|
||||
is used to specify whether the build is to generate 32-bit or 64-bit
|
||||
binaries.
|
||||
The Solaris build supports either 32-bit or 64-bit builds, but
|
||||
Windows and Linux will support only one, depending on the specific
|
||||
OS being used.
|
||||
Normally, setting this variable is only necessary on Solaris.
|
||||
Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries,
|
||||
or to <tt>64</tt> for generating 64-bit binaries.
|
||||
</dd>
|
||||
<dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
|
||||
<dd>
|
||||
The location of the bootstrap JDK installation.
|
||||
See <a href="#bootjdk">Bootstrap JDK</a> for more information.
|
||||
You should always install your own local Bootstrap JDK and
|
||||
always set <tt>ALT_BOOTDIR</tt> explicitly.
|
||||
</dd>
|
||||
<dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The location of the binary plugs installation.
|
||||
@ -1272,118 +1290,12 @@
|
||||
recent Binary Plugs install image
|
||||
and set this variable to that location.
|
||||
</dd>
|
||||
<dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
|
||||
<dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
|
||||
<dd>
|
||||
The location of a previously built JDK installation.
|
||||
See <a href="#importjdk">Optional Import JDK</a> for more information.
|
||||
</dd>
|
||||
<dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
|
||||
<dd>
|
||||
An override for specifying the (absolute) path of where the
|
||||
build output is to go.
|
||||
The default output directory will be build/<i>platform</i>.
|
||||
</dd>
|
||||
<dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
The location of the C/C++ compiler.
|
||||
The default varies depending on the platform.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
|
||||
<dd>
|
||||
The location of the <a href="#cacerts">cacerts</a> file.
|
||||
The default will refer to
|
||||
<tt>jdk/src/share/lib/security/cacerts</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
The location of the CUPS header files.
|
||||
See <a href="#cups">CUPS information</a> for more information.
|
||||
If this path does not exist the fallback path is
|
||||
<tt>/usr/include</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The location of the FreeType shared library.
|
||||
See <a href="#freetype">FreeType information</a> for details.
|
||||
</dd>
|
||||
<dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The location of the FreeType header files.
|
||||
See <a href="#freetype">FreeType information</a> for details.
|
||||
</dd>
|
||||
<dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The default root location of the devtools.
|
||||
The default value is
|
||||
<tt>$(ALT_SLASH_JAVA)/devtools</tt>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
The location of tools like the
|
||||
<a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
|
||||
binaries, but might also contain the GNU make utility
|
||||
(<tt><i>gmake</i></tt>).
|
||||
So this area is a bit of a grab bag, especially on Windows.
|
||||
The default value depends on the platform and
|
||||
Unix Commands being used.
|
||||
On Linux the default will be
|
||||
<tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>,
|
||||
on Solaris
|
||||
<tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>,
|
||||
on Windows with MKS
|
||||
<tt>%SYSTEMDRIVE%/UTILS</tt>,
|
||||
and on Windows with CYGWIN
|
||||
<tt>/usr/bin</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_UNIXCOMMAND_PATH"><tt>ALT_UNIXCOMMAND_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
An override for specifying where the
|
||||
Unix command set are located.
|
||||
The default location varies depending on the platform,
|
||||
<tt>"%SYSTEMDRIVE%/MKSNT"</tt> or
|
||||
<tt>$(ROOTDIR)</tt> on Windows with MKS, otherwise it's
|
||||
<tt>"/bin"</tt> or <tt>/usr/bin</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
<strong>Solaris only:</strong>
|
||||
An override for specifying where the Unix CCS
|
||||
command set are located.
|
||||
The default location is <tt>/usr/ccs/bin</tt>
|
||||
</dd>
|
||||
<dt><a name="ALT_USRBIN_PATH"><tt>ALT_USRBIN_PATH</tt></a></dt>
|
||||
<dd>
|
||||
An override for specifying where the
|
||||
Unix <tt>/usr/bin</tt> commands are located. You usually do not need
|
||||
to set this variable: the default location is <tt>/usr/bin</tt>)
|
||||
</dd>
|
||||
<dt><a name="ALT_SLASHJAVA"><tt>ALT_SLASHJAVA</tt></a></dt>
|
||||
<dd>
|
||||
The default root location for many of the ALT path locations
|
||||
of the following ALT variables.
|
||||
The default value is
|
||||
<tt>"/java"</tt> on Solaris and Linux,
|
||||
<tt>"J:"</tt> on Windows.
|
||||
</dd>
|
||||
<dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
|
||||
<dd>
|
||||
These are useful in managing builds on multiple platforms.
|
||||
The default network location for all of the import JDK images
|
||||
for all platforms.
|
||||
If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
|
||||
is not set, this directory will be used and should contain
|
||||
the following directories:
|
||||
<tt>solaris-sparc</tt>,
|
||||
<tt>solaris-i586</tt>,
|
||||
<tt>solaris-sparcv9</tt>,
|
||||
<tt>solaris-amd64</tt>,
|
||||
<tt>linux-i586</tt>,
|
||||
<tt>linux-amd64</tt>,
|
||||
<tt>windows-i586</tt>,
|
||||
and
|
||||
<tt>windows-amd64</tt>.
|
||||
Where each of these directories contain the import JDK image
|
||||
for that platform.
|
||||
The location of the bootstrap JDK installation.
|
||||
See <a href="#bootjdk">Bootstrap JDK</a> for more information.
|
||||
You should always install your own local Bootstrap JDK and
|
||||
always set <tt>ALT_BOOTDIR</tt> explicitly.
|
||||
</dd>
|
||||
<dt><a name="ALT_BUILD_BINARY_PLUGS_PATH"><tt>ALT_BUILD_BINARY_PLUGS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
@ -1405,36 +1317,186 @@
|
||||
Where each of these directories contain the binary plugs image
|
||||
for that platform.
|
||||
</dd>
|
||||
<dt><strong>Windows specific:</strong></dt>
|
||||
<dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
The location of the Microsoft Visual Studio .NET 2003
|
||||
tools 'bin' directory.
|
||||
The default is usually derived from
|
||||
<a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
The location of the
|
||||
<a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
|
||||
The default will be to try and use the DirectX environment
|
||||
variable <tt>DXSDK_DIR</tt>,
|
||||
failing that, look in <tt>C:/DXSDK</tt>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
The location of the
|
||||
<a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_MSVCR71_DLL_PATH">ALT_MSVCR71_DLL_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
<strong>i586 only:</strong>
|
||||
The location of the
|
||||
<a href="#msvcr71"><tt>MSVCR71.DLL</tt></a>.
|
||||
</dd>
|
||||
</dl>
|
||||
These are useful in managing builds on multiple platforms.
|
||||
The default network location for all of the import JDK images
|
||||
for all platforms.
|
||||
If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
|
||||
is not set, this directory will be used and should contain
|
||||
the following directories:
|
||||
<tt>solaris-sparc</tt>,
|
||||
<tt>solaris-i586</tt>,
|
||||
<tt>solaris-sparcv9</tt>,
|
||||
<tt>solaris-amd64</tt>,
|
||||
<tt>linux-i586</tt>,
|
||||
<tt>linux-amd64</tt>,
|
||||
<tt>windows-i586</tt>,
|
||||
and
|
||||
<tt>windows-amd64</tt>.
|
||||
Where each of these directories contain the import JDK image
|
||||
for that platform.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
|
||||
<dd>
|
||||
The location of the <a href="#cacerts">cacerts</a> file.
|
||||
The default will refer to
|
||||
<tt>jdk/src/share/lib/security/cacerts</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
The location of the C/C++ compiler.
|
||||
The default varies depending on the platform.
|
||||
</dd>
|
||||
<dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
The location of the CUPS header files.
|
||||
See <a href="#cups">CUPS information</a> for more information.
|
||||
If this path does not exist the fallback path is
|
||||
<tt>/usr/include</tt>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
The location of tools like the
|
||||
<a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
|
||||
binaries, but might also contain the GNU make utility
|
||||
(<tt><i>gmake</i></tt>).
|
||||
So this area is a bit of a grab bag, especially on Windows.
|
||||
The default value depends on the platform and
|
||||
Unix Commands being used.
|
||||
On Linux the default will be
|
||||
<tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>,
|
||||
on Solaris
|
||||
<tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>,
|
||||
on Windows with MKS
|
||||
<tt>%SYSTEMDRIVE%/UTILS</tt>,
|
||||
and on Windows with CYGWIN
|
||||
<tt>/usr/bin</tt>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
<strong>Windows Only:</strong>
|
||||
The location of the
|
||||
<a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
|
||||
The default will be to try and use the DirectX environment
|
||||
variable <tt>DXSDK_DIR</tt>,
|
||||
failing that, look in <tt>C:/DXSDK</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The location of the FreeType header files.
|
||||
See <a href="#freetype">FreeType information</a> for details.
|
||||
</dd>
|
||||
<dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The location of the FreeType shared library.
|
||||
See <a href="#freetype">FreeType information</a> for details.
|
||||
</dd>
|
||||
<dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The default root location of the devtools.
|
||||
The default value is
|
||||
<tt>$(ALT_SLASH_JAVA)/devtools</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
|
||||
<dd>
|
||||
The location of a previously built JDK installation.
|
||||
See <a href="#importjdk">Optional Import JDK</a> for more information.
|
||||
</dd>
|
||||
<dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
<strong>Windows Only:</strong>
|
||||
The location of the Microsoft Visual Studio .NET 2003
|
||||
tools 'bin' directory.
|
||||
The default is usually derived from
|
||||
<a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_MSVCR71_DLL_PATH">ALT_MSVCR71_DLL_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
<strong>Windows i586 only:</strong>
|
||||
The location of the
|
||||
<a href="#msvcr71"><tt>MSVCR71.DLL</tt></a>.
|
||||
</dd>
|
||||
<dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
|
||||
<dd>
|
||||
<strong>Windows Only:</strong>
|
||||
The location of the
|
||||
<a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>.
|
||||
</dd>
|
||||
<dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
|
||||
<dd>
|
||||
An override for specifying the (absolute) path of where the
|
||||
build output is to go.
|
||||
The default output directory will be build/<i>platform</i>.
|
||||
</dd>
|
||||
<dt><a name="ALT_SLASHJAVA"><tt>ALT_SLASHJAVA</tt></a></dt>
|
||||
<dd>
|
||||
The default root location for many of the ALT path locations
|
||||
of the following ALT variables.
|
||||
The default value is
|
||||
<tt>"/java"</tt> on Solaris and Linux,
|
||||
<tt>"J:"</tt> on Windows.
|
||||
</dd>
|
||||
<dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
|
||||
<dd>
|
||||
<strong>Solaris only:</strong>
|
||||
An override for specifying where the Unix CCS
|
||||
command set are located.
|
||||
The default location is <tt>/usr/ccs/bin</tt>
|
||||
</dd>
|
||||
<dt><a name="ALT_UNIXCOMMAND_PATH"><tt>ALT_UNIXCOMMAND_PATH</tt></a> </dt>
|
||||
<dd>
|
||||
An override for specifying where the
|
||||
Unix command set are located.
|
||||
The default location varies depending on the platform,
|
||||
<tt>"%SYSTEMDRIVE%/MKSNT"</tt> or
|
||||
<tt>$(ROOTDIR)</tt> on Windows with MKS, otherwise it's
|
||||
<tt>"/bin"</tt> or <tt>/usr/bin</tt>.
|
||||
</dd>
|
||||
<dt><a name="ALT_USRBIN_PATH"><tt>ALT_USRBIN_PATH</tt></a></dt>
|
||||
<dd>
|
||||
An override for specifying where the
|
||||
Unix <tt>/usr/bin</tt> commands are located. You usually do not need
|
||||
to set this variable: the default location is <tt>/usr/bin</tt>)
|
||||
</dd>
|
||||
<dt><a name="ANT_HOME"><tt>ANT_HOME</tt></a></dt>
|
||||
<dd>
|
||||
The location of the Ant installation.
|
||||
See <a href="#ant">Ant</a> for more information.
|
||||
You should always set <tt>ANT_HOME</tt> explicitly.
|
||||
</dd>
|
||||
<dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
|
||||
<dd>The <tt>ARCH_DATA_MODEL</tt> variable
|
||||
is used to specify whether the build is to generate 32-bit or 64-bit
|
||||
binaries.
|
||||
The Solaris build supports either 32-bit or 64-bit builds, but
|
||||
Windows and Linux will support only one, depending on the specific
|
||||
OS being used.
|
||||
Normally, setting this variable is only necessary on Solaris.
|
||||
Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries,
|
||||
or to <tt>64</tt> for generating 64-bit binaries.
|
||||
</dd>
|
||||
<dt><tt>BUILD_NUMBER</tt> </dt>
|
||||
<dd>
|
||||
The build number for the build (<i>e.g.</i> "b27").
|
||||
The default value is "b00".
|
||||
</dd>
|
||||
<dt><tt>MILESTONE</tt> </dt>
|
||||
<dd>
|
||||
The milestone name for the build (<i>e.g.</i>"beta").
|
||||
The default value is "internal".
|
||||
</dd>
|
||||
<dt><a name="path"><tt>PATH</tt></a> </dt>
|
||||
<dd>Typically you want to set the <tt>PATH</tt> to include:
|
||||
<ul>
|
||||
<li>The location of the GNU make binary</li>
|
||||
<li>The location of the Bootstrap JDK <tt>java</tt>
|
||||
(see <a href="#bootjdk">Bootstrap JDK</a>)</li>
|
||||
<li>The location of the C/C++ compilers
|
||||
(see <a href="#compilers"><tt>compilers</tt></a>)</li>
|
||||
<li>The location or locations for the Unix command utilities
|
||||
(e.g. <tt>/usr/bin</tt>)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</blockquote>
|
||||
|
@ -5,3 +5,4 @@ e84e9018bebbf3e5bafc5706e7882a15cb1c7d99 jdk7-b27
|
||||
27509b7d21ed783b3f6eb7b7612781c675a30c2f jdk7-b28
|
||||
8b71960f79ce0a6fb8ddfeec03f03d400a361747 jdk7-b29
|
||||
c0252adbb2abbfdd6c35595429ac6fbdd98e20ac jdk7-b30
|
||||
ef6af34d75a7b44e77083f1d4ee47631fa09d3b4 jdk7-b31
|
||||
|
@ -5,3 +5,4 @@ e3d2692f8442e2d951166dc9bd9a330684754438 jdk7-b27
|
||||
c14dab40ed9bf45ad21150bd70c9c80cdf655415 jdk7-b28
|
||||
4f91c08b3e4498213a9c5a24898f7d9c38cf86fb jdk7-b29
|
||||
d1605aabd0a15ecf93787c47de63073c33fba52d jdk7-b30
|
||||
9c2ecc2ffb125f14fab3857fe7689598956348a0 jdk7-b31
|
||||
|
@ -2414,8 +2414,20 @@ static bool linux_mprotect(char* addr, size_t size, int prot) {
|
||||
return ::mprotect(bottom, size, prot) == 0;
|
||||
}
|
||||
|
||||
bool os::protect_memory(char* addr, size_t size) {
|
||||
return linux_mprotect(addr, size, PROT_READ);
|
||||
// Set protections specified
|
||||
bool os::protect_memory(char* addr, size_t bytes, ProtType prot,
|
||||
bool is_committed) {
|
||||
unsigned int p = 0;
|
||||
switch (prot) {
|
||||
case MEM_PROT_NONE: p = PROT_NONE; break;
|
||||
case MEM_PROT_READ: p = PROT_READ; break;
|
||||
case MEM_PROT_RW: p = PROT_READ|PROT_WRITE; break;
|
||||
case MEM_PROT_RWX: p = PROT_READ|PROT_WRITE|PROT_EXEC; break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
// is_committed is unused.
|
||||
return linux_mprotect(addr, bytes, p);
|
||||
}
|
||||
|
||||
bool os::guard_memory(char* addr, size_t size) {
|
||||
@ -3704,8 +3716,9 @@ void os::make_polling_page_unreadable(void) {
|
||||
|
||||
// Mark the polling page as readable
|
||||
void os::make_polling_page_readable(void) {
|
||||
if( !protect_memory((char *)_polling_page, Linux::page_size()) )
|
||||
if( !linux_mprotect((char *)_polling_page, Linux::page_size(), PROT_READ)) {
|
||||
fatal("Could not enable polling page");
|
||||
}
|
||||
};
|
||||
|
||||
int os::active_processor_count() {
|
||||
|
@ -2965,10 +2965,21 @@ static bool solaris_mprotect(char* addr, size_t bytes, int prot) {
|
||||
return retVal == 0;
|
||||
}
|
||||
|
||||
// Protect memory (make it read-only. (Used to pass readonly pages through
|
||||
// Protect memory (Used to pass readonly pages through
|
||||
// JNI GetArray<type>Elements with empty arrays.)
|
||||
bool os::protect_memory(char* addr, size_t bytes) {
|
||||
return solaris_mprotect(addr, bytes, PROT_READ);
|
||||
bool os::protect_memory(char* addr, size_t bytes, ProtType prot,
|
||||
bool is_committed) {
|
||||
unsigned int p = 0;
|
||||
switch (prot) {
|
||||
case MEM_PROT_NONE: p = PROT_NONE; break;
|
||||
case MEM_PROT_READ: p = PROT_READ; break;
|
||||
case MEM_PROT_RW: p = PROT_READ|PROT_WRITE; break;
|
||||
case MEM_PROT_RWX: p = PROT_READ|PROT_WRITE|PROT_EXEC; break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
// is_committed is unused.
|
||||
return solaris_mprotect(addr, bytes, p);
|
||||
}
|
||||
|
||||
// guard_memory and unguard_memory only happens within stack guard pages.
|
||||
|
@ -2170,6 +2170,7 @@ LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo) {
|
||||
// Windows 98 reports faulting addresses incorrectly
|
||||
if (!MacroAssembler::needs_explicit_null_check((intptr_t)addr) ||
|
||||
!os::win32::is_nt()) {
|
||||
|
||||
return Handle_Exception(exceptionInfo,
|
||||
SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL));
|
||||
}
|
||||
@ -2563,9 +2564,33 @@ bool os::release_memory(char* addr, size_t bytes) {
|
||||
return VirtualFree(addr, 0, MEM_RELEASE) != 0;
|
||||
}
|
||||
|
||||
bool os::protect_memory(char* addr, size_t bytes) {
|
||||
// Set protections specified
|
||||
bool os::protect_memory(char* addr, size_t bytes, ProtType prot,
|
||||
bool is_committed) {
|
||||
unsigned int p = 0;
|
||||
switch (prot) {
|
||||
case MEM_PROT_NONE: p = PAGE_NOACCESS; break;
|
||||
case MEM_PROT_READ: p = PAGE_READONLY; break;
|
||||
case MEM_PROT_RW: p = PAGE_READWRITE; break;
|
||||
case MEM_PROT_RWX: p = PAGE_EXECUTE_READWRITE; break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
|
||||
DWORD old_status;
|
||||
return VirtualProtect(addr, bytes, PAGE_READONLY, &old_status) != 0;
|
||||
|
||||
// Strange enough, but on Win32 one can change protection only for committed
|
||||
// memory, not a big deal anyway, as bytes less or equal than 64K
|
||||
if (!is_committed && !commit_memory(addr, bytes)) {
|
||||
fatal("cannot commit protection page");
|
||||
}
|
||||
// One cannot use os::guard_memory() here, as on Win32 guard page
|
||||
// have different (one-shot) semantics, from MSDN on PAGE_GUARD:
|
||||
//
|
||||
// Pages in the region become guard pages. Any attempt to access a guard page
|
||||
// causes the system to raise a STATUS_GUARD_PAGE exception and turn off
|
||||
// the guard page status. Guard pages thus act as a one-time access alarm.
|
||||
return VirtualProtect(addr, bytes, p, &old_status) != 0;
|
||||
}
|
||||
|
||||
bool os::guard_memory(char* addr, size_t bytes) {
|
||||
|
@ -27,12 +27,6 @@
|
||||
|
||||
#include <asm-sparc/traps.h>
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Since the linux kernel resides at the low end of
|
||||
// user address space, no null pointer check is needed.
|
||||
return offset < 0 || offset >= 0x100000;
|
||||
}
|
||||
|
||||
void MacroAssembler::read_ccr_trap(Register ccr_save) {
|
||||
// No implementation
|
||||
breakpoint_trap();
|
||||
|
@ -39,10 +39,3 @@ void MacroAssembler::get_thread(Register thread) {
|
||||
|
||||
movptr(thread, tls);
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Linux kernel guarantees that the first page is always unmapped. Don't
|
||||
// assume anything more than that.
|
||||
bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
|
||||
return !offset_in_first_page;
|
||||
}
|
||||
|
@ -65,22 +65,3 @@ void MacroAssembler::get_thread(Register thread) {
|
||||
popq(rax);
|
||||
}
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Exception handler checks the nmethod's implicit null checks table
|
||||
// only when this method returns false.
|
||||
if (UseCompressedOops) {
|
||||
// The first page after heap_base is unmapped and
|
||||
// the 'offset' is equal to [heap_base + offset] for
|
||||
// narrow oop implicit null checks.
|
||||
uintptr_t heap_base = (uintptr_t)Universe::heap_base();
|
||||
if ((uintptr_t)offset >= heap_base) {
|
||||
// Normalize offset for the next check.
|
||||
offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
|
||||
}
|
||||
}
|
||||
// Linux kernel guarantees that the first page is always unmapped. Don't
|
||||
// assume anything more than that.
|
||||
bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
|
||||
return !offset_in_first_page;
|
||||
}
|
||||
|
@ -28,18 +28,6 @@
|
||||
#include <sys/trap.h> // For trap numbers
|
||||
#include <v9/sys/psr_compat.h> // For V8 compatibility
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// The first page of virtual addresses is unmapped on SPARC.
|
||||
// Thus, any access the VM makes through a null pointer with an offset of
|
||||
// less than 4K will get a recognizable SIGSEGV, which the signal handler
|
||||
// will transform into a NullPointerException.
|
||||
// (Actually, the first 64K or so is unmapped, but it's simpler
|
||||
// to depend only on the first 4K or so.)
|
||||
|
||||
bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
|
||||
return !offset_in_first_page;
|
||||
}
|
||||
|
||||
void MacroAssembler::read_ccr_trap(Register ccr_save) {
|
||||
// Execute a trap to get the PSR, mask and shift
|
||||
// to get the condition codes.
|
||||
|
@ -79,9 +79,3 @@ void MacroAssembler::get_thread(Register thread) {
|
||||
if (thread != rax) popl(rax);
|
||||
popl(thread);
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Identical to Sparc/Solaris code
|
||||
bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
|
||||
return !offset_in_first_page;
|
||||
}
|
||||
|
@ -85,22 +85,3 @@ void MacroAssembler::get_thread(Register thread) {
|
||||
popq(rax);
|
||||
}
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Identical to Sparc/Solaris code
|
||||
|
||||
// Exception handler checks the nmethod's implicit null checks table
|
||||
// only when this method returns false.
|
||||
if (UseCompressedOops) {
|
||||
// The first page after heap_base is unmapped and
|
||||
// the 'offset' is equal to [heap_base + offset] for
|
||||
// narrow oop implicit null checks.
|
||||
uintptr_t heap_base = (uintptr_t)Universe::heap_base();
|
||||
if ((uintptr_t)offset >= heap_base) {
|
||||
// Normalize offset for the next check.
|
||||
offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
|
||||
}
|
||||
}
|
||||
bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
|
||||
return !offset_in_first_page;
|
||||
}
|
||||
|
@ -58,7 +58,3 @@ void MacroAssembler::get_thread(Register thread) {
|
||||
"Thread Pointer Offset has not been initialized");
|
||||
movl(thread, Address(thread, ThreadLocalStorage::get_thread_ptr_offset()));
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
return offset < 0 || (int)os::vm_page_size() <= offset;
|
||||
}
|
||||
|
@ -65,19 +65,3 @@ void MacroAssembler::get_thread(Register thread) {
|
||||
popq(rax);
|
||||
}
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Exception handler checks the nmethod's implicit null checks table
|
||||
// only when this method returns false.
|
||||
if (UseCompressedOops) {
|
||||
// The first page after heap_base is unmapped and
|
||||
// the 'offset' is equal to [heap_base + offset] for
|
||||
// narrow oop implicit null checks.
|
||||
uintptr_t heap_base = (uintptr_t)Universe::heap_base();
|
||||
if ((uintptr_t)offset >= heap_base) {
|
||||
// Normalize offset for the next check.
|
||||
offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
|
||||
}
|
||||
}
|
||||
return offset < 0 || os::vm_page_size() <= offset;
|
||||
}
|
||||
|
@ -246,6 +246,24 @@ void AbstractAssembler::block_comment(const char* comment) {
|
||||
}
|
||||
}
|
||||
|
||||
bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
|
||||
// Exception handler checks the nmethod's implicit null checks table
|
||||
// only when this method returns false.
|
||||
#ifndef SPARC
|
||||
// Sparc does not have based addressing
|
||||
if (UseCompressedOops) {
|
||||
// The first page after heap_base is unmapped and
|
||||
// the 'offset' is equal to [heap_base + offset] for
|
||||
// narrow oop implicit null checks.
|
||||
uintptr_t heap_base = (uintptr_t)Universe::heap_base();
|
||||
if ((uintptr_t)offset >= heap_base) {
|
||||
// Normalize offset for the next check.
|
||||
offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
|
||||
}
|
||||
}
|
||||
#endif // SPARC
|
||||
return offset < 0 || os::vm_page_size() <= offset;
|
||||
}
|
||||
|
||||
#ifndef PRODUCT
|
||||
void Label::print_instructions(MacroAssembler* masm) const {
|
||||
|
@ -61,6 +61,8 @@ ParMarkBitMap::initialize(MemRegion covered_region)
|
||||
if (_virtual_space != NULL) {
|
||||
delete _virtual_space;
|
||||
_virtual_space = NULL;
|
||||
// Release memory reserved in the space.
|
||||
rs.release();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -108,8 +108,8 @@ jint ParallelScavengeHeap::initialize() {
|
||||
// size than is needed or wanted for the perm gen. Use the "compound
|
||||
// alignment" ReservedSpace ctor to avoid having to use the same page size for
|
||||
// all gens.
|
||||
ReservedSpace heap_rs(pg_max_size, pg_align, og_max_size + yg_max_size,
|
||||
og_align);
|
||||
ReservedHeapSpace heap_rs(pg_max_size, pg_align, og_max_size + yg_max_size,
|
||||
og_align);
|
||||
os::trace_page_sizes("ps perm", pg_min_size, pg_max_size, pg_page_sz,
|
||||
heap_rs.base(), pg_max_size);
|
||||
os::trace_page_sizes("ps main", og_min_size + yg_min_size,
|
||||
|
@ -422,6 +422,8 @@ ParallelCompactData::create_vspace(size_t count, size_t element_size)
|
||||
return vspace;
|
||||
}
|
||||
delete vspace;
|
||||
// Release memory reserved in the space.
|
||||
rs.release();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -71,13 +71,8 @@ bool PSVirtualSpace::contains(void* p) const {
|
||||
|
||||
void PSVirtualSpace::release() {
|
||||
DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));
|
||||
if (reserved_low_addr() != NULL) {
|
||||
if (special()) {
|
||||
os::release_memory_special(reserved_low_addr(), reserved_size());
|
||||
} else {
|
||||
(void)os::release_memory(reserved_low_addr(), reserved_size());
|
||||
}
|
||||
}
|
||||
// This may not release memory it didn't reserve.
|
||||
// Use rs.release() to release the underlying memory instead.
|
||||
_reserved_low_addr = _reserved_high_addr = NULL;
|
||||
_committed_low_addr = _committed_high_addr = NULL;
|
||||
_special = false;
|
||||
|
@ -222,8 +222,8 @@ char* GenCollectedHeap::allocate(size_t alignment,
|
||||
|
||||
*_total_reserved = total_reserved;
|
||||
*_n_covered_regions = n_covered_regions;
|
||||
*heap_rs = ReservedSpace(total_reserved, alignment,
|
||||
UseLargePages, heap_address);
|
||||
*heap_rs = ReservedHeapSpace(total_reserved, alignment,
|
||||
UseLargePages, heap_address);
|
||||
|
||||
return heap_address;
|
||||
}
|
||||
|
@ -2173,8 +2173,7 @@ static char* get_bad_address() {
|
||||
size_t size = os::vm_allocation_granularity();
|
||||
bad_address = os::reserve_memory(size);
|
||||
if (bad_address != NULL) {
|
||||
os::commit_memory(bad_address, size);
|
||||
os::protect_memory(bad_address, size);
|
||||
os::protect_memory(bad_address, size, os::MEM_PROT_READ);
|
||||
}
|
||||
}
|
||||
return bad_address;
|
||||
|
@ -1176,8 +1176,7 @@ void Arguments::set_ergonomics_flags() {
|
||||
// by ergonomics.
|
||||
if (MaxHeapSize <= max_heap_for_compressed_oops()) {
|
||||
if (FLAG_IS_DEFAULT(UseCompressedOops)) {
|
||||
// Leave compressed oops off by default. Uncomment
|
||||
// the following line to return it to default status.
|
||||
// Turn off until bug is fixed.
|
||||
// FLAG_SET_ERGO(bool, UseCompressedOops, true);
|
||||
}
|
||||
} else {
|
||||
|
@ -922,8 +922,9 @@ void os::serialize_thread_states() {
|
||||
// time and expensive page trap spinning, 'SerializePageLock' is used to block
|
||||
// the mutator thread if such case is encountered. See bug 6546278 for details.
|
||||
Thread::muxAcquire(&SerializePageLock, "serialize_thread_states");
|
||||
os::protect_memory( (char *)os::get_memory_serialize_page(), os::vm_page_size() );
|
||||
os::unguard_memory( (char *)os::get_memory_serialize_page(), os::vm_page_size() );
|
||||
os::protect_memory((char *)os::get_memory_serialize_page(),
|
||||
os::vm_page_size(), MEM_PROT_READ, /*is_committed*/true );
|
||||
os::unguard_memory((char *)os::get_memory_serialize_page(), os::vm_page_size());
|
||||
Thread::muxRelease(&SerializePageLock);
|
||||
}
|
||||
|
||||
|
@ -193,7 +193,11 @@ class os: AllStatic {
|
||||
static bool commit_memory(char* addr, size_t size, size_t alignment_hint);
|
||||
static bool uncommit_memory(char* addr, size_t bytes);
|
||||
static bool release_memory(char* addr, size_t bytes);
|
||||
static bool protect_memory(char* addr, size_t bytes);
|
||||
|
||||
enum ProtType { MEM_PROT_NONE, MEM_PROT_READ, MEM_PROT_RW, MEM_PROT_RWX };
|
||||
static bool protect_memory(char* addr, size_t bytes, ProtType prot,
|
||||
bool is_committed = false);
|
||||
|
||||
static bool guard_memory(char* addr, size_t bytes);
|
||||
static bool unguard_memory(char* addr, size_t bytes);
|
||||
static char* map_memory(int fd, const char* file_name, size_t file_offset,
|
||||
|
@ -28,12 +28,15 @@
|
||||
|
||||
// ReservedSpace
|
||||
ReservedSpace::ReservedSpace(size_t size) {
|
||||
initialize(size, 0, false, NULL);
|
||||
initialize(size, 0, false, NULL, 0);
|
||||
}
|
||||
|
||||
ReservedSpace::ReservedSpace(size_t size, size_t alignment,
|
||||
bool large, char* requested_address) {
|
||||
initialize(size, alignment, large, requested_address);
|
||||
bool large,
|
||||
char* requested_address,
|
||||
const size_t noaccess_prefix) {
|
||||
initialize(size+noaccess_prefix, alignment, large, requested_address,
|
||||
noaccess_prefix);
|
||||
}
|
||||
|
||||
char *
|
||||
@ -105,7 +108,8 @@ char* ReservedSpace::reserve_and_align(const size_t reserve_size,
|
||||
ReservedSpace::ReservedSpace(const size_t prefix_size,
|
||||
const size_t prefix_align,
|
||||
const size_t suffix_size,
|
||||
const size_t suffix_align)
|
||||
const size_t suffix_align,
|
||||
const size_t noaccess_prefix)
|
||||
{
|
||||
assert(prefix_size != 0, "sanity");
|
||||
assert(prefix_align != 0, "sanity");
|
||||
@ -118,12 +122,16 @@ ReservedSpace::ReservedSpace(const size_t prefix_size,
|
||||
assert((suffix_align & prefix_align - 1) == 0,
|
||||
"suffix_align not divisible by prefix_align");
|
||||
|
||||
// Add in noaccess_prefix to prefix_size;
|
||||
const size_t adjusted_prefix_size = prefix_size + noaccess_prefix;
|
||||
const size_t size = adjusted_prefix_size + suffix_size;
|
||||
|
||||
// On systems where the entire region has to be reserved and committed up
|
||||
// front, the compound alignment normally done by this method is unnecessary.
|
||||
const bool try_reserve_special = UseLargePages &&
|
||||
prefix_align == os::large_page_size();
|
||||
if (!os::can_commit_large_page_memory() && try_reserve_special) {
|
||||
initialize(prefix_size + suffix_size, prefix_align, true);
|
||||
initialize(size, prefix_align, true, NULL, noaccess_prefix);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -131,15 +139,19 @@ ReservedSpace::ReservedSpace(const size_t prefix_size,
|
||||
_size = 0;
|
||||
_alignment = 0;
|
||||
_special = false;
|
||||
_noaccess_prefix = 0;
|
||||
|
||||
// Assert that if noaccess_prefix is used, it is the same as prefix_align.
|
||||
assert(noaccess_prefix == 0 ||
|
||||
noaccess_prefix == prefix_align, "noaccess prefix wrong");
|
||||
|
||||
// Optimistically try to reserve the exact size needed.
|
||||
const size_t size = prefix_size + suffix_size;
|
||||
char* addr = os::reserve_memory(size, NULL, prefix_align);
|
||||
if (addr == NULL) return;
|
||||
|
||||
// Check whether the result has the needed alignment (unlikely unless
|
||||
// prefix_align == suffix_align).
|
||||
const size_t ofs = size_t(addr) + prefix_size & suffix_align - 1;
|
||||
const size_t ofs = size_t(addr) + adjusted_prefix_size & suffix_align - 1;
|
||||
if (ofs != 0) {
|
||||
// Wrong alignment. Release, allocate more space and do manual alignment.
|
||||
//
|
||||
@ -153,11 +165,11 @@ ReservedSpace::ReservedSpace(const size_t prefix_size,
|
||||
}
|
||||
|
||||
const size_t extra = MAX2(ofs, suffix_align - ofs);
|
||||
addr = reserve_and_align(size + extra, prefix_size, prefix_align,
|
||||
addr = reserve_and_align(size + extra, adjusted_prefix_size, prefix_align,
|
||||
suffix_size, suffix_align);
|
||||
if (addr == NULL) {
|
||||
// Try an even larger region. If this fails, address space is exhausted.
|
||||
addr = reserve_and_align(size + suffix_align, prefix_size,
|
||||
addr = reserve_and_align(size + suffix_align, adjusted_prefix_size,
|
||||
prefix_align, suffix_size, suffix_align);
|
||||
}
|
||||
}
|
||||
@ -165,10 +177,12 @@ ReservedSpace::ReservedSpace(const size_t prefix_size,
|
||||
_base = addr;
|
||||
_size = size;
|
||||
_alignment = prefix_align;
|
||||
_noaccess_prefix = noaccess_prefix;
|
||||
}
|
||||
|
||||
void ReservedSpace::initialize(size_t size, size_t alignment, bool large,
|
||||
char* requested_address) {
|
||||
char* requested_address,
|
||||
const size_t noaccess_prefix) {
|
||||
const size_t granularity = os::vm_allocation_granularity();
|
||||
assert((size & granularity - 1) == 0,
|
||||
"size not aligned to os::vm_allocation_granularity()");
|
||||
@ -181,6 +195,7 @@ void ReservedSpace::initialize(size_t size, size_t alignment, bool large,
|
||||
_size = 0;
|
||||
_special = false;
|
||||
_alignment = 0;
|
||||
_noaccess_prefix = 0;
|
||||
if (size == 0) {
|
||||
return;
|
||||
}
|
||||
@ -220,7 +235,8 @@ void ReservedSpace::initialize(size_t size, size_t alignment, bool large,
|
||||
// important. If available space is not detected, return NULL.
|
||||
|
||||
if (requested_address != 0) {
|
||||
base = os::attempt_reserve_memory_at(size, requested_address);
|
||||
base = os::attempt_reserve_memory_at(size,
|
||||
requested_address-noaccess_prefix);
|
||||
} else {
|
||||
base = os::reserve_memory(size, NULL, alignment);
|
||||
}
|
||||
@ -259,6 +275,11 @@ void ReservedSpace::initialize(size_t size, size_t alignment, bool large,
|
||||
_base = base;
|
||||
_size = size;
|
||||
_alignment = MAX2(alignment, (size_t) os::vm_page_size());
|
||||
_noaccess_prefix = noaccess_prefix;
|
||||
|
||||
// Assert that if noaccess_prefix is used, it is the same as alignment.
|
||||
assert(noaccess_prefix == 0 ||
|
||||
noaccess_prefix == _alignment, "noaccess prefix wrong");
|
||||
|
||||
assert(markOopDesc::encode_pointer_as_mark(_base)->decode_pointer() == _base,
|
||||
"area must be distinguisable from marks for mark-sweep");
|
||||
@ -274,6 +295,7 @@ ReservedSpace::ReservedSpace(char* base, size_t size, size_t alignment,
|
||||
_base = base;
|
||||
_size = size;
|
||||
_alignment = alignment;
|
||||
_noaccess_prefix = 0;
|
||||
_special = special;
|
||||
}
|
||||
|
||||
@ -320,17 +342,58 @@ size_t ReservedSpace::allocation_align_size_down(size_t size) {
|
||||
|
||||
void ReservedSpace::release() {
|
||||
if (is_reserved()) {
|
||||
char *real_base = _base - _noaccess_prefix;
|
||||
const size_t real_size = _size + _noaccess_prefix;
|
||||
if (special()) {
|
||||
os::release_memory_special(_base, _size);
|
||||
os::release_memory_special(real_base, real_size);
|
||||
} else{
|
||||
os::release_memory(_base, _size);
|
||||
os::release_memory(real_base, real_size);
|
||||
}
|
||||
_base = NULL;
|
||||
_size = 0;
|
||||
_noaccess_prefix = 0;
|
||||
_special = false;
|
||||
}
|
||||
}
|
||||
|
||||
void ReservedSpace::protect_noaccess_prefix(const size_t size) {
|
||||
// If there is noaccess prefix, return.
|
||||
if (_noaccess_prefix == 0) return;
|
||||
|
||||
assert(_noaccess_prefix >= (size_t)os::vm_page_size(),
|
||||
"must be at least page size big");
|
||||
|
||||
// Protect memory at the base of the allocated region.
|
||||
// If special, the page was committed (only matters on windows)
|
||||
if (!os::protect_memory(_base, _noaccess_prefix, os::MEM_PROT_NONE,
|
||||
_special)) {
|
||||
fatal("cannot protect protection page");
|
||||
}
|
||||
|
||||
_base += _noaccess_prefix;
|
||||
_size -= _noaccess_prefix;
|
||||
assert((size == _size) && ((uintptr_t)_base % _alignment == 0),
|
||||
"must be exactly of required size and alignment");
|
||||
}
|
||||
|
||||
ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment,
|
||||
bool large, char* requested_address) :
|
||||
ReservedSpace(size, alignment, large,
|
||||
requested_address,
|
||||
UseCompressedOops ? lcm(os::vm_page_size(), alignment) : 0) {
|
||||
// Only reserved space for the java heap should have a noaccess_prefix
|
||||
// if using compressed oops.
|
||||
protect_noaccess_prefix(size);
|
||||
}
|
||||
|
||||
ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size,
|
||||
const size_t prefix_align,
|
||||
const size_t suffix_size,
|
||||
const size_t suffix_align) :
|
||||
ReservedSpace(prefix_size, prefix_align, suffix_size, suffix_align,
|
||||
UseCompressedOops ? lcm(os::vm_page_size(), prefix_align) : 0) {
|
||||
protect_noaccess_prefix(prefix_size+suffix_size);
|
||||
}
|
||||
|
||||
// VirtualSpace
|
||||
|
||||
@ -348,6 +411,7 @@ VirtualSpace::VirtualSpace() {
|
||||
_lower_alignment = 0;
|
||||
_middle_alignment = 0;
|
||||
_upper_alignment = 0;
|
||||
_special = false;
|
||||
}
|
||||
|
||||
|
||||
@ -402,7 +466,8 @@ VirtualSpace::~VirtualSpace() {
|
||||
|
||||
|
||||
void VirtualSpace::release() {
|
||||
(void)os::release_memory(low_boundary(), reserved_size());
|
||||
// This does not release memory it never reserved.
|
||||
// Caller must release via rs.release();
|
||||
_low_boundary = NULL;
|
||||
_high_boundary = NULL;
|
||||
_low = NULL;
|
||||
|
@ -29,13 +29,15 @@ class ReservedSpace VALUE_OBJ_CLASS_SPEC {
|
||||
private:
|
||||
char* _base;
|
||||
size_t _size;
|
||||
size_t _noaccess_prefix;
|
||||
size_t _alignment;
|
||||
bool _special;
|
||||
|
||||
// ReservedSpace
|
||||
ReservedSpace(char* base, size_t size, size_t alignment, bool special);
|
||||
void initialize(size_t size, size_t alignment, bool large,
|
||||
char* requested_address = NULL);
|
||||
char* requested_address,
|
||||
const size_t noaccess_prefix);
|
||||
|
||||
// Release parts of an already-reserved memory region [addr, addr + len) to
|
||||
// get a new region that has "compound alignment." Return the start of the
|
||||
@ -59,13 +61,19 @@ class ReservedSpace VALUE_OBJ_CLASS_SPEC {
|
||||
const size_t suffix_size,
|
||||
const size_t suffix_align);
|
||||
|
||||
protected:
|
||||
// Create protection page at the beginning of the space.
|
||||
void protect_noaccess_prefix(const size_t size);
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
ReservedSpace(size_t size);
|
||||
ReservedSpace(size_t size, size_t alignment, bool large,
|
||||
char* requested_address = NULL);
|
||||
char* requested_address = NULL,
|
||||
const size_t noaccess_prefix = 0);
|
||||
ReservedSpace(const size_t prefix_size, const size_t prefix_align,
|
||||
const size_t suffix_size, const size_t suffix_align);
|
||||
const size_t suffix_size, const size_t suffix_align,
|
||||
const size_t noaccess_prefix);
|
||||
|
||||
// Accessors
|
||||
char* base() const { return _base; }
|
||||
@ -73,6 +81,8 @@ class ReservedSpace VALUE_OBJ_CLASS_SPEC {
|
||||
size_t alignment() const { return _alignment; }
|
||||
bool special() const { return _special; }
|
||||
|
||||
size_t noaccess_prefix() const { return _noaccess_prefix; }
|
||||
|
||||
bool is_reserved() const { return _base != NULL; }
|
||||
void release();
|
||||
|
||||
@ -104,6 +114,16 @@ ReservedSpace ReservedSpace::last_part(size_t partition_size)
|
||||
return last_part(partition_size, alignment());
|
||||
}
|
||||
|
||||
// Class encapsulating behavior specific of memory space reserved for Java heap
|
||||
class ReservedHeapSpace : public ReservedSpace {
|
||||
public:
|
||||
// Constructor
|
||||
ReservedHeapSpace(size_t size, size_t forced_base_alignment,
|
||||
bool large, char* requested_address);
|
||||
ReservedHeapSpace(const size_t prefix_size, const size_t prefix_align,
|
||||
const size_t suffix_size, const size_t suffix_align);
|
||||
};
|
||||
|
||||
// VirtualSpace is data structure for committing a previously reserved address range in smaller chunks.
|
||||
|
||||
class VirtualSpace VALUE_OBJ_CLASS_SPEC {
|
||||
|
@ -5,3 +5,4 @@ bafed478d67c3acf7744aaad88b9404261ea6739 jdk7-b27
|
||||
b996318955c0ad8e9fa0ffb56c74f626786e863f jdk7-b28
|
||||
617ee8607cfd5fd81f233f3c0b690f85084687a0 jdk7-b29
|
||||
2d94a238a1641d074e6032dcdceed461d6f85d6a jdk7-b30
|
||||
255d64ee287e926e8629dd80bc67690e65eeba30 jdk7-b31
|
||||
|
@ -5,3 +5,4 @@ debd37e1a422e580edb086c95d6e89199133a39c jdk7-b26
|
||||
eefcd5204500a11d6aa802dca9f961cf10ab64c2 jdk7-b28
|
||||
836c55713abab186e4de0c6eabd06ff008c7b8d0 jdk7-b29
|
||||
7f2466f8cc7009702e548d1a763254f546024d7e jdk7-b30
|
||||
f978623825364a2ad9c6f51d02fc9424a8b0bc86 jdk7-b31
|
||||
|
@ -97,9 +97,6 @@ ifeq ($(PLATFORM), windows)
|
||||
/D "J2SE_FTYPE=0x1L"
|
||||
|
||||
RES = $(OBJDIR)/$(PGRM).res
|
||||
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
else
|
||||
LDOUTPUT = -o #Have a space
|
||||
LDDFLAGS += -lc
|
||||
|
@ -55,9 +55,6 @@ LIBRARY = jaas_nt
|
||||
EXTRA_LIBS += netapi32.lib user32.lib mpr.lib
|
||||
endif #fdlibm
|
||||
# code generates errors when compiled at warning level 3 and warnings are fatal
|
||||
ifeq ($(ARCH_DATA_MODEL), 64)
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif # ARCH_DATA_MODEL
|
||||
endif # windows
|
||||
|
||||
ifeq ($(PLATFORM), solaris)
|
||||
|
@ -149,10 +149,9 @@ endif # ARCH
|
||||
PIC_CODE_LARGE = -fPIC
|
||||
PIC_CODE_SMALL = -fpic
|
||||
GLOBAL_KPIC = $(PIC_CODE_LARGE)
|
||||
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
|
||||
ifeq ($(ARCH), amd64)
|
||||
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS) -pipe
|
||||
else
|
||||
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
|
||||
CFLAGS_COMMON += -pipe
|
||||
endif
|
||||
|
||||
# Linux 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
|
||||
|
@ -40,6 +40,9 @@
|
||||
# LDLIBS (set $(EXTRA_LIBS) instead)
|
||||
# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
|
||||
# LINTFLAGS (set $(OTHER_LINTFLAGS) instead)
|
||||
#
|
||||
# Note: CPPFLAGS are used in C and C++ compiles.
|
||||
#
|
||||
|
||||
# Get shared JDK settings
|
||||
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
|
||||
@ -112,6 +115,10 @@ endif
|
||||
# Required with many of the source files.
|
||||
# -mt Assume multi-threaded (important)
|
||||
#
|
||||
# The more unusual options to the Sun C compiler:
|
||||
# +w Print more warnings
|
||||
# +w2 Maximum warnings
|
||||
#
|
||||
|
||||
#
|
||||
# Debug flag for C and C++ compiler
|
||||
@ -140,15 +147,34 @@ ifeq ($(FASTDEBUG), true)
|
||||
CXXFLAGS_DEBUG_OPTION = -g0 $(CC_FASTDEBUG_OPT)
|
||||
endif
|
||||
|
||||
CFLAGS_COMMON = -v -mt -L$(OBJDIR) -xc99=%none
|
||||
CFLAGS_COMMON = -L$(OBJDIR)
|
||||
|
||||
# Do not allow C99 language features like declarations in code etc.
|
||||
CFLAGS_COMMON += -xc99=%none
|
||||
|
||||
# Allow C++ comments in C code
|
||||
CFLAGS_COMMON += -xCC
|
||||
CFLAGS_COMMON += -errshort=tags
|
||||
|
||||
# Show error message tags on errors
|
||||
CFLAGS_COMMON += -errshort=tags
|
||||
CXXFLAGS_COMMON += -errtags=yes
|
||||
|
||||
# Optimization flags
|
||||
CFLAGS_OPT = $(POPT)
|
||||
|
||||
# Debug version flags
|
||||
CFLAGS_DBG = $(CFLAGS_DEBUG_OPTION)
|
||||
CFLAGS_COMMON += -Xa $(CFLAGS_REQUIRED)
|
||||
|
||||
# Required C compiler flags
|
||||
CFLAGS_COMMON += -Xa $(CFLAGS_REQUIRED)
|
||||
|
||||
# Maximum warnings all the time
|
||||
CXXFLAGS_COMMON += +w
|
||||
CFLAGS_COMMON += -v
|
||||
|
||||
# Assume MT behavior all the time (important)
|
||||
CXXFLAGS_COMMON = -mt
|
||||
CXXFLAGS_COMMON += -mt
|
||||
CFLAGS_COMMON += -mt
|
||||
|
||||
# Assume no C++ exceptions are used
|
||||
CXXFLAGS_COMMON += -features=no%except -DCC_NOEX
|
||||
@ -237,8 +263,8 @@ LINTFLAGS_COMMON += $(LINT_XARCH_OPTION)
|
||||
# OTHER_CFLAGS += -DPERTURBALOT
|
||||
#
|
||||
|
||||
CPPFLAGS_COMMON = -D$(ARCH_FAMILY) -D__solaris__ -D_REENTRANT
|
||||
CPPFLAGS_OPT =
|
||||
CPPFLAGS_COMMON = -D__solaris__ -D$(ARCH_FAMILY)
|
||||
CPPFLAGS_OPT = -DNDEBUG
|
||||
CPPFLAGS_DBG = -DDEBUG
|
||||
|
||||
ifeq ($(ARCH_FAMILY), i586)
|
||||
|
@ -283,7 +283,7 @@ CPPFLAGS_COMMON = -DWIN32 -DIAL -D_LITTLE_ENDIAN
|
||||
ifeq ($(ARCH), amd64)
|
||||
CPPFLAGS_COMMON += -D_AMD64_ -Damd64
|
||||
else
|
||||
CPPFLAGS_COMMON += -DWIN32 -D_X86_ -Dx86
|
||||
CPPFLAGS_COMMON += -D_X86_ -Dx86
|
||||
endif
|
||||
CPPFLAGS_COMMON += -DWIN32_LEAN_AND_MEAN
|
||||
|
||||
@ -292,17 +292,24 @@ CPPFLAGS_COMMON += -DWIN32_LEAN_AND_MEAN
|
||||
#
|
||||
CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map
|
||||
|
||||
#
|
||||
# Use -wdNNNN to disable warning NNNN.
|
||||
# C4800 is a warning about bool performance casts (can't make go away)
|
||||
#
|
||||
COMPILER_WARNINGS_TO_IGNORE = 4800
|
||||
CFLAGS_COMMON += $(COMPILER_WARNINGS_TO_IGNORE:%=-wd%)
|
||||
|
||||
#
|
||||
# Add warnings and extra on 64bit issues
|
||||
#
|
||||
ifeq ($(ARCH_DATA_MODEL), 64)
|
||||
CFLAGS_COMMON += -Wp64
|
||||
endif
|
||||
CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
|
||||
|
||||
#
|
||||
# Treat compiler warnings as errors, if requested
|
||||
#
|
||||
CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
|
||||
ifeq ($(COMPILER_WARNINGS_FATAL),true)
|
||||
CFLAGS_COMMON += -WX
|
||||
endif
|
||||
@ -352,17 +359,9 @@ else
|
||||
# BUILD_WIN_SA=1
|
||||
# on the make command.
|
||||
ifdef BUILD_WIN_SA
|
||||
ifeq ($(ARCH), amd64)
|
||||
INCLUDE_SA = true
|
||||
else
|
||||
INCLUDE_SA = true
|
||||
endif
|
||||
INCLUDE_SA = true
|
||||
else
|
||||
ifeq ($(ARCH), amd64)
|
||||
INCLUDE_SA = false
|
||||
else
|
||||
INCLUDE_SA = false
|
||||
endif
|
||||
INCLUDE_SA = false
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -404,7 +403,6 @@ ifdef JDK_UPDATE_VERSION
|
||||
else
|
||||
JDK_UPDATE_VER := 0
|
||||
endif
|
||||
JDK_VER = $(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
|
||||
|
||||
RC_FLAGS = /l 0x409 /r
|
||||
|
||||
@ -414,15 +412,23 @@ else
|
||||
RC_FLAGS += $(MS_RC_DEBUG_OPTION)
|
||||
endif
|
||||
|
||||
ifndef COPYRIGHT_YEAR
|
||||
COPYRIGHT_YEAR = 2007
|
||||
endif
|
||||
# Values for the RC variables defined in RC_FLAGS
|
||||
JDK_RC_BUILD_ID = $(FULL_VERSION)
|
||||
JDK_RC_COMPANY = $(COMPANY_NAME)
|
||||
JDK_RC_COMPONENT = $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) binary
|
||||
JDK_RC_VER = \
|
||||
$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
|
||||
JDK_RC_COPYRIGHT = Copyright \xA9 $(COPYRIGHT_YEAR)
|
||||
JDK_RC_NAME = \
|
||||
$(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)
|
||||
JDK_RC_FVER = \
|
||||
$(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
|
||||
|
||||
# J2SE name required here
|
||||
RC_FLAGS += -d "J2SE_BUILD_ID=$(FULL_VERSION)" \
|
||||
-d "J2SE_COMPANY=$(COMPANY_NAME)" \
|
||||
-d "J2SE_COMPONENT=$(PRODUCT_NAME) Platform SE binary" \
|
||||
-d "J2SE_VER=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)" \
|
||||
-d "J2SE_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
|
||||
-d "J2SE_NAME=$(PRODUCT_NAME) Platform SE $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)" \
|
||||
-d "J2SE_FVER=$(JDK_VER)"
|
||||
RC_FLAGS += -d "J2SE_BUILD_ID=$(JDK_RC_BUILD_ID)" \
|
||||
-d "J2SE_COMPANY=$(JDK_RC_COMPANY)" \
|
||||
-d "J2SE_COMPONENT=$(JDK_RC_COMPONENT)" \
|
||||
-d "J2SE_VER=$(JDK_RC_VER)" \
|
||||
-d "J2SE_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
|
||||
-d "J2SE_NAME=$(JDK_RC_NAME)" \
|
||||
-d "J2SE_FVER=$(JDK_RC_FVER)"
|
||||
|
@ -703,7 +703,7 @@ endif
|
||||
ifdef ALT_COPYRIGHT_YEAR
|
||||
COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
|
||||
else
|
||||
COPYRIGHT_YEAR = $(shell $(DATE) '+%Y')
|
||||
COPYRIGHT_YEAR := $(shell $(DATE) '+%Y')
|
||||
endif
|
||||
|
||||
# Install of imported file (JDK_IMPORT_PATH, or some other external location)
|
||||
|
@ -73,23 +73,18 @@ ifeq ($(PLATFORM), linux)
|
||||
REQUIRED_CC_VER = 4.0
|
||||
REQUIRED_GCC_VER = 4.0.*
|
||||
else
|
||||
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||
# i586
|
||||
REQUIRED_CC_VER = 3.2
|
||||
REQUIRED_GCC_VER = 3.2.1*
|
||||
REQUIRED_GCC_VER_INT = 3.2.1-7a
|
||||
else
|
||||
ifeq ($(ARCH), amd64)
|
||||
# amd64
|
||||
REQUIRED_CC_VER = 3.2
|
||||
REQUIRED_GCC_VER = 3.2.*
|
||||
endif
|
||||
ifeq ($(ARCH), ia64)
|
||||
# ia64
|
||||
REQUIRED_CC_VER = 3.2
|
||||
REQUIRED_GCC_VER = 2.9[56789].*
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||
REQUIRED_GCC_VER = 3.2.1*
|
||||
REQUIRED_GCC_VER_INT = 3.2.1-7a
|
||||
else
|
||||
ifeq ($(ARCH), amd64)
|
||||
REQUIRED_GCC_VER = 3.2.*
|
||||
endif
|
||||
ifeq ($(ARCH), ia64)
|
||||
REQUIRED_GCC_VER = 2.9[56789].*
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
# Option used to create a shared library
|
||||
SHARED_LIBRARY_FLAG = -shared -mimpure-text
|
||||
|
@ -107,7 +107,10 @@ JAVACFLAGS =
|
||||
ifeq ($(DEBUG_CLASSFILES),true)
|
||||
JAVACFLAGS += -g
|
||||
endif
|
||||
ifeq ($(COMPILER_WARNINGS_FATAL), true)
|
||||
ifeq ($(JAVAC_MAX_WARNINGS), true)
|
||||
JAVACFLAGS += -Xlint:all
|
||||
endif
|
||||
ifeq ($(JAVAC_WARNINGS_FATAL), true)
|
||||
JAVACFLAGS += -Werror
|
||||
endif
|
||||
|
||||
@ -180,7 +183,10 @@ endif
|
||||
# The javac options supplied to the boot javac is limited. This compiler
|
||||
# should only be used to build the 'make/tools' sources, which are not
|
||||
# class files that end up in the classes directory.
|
||||
ifeq ($(COMPILER_WARNINGS_FATAL), true)
|
||||
ifeq ($(JAVAC_MAX_WARNINGS), true)
|
||||
BOOT_JAVACFLAGS += -Xlint:all
|
||||
endif
|
||||
ifeq ($(JAVAC_WARNINGS_FATAL), true)
|
||||
BOOT_JAVACFLAGS += -Werror
|
||||
endif
|
||||
BOOT_JAVACFLAGS += -encoding ascii
|
||||
|
@ -188,16 +188,18 @@ ifndef MILESTONE
|
||||
endif
|
||||
|
||||
# Default names
|
||||
LAUNCHER_NAME = java
|
||||
PRODUCT_NAME = Java(TM)
|
||||
PRODUCT_SUFFIX = SE Runtime Environment
|
||||
COMPANY_NAME = Sun Microsystems, Inc.
|
||||
|
||||
ifdef OPENJDK
|
||||
LAUNCHER_NAME = openjdk
|
||||
PRODUCT_NAME = OpenJDK
|
||||
PRODUCT_SUFFIX = Runtime Environment
|
||||
COMPANY_NAME =
|
||||
JDK_RC_PLATFORM_NAME = Platform
|
||||
COMPANY_NAME = N/A
|
||||
else
|
||||
LAUNCHER_NAME = java
|
||||
PRODUCT_NAME = Java(TM)
|
||||
PRODUCT_SUFFIX = SE Runtime Environment
|
||||
JDK_RC_PLATFORM_NAME = Platform SE
|
||||
COMPANY_NAME = Sun Microsystems, Inc.
|
||||
endif
|
||||
|
||||
RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
|
||||
|
@ -373,34 +373,40 @@ ifeq ($(PLATFORM), windows)
|
||||
REQUIRED_DXSDK_VER = 0x0700
|
||||
OS_VENDOR = Microsoft
|
||||
# How much RAM does this machine have:
|
||||
ifeq ($(USING_CYGWIN),true)
|
||||
# CYGWIN has the 'free' utility
|
||||
_MB_OF_MEMORY := \
|
||||
$(shell free -m | grep Mem: | awk '{print $$2;}' )
|
||||
else
|
||||
# Windows 2000 has the mem utility, but two memory areas
|
||||
# extended memory is what is beyond 1024M
|
||||
_B_OF_EXT_MEMORY := \
|
||||
$(shell mem 2> $(DEV_NULL) | grep 'total contiguous extended memory' | awk '{print $$1;}')
|
||||
ifeq ($(_B_OF_EXT_MEMORY),)
|
||||
_B_OF_MEMORY := \
|
||||
$(shell mem 2> $(DEV_NULL) | grep 'total conventional memory' | awk '{print $$1;}')
|
||||
else
|
||||
_B_OF_MEMORY := \
|
||||
$(shell expr 1048576 '+' $(_B_OF_EXT_MEMORY) 2> $(DEV_NULL))
|
||||
endif
|
||||
ifeq ($(_B_OF_MEMORY),)
|
||||
# Windows 2003 has the systeminfo utility use it if mem doesn't work
|
||||
ifeq ($(JDK_HAS_MEM_INFO),)
|
||||
ifeq ($(USING_CYGWIN),true)
|
||||
# CYGWIN has the 'free' utility
|
||||
_MB_OF_MEMORY := \
|
||||
$(shell systeminfo 2> $(DEV_NULL) | grep 'Total Physical Memory:' | awk '{print $$4;}' | sed -e 's@,@@')
|
||||
$(shell free -m | grep Mem: | awk '{print $$2;}' )
|
||||
else
|
||||
_MB_OF_MEMORY := $(shell expr $(_B_OF_MEMORY) '/' 1024 2> $(DEV_NULL))
|
||||
# Windows 2000 has the mem utility, but two memory areas
|
||||
# extended memory is what is beyond 1024M
|
||||
_B_OF_EXT_MEMORY := \
|
||||
$(shell mem 2> $(DEV_NULL) | \
|
||||
grep 'total contiguous extended memory' | awk '{print $$1;}')
|
||||
ifeq ($(_B_OF_EXT_MEMORY),)
|
||||
_B_OF_MEMORY := \
|
||||
$(shell mem 2> $(DEV_NULL) | \
|
||||
grep 'total conventional memory' | awk '{print $$1;}')
|
||||
else
|
||||
_B_OF_MEMORY := \
|
||||
$(shell expr 1048576 '+' $(_B_OF_EXT_MEMORY) 2> $(DEV_NULL))
|
||||
endif
|
||||
ifeq ($(_B_OF_MEMORY),)
|
||||
# Windows 2003 has the systeminfo utility use it if mem doesn't work
|
||||
_MB_OF_MEMORY := \
|
||||
$(shell systeminfo 2> $(DEV_NULL) | \
|
||||
grep 'Total Physical Memory:' | \
|
||||
awk '{print $$4;}' | sed -e 's@,@@')
|
||||
else
|
||||
_MB_OF_MEMORY := $(shell expr $(_B_OF_MEMORY) '/' 1024 2> $(DEV_NULL))
|
||||
endif
|
||||
endif
|
||||
ifeq ($(shell expr $(_MB_OF_MEMORY) '+' 0 2> $(DEV_NULL)), $(_MB_OF_MEMORY))
|
||||
MB_OF_MEMORY := $(_MB_OF_MEMORY)
|
||||
else
|
||||
MB_OF_MEMORY := 512
|
||||
endif
|
||||
endif
|
||||
ifeq ($(shell expr $(_MB_OF_MEMORY) '+' 0 2> $(DEV_NULL)), $(_MB_OF_MEMORY))
|
||||
MB_OF_MEMORY := $(_MB_OF_MEMORY)
|
||||
else
|
||||
MB_OF_MEMORY := 512
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -446,30 +452,38 @@ endif
|
||||
# system swapping during the build.
|
||||
# If we don't know, assume 512. Subtract 128 from MB for VM MAX.
|
||||
# Don't set VM max over 1024-128=896.
|
||||
ifneq ($(MB_OF_MEMORY),)
|
||||
LOW_MEMORY_MACHINE := $(shell \
|
||||
if [ $(MB_OF_MEMORY) -le 512 ] ; then \
|
||||
echo "true"; \
|
||||
else \
|
||||
echo "false"; \
|
||||
fi)
|
||||
MAX_VM_MEMORY := $(shell \
|
||||
if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
|
||||
expr $(MB_OF_MEMORY) '-' 128 2> $(DEV_NULL) ; \
|
||||
else \
|
||||
echo "896"; \
|
||||
fi)
|
||||
MIN_VM_MEMORY := $(shell \
|
||||
if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
|
||||
expr $(MAX_VM_MEMORY) '-' 8 2> $(DEV_NULL) ; \
|
||||
else \
|
||||
echo "128"; \
|
||||
fi)
|
||||
else
|
||||
MB_OF_MEMORY := unknown
|
||||
LOW_MEMORY_MACHINE := true
|
||||
MAX_VM_MEMORY := 384
|
||||
MIN_VM_MEMORY := 128
|
||||
ifeq ($(JDK_HAS_MEM_INFO),)
|
||||
JDK_HAS_MEM_INFO=true
|
||||
export JDK_HAS_MEM_INFO
|
||||
ifneq ($(MB_OF_MEMORY),)
|
||||
LOW_MEMORY_MACHINE := $(shell \
|
||||
if [ $(MB_OF_MEMORY) -le 512 ] ; then \
|
||||
echo "true"; \
|
||||
else \
|
||||
echo "false"; \
|
||||
fi)
|
||||
MAX_VM_MEMORY := $(shell \
|
||||
if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
|
||||
expr $(MB_OF_MEMORY) '-' 128 2> $(DEV_NULL) ; \
|
||||
else \
|
||||
echo "896"; \
|
||||
fi)
|
||||
MIN_VM_MEMORY := $(shell \
|
||||
if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
|
||||
expr $(MAX_VM_MEMORY) '-' 8 2> $(DEV_NULL) ; \
|
||||
else \
|
||||
echo "128"; \
|
||||
fi)
|
||||
else
|
||||
MB_OF_MEMORY := unknown
|
||||
LOW_MEMORY_MACHINE := true
|
||||
MAX_VM_MEMORY := 384
|
||||
MIN_VM_MEMORY := 128
|
||||
endif
|
||||
export MB_OF_MEMORY
|
||||
export LOW_MEMORY_MACHINE
|
||||
export MAX_VM_MEMORY
|
||||
export MIN_VM_MEMORY
|
||||
endif
|
||||
|
||||
# If blanks in the username, use the first 4 words and pack them together
|
||||
|
@ -46,8 +46,6 @@ ifeq ($(PLATFORM),windows)
|
||||
_OPT = $(CC_NO_OPT)
|
||||
OTHER_CFLAGS =
|
||||
CPPFLAGS_DBG += -DLOGGING
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
#
|
||||
|
@ -37,8 +37,6 @@ include $(BUILDDIR)/common/Defs.gmk
|
||||
# windows compiler flags
|
||||
ifeq ($(PLATFORM),windows)
|
||||
CPPFLAGS_DBG += -DLOGGING
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
FILES_c = \
|
||||
|
@ -37,8 +37,6 @@ include $(BUILDDIR)/common/Defs.gmk
|
||||
# windows compiler flags
|
||||
ifeq ($(PLATFORM),windows)
|
||||
OTHER_CFLAGS =
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
# build directly into BINDIR...
|
||||
LIB_LOCATION = $(BINDIR)
|
||||
# Exported functions
|
||||
|
@ -47,11 +47,6 @@ FILES_c = java_crw_demo.c
|
||||
|
||||
OTHER_INCLUDES = -I$(SRCDIR)
|
||||
|
||||
#
|
||||
# This removes all asserts in the optimized version
|
||||
#
|
||||
CPPFLAGS_OPT += -DNDEBUG
|
||||
|
||||
#
|
||||
# Library to compile.
|
||||
#
|
||||
|
@ -91,11 +91,6 @@ endif
|
||||
#
|
||||
INIT += $(LIBDIR)/jvm.hprof.txt
|
||||
|
||||
#
|
||||
# This removes all asserts in the optimized version
|
||||
#
|
||||
CPPFLAGS_OPT += -DNDEBUG
|
||||
|
||||
#
|
||||
# This puts logging code in
|
||||
#
|
||||
|
@ -115,9 +115,6 @@ ifeq ($(PLATFORM), windows)
|
||||
-export:JLI_ManifestIterate \
|
||||
-export:JLI_SetTraceLauncher
|
||||
|
||||
# Files from zlib built here do not compile with warning level 3
|
||||
# if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)
|
||||
|
@ -94,8 +94,6 @@ include $(BUILDDIR)/common/Library.gmk
|
||||
|
||||
ifeq ($(PLATFORM), windows)
|
||||
OTHER_LDLIBS = ws2_32.lib $(JVMLIB)
|
||||
# Will not compile at warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
else
|
||||
OTHER_LDLIBS = $(LIBSOCKET) -lnsl -ldl $(JVMLIB)
|
||||
endif
|
||||
|
@ -134,7 +134,6 @@ ifeq ($(PLATFORM),windows)
|
||||
$(OBJDIR)/../../../java.lang/java/$(OBJDIRNAME)/FileDescriptor_md.obj
|
||||
endif
|
||||
ifeq ($(PLATFORM), linux)
|
||||
COMPILER_WARNINGS_FATAL=true
|
||||
OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread -ldl
|
||||
endif
|
||||
ifeq ($(PLATFORM), solaris)
|
||||
|
@ -52,11 +52,6 @@ FILES_c = \
|
||||
|
||||
OTHER_INCLUDES = -I$(SRCDIR) -I$(PSRCDIR)
|
||||
|
||||
#
|
||||
# This removes all asserts in the optimized version
|
||||
#
|
||||
CPPFLAGS_OPT += -DNDEBUG
|
||||
|
||||
#
|
||||
# Library to compile.
|
||||
#
|
||||
|
@ -43,8 +43,6 @@ ifeq ($(PLATFORM), windows)
|
||||
#
|
||||
JAVALIB =
|
||||
EXTRA_LIBS =
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
#
|
||||
|
@ -49,9 +49,6 @@ FILES_export = \
|
||||
|
||||
ifneq ($(PLATFORM), windows)
|
||||
OTHER_CFLAGS += -DUSE_MMAP
|
||||
else
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
#
|
||||
|
@ -52,11 +52,6 @@ ifneq ($(PLATFORM), windows)
|
||||
OTHER_LDLIBS += -ldl
|
||||
endif # PLATFORM
|
||||
|
||||
#
|
||||
# This turns off all assert() checking in the optimized library
|
||||
#
|
||||
CPPFLAGS_OPT += -DNDEBUG
|
||||
|
||||
#
|
||||
# This controls the ability to do logging in the library.
|
||||
#
|
||||
|
@ -36,13 +36,6 @@ FILES_m = mapfile-vers
|
||||
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
# 64-bit windows does not build at -W3 if warnings are fatal
|
||||
ifeq ($(PLATFORM), windows)
|
||||
ifeq ($(ARCH_DATA_MODEL), 64)
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
endif
|
||||
|
||||
FILES_c = \
|
||||
SharedMemoryTransport.c \
|
||||
SharedMemoryConnection.c \
|
||||
|
@ -36,11 +36,6 @@ FILES_m = mapfile-vers
|
||||
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
ifeq ($(PLATFORM), windows)
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM), linux)
|
||||
OTHER_LDLIBS += -lnsl $(LIBSOCKET) -lpthread
|
||||
endif
|
||||
|
@ -47,8 +47,6 @@ FILES_export = \
|
||||
ifeq ($(PLATFORM), windows)
|
||||
# Override the default version info with our own resource file (see 5043594)
|
||||
VERSIONINFO_RESOURCE = $(CLOSED_SRC)/share/native/sun/java2d/cmm/kcms/cmm.rc
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
# Rules
|
||||
|
@ -77,9 +77,6 @@ FILES_export = \
|
||||
|
||||
ifeq ($(PLATFORM), windows)
|
||||
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
|
||||
LDLIBS += user32.lib gdi32.lib $(OBJDIR)/../../../sun.awt/awt/$(OBJDIRNAME)/awt.lib
|
||||
|
||||
OTHER_CFLAGS += -DCC_NOEX
|
||||
|
@ -64,9 +64,6 @@ FILES_export = \
|
||||
|
||||
ifeq ($(PLATFORM), windows)
|
||||
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
|
||||
# t2k imports several shared methods from fontmanager.dll
|
||||
LDLIBS += user32.lib $(OBJDIR)/../../../sun.font/fontmanager/$(OBJDIRNAME)/fontmanager.lib
|
||||
|
||||
|
@ -69,11 +69,6 @@ ifneq ($(PLATFORM), windows)
|
||||
INIT += $(ODBC_FAKE_LIBRARIES)
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM),windows)
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif
|
||||
|
||||
#
|
||||
# Rules
|
||||
#
|
||||
|
@ -73,10 +73,5 @@ include $(BUILDDIR)/common/Library.gmk
|
||||
#
|
||||
vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
|
||||
|
||||
ifeq ($(PLATFORM), windows)
|
||||
# Files built here do not compile with warning level 3 if warnings are fatal
|
||||
COMPILER_WARNINGS_FATAL=false
|
||||
endif # PLATFORM
|
||||
|
||||
CLASSES.export += java.io.InputStream
|
||||
|
||||
|
@ -5,3 +5,4 @@ a17265993253d61becd04fe7d96d1fe8b4bd6dff jdk7-b27
|
||||
4ef4bd31856949554967fbf22783babb21a62a0e jdk7-b28
|
||||
dec081837b01d509dcc2b9de86a4299c1ec17e04 jdk7-b29
|
||||
eaf608c64fecf70f955dc9f29f94c055b183aeec jdk7-b30
|
||||
07c916ecfc71f6bf432e4ff09bfbfb6290b5703c jdk7-b31
|
||||
|
@ -78,6 +78,19 @@ public class Attributes implements Iterable<Attribute> {
|
||||
return map.get(name);
|
||||
}
|
||||
|
||||
public int getIndex(ConstantPool constant_pool, String name) {
|
||||
for (int i = 0; i < attrs.length; i++) {
|
||||
Attribute attr = attrs[i];
|
||||
try {
|
||||
if (attr != null && attr.getName(constant_pool).equals(name))
|
||||
return i;
|
||||
} catch (ConstantPoolException e) {
|
||||
// ignore invalid entries
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return attrs.length;
|
||||
}
|
||||
|
@ -36,10 +36,6 @@ import java.util.List;
|
||||
public class Type {
|
||||
protected Type() { }
|
||||
|
||||
public boolean isObject() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected static void append(StringBuilder sb, String prefix, List<? extends Type> types, String suffix) {
|
||||
sb.append(prefix);
|
||||
String sep = "";
|
||||
@ -66,11 +62,6 @@ public class Type {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isObject() {
|
||||
return name.equals("java.lang.Object");
|
||||
}
|
||||
|
||||
public final String name;
|
||||
}
|
||||
|
||||
@ -129,7 +120,7 @@ public class Type {
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
appendIfNotEmpty(sb, "<", typeArgTypes, ">");
|
||||
if (superclassType != null && !superclassType.isObject()) {
|
||||
if (superclassType != null) {
|
||||
sb.append(" extends ");
|
||||
sb.append(superclassType);
|
||||
}
|
||||
@ -188,7 +179,7 @@ public class Type {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(name);
|
||||
String sep = " extends ";
|
||||
if (classBound != null && !classBound.isObject()) {
|
||||
if (classBound != null) {
|
||||
sb.append(sep);
|
||||
sb.append(classBound);
|
||||
sep = " & ";
|
||||
|
@ -345,18 +345,18 @@ public abstract class AbstractMemberWriter {
|
||||
/**
|
||||
* Print use info.
|
||||
*/
|
||||
protected void printUseInfo(Object mems, String heading) {
|
||||
protected void printUseInfo(List<? extends ProgramElementDoc> mems, String heading) {
|
||||
if (mems == null) {
|
||||
return;
|
||||
}
|
||||
List members = (List)mems;
|
||||
List<? extends ProgramElementDoc> members = mems;
|
||||
if (members.size() > 0) {
|
||||
writer.tableIndexSummary();
|
||||
writer.tableUseInfoHeaderStart("#CCCCFF");
|
||||
writer.print(heading);
|
||||
writer.tableHeaderEnd();
|
||||
for (Iterator it = members.iterator(); it.hasNext(); ) {
|
||||
ProgramElementDoc pgmdoc = (ProgramElementDoc)it.next();
|
||||
for (Iterator<? extends ProgramElementDoc> it = members.iterator(); it.hasNext(); ) {
|
||||
ProgramElementDoc pgmdoc = it.next();
|
||||
ClassDoc cd = pgmdoc.containingClass();
|
||||
|
||||
writer.printSummaryLinkType(this, pgmdoc);
|
||||
|
@ -39,28 +39,28 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
|
||||
final ClassDoc classdoc;
|
||||
Set pkgToPackageAnnotations = null;
|
||||
final Map pkgToClassTypeParameter;
|
||||
final Map pkgToClassAnnotations;
|
||||
final Map pkgToMethodTypeParameter;
|
||||
final Map pkgToMethodArgTypeParameter;
|
||||
final Map pkgToMethodReturnTypeParameter;
|
||||
final Map pkgToMethodAnnotations;
|
||||
final Map pkgToMethodParameterAnnotations;
|
||||
final Map pkgToFieldTypeParameter;
|
||||
final Map pkgToFieldAnnotations;
|
||||
final Map pkgToSubclass;
|
||||
final Map pkgToSubinterface;
|
||||
final Map pkgToImplementingClass;
|
||||
final Map pkgToField;
|
||||
final Map pkgToMethodReturn;
|
||||
final Map pkgToMethodArgs;
|
||||
final Map pkgToMethodThrows;
|
||||
final Map pkgToConstructorAnnotations;
|
||||
final Map pkgToConstructorParameterAnnotations;
|
||||
final Map pkgToConstructorArgs;
|
||||
final Map pkgToConstructorArgTypeParameter;
|
||||
final Map pkgToConstructorThrows;
|
||||
final SortedSet pkgSet;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToClassTypeParameter;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToClassAnnotations;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodTypeParameter;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodArgTypeParameter;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodReturnTypeParameter;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodAnnotations;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodParameterAnnotations;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToFieldTypeParameter;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToFieldAnnotations;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToSubclass;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToSubinterface;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToImplementingClass;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToField;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodReturn;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodArgs;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToMethodThrows;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToConstructorAnnotations;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToConstructorParameterAnnotations;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToConstructorArgs;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToConstructorArgTypeParameter;
|
||||
final Map<String,List<ProgramElementDoc>> pkgToConstructorThrows;
|
||||
final SortedSet<PackageDoc> pkgSet;
|
||||
final MethodWriterImpl methodSubWriter;
|
||||
final ConstructorWriterImpl constrSubWriter;
|
||||
final FieldWriterImpl fieldSubWriter;
|
||||
@ -81,9 +81,9 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
super(configuration, path, filename, relpath);
|
||||
this.classdoc = classdoc;
|
||||
if (mapper.classToPackageAnnotations.containsKey(classdoc.qualifiedName()))
|
||||
pkgToPackageAnnotations = new HashSet((List) mapper.classToPackageAnnotations.get(classdoc.qualifiedName()));
|
||||
pkgToPackageAnnotations = new HashSet<PackageDoc>(mapper.classToPackageAnnotations.get(classdoc.qualifiedName()));
|
||||
configuration.currentcd = classdoc;
|
||||
this.pkgSet = new TreeSet();
|
||||
this.pkgSet = new TreeSet<PackageDoc>();
|
||||
this.pkgToClassTypeParameter = pkgDivide(mapper.classToClassTypeParam);
|
||||
this.pkgToClassAnnotations = pkgDivide(mapper.classToClassAnnotations);
|
||||
this.pkgToMethodTypeParameter = pkgDivide(mapper.classToExecMemberDocTypeParam);
|
||||
@ -135,19 +135,19 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
}
|
||||
}
|
||||
|
||||
private Map pkgDivide(Map classMap) {
|
||||
Map map = new HashMap();
|
||||
List list= (List)classMap.get(classdoc.qualifiedName());
|
||||
private Map<String,List<ProgramElementDoc>> pkgDivide(Map<String,? extends List<? extends ProgramElementDoc>> classMap) {
|
||||
Map<String,List<ProgramElementDoc>> map = new HashMap<String,List<ProgramElementDoc>>();
|
||||
List<? extends ProgramElementDoc> list= classMap.get(classdoc.qualifiedName());
|
||||
if (list != null) {
|
||||
Collections.sort(list);
|
||||
Iterator it = list.iterator();
|
||||
Iterator<? extends ProgramElementDoc> it = list.iterator();
|
||||
while (it.hasNext()) {
|
||||
ProgramElementDoc doc = (ProgramElementDoc)it.next();
|
||||
ProgramElementDoc doc = it.next();
|
||||
PackageDoc pkg = doc.containingPackage();
|
||||
pkgSet.add(pkg);
|
||||
List inPkg = (List)map.get(pkg.name());
|
||||
List<ProgramElementDoc> inPkg = map.get(pkg.name());
|
||||
if (inPkg == null) {
|
||||
inPkg = new ArrayList();
|
||||
inPkg = new ArrayList<ProgramElementDoc>();
|
||||
map.put(pkg.name(), inPkg);
|
||||
}
|
||||
inPkg.add(doc);
|
||||
|
@ -253,7 +253,7 @@ public class ConfigurationImpl extends Configuration {
|
||||
}
|
||||
}
|
||||
if (root.specifiedClasses().length > 0) {
|
||||
Map map = new HashMap();
|
||||
Map<String,PackageDoc> map = new HashMap<String,PackageDoc>();
|
||||
PackageDoc pd;
|
||||
ClassDoc[] classes = root.classes();
|
||||
for (int i = 0; i < classes.length; i++) {
|
||||
@ -481,7 +481,7 @@ public class ConfigurationImpl extends Configuration {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Comparator getMemberComparator() {
|
||||
public Comparator<ProgramElementDoc> getMemberComparator() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set printedPackageHeaders) {
|
||||
public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set<String> printedPackageHeaders) {
|
||||
String packageName = pkg.name();
|
||||
//add link to summary
|
||||
li();
|
||||
|
@ -55,10 +55,10 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
super(writer, classDoc);
|
||||
VisibleMemberMap visibleMemberMap = new VisibleMemberMap(classDoc,
|
||||
VisibleMemberMap.CONSTRUCTORS, configuration().nodeprecated);
|
||||
List constructors = new ArrayList(visibleMemberMap.getMembersFor(classDoc));
|
||||
List<ProgramElementDoc> constructors = new ArrayList<ProgramElementDoc>(visibleMemberMap.getMembersFor(classDoc));
|
||||
for (int i = 0; i < constructors.size(); i++) {
|
||||
if (((ProgramElementDoc)(constructors.get(i))).isProtected() ||
|
||||
((ProgramElementDoc)(constructors.get(i))).isPrivate()) {
|
||||
if ((constructors.get(i)).isProtected() ||
|
||||
(constructors.get(i)).isPrivate()) {
|
||||
setFoundNonPubConstructor(true);
|
||||
}
|
||||
}
|
||||
|
@ -1463,7 +1463,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
int originalLength = result.length();
|
||||
TagletOutput output = TagletWriter.getInlineTagOuput(
|
||||
configuration.tagletManager, holderTag,
|
||||
(Tag) tagelem, getTagletWriterInstance(isFirstSentence));
|
||||
tagelem, getTagletWriterInstance(isFirstSentence));
|
||||
result.append(output == null ? "" : output.toString());
|
||||
if (originalLength == 0 && isFirstSentence && tagelem.name().equals("@inheritDoc") && result.length() > 0) {
|
||||
break;
|
||||
@ -1750,8 +1750,8 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return an array of strings representing the annotations being
|
||||
* documented.
|
||||
*/
|
||||
private List getAnnotations(int indent, AnnotationDesc[] descList, boolean linkBreak) {
|
||||
List results = new ArrayList();
|
||||
private List<String> getAnnotations(int indent, AnnotationDesc[] descList, boolean linkBreak) {
|
||||
List<String> results = new ArrayList<String>();
|
||||
StringBuffer annotation;
|
||||
for (int i = 0; i < descList.length; i++) {
|
||||
AnnotationTypeDoc annotationDoc = descList[i].annotationType();
|
||||
@ -1781,7 +1781,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
pairs[j].element(), pairs[j].element().name(), false));
|
||||
annotation.append('=');
|
||||
AnnotationValue annotationValue = pairs[j].value();
|
||||
List annotationTypeValues = new ArrayList();
|
||||
List<AnnotationValue> annotationTypeValues = new ArrayList<AnnotationValue>();
|
||||
if (annotationValue.value() instanceof AnnotationValue[]) {
|
||||
AnnotationValue[] annotationArray =
|
||||
(AnnotationValue[]) annotationValue.value();
|
||||
|
@ -90,7 +90,7 @@ public class HtmlSerialMethodWriter extends MethodWriterImpl implements
|
||||
tagletManager.getSerializedFormTags(),
|
||||
writer.getTagletWriterInstance(false), output);
|
||||
print(output.toString());
|
||||
MethodDoc method = (MethodDoc)member;
|
||||
MethodDoc method = member;
|
||||
if (method.name().compareTo("writeExternal") == 0
|
||||
&& method.tags("serialData").length == 0) {
|
||||
serialWarning(member.position(), "doclet.MissingSerialDataTag",
|
||||
|
@ -73,7 +73,7 @@ public class PackageFrameWriter extends HtmlDocletWriter {
|
||||
super(configuration, DirectoryManager.getDirectoryPath(packageDoc), OUTPUT_FILE_NAME, DirectoryManager.getRelativePath(packageDoc));
|
||||
this.packageDoc = packageDoc;
|
||||
if (configuration.root.specifiedPackages().length == 0) {
|
||||
documentedClasses = new HashSet(Arrays.asList(configuration.root.classes()));
|
||||
documentedClasses = new HashSet<ClassDoc>(Arrays.asList(configuration.root.classes()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
*
|
||||
* @see Group
|
||||
*/
|
||||
private Map groupPackageMap;
|
||||
private Map<String,List<PackageDoc>> groupPackageMap;
|
||||
|
||||
/**
|
||||
* List to store the order groups as specified on the command line.
|
||||
@ -120,10 +120,9 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
protected void generateIndex() {
|
||||
for (int i = 0; i < groupList.size(); i++) {
|
||||
String groupname = (String)groupList.get(i);
|
||||
List list = (List)groupPackageMap.get(groupname);
|
||||
List<PackageDoc> list = groupPackageMap.get(groupname);
|
||||
if (list != null && list.size() > 0) {
|
||||
printIndexContents((PackageDoc[])list.
|
||||
toArray(new PackageDoc[list.size()]),
|
||||
printIndexContents(list.toArray(new PackageDoc[list.size()]),
|
||||
groupname);
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ import java.util.*;
|
||||
public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
|
||||
final PackageDoc pkgdoc;
|
||||
final SortedMap usingPackageToUsedClasses = new TreeMap();
|
||||
final SortedMap<String,Set<ClassDoc>> usingPackageToUsedClasses = new TreeMap<String,Set<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
@ -61,15 +61,15 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
ClassDoc[] content = pkgdoc.allClasses();
|
||||
for (int i = 0; i < content.length; ++i) {
|
||||
ClassDoc usedClass = content[i];
|
||||
Set usingClasses = (Set)mapper.classToClass.get(usedClass.qualifiedName());
|
||||
Set<ClassDoc> usingClasses = mapper.classToClass.get(usedClass.qualifiedName());
|
||||
if (usingClasses != null) {
|
||||
for (Iterator it = usingClasses.iterator(); it.hasNext(); ) {
|
||||
ClassDoc usingClass = (ClassDoc)it.next();
|
||||
PackageDoc usingPackage = usingClass.containingPackage();
|
||||
Set usedClasses = (Set)usingPackageToUsedClasses
|
||||
Set<ClassDoc> usedClasses = usingPackageToUsedClasses
|
||||
.get(usingPackage.name());
|
||||
if (usedClasses == null) {
|
||||
usedClasses = new TreeSet();
|
||||
usedClasses = new TreeSet<ClassDoc>();
|
||||
usingPackageToUsedClasses.put(Util.getPackageName(usingPackage),
|
||||
usedClasses);
|
||||
}
|
||||
|
@ -120,12 +120,12 @@ public abstract class Configuration {
|
||||
/**
|
||||
* The list of doc-file subdirectories to exclude
|
||||
*/
|
||||
protected Set excludedDocFileDirs;
|
||||
protected Set<String> excludedDocFileDirs;
|
||||
|
||||
/**
|
||||
* The list of qualifiers to exclude
|
||||
*/
|
||||
protected Set excludedQualifiers;
|
||||
protected Set<String> excludedQualifiers;
|
||||
|
||||
/**
|
||||
* The Root of the generated Program Structure from the Doclet API.
|
||||
@ -255,8 +255,8 @@ public abstract class Configuration {
|
||||
message =
|
||||
new MessageRetriever(this,
|
||||
"com.sun.tools.doclets.internal.toolkit.resources.doclets");
|
||||
excludedDocFileDirs = new HashSet();
|
||||
excludedQualifiers = new HashSet();
|
||||
excludedDocFileDirs = new HashSet<String>();
|
||||
excludedQualifiers = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -329,14 +329,14 @@ public abstract class Configuration {
|
||||
DocErrorReporter reporter);
|
||||
|
||||
private void initPackageArray() {
|
||||
Set set = new HashSet(Arrays.asList(root.specifiedPackages()));
|
||||
Set<PackageDoc> set = new HashSet<PackageDoc>(Arrays.asList(root.specifiedPackages()));
|
||||
ClassDoc[] classes = root.specifiedClasses();
|
||||
for (int i = 0; i < classes.length; i++) {
|
||||
set.add(classes[i].containingPackage());
|
||||
}
|
||||
ArrayList results = new ArrayList(set);
|
||||
ArrayList<PackageDoc> results = new ArrayList<PackageDoc>(set);
|
||||
Collections.sort(results);
|
||||
packages = (PackageDoc[]) results.toArray(new PackageDoc[] {});
|
||||
packages = results.toArray(new PackageDoc[] {});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -345,7 +345,7 @@ public abstract class Configuration {
|
||||
* @param options the two dimensional array of options.
|
||||
*/
|
||||
public void setOptions(String[][] options) {
|
||||
LinkedHashSet customTagStrs = new LinkedHashSet();
|
||||
LinkedHashSet<String[]> customTagStrs = new LinkedHashSet<String[]>();
|
||||
for (int oi = 0; oi < options.length; ++oi) {
|
||||
String[] os = options[oi];
|
||||
String opt = os[0].toLowerCase();
|
||||
@ -476,7 +476,7 @@ public abstract class Configuration {
|
||||
}
|
||||
}
|
||||
|
||||
private void addToSet(Set s, String str){
|
||||
private void addToSet(Set<String> s, String str){
|
||||
StringTokenizer st = new StringTokenizer(str, ":");
|
||||
String current;
|
||||
while(st.hasMoreTokens()){
|
||||
@ -712,5 +712,5 @@ public abstract class Configuration {
|
||||
*
|
||||
* @return the {@link java.util.Comparator} used to sort members.
|
||||
*/
|
||||
public abstract Comparator getMemberComparator();
|
||||
public abstract Comparator<ProgramElementDoc> getMemberComparator();
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ public interface ConstantsSummaryWriter {
|
||||
* something more than once.
|
||||
*/
|
||||
public abstract void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
|
||||
Set WriteedPackageHeaders);
|
||||
Set<String> WriteedPackageHeaders);
|
||||
|
||||
/**
|
||||
* Write the given package name.
|
||||
|
@ -61,7 +61,7 @@ public abstract class AbstractBuilder {
|
||||
* efficiency purposes. We don't want to copy the
|
||||
* doc files multiple times for a single package.
|
||||
*/
|
||||
protected static Set containingPackagesSeen;
|
||||
protected static Set<String> containingPackagesSeen;
|
||||
|
||||
/**
|
||||
* True if we want to print debug output.
|
||||
|
@ -84,7 +84,7 @@ public class AnnotationTypeBuilder extends AbstractBuilder {
|
||||
builder.annotationTypeDoc = annotationTypeDoc;
|
||||
builder.writer = writer;
|
||||
if(containingPackagesSeen == null) {
|
||||
containingPackagesSeen = new HashSet();
|
||||
containingPackagesSeen = new HashSet<String>();
|
||||
}
|
||||
return builder;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ public class AnnotationTypeOptionalMemberBuilder extends
|
||||
builder.writer = writer;
|
||||
builder.visibleMemberMap = new VisibleMemberMap(classDoc,
|
||||
VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL, configuration.nodeprecated);
|
||||
builder.members = new ArrayList(
|
||||
builder.members = new ArrayList<ProgramElementDoc>(
|
||||
builder.visibleMemberMap.getMembersFor(classDoc));
|
||||
if (configuration.getMemberComparator() != null) {
|
||||
Collections.sort(builder.members,
|
||||
|
@ -62,7 +62,7 @@ public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
|
||||
/**
|
||||
* The list of members being documented.
|
||||
*/
|
||||
protected List members;
|
||||
protected List<ProgramElementDoc> members;
|
||||
|
||||
/**
|
||||
* The index of the current member that is being documented at this point
|
||||
@ -97,7 +97,7 @@ public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
|
||||
builder.writer = writer;
|
||||
builder.visibleMemberMap = new VisibleMemberMap(classDoc,
|
||||
VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED, configuration.nodeprecated);
|
||||
builder.members = new ArrayList(
|
||||
builder.members = new ArrayList<ProgramElementDoc>(
|
||||
builder.visibleMemberMap.getMembersFor(classDoc));
|
||||
if (configuration.getMemberComparator() != null) {
|
||||
Collections.sort(builder.members,
|
||||
|
@ -100,7 +100,7 @@ public class ClassBuilder extends AbstractBuilder {
|
||||
Util.setEnumDocumentation(configuration, classDoc);
|
||||
}
|
||||
if(containingPackagesSeen == null) {
|
||||
containingPackagesSeen = new HashSet();
|
||||
containingPackagesSeen = new HashSet<String>();
|
||||
}
|
||||
return builder;
|
||||
}
|
||||
|
@ -63,12 +63,12 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
/**
|
||||
* The set of ClassDocs that have constant fields.
|
||||
*/
|
||||
protected Set classDocsWithConstFields;
|
||||
protected Set<ClassDoc> classDocsWithConstFields;
|
||||
|
||||
/**
|
||||
* The set of printed package headers.
|
||||
*/
|
||||
protected Set printedPackageHeaders;
|
||||
protected Set<String> printedPackageHeaders;
|
||||
|
||||
/**
|
||||
* The current package being documented.
|
||||
@ -102,7 +102,7 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
ConstantsSummaryBuilder builder = new ConstantsSummaryBuilder(
|
||||
configuration);
|
||||
builder.writer = writer;
|
||||
builder.classDocsWithConstFields = new HashSet();
|
||||
builder.classDocsWithConstFields = new HashSet<ClassDoc>();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@ -169,7 +169,7 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
public void buildContents() {
|
||||
writer.writeContentsHeader();
|
||||
PackageDoc[] packages = configuration.packages;
|
||||
printedPackageHeaders = new HashSet();
|
||||
printedPackageHeaders = new HashSet<String>();
|
||||
for (int i = 0; i < packages.length; i++) {
|
||||
if (hasConstantField(packages[i]) && ! hasPrintedPackageIndex(packages[i].name())) {
|
||||
writer.writeLinkToPackageContent(packages[i],
|
||||
@ -188,7 +188,7 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
*/
|
||||
public void buildConstantSummaries(List elements) {
|
||||
PackageDoc[] packages = configuration.packages;
|
||||
printedPackageHeaders = new HashSet();
|
||||
printedPackageHeaders = new HashSet<String>();
|
||||
for (int i = 0; i < packages.length; i++) {
|
||||
if (hasConstantField(packages[i])) {
|
||||
currentPackage = packages[i];
|
||||
@ -315,7 +315,7 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
* @param pkgname the name of the package to check.
|
||||
*/
|
||||
private boolean hasPrintedPackageIndex(String pkgname) {
|
||||
String[] list = (String[])printedPackageHeaders.toArray(new String[] {});
|
||||
String[] list = printedPackageHeaders.toArray(new String[] {});
|
||||
for (int i = 0; i < list.length; i++) {
|
||||
if (pkgname.startsWith(list[i])) {
|
||||
return true;
|
||||
@ -363,7 +363,7 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
* Builds the table of constants for a given class.
|
||||
*/
|
||||
protected void buildMembersSummary() {
|
||||
List members = new ArrayList(members());
|
||||
List<FieldDoc> members = new ArrayList<FieldDoc>(members());
|
||||
if (members.size() > 0) {
|
||||
Collections.sort(members);
|
||||
writer.writeConstantMembers(classdoc, members);
|
||||
@ -375,17 +375,17 @@ public class ConstantsSummaryBuilder extends AbstractBuilder {
|
||||
* @param cd the classdoc to examine.
|
||||
* @return the list of visible constant fields for the given classdoc.
|
||||
*/
|
||||
protected List members() {
|
||||
List l = visibleMemberMapFields.getLeafClassMembers(configuration);
|
||||
protected List<FieldDoc> members() {
|
||||
List<ProgramElementDoc> l = visibleMemberMapFields.getLeafClassMembers(configuration);
|
||||
l.addAll(visibleMemberMapEnumConst.getLeafClassMembers(configuration));
|
||||
Iterator iter;
|
||||
Iterator<ProgramElementDoc> iter;
|
||||
|
||||
if(l != null){
|
||||
iter = l.iterator();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
List inclList = new LinkedList();
|
||||
List<FieldDoc> inclList = new LinkedList<FieldDoc>();
|
||||
FieldDoc member;
|
||||
while(iter.hasNext()){
|
||||
member = (FieldDoc)iter.next();
|
||||
|
@ -72,7 +72,7 @@ public class ConstructorBuilder extends AbstractMemberBuilder {
|
||||
/**
|
||||
* The constructors being documented.
|
||||
*/
|
||||
private List constructors;
|
||||
private List<ProgramElementDoc> constructors;
|
||||
|
||||
/**
|
||||
* Construct a new ConstructorBuilder.
|
||||
@ -104,12 +104,10 @@ public class ConstructorBuilder extends AbstractMemberBuilder {
|
||||
VisibleMemberMap.CONSTRUCTORS,
|
||||
configuration.nodeprecated);
|
||||
builder.constructors =
|
||||
new ArrayList(builder.visibleMemberMap.getMembersFor(classDoc));
|
||||
new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
|
||||
for (int i = 0; i < builder.constructors.size(); i++) {
|
||||
if (((ProgramElementDoc) (builder.constructors.get(i)))
|
||||
.isProtected()
|
||||
|| ((ProgramElementDoc) (builder.constructors.get(i)))
|
||||
.isPrivate()) {
|
||||
if (builder.constructors.get(i).isProtected()
|
||||
|| builder.constructors.get(i).isPrivate()) {
|
||||
writer.setFoundNonPubConstructor(true);
|
||||
}
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public class EnumConstantBuilder extends AbstractMemberBuilder {
|
||||
/**
|
||||
* The list of enum constants being documented.
|
||||
*/
|
||||
private List enumConstants;
|
||||
private List<ProgramElementDoc> enumConstants;
|
||||
|
||||
/**
|
||||
* The index of the current enum constant that is being documented at this point
|
||||
@ -99,7 +99,7 @@ public class EnumConstantBuilder extends AbstractMemberBuilder {
|
||||
VisibleMemberMap.ENUM_CONSTANTS,
|
||||
configuration.nodeprecated);
|
||||
builder.enumConstants =
|
||||
new ArrayList(builder.visibleMemberMap.getMembersFor(classDoc));
|
||||
new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
|
||||
if (configuration.getMemberComparator() != null) {
|
||||
Collections.sort(
|
||||
builder.enumConstants,
|
||||
|
@ -61,7 +61,7 @@ public class FieldBuilder extends AbstractMemberBuilder {
|
||||
/**
|
||||
* The list of fields being documented.
|
||||
*/
|
||||
private List fields;
|
||||
private List<ProgramElementDoc> fields;
|
||||
|
||||
/**
|
||||
* The index of the current field that is being documented at this point
|
||||
@ -99,8 +99,8 @@ public class FieldBuilder extends AbstractMemberBuilder {
|
||||
VisibleMemberMap.FIELDS,
|
||||
configuration.nodeprecated);
|
||||
builder.fields =
|
||||
new ArrayList(builder.visibleMemberMap.getLeafClassMembers(
|
||||
configuration));
|
||||
new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
|
||||
configuration));
|
||||
if (configuration.getMemberComparator() != null) {
|
||||
Collections.sort(
|
||||
builder.fields,
|
||||
|
@ -45,7 +45,7 @@ public class LayoutParser extends DefaultHandler {
|
||||
/**
|
||||
* The map of XML elements that have been parsed.
|
||||
*/
|
||||
private Map xmlElementsMap;
|
||||
private Map<String,List<Object>> xmlElementsMap;
|
||||
|
||||
private Configuration configuration;
|
||||
private static LayoutParser instance;
|
||||
@ -56,7 +56,7 @@ public class LayoutParser extends DefaultHandler {
|
||||
* This class is a singleton.
|
||||
*/
|
||||
private LayoutParser(Configuration configuration) {
|
||||
xmlElementsMap = new HashMap();
|
||||
xmlElementsMap = new HashMap<String,List<Object>>();
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ public class LayoutParser extends DefaultHandler {
|
||||
return (List) xmlElementsMap.get(root);
|
||||
}
|
||||
try {
|
||||
List xmlElements = new ArrayList();
|
||||
List<Object> xmlElements = new ArrayList<Object>();
|
||||
xmlElementsMap.put(root, xmlElements);
|
||||
currentRoot = root;
|
||||
isParsing = false;
|
||||
@ -106,7 +106,7 @@ public class LayoutParser extends DefaultHandler {
|
||||
throws SAXException {
|
||||
if (isParsing || qName.equals(currentRoot)) {
|
||||
isParsing = true;
|
||||
List xmlElements = (List) xmlElementsMap.get(currentRoot);
|
||||
List<Object> xmlElements = xmlElementsMap.get(currentRoot);
|
||||
xmlElements.add(qName);
|
||||
}
|
||||
}
|
||||
@ -120,11 +120,11 @@ public class LayoutParser extends DefaultHandler {
|
||||
isParsing = false;
|
||||
return;
|
||||
}
|
||||
List xmlElements = (List) xmlElementsMap.get(currentRoot);
|
||||
List<Object> xmlElements = xmlElementsMap.get(currentRoot);
|
||||
if (xmlElements.get(xmlElements.size()-1).equals(qName)) {
|
||||
return;
|
||||
} else {
|
||||
List subElements = new ArrayList();
|
||||
List<Object> subElements = new ArrayList<Object>();
|
||||
int targetIndex = xmlElements.indexOf(qName);
|
||||
int size = xmlElements.size();
|
||||
for (int i = targetIndex; i < size; i++) {
|
||||
|
@ -306,13 +306,13 @@ public class MemberSummaryBuilder extends AbstractMemberBuilder {
|
||||
*/
|
||||
private void buildSummary(MemberSummaryWriter writer,
|
||||
VisibleMemberMap visibleMemberMap) {
|
||||
List members = new ArrayList(visibleMemberMap.getLeafClassMembers(
|
||||
List<ProgramElementDoc> members = new ArrayList<ProgramElementDoc>(visibleMemberMap.getLeafClassMembers(
|
||||
configuration));
|
||||
if (members.size() > 0) {
|
||||
Collections.sort(members);
|
||||
writer.writeMemberSummaryHeader(classDoc);
|
||||
for (int i = 0; i < members.size(); i++) {
|
||||
ProgramElementDoc member = (ProgramElementDoc) members.get(i);
|
||||
ProgramElementDoc member = members.get(i);
|
||||
Tag[] firstSentenceTags = member.firstSentenceTags();
|
||||
if (member instanceof MethodDoc && firstSentenceTags.length == 0) {
|
||||
//Inherit comments from overriden or implemented method if
|
||||
@ -349,7 +349,7 @@ public class MemberSummaryBuilder extends AbstractMemberBuilder {
|
||||
if (inhclass == classDoc) {
|
||||
continue;
|
||||
}
|
||||
List inhmembers = visibleMemberMap.getMembersFor(inhclass);
|
||||
List<ProgramElementDoc> inhmembers = visibleMemberMap.getMembersFor(inhclass);
|
||||
if (inhmembers.size() > 0) {
|
||||
Collections.sort(inhmembers);
|
||||
writer.writeInheritedMemberSummaryHeader(inhclass);
|
||||
@ -358,7 +358,7 @@ public class MemberSummaryBuilder extends AbstractMemberBuilder {
|
||||
inhclass.isPackagePrivate() &&
|
||||
! Util.isLinkable(inhclass, configuration) ?
|
||||
classDoc : inhclass,
|
||||
(ProgramElementDoc) inhmembers.get(j),
|
||||
inhmembers.get(j),
|
||||
j == 0,
|
||||
j == inhmembers.size() - 1);
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public class MethodBuilder extends AbstractMemberBuilder {
|
||||
/**
|
||||
* The methods being documented.
|
||||
*/
|
||||
private List methods;
|
||||
private List<ProgramElementDoc> methods;
|
||||
|
||||
private MethodBuilder(Configuration configuration) {
|
||||
super(configuration);
|
||||
@ -94,7 +94,7 @@ public class MethodBuilder extends AbstractMemberBuilder {
|
||||
VisibleMemberMap.METHODS,
|
||||
configuration.nodeprecated);
|
||||
builder.methods =
|
||||
new ArrayList(builder.visibleMemberMap.getLeafClassMembers(
|
||||
new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
|
||||
configuration));
|
||||
if (configuration.getMemberComparator() != null) {
|
||||
Collections.sort(
|
||||
|
@ -26,6 +26,7 @@ package com.sun.tools.doclets.internal.toolkit.taglets;
|
||||
|
||||
import java.util.Map;
|
||||
import com.sun.javadoc.Tag;
|
||||
import com.sun.tools.doclets.Taglet;
|
||||
|
||||
/**
|
||||
* An inline Taglet used to denote literal code fragments.
|
||||
@ -47,7 +48,7 @@ public class CodeTaglet extends LiteralTaglet {
|
||||
|
||||
private static final String NAME = "code";
|
||||
|
||||
public static void register(Map map) {
|
||||
public static void register(Map<String, Taglet> map) {
|
||||
map.remove(NAME);
|
||||
map.put(NAME, new CodeTaglet());
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class LiteralTaglet implements Taglet {
|
||||
|
||||
private static final String NAME = "literal";
|
||||
|
||||
public static void register(Map map) {
|
||||
public static void register(Map<String,Taglet> map) {
|
||||
map.remove(NAME);
|
||||
map.put(NAME, new LiteralTaglet());
|
||||
}
|
||||
|
@ -56,11 +56,11 @@ public class ParamTaglet extends BaseTaglet implements InheritableTaglet {
|
||||
* check.
|
||||
* @return a name-rank number map.
|
||||
*/
|
||||
private static Map getRankMap(Object[] params){
|
||||
private static Map<String,String> getRankMap(Object[] params){
|
||||
if (params == null) {
|
||||
return null;
|
||||
}
|
||||
HashMap result = new HashMap();
|
||||
HashMap<String,String> result = new HashMap<String,String>();
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
String name = params[i] instanceof Parameter ?
|
||||
((Parameter) params[i]).name() :
|
||||
@ -192,7 +192,7 @@ public class ParamTaglet extends BaseTaglet implements InheritableTaglet {
|
||||
private TagletOutput getTagletOutput(boolean isNonTypeParams, Doc holder,
|
||||
TagletWriter writer, Object[] formalParameters, ParamTag[] paramTags) {
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
Set alreadyDocumented = new HashSet();
|
||||
Set<String> alreadyDocumented = new HashSet<String>();
|
||||
if (paramTags.length > 0) {
|
||||
result.appendOutput(
|
||||
processParamTags(isNonTypeParams, paramTags,
|
||||
@ -214,7 +214,7 @@ public class ParamTaglet extends BaseTaglet implements InheritableTaglet {
|
||||
*/
|
||||
private TagletOutput getInheritedTagletOutput(boolean isNonTypeParams, Doc holder,
|
||||
TagletWriter writer, Object[] formalParameters,
|
||||
Set alreadyDocumented) {
|
||||
Set<String> alreadyDocumented) {
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
if ((! alreadyDocumented.contains(null)) &&
|
||||
holder instanceof MethodDoc) {
|
||||
@ -263,7 +263,7 @@ public class ParamTaglet extends BaseTaglet implements InheritableTaglet {
|
||||
*/
|
||||
private TagletOutput processParamTags(boolean isNonTypeParams,
|
||||
ParamTag[] paramTags, Map rankMap, TagletWriter writer,
|
||||
Set alreadyDocumented) {
|
||||
Set<String> alreadyDocumented) {
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
if (paramTags.length > 0) {
|
||||
for (int i = 0; i < paramTags.length; ++i) {
|
||||
|
@ -61,7 +61,7 @@ public class TagletManager {
|
||||
/**
|
||||
* The map of custom tags.
|
||||
*/
|
||||
private LinkedHashMap customTags;
|
||||
private LinkedHashMap<String,Taglet> customTags;
|
||||
|
||||
/**
|
||||
* The array of custom tags that can appear in packages.
|
||||
@ -111,31 +111,31 @@ public class TagletManager {
|
||||
/**
|
||||
* Keep track of standard tags.
|
||||
*/
|
||||
private Set standardTags;
|
||||
private Set<String> standardTags;
|
||||
|
||||
/**
|
||||
* Keep track of standard tags in lowercase to compare for better
|
||||
* error messages when a tag like @docRoot is mistakenly spelled
|
||||
* lowercase @docroot.
|
||||
*/
|
||||
private Set standardTagsLowercase;
|
||||
private Set<String> standardTagsLowercase;
|
||||
|
||||
/**
|
||||
* Keep track of overriden standard tags.
|
||||
*/
|
||||
private Set overridenStandardTags;
|
||||
private Set<String> overridenStandardTags;
|
||||
|
||||
/**
|
||||
* Keep track of the tags that may conflict
|
||||
* with standard tags in the future (any custom tag without
|
||||
* a period in its name).
|
||||
*/
|
||||
private Set potentiallyConflictingTags;
|
||||
private Set<String> potentiallyConflictingTags;
|
||||
|
||||
/**
|
||||
* The set of unseen custom tags.
|
||||
*/
|
||||
private Set unseenCustomTags;
|
||||
private Set<String> unseenCustomTags;
|
||||
|
||||
/**
|
||||
* True if we do not want to use @since tags.
|
||||
@ -161,12 +161,12 @@ public class TagletManager {
|
||||
*/
|
||||
public TagletManager(boolean nosince, boolean showversion,
|
||||
boolean showauthor, MessageRetriever message){
|
||||
overridenStandardTags = new HashSet();
|
||||
potentiallyConflictingTags = new HashSet();
|
||||
standardTags = new HashSet();
|
||||
standardTagsLowercase = new HashSet();
|
||||
unseenCustomTags = new HashSet();
|
||||
customTags = new LinkedHashMap();
|
||||
overridenStandardTags = new HashSet<String>();
|
||||
potentiallyConflictingTags = new HashSet<String>();
|
||||
standardTags = new HashSet<String>();
|
||||
standardTagsLowercase = new HashSet<String>();
|
||||
unseenCustomTags = new HashSet<String>();
|
||||
customTags = new LinkedHashMap<String,Taglet>();
|
||||
this.nosince = nosince;
|
||||
this.showversion = showversion;
|
||||
this.showauthor = showauthor;
|
||||
@ -201,7 +201,7 @@ public class TagletManager {
|
||||
*/
|
||||
public void addCustomTag(String classname, String tagletPath) {
|
||||
try {
|
||||
Class customTagClass = null;
|
||||
Class<?> customTagClass = null;
|
||||
// construct class loader
|
||||
String cpString = null; // make sure env.class.path defaults to dot
|
||||
|
||||
@ -219,7 +219,7 @@ public class TagletManager {
|
||||
meth.invoke(null, new Object[] {customTags});
|
||||
list = customTags.values().toArray();
|
||||
Object newLastTag = (list != null&& list.length > 0)
|
||||
? (Object) list[list.length-1] : null;
|
||||
? list[list.length-1] : null;
|
||||
if (lastTag != newLastTag) {
|
||||
//New taglets must always be added to the end of the LinkedHashMap.
|
||||
//If the current and previous last taglet are not equal, that
|
||||
@ -315,7 +315,7 @@ public class TagletManager {
|
||||
if (tagName == null || locations == null) {
|
||||
return;
|
||||
}
|
||||
Taglet tag = (Taglet) customTags.get(tagName);
|
||||
Taglet tag = customTags.get(tagName);
|
||||
locations = locations.toLowerCase();
|
||||
if (tag == null || header != null) {
|
||||
customTags.remove(tagName);
|
||||
@ -396,7 +396,7 @@ public class TagletManager {
|
||||
}
|
||||
}
|
||||
//Check if this tag is being used in the wrong location.
|
||||
if((taglet = (Taglet) customTags.get(name)) != null) {
|
||||
if ((taglet = customTags.get(name)) != null) {
|
||||
if (areInlineTags && ! taglet.isInlineTag()) {
|
||||
printTagMisuseWarn(taglet, tags[i], "inline");
|
||||
}
|
||||
@ -425,7 +425,7 @@ public class TagletManager {
|
||||
* @param holderType the type of documentation that the misused tag was found in.
|
||||
*/
|
||||
private void printTagMisuseWarn(Taglet taglet, Tag tag, String holderType) {
|
||||
Set locationsSet = new LinkedHashSet();
|
||||
Set<String> locationsSet = new LinkedHashSet<String>();
|
||||
if (taglet.inOverview()) {
|
||||
locationsSet.add("overview");
|
||||
}
|
||||
@ -447,7 +447,7 @@ public class TagletManager {
|
||||
if (taglet.isInlineTag()) {
|
||||
locationsSet.add("inline text");
|
||||
}
|
||||
String[] locations = (String[]) locationsSet.toArray(new String[]{});
|
||||
String[] locations = locationsSet.toArray(new String[]{});
|
||||
if (locations == null || locations.length == 0) {
|
||||
//This known tag is excluded.
|
||||
return;
|
||||
@ -592,17 +592,17 @@ public class TagletManager {
|
||||
* Initialize the custom tag arrays.
|
||||
*/
|
||||
private void initCustomTagArrays() {
|
||||
Iterator it = customTags.values().iterator();
|
||||
ArrayList pTags = new ArrayList(customTags.size());
|
||||
ArrayList tTags = new ArrayList(customTags.size());
|
||||
ArrayList fTags = new ArrayList(customTags.size());
|
||||
ArrayList cTags = new ArrayList(customTags.size());
|
||||
ArrayList mTags = new ArrayList(customTags.size());
|
||||
ArrayList iTags = new ArrayList(customTags.size());
|
||||
ArrayList oTags = new ArrayList(customTags.size());
|
||||
Iterator<Taglet> it = customTags.values().iterator();
|
||||
ArrayList<Taglet> pTags = new ArrayList<Taglet>(customTags.size());
|
||||
ArrayList<Taglet> tTags = new ArrayList<Taglet>(customTags.size());
|
||||
ArrayList<Taglet> fTags = new ArrayList<Taglet>(customTags.size());
|
||||
ArrayList<Taglet> cTags = new ArrayList<Taglet>(customTags.size());
|
||||
ArrayList<Taglet> mTags = new ArrayList<Taglet>(customTags.size());
|
||||
ArrayList<Taglet> iTags = new ArrayList<Taglet>(customTags.size());
|
||||
ArrayList<Taglet> oTags = new ArrayList<Taglet>(customTags.size());
|
||||
Taglet current;
|
||||
while (it.hasNext()) {
|
||||
current = (Taglet) it.next();
|
||||
current = it.next();
|
||||
if (current.inPackage() && !current.isInlineTag()) {
|
||||
pTags.add(current);
|
||||
}
|
||||
@ -625,20 +625,20 @@ public class TagletManager {
|
||||
oTags.add(current);
|
||||
}
|
||||
}
|
||||
packageTags = (Taglet[]) pTags.toArray(new Taglet[] {});
|
||||
typeTags = (Taglet[]) tTags.toArray(new Taglet[] {});
|
||||
fieldTags = (Taglet[]) fTags.toArray(new Taglet[] {});
|
||||
constructorTags = (Taglet[]) cTags.toArray(new Taglet[] {});
|
||||
methodTags = (Taglet[]) mTags.toArray(new Taglet[] {});
|
||||
overviewTags = (Taglet[]) oTags.toArray(new Taglet[] {});
|
||||
inlineTags = (Taglet[]) iTags.toArray(new Taglet[] {});
|
||||
packageTags = pTags.toArray(new Taglet[] {});
|
||||
typeTags = tTags.toArray(new Taglet[] {});
|
||||
fieldTags = fTags.toArray(new Taglet[] {});
|
||||
constructorTags = cTags.toArray(new Taglet[] {});
|
||||
methodTags = mTags.toArray(new Taglet[] {});
|
||||
overviewTags = oTags.toArray(new Taglet[] {});
|
||||
inlineTags = iTags.toArray(new Taglet[] {});
|
||||
|
||||
//Init the serialized form tags
|
||||
serializedFormTags = new Taglet[4];
|
||||
serializedFormTags[0] = (Taglet) customTags.get("serialData");
|
||||
serializedFormTags[1] = (Taglet) customTags.get("throws");
|
||||
serializedFormTags[2] = (Taglet) customTags.get("since");
|
||||
serializedFormTags[3] = (Taglet) customTags.get("see");
|
||||
serializedFormTags[0] = customTags.get("serialData");
|
||||
serializedFormTags[1] = customTags.get("throws");
|
||||
serializedFormTags[2] = customTags.get("since");
|
||||
serializedFormTags[3] = customTags.get("see");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -726,10 +726,9 @@ public class TagletManager {
|
||||
printReportHelper("doclet.Notice_taglet_unseen", unseenCustomTags);
|
||||
}
|
||||
|
||||
private void printReportHelper(String noticeKey, Set names) {
|
||||
private void printReportHelper(String noticeKey, Set<String> names) {
|
||||
if (names.size() > 0) {
|
||||
String[] namesArray =
|
||||
(String[]) names.toArray(new String[] {});
|
||||
String[] namesArray = names.toArray(new String[] {});
|
||||
String result = " ";
|
||||
for (int i = 0; i < namesArray.length; i++) {
|
||||
result += "@" + namesArray[i];
|
||||
@ -751,9 +750,9 @@ public class TagletManager {
|
||||
*/
|
||||
public Taglet getTaglet(String name) {
|
||||
if (name.indexOf("@") == 0) {
|
||||
return (Taglet) customTags.get(name.substring(1));
|
||||
return customTags.get(name.substring(1));
|
||||
} else {
|
||||
return (Taglet) customTags.get(name);
|
||||
return customTags.get(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ public class ThrowsTaglet extends BaseExecutableMemberTaglet
|
||||
* Add links for exceptions that are declared but not documented.
|
||||
*/
|
||||
private TagletOutput linkToUndocumentedDeclaredExceptions(
|
||||
Type[] declaredExceptionTypes, Set alreadyDocumented,
|
||||
Type[] declaredExceptionTypes, Set<String> alreadyDocumented,
|
||||
TagletWriter writer) {
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
//Add links to the exceptions declared but not documented.
|
||||
@ -107,11 +107,11 @@ public class ThrowsTaglet extends BaseExecutableMemberTaglet
|
||||
* documented.
|
||||
*/
|
||||
private TagletOutput inheritThrowsDocumentation(Doc holder,
|
||||
Type[] declaredExceptionTypes, Set alreadyDocumented,
|
||||
Type[] declaredExceptionTypes, Set<String> alreadyDocumented,
|
||||
TagletWriter writer) {
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
if (holder instanceof MethodDoc) {
|
||||
Set declaredExceptionTags = new LinkedHashSet();
|
||||
Set<Tag> declaredExceptionTags = new LinkedHashSet<Tag>();
|
||||
for (int j = 0; j < declaredExceptionTypes.length; j++) {
|
||||
DocFinder.Output inheritedDoc =
|
||||
DocFinder.search(new DocFinder.Input((MethodDoc) holder, this,
|
||||
@ -124,7 +124,7 @@ public class ThrowsTaglet extends BaseExecutableMemberTaglet
|
||||
declaredExceptionTags.addAll(inheritedDoc.tagList);
|
||||
}
|
||||
result.appendOutput(throwsTagsOutput(
|
||||
(ThrowsTag[]) declaredExceptionTags.toArray(new ThrowsTag[] {}),
|
||||
declaredExceptionTags.toArray(new ThrowsTag[] {}),
|
||||
writer, alreadyDocumented, false));
|
||||
}
|
||||
return result;
|
||||
@ -137,7 +137,7 @@ public class ThrowsTaglet extends BaseExecutableMemberTaglet
|
||||
ExecutableMemberDoc execHolder = (ExecutableMemberDoc) holder;
|
||||
ThrowsTag[] tags = execHolder.throwsTags();
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
HashSet alreadyDocumented = new HashSet();
|
||||
HashSet<String> alreadyDocumented = new HashSet<String>();
|
||||
if (tags.length > 0) {
|
||||
result.appendOutput(throwsTagsOutput(
|
||||
execHolder.throwsTags(), writer, alreadyDocumented, true));
|
||||
@ -161,7 +161,7 @@ public class ThrowsTaglet extends BaseExecutableMemberTaglet
|
||||
* @return the TagletOutput representation of this <code>Tag</code>.
|
||||
*/
|
||||
protected TagletOutput throwsTagsOutput(ThrowsTag[] throwTags,
|
||||
TagletWriter writer, Set alreadyDocumented, boolean allowDups) {
|
||||
TagletWriter writer, Set<String> alreadyDocumented, boolean allowDups) {
|
||||
TagletOutput result = writer.getOutputInstance();
|
||||
if (throwTags.length > 0) {
|
||||
for (int i = 0; i < throwTags.length; ++i) {
|
||||
|
@ -49,44 +49,44 @@ import java.util.*;
|
||||
* Stores the set of packages that the classes specified on the command line
|
||||
* belong to. Note that the default package is "".
|
||||
*/
|
||||
private Set packageSet;
|
||||
private Set<String> packageSet;
|
||||
|
||||
|
||||
/**
|
||||
* Stores all classes for each package
|
||||
*/
|
||||
private Map allClasses;
|
||||
private Map<String,Set<ClassDoc>> allClasses;
|
||||
|
||||
/**
|
||||
* Stores ordinary classes (excluding Exceptions and Errors) for each
|
||||
* package
|
||||
*/
|
||||
private Map ordinaryClasses;
|
||||
private Map<String,Set<ClassDoc>> ordinaryClasses;
|
||||
|
||||
/**
|
||||
* Stores exceptions for each package
|
||||
*/
|
||||
private Map exceptions;
|
||||
private Map<String,Set<ClassDoc>> exceptions;
|
||||
|
||||
/**
|
||||
* Stores enums for each package.
|
||||
*/
|
||||
private Map enums;
|
||||
private Map<String,Set<ClassDoc>> enums;
|
||||
|
||||
/**
|
||||
* Stores annotation types for each package.
|
||||
*/
|
||||
private Map annotationTypes;
|
||||
private Map<String,Set<ClassDoc>> annotationTypes;
|
||||
|
||||
/**
|
||||
* Stores errors for each package
|
||||
*/
|
||||
private Map errors;
|
||||
private Map<String,Set<ClassDoc>> errors;
|
||||
|
||||
/**
|
||||
* Stores interfaces for each package
|
||||
*/
|
||||
private Map interfaces;
|
||||
private Map<String,Set<ClassDoc>> interfaces;
|
||||
|
||||
/**
|
||||
* Construct a new ClassDocCatalog.
|
||||
@ -109,14 +109,14 @@ import java.util.*;
|
||||
}
|
||||
|
||||
private void init() {
|
||||
allClasses = new HashMap();
|
||||
ordinaryClasses = new HashMap();
|
||||
exceptions = new HashMap();
|
||||
enums = new HashMap();
|
||||
annotationTypes = new HashMap();
|
||||
errors = new HashMap();
|
||||
interfaces = new HashMap();
|
||||
packageSet = new HashSet();
|
||||
allClasses = new HashMap<String,Set<ClassDoc>>();
|
||||
ordinaryClasses = new HashMap<String,Set<ClassDoc>>();
|
||||
exceptions = new HashMap<String,Set<ClassDoc>>();
|
||||
enums = new HashMap<String,Set<ClassDoc>>();
|
||||
annotationTypes = new HashMap<String,Set<ClassDoc>>();
|
||||
errors = new HashMap<String,Set<ClassDoc>>();
|
||||
interfaces = new HashMap<String,Set<ClassDoc>>();
|
||||
packageSet = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -148,7 +148,7 @@ import java.util.*;
|
||||
* @param classdoc the ClassDoc to add to the catelog.
|
||||
* @param map the Map to add the ClassDoc to.
|
||||
*/
|
||||
private void addClass(ClassDoc classdoc, Map map) {
|
||||
private void addClass(ClassDoc classdoc, Map<String,Set<ClassDoc>> map) {
|
||||
|
||||
PackageDoc pkg = classdoc.containingPackage();
|
||||
if (pkg.isIncluded()) {
|
||||
@ -157,22 +157,22 @@ import java.util.*;
|
||||
return;
|
||||
}
|
||||
String key = Util.getPackageName(pkg);
|
||||
Set s = (Set) map.get(key);
|
||||
Set<ClassDoc> s = map.get(key);
|
||||
if (s == null) {
|
||||
packageSet.add(key);
|
||||
s = new HashSet();
|
||||
s = new HashSet<ClassDoc>();
|
||||
}
|
||||
s.add(classdoc);
|
||||
map.put(key, s);
|
||||
|
||||
}
|
||||
|
||||
private ClassDoc[] getArray(Map m, String key) {
|
||||
Set s = (Set) m.get(key);
|
||||
private ClassDoc[] getArray(Map<String,Set<ClassDoc>> m, String key) {
|
||||
Set<ClassDoc> s = m.get(key);
|
||||
if (s == null) {
|
||||
return new ClassDoc[] {};
|
||||
} else {
|
||||
return (ClassDoc[]) s.toArray(new ClassDoc[] {});
|
||||
return s.toArray(new ClassDoc[] {});
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,7 +202,7 @@ import java.util.*;
|
||||
* ClassDocs for.
|
||||
*/
|
||||
public String[] packageNames() {
|
||||
return (String[]) packageSet.toArray(new String[] {});
|
||||
return packageSet.toArray(new String[] {});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,35 +49,35 @@ public class ClassTree {
|
||||
* List of baseclasses. Contains only java.lang.Object. Can be used to get
|
||||
* the mapped listing of sub-classes.
|
||||
*/
|
||||
private List baseclasses = new ArrayList();
|
||||
private List<ClassDoc> baseclasses = new ArrayList<ClassDoc>();
|
||||
|
||||
/**
|
||||
* Mapping for each Class with their SubClasses
|
||||
*/
|
||||
private Map subclasses = new HashMap();
|
||||
private Map<ClassDoc,List<ClassDoc>> subclasses = new HashMap<ClassDoc,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* List of base-interfaces. Contains list of all the interfaces who do not
|
||||
* have super-interfaces. Can be used to get the mapped listing of
|
||||
* sub-interfaces.
|
||||
*/
|
||||
private List baseinterfaces = new ArrayList();
|
||||
private List<ClassDoc> baseinterfaces = new ArrayList<ClassDoc>();
|
||||
|
||||
/**
|
||||
* Mapping for each Interface with their SubInterfaces
|
||||
*/
|
||||
private Map subinterfaces = new HashMap();
|
||||
private Map<ClassDoc,List<ClassDoc>> subinterfaces = new HashMap<ClassDoc,List<ClassDoc>>();
|
||||
|
||||
private List baseEnums = new ArrayList();
|
||||
private Map subEnums = new HashMap();
|
||||
private List<ClassDoc> baseEnums = new ArrayList<ClassDoc>();
|
||||
private Map<ClassDoc,List<ClassDoc>> subEnums = new HashMap<ClassDoc,List<ClassDoc>>();
|
||||
|
||||
private List baseAnnotationTypes = new ArrayList();
|
||||
private Map subAnnotationTypes = new HashMap();
|
||||
private List<ClassDoc> baseAnnotationTypes = new ArrayList<ClassDoc>();
|
||||
private Map<ClassDoc,List<ClassDoc>> subAnnotationTypes = new HashMap<ClassDoc,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping for each Interface with classes who implement it.
|
||||
*/
|
||||
private Map implementingclasses = new HashMap();
|
||||
private Map<ClassDoc,List<ClassDoc>> implementingclasses = new HashMap<ClassDoc,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Constructor. Build the Tree using the Root of this Javadoc run.
|
||||
@ -132,7 +132,7 @@ public class ClassTree {
|
||||
processType(classes[i], configuration, baseclasses, subclasses);
|
||||
} else if (classes[i].isInterface()) {
|
||||
processInterface(classes[i]);
|
||||
List list = (List)implementingclasses.get(classes[i]);
|
||||
List<ClassDoc> list = implementingclasses.get(classes[i]);
|
||||
if (list != null) {
|
||||
Collections.sort(list);
|
||||
}
|
||||
@ -143,11 +143,11 @@ public class ClassTree {
|
||||
}
|
||||
|
||||
Collections.sort(baseinterfaces);
|
||||
for (Iterator it = subinterfaces.values().iterator(); it.hasNext(); ) {
|
||||
Collections.sort((List)it.next());
|
||||
for (Iterator<List<ClassDoc>> it = subinterfaces.values().iterator(); it.hasNext(); ) {
|
||||
Collections.sort(it.next());
|
||||
}
|
||||
for (Iterator it = subclasses.values().iterator(); it.hasNext(); ) {
|
||||
Collections.sort((List)it.next());
|
||||
for (Iterator<List<ClassDoc>> it = subclasses.values().iterator(); it.hasNext(); ) {
|
||||
Collections.sort(it.next());
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,7 +164,7 @@ public class ClassTree {
|
||||
* @param configuration the current configurtation of the doclet.
|
||||
*/
|
||||
private void processType(ClassDoc cd, Configuration configuration,
|
||||
List bases, Map subs) {
|
||||
List<ClassDoc> bases, Map<ClassDoc,List<ClassDoc>> subs) {
|
||||
ClassDoc superclass = Util.getFirstVisibleSuperClassCD(cd, configuration);
|
||||
if (superclass != null) {
|
||||
if (!add(subs, superclass, cd)) {
|
||||
@ -219,10 +219,10 @@ public class ClassTree {
|
||||
* @param cd sub-interface to be mapped.
|
||||
* @returns boolean true if class added, false if class already processed.
|
||||
*/
|
||||
private boolean add(Map map, ClassDoc superclass, ClassDoc cd) {
|
||||
List list = (List)map.get(superclass);
|
||||
private boolean add(Map<ClassDoc,List<ClassDoc>> map, ClassDoc superclass, ClassDoc cd) {
|
||||
List<ClassDoc> list = map.get(superclass);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
list = new ArrayList<ClassDoc>();
|
||||
map.put(superclass, list);
|
||||
}
|
||||
if (list.contains(cd)) {
|
||||
@ -241,10 +241,10 @@ public class ClassTree {
|
||||
* @param cd class for which the sub-class list is requested.
|
||||
* @returns List Sub-Class list for the class passed.
|
||||
*/
|
||||
private List get(Map map, ClassDoc cd) {
|
||||
List list = (List)map.get(cd);
|
||||
private List<ClassDoc> get(Map<ClassDoc,List<ClassDoc>> map, ClassDoc cd) {
|
||||
List<ClassDoc> list = map.get(cd);
|
||||
if (list == null) {
|
||||
return new ArrayList();
|
||||
return new ArrayList<ClassDoc>();
|
||||
}
|
||||
return list;
|
||||
}
|
||||
@ -254,7 +254,7 @@ public class ClassTree {
|
||||
*
|
||||
* @param cd class whose sub-class list is required.
|
||||
*/
|
||||
public List subclasses(ClassDoc cd) {
|
||||
public List<ClassDoc> subclasses(ClassDoc cd) {
|
||||
return get(subclasses, cd);
|
||||
}
|
||||
|
||||
@ -263,7 +263,7 @@ public class ClassTree {
|
||||
*
|
||||
* @param cd interface whose sub-interface list is required.
|
||||
*/
|
||||
public List subinterfaces(ClassDoc cd) {
|
||||
public List<ClassDoc> subinterfaces(ClassDoc cd) {
|
||||
return get(subinterfaces, cd);
|
||||
}
|
||||
|
||||
@ -272,9 +272,9 @@ public class ClassTree {
|
||||
*
|
||||
* @param cd interface whose implementing-classes list is required.
|
||||
*/
|
||||
public List implementingclasses(ClassDoc cd) {
|
||||
List result = get(implementingclasses, cd);
|
||||
List subinterfaces = allSubs(cd, false);
|
||||
public List<ClassDoc> implementingclasses(ClassDoc cd) {
|
||||
List<ClassDoc> result = get(implementingclasses, cd);
|
||||
List<ClassDoc> subinterfaces = allSubs(cd, false);
|
||||
|
||||
//If class x implements a subinterface of cd, then it follows
|
||||
//that class x implements cd.
|
||||
@ -301,7 +301,7 @@ public class ClassTree {
|
||||
* @param isEnum true if the subclasses should be forced to come from the
|
||||
* enum tree.
|
||||
*/
|
||||
public List subs(ClassDoc cd, boolean isEnum) {
|
||||
public List<ClassDoc> subs(ClassDoc cd, boolean isEnum) {
|
||||
if (isEnum) {
|
||||
return get(subEnums, cd);
|
||||
} else if (cd.isAnnotationType()) {
|
||||
@ -324,10 +324,10 @@ public class ClassTree {
|
||||
* @param isEnum true if the subclasses should be forced to come from the
|
||||
* enum tree.
|
||||
*/
|
||||
public List allSubs(ClassDoc cd, boolean isEnum) {
|
||||
List list = subs(cd, isEnum);
|
||||
public List<ClassDoc> allSubs(ClassDoc cd, boolean isEnum) {
|
||||
List<ClassDoc> list = subs(cd, isEnum);
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
cd = (ClassDoc)list.get(i);
|
||||
cd = list.get(i);
|
||||
List tlist = subs(cd, isEnum);
|
||||
for (int j = 0; j < tlist.size(); j++) {
|
||||
ClassDoc tcd = (ClassDoc)tlist.get(j);
|
||||
|
@ -46,138 +46,138 @@ public class ClassUseMapper {
|
||||
* Mapping of ClassDocs to set of PackageDoc used by that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToPackage = new HashMap();
|
||||
public Map<String,Set<PackageDoc>> classToPackage = new HashMap<String,Set<PackageDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of Annotations to set of PackageDoc that use the annotation.
|
||||
*/
|
||||
public Map classToPackageAnnotations = new HashMap();
|
||||
public Map<String,List<PackageDoc>> classToPackageAnnotations = new HashMap<String,List<PackageDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to set of ClassDoc used by that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToClass = new HashMap();
|
||||
public Map<String,Set<ClassDoc>> classToClass = new HashMap<String,Set<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of ClassDoc which are direct or
|
||||
* indirect subclasses of that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToSubclass = new HashMap();
|
||||
public Map<String,List<ClassDoc>> classToSubclass = new HashMap<String,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of ClassDoc which are direct or
|
||||
* indirect subinterfaces of that interface.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToSubinterface = new HashMap();
|
||||
public Map<String,List<ClassDoc>> classToSubinterface = new HashMap<String,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of ClassDoc which implement
|
||||
* this interface.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToImplementingClass = new HashMap();
|
||||
public Map<String,List<ClassDoc>> classToImplementingClass = new HashMap<String,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of FieldDoc declared as that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToField = new HashMap();
|
||||
public Map<String,List<FieldDoc>> classToField = new HashMap<String,List<FieldDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of MethodDoc returning that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToMethodReturn = new HashMap();
|
||||
public Map<String,List<MethodDoc>> classToMethodReturn = new HashMap<String,List<MethodDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of MethodDoc having that class
|
||||
* as an arg.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToMethodArgs = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToMethodArgs = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of MethodDoc which throws that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToMethodThrows = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToMethodThrows = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of ConstructorDoc having that class
|
||||
* as an arg.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToConstructorArgs = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToConstructorArgs = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* Mapping of ClassDocs to list of ConstructorDoc which throws that class.
|
||||
* Entries may be null.
|
||||
*/
|
||||
public Map classToConstructorThrows = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToConstructorThrows = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of AnnotationTypeDocs to constructors that use them.
|
||||
*/
|
||||
public Map classToConstructorAnnotations = new HashMap();
|
||||
public Map<String,List<ConstructorDoc>> classToConstructorAnnotations = new HashMap<String,List<ConstructorDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of AnnotationTypeDocs to Constructor parameters that use them.
|
||||
*/
|
||||
public Map classToConstructorParamAnnotation = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToConstructorParamAnnotation = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of ClassDocs to Constructor arguments that use them as type parameters.
|
||||
*/
|
||||
public Map classToConstructorDocArgTypeParam = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToConstructorDocArgTypeParam = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of ClassDocs to ClassDocs that use them as type parameters.
|
||||
*/
|
||||
public Map classToClassTypeParam = new HashMap();
|
||||
public Map<String,List<ClassDoc>> classToClassTypeParam = new HashMap<String,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of AnnotationTypeDocs to ClassDocs that use them.
|
||||
*/
|
||||
public Map classToClassAnnotations = new HashMap();
|
||||
public Map<String,List<ClassDoc>> classToClassAnnotations = new HashMap<String,List<ClassDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of ClassDocs to ExecutableMemberDocs that use them as type parameters.
|
||||
*/
|
||||
public Map classToExecMemberDocTypeParam = new HashMap();
|
||||
public Map<String,List<MethodDoc>> classToExecMemberDocTypeParam = new HashMap<String,List<MethodDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of ClassDocs to ExecutableMemberDocs arguments that use them as type parameters.
|
||||
*/
|
||||
public Map classToExecMemberDocArgTypeParam = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToExecMemberDocArgTypeParam = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of AnnotationTypeDocs to ExecutableMemberDocs that use them.
|
||||
*/
|
||||
public Map classToExecMemberDocAnnotations = new HashMap();
|
||||
public Map<String,List<MethodDoc>> classToExecMemberDocAnnotations = new HashMap<String,List<MethodDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of ClassDocs to ExecutableMemberDocs that have return type
|
||||
* with type parameters of that class.
|
||||
*/
|
||||
public Map classToExecMemberDocReturnTypeParam = new HashMap();
|
||||
public Map<String,List<MethodDoc>> classToExecMemberDocReturnTypeParam = new HashMap<String,List<MethodDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of AnnotationTypeDocs to MethodDoc parameters that use them.
|
||||
*/
|
||||
public Map classToExecMemberDocParamAnnotation = new HashMap();
|
||||
public Map<String,List<ExecutableMemberDoc>> classToExecMemberDocParamAnnotation = new HashMap<String,List<ExecutableMemberDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of ClassDocs to FieldDocs that use them as type parameters.
|
||||
*/
|
||||
public Map classToFieldDocTypeParam = new HashMap();
|
||||
public Map<String,List<FieldDoc>> classToFieldDocTypeParam = new HashMap<String,List<FieldDoc>>();
|
||||
|
||||
/**
|
||||
* The mapping of AnnotationTypeDocs to FieldDocs that use them.
|
||||
*/
|
||||
public Map annotationToFieldDoc = new HashMap();
|
||||
public Map<String,List<FieldDoc>> annotationToFieldDoc = new HashMap<String,List<FieldDoc>>();
|
||||
|
||||
|
||||
public ClassUseMapper(RootDoc root, ClassTree classtree) {
|
||||
@ -231,15 +231,15 @@ public class ClassUseMapper {
|
||||
/**
|
||||
* Return all subclasses of a class AND fill-in classToSubclass map.
|
||||
*/
|
||||
private Collection subclasses(ClassDoc cd) {
|
||||
Collection ret = (Collection)classToSubclass.get(cd.qualifiedName());
|
||||
private Collection<ClassDoc> subclasses(ClassDoc cd) {
|
||||
Collection<ClassDoc> ret = classToSubclass.get(cd.qualifiedName());
|
||||
if (ret == null) {
|
||||
ret = new TreeSet();
|
||||
List subs = classtree.subclasses(cd);
|
||||
ret = new TreeSet<ClassDoc>();
|
||||
List<ClassDoc> subs = classtree.subclasses(cd);
|
||||
if (subs != null) {
|
||||
ret.addAll(subs);
|
||||
for (Iterator it = subs.iterator(); it.hasNext();) {
|
||||
ret.addAll(subclasses((ClassDoc)it.next()));
|
||||
for (Iterator<ClassDoc> it = subs.iterator(); it.hasNext();) {
|
||||
ret.addAll(subclasses(it.next()));
|
||||
}
|
||||
}
|
||||
addAll(classToSubclass, cd, ret);
|
||||
@ -250,15 +250,15 @@ public class ClassUseMapper {
|
||||
/**
|
||||
* Return all subinterfaces of an interface AND fill-in classToSubinterface map.
|
||||
*/
|
||||
private Collection subinterfaces(ClassDoc cd) {
|
||||
Collection ret = (Collection)classToSubinterface.get(cd.qualifiedName());
|
||||
private Collection<ClassDoc> subinterfaces(ClassDoc cd) {
|
||||
Collection<ClassDoc> ret = classToSubinterface.get(cd.qualifiedName());
|
||||
if (ret == null) {
|
||||
ret = new TreeSet();
|
||||
List subs = classtree.subinterfaces(cd);
|
||||
ret = new TreeSet<ClassDoc>();
|
||||
List<ClassDoc> subs = classtree.subinterfaces(cd);
|
||||
if (subs != null) {
|
||||
ret.addAll(subs);
|
||||
for (Iterator it = subs.iterator(); it.hasNext();) {
|
||||
ret.addAll(subinterfaces((ClassDoc)it.next()));
|
||||
for (Iterator<ClassDoc> it = subs.iterator(); it.hasNext();) {
|
||||
ret.addAll(subinterfaces(it.next()));
|
||||
}
|
||||
}
|
||||
addAll(classToSubinterface, cd, ret);
|
||||
@ -272,11 +272,11 @@ public class ClassUseMapper {
|
||||
* implementing subinterfaces) AND fill-in both classToImplementingClass
|
||||
* and classToSubinterface maps.
|
||||
*/
|
||||
private Collection implementingClasses(ClassDoc cd) {
|
||||
Collection ret = (List)classToImplementingClass.get(cd.qualifiedName());
|
||||
private Collection<ClassDoc> implementingClasses(ClassDoc cd) {
|
||||
Collection<ClassDoc> ret = classToImplementingClass.get(cd.qualifiedName());
|
||||
if (ret == null) {
|
||||
ret = new TreeSet();
|
||||
List impl = classtree.implementingclasses(cd);
|
||||
ret = new TreeSet<ClassDoc>();
|
||||
List<ClassDoc> impl = classtree.implementingclasses(cd);
|
||||
if (impl != null) {
|
||||
ret.addAll(impl);
|
||||
for (Iterator it = impl.iterator(); it.hasNext();) {
|
||||
@ -298,7 +298,7 @@ public class ClassUseMapper {
|
||||
private void mapExecutable(ExecutableMemberDoc em) {
|
||||
Parameter[] params = em.parameters();
|
||||
boolean isConstructor = em.isConstructor();
|
||||
List classArgs = new ArrayList();
|
||||
List<Type> classArgs = new ArrayList<Type>();
|
||||
for (int k = 0; k < params.length; k++) {
|
||||
Type pcd = params[k].type();
|
||||
// primitives don't get mapped, also avoid dups
|
||||
@ -325,34 +325,38 @@ public class ClassUseMapper {
|
||||
}
|
||||
}
|
||||
|
||||
private List refList(Map map, ClassDoc cd) {
|
||||
List list = (List)map.get(cd.qualifiedName());
|
||||
private <T> List<T> refList(Map<String,List<T>> map, ClassDoc cd) {
|
||||
List<T> list = map.get(cd.qualifiedName());
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
@SuppressWarnings("unchecked")
|
||||
List<T> l = new ArrayList();
|
||||
list = l;
|
||||
map.put(cd.qualifiedName(), list);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private Set packageSet(ClassDoc cd) {
|
||||
Set pkgSet = (Set)classToPackage.get(cd.qualifiedName());
|
||||
private Set<PackageDoc> packageSet(ClassDoc cd) {
|
||||
Set<PackageDoc> pkgSet = classToPackage.get(cd.qualifiedName());
|
||||
if (pkgSet == null) {
|
||||
pkgSet = new TreeSet();
|
||||
pkgSet = new TreeSet<PackageDoc>();
|
||||
classToPackage.put(cd.qualifiedName(), pkgSet);
|
||||
}
|
||||
return pkgSet;
|
||||
}
|
||||
|
||||
private Set classSet(ClassDoc cd) {
|
||||
Set clsSet = (Set)classToClass.get(cd.qualifiedName());
|
||||
private Set<ClassDoc> classSet(ClassDoc cd) {
|
||||
Set<ClassDoc> clsSet = classToClass.get(cd.qualifiedName());
|
||||
if (clsSet == null) {
|
||||
clsSet = new TreeSet();
|
||||
@SuppressWarnings("unchecked")
|
||||
Set<ClassDoc> s = new TreeSet();
|
||||
clsSet = s;
|
||||
classToClass.put(cd.qualifiedName(), clsSet);
|
||||
}
|
||||
return clsSet;
|
||||
}
|
||||
|
||||
private void add(Map map, ClassDoc cd, ProgramElementDoc ref) {
|
||||
private <T extends ProgramElementDoc> void add(Map<String,List<T>> map, ClassDoc cd, T ref) {
|
||||
// add to specified map
|
||||
refList(map, cd).add(ref);
|
||||
|
||||
@ -361,25 +365,23 @@ public class ClassUseMapper {
|
||||
|
||||
classSet(cd).add(ref instanceof MemberDoc?
|
||||
((MemberDoc)ref).containingClass() :
|
||||
ref);
|
||||
(ClassDoc)ref);
|
||||
}
|
||||
|
||||
private void addAll(Map map, ClassDoc cd, Collection refs) {
|
||||
private void addAll(Map<String,List<ClassDoc>> map, ClassDoc cd, Collection<ClassDoc> refs) {
|
||||
if (refs == null) {
|
||||
return;
|
||||
}
|
||||
// add to specified map
|
||||
refList(map, cd).addAll(refs);
|
||||
|
||||
Set pkgSet = packageSet(cd);
|
||||
Set clsSet = classSet(cd);
|
||||
Set<PackageDoc> pkgSet = packageSet(cd);
|
||||
Set<ClassDoc> clsSet = classSet(cd);
|
||||
// add ref's package to package map and class map
|
||||
for (Iterator it = refs.iterator(); it.hasNext();) {
|
||||
ProgramElementDoc pedoc = (ProgramElementDoc)it.next();
|
||||
pkgSet.add(pedoc.containingPackage());
|
||||
clsSet.add(pedoc instanceof MemberDoc?
|
||||
((MemberDoc)pedoc).containingClass() :
|
||||
pedoc);
|
||||
for (Iterator<ClassDoc> it = refs.iterator(); it.hasNext();) {
|
||||
ClassDoc cls = it.next();
|
||||
pkgSet.add(cls.containingPackage());
|
||||
clsSet.add(cls);
|
||||
|
||||
}
|
||||
}
|
||||
@ -392,8 +394,8 @@ public class ClassUseMapper {
|
||||
* @param doc the doc whose type parameters are being checked.
|
||||
* @param holder the holder that owns the type parameters.
|
||||
*/
|
||||
private void mapTypeParameters(Map map, Object doc,
|
||||
ProgramElementDoc holder) {
|
||||
private <T extends ProgramElementDoc> void mapTypeParameters(Map<String,List<T>> map, Object doc,
|
||||
T holder) {
|
||||
TypeVariable[] typeVariables;
|
||||
if (doc instanceof ClassDoc) {
|
||||
typeVariables = ((ClassDoc) doc).typeParameters();
|
||||
@ -438,9 +440,8 @@ public class ClassUseMapper {
|
||||
* @param doc the doc whose type parameters are being checked.
|
||||
* @param holder the holder that owns the type parameters.
|
||||
*/
|
||||
private void mapAnnotations(Map map, Object doc,
|
||||
Object holder) {
|
||||
TypeVariable[] typeVariables;
|
||||
private <T extends ProgramElementDoc> void mapAnnotations(Map<String,List<T>> map, Object doc,
|
||||
T holder) {
|
||||
AnnotationDesc[] annotations;
|
||||
boolean isPackage = false;
|
||||
if (doc instanceof ProgramElementDoc) {
|
||||
@ -458,12 +459,31 @@ public class ClassUseMapper {
|
||||
if (isPackage)
|
||||
refList(map, annotationDoc).add(holder);
|
||||
else
|
||||
add(map, annotationDoc, (ProgramElementDoc) holder);
|
||||
add(map, annotationDoc, holder);
|
||||
}
|
||||
}
|
||||
|
||||
private void addTypeParameterToMap(Map map, Type type,
|
||||
ProgramElementDoc holder) {
|
||||
|
||||
/**
|
||||
* Map the AnnotationType to the ProgramElementDocs that use them as
|
||||
* type parameters.
|
||||
*
|
||||
* @param map the map the insert the information into.
|
||||
* @param doc the doc whose type parameters are being checked.
|
||||
* @param holder the holder that owns the type parameters.
|
||||
*/
|
||||
private <T extends PackageDoc> void mapAnnotations(Map<String,List<T>> map, PackageDoc doc,
|
||||
T holder) {
|
||||
AnnotationDesc[] annotations;
|
||||
annotations = doc.annotations();
|
||||
for (int i = 0; i < annotations.length; i++) {
|
||||
AnnotationTypeDoc annotationDoc = annotations[i].annotationType();
|
||||
refList(map, annotationDoc).add(holder);
|
||||
}
|
||||
}
|
||||
|
||||
private <T extends ProgramElementDoc> void addTypeParameterToMap(Map<String,List<T>> map, Type type,
|
||||
T holder) {
|
||||
if (type instanceof ClassDoc) {
|
||||
add(map, (ClassDoc) type, holder);
|
||||
} else if (type instanceof ParameterizedType) {
|
||||
|
@ -52,7 +52,7 @@ public class DeprecatedAPIListBuilder {
|
||||
/**
|
||||
* List of deprecated type Lists.
|
||||
*/
|
||||
private List deprecatedLists;
|
||||
private List<List<Doc>> deprecatedLists;
|
||||
|
||||
|
||||
/**
|
||||
@ -61,9 +61,9 @@ public class DeprecatedAPIListBuilder {
|
||||
* @param root Root of the tree.
|
||||
*/
|
||||
public DeprecatedAPIListBuilder(RootDoc root) {
|
||||
deprecatedLists = new ArrayList();
|
||||
deprecatedLists = new ArrayList<List<Doc>>();
|
||||
for (int i = 0; i < NUM_TYPES; i++) {
|
||||
deprecatedLists.add(i, new ArrayList());
|
||||
deprecatedLists.add(i, new ArrayList<Doc>());
|
||||
}
|
||||
buildDeprecatedAPIInfo(root);
|
||||
}
|
||||
@ -114,7 +114,7 @@ public class DeprecatedAPIListBuilder {
|
||||
* @param list List of all the particular deprecated members, e.g. methods.
|
||||
* @param members members to be added in the list.
|
||||
*/
|
||||
private void composeDeprecatedList(List list, MemberDoc[] members) {
|
||||
private void composeDeprecatedList(List<Doc> list, MemberDoc[] members) {
|
||||
for (int i = 0; i < members.length; i++) {
|
||||
if (Util.isDeprecated(members[i])) {
|
||||
list.add(members[i]);
|
||||
@ -137,8 +137,8 @@ public class DeprecatedAPIListBuilder {
|
||||
*
|
||||
* @param the constant representing the type of list being returned.
|
||||
*/
|
||||
public List getList(int type) {
|
||||
return (List) deprecatedLists.get(type);
|
||||
public List<Doc> getList(int type) {
|
||||
return deprecatedLists.get(type);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,6 +147,6 @@ public class DeprecatedAPIListBuilder {
|
||||
* @param type the type of list being checked.
|
||||
*/
|
||||
public boolean hasDocumentation(int type) {
|
||||
return ((List) deprecatedLists.get(type)).size() > 0;
|
||||
return (deprecatedLists.get(type)).size() > 0;
|
||||
}
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ public class DocFinder {
|
||||
* subclass of IOException. This subclass of DocFinder.Output allows
|
||||
* multiple tag inheritence.
|
||||
*/
|
||||
public List tagList = new ArrayList();
|
||||
public List<Tag> tagList = new ArrayList<Tag>();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,7 +53,7 @@ public class Extern {
|
||||
* Map package names onto Extern Item objects.
|
||||
* Lazily initialized.
|
||||
*/
|
||||
private Map packageToItemMap;
|
||||
private Map<String,Item> packageToItemMap;
|
||||
|
||||
/**
|
||||
* The global configuration information for this run.
|
||||
@ -101,7 +101,7 @@ public class Extern {
|
||||
this.path = path;
|
||||
this.relative = relative;
|
||||
if (packageToItemMap == null) {
|
||||
packageToItemMap = new HashMap();
|
||||
packageToItemMap = new HashMap<String,Item>();
|
||||
}
|
||||
if (!packageToItemMap.containsKey(packageName)) { // save the previous
|
||||
packageToItemMap.put(packageName, this); // mapped location
|
||||
@ -185,7 +185,7 @@ public class Extern {
|
||||
if (packageToItemMap == null) {
|
||||
return null;
|
||||
}
|
||||
return (Item)packageToItemMap.get(pkgName);
|
||||
return packageToItemMap.get(pkgName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -61,24 +61,24 @@ public class Group {
|
||||
/**
|
||||
* Map of regular expressions with the corresponding group name.
|
||||
*/
|
||||
private Map regExpGroupMap = new HashMap();
|
||||
private Map<String,String> regExpGroupMap = new HashMap<String,String>();
|
||||
|
||||
/**
|
||||
* List of regular expressions sorted according to the length. Regular
|
||||
* expression with longest length will be first in the sorted order.
|
||||
*/
|
||||
private List sortedRegExpList = new ArrayList();
|
||||
private List<String> sortedRegExpList = new ArrayList<String>();
|
||||
|
||||
/**
|
||||
* List of group names in the same order as given on the command line.
|
||||
*/
|
||||
private List groupList = new ArrayList();
|
||||
private List<String> groupList = new ArrayList<String>();
|
||||
|
||||
/**
|
||||
* Map of non-regular expressions(possible package names) with the
|
||||
* corresponding group name.
|
||||
*/
|
||||
private Map pkgNameGroupMap = new HashMap();
|
||||
private Map<String,String> pkgNameGroupMap = new HashMap<String,String>();
|
||||
|
||||
/**
|
||||
* The global configuration information for this run.
|
||||
@ -90,9 +90,9 @@ public class Group {
|
||||
* the compare method in the implementing class is doing the reverse
|
||||
* comparison.
|
||||
*/
|
||||
private static class MapKeyComparator implements Comparator {
|
||||
public int compare(Object key1, Object key2) {
|
||||
return ((String)key2).length() - ((String)key1).length();
|
||||
private static class MapKeyComparator implements Comparator<String> {
|
||||
public int compare(String key1, String key2) {
|
||||
return key2.length() - key1.length();
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,8 +182,8 @@ public class Group {
|
||||
*
|
||||
* @param packages Packages specified on the command line.
|
||||
*/
|
||||
public Map groupPackages(PackageDoc[] packages) {
|
||||
Map groupPackageMap = new HashMap();
|
||||
public Map<String,List<PackageDoc>> groupPackages(PackageDoc[] packages) {
|
||||
Map<String,List<PackageDoc>> groupPackageMap = new HashMap<String,List<PackageDoc>>();
|
||||
String defaultGroupName =
|
||||
(pkgNameGroupMap.isEmpty() && regExpGroupMap.isEmpty())?
|
||||
configuration.message.getText("doclet.Packages") :
|
||||
@ -195,7 +195,7 @@ public class Group {
|
||||
for (int i = 0; i < packages.length; i++) {
|
||||
PackageDoc pkg = packages[i];
|
||||
String pkgName = pkg.name();
|
||||
String groupName = (String)pkgNameGroupMap.get(pkgName);
|
||||
String groupName = pkgNameGroupMap.get(pkgName);
|
||||
// if this package is not explicitly assigned to a group,
|
||||
// try matching it to group specified by regular expression
|
||||
if (groupName == null) {
|
||||
@ -220,9 +220,9 @@ public class Group {
|
||||
*/
|
||||
String regExpGroupName(String pkgName) {
|
||||
for (int j = 0; j < sortedRegExpList.size(); j++) {
|
||||
String regexp = (String)sortedRegExpList.get(j);
|
||||
String regexp = sortedRegExpList.get(j);
|
||||
if (pkgName.startsWith(regexp)) {
|
||||
return (String)regExpGroupMap.get(regexp);
|
||||
return regExpGroupMap.get(regexp);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@ -235,10 +235,10 @@ public class Group {
|
||||
* @param map Map to be searched for gorup name.
|
||||
* @param groupname Group name to search.
|
||||
*/
|
||||
List getPkgList(Map map, String groupname) {
|
||||
List list = (List)map.get(groupname);
|
||||
List<PackageDoc> getPkgList(Map<String,List<PackageDoc>> map, String groupname) {
|
||||
List<PackageDoc> list = map.get(groupname);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
list = new ArrayList<PackageDoc>();
|
||||
map.put(groupname, list);
|
||||
}
|
||||
return list;
|
||||
|
@ -41,8 +41,8 @@ import java.util.*;
|
||||
*/
|
||||
public class ImplementedMethods {
|
||||
|
||||
private Map interfaces = new HashMap();
|
||||
private List methlist = new ArrayList();
|
||||
private Map<MethodDoc,Type> interfaces = new HashMap<MethodDoc,Type>();
|
||||
private List<MethodDoc> methlist = new ArrayList<MethodDoc>();
|
||||
private Configuration configuration;
|
||||
private final ClassDoc classdoc;
|
||||
private final MethodDoc method;
|
||||
@ -67,7 +67,7 @@ public class ImplementedMethods {
|
||||
*/
|
||||
public MethodDoc[] build(boolean sort) {
|
||||
buildImplementedMethodList(sort);
|
||||
return (MethodDoc[])methlist.toArray(new MethodDoc[methlist.size()]);
|
||||
return methlist.toArray(new MethodDoc[methlist.size()]);
|
||||
}
|
||||
|
||||
public MethodDoc[] build() {
|
||||
@ -75,7 +75,7 @@ public class ImplementedMethods {
|
||||
}
|
||||
|
||||
public Type getMethodHolder(MethodDoc methodDoc) {
|
||||
return (Type) interfaces.get(methodDoc);
|
||||
return interfaces.get(methodDoc);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +111,7 @@ public class ImplementedMethods {
|
||||
ClassDoc overriddenClass = method.overriddenClass();
|
||||
if (overriddenClass != null) {
|
||||
for (int i = 0; i < methlist.size(); i++) {
|
||||
ClassDoc cd = ((MethodDoc)methlist.get(i)).containingClass();
|
||||
ClassDoc cd = methlist.get(i).containingClass();
|
||||
if (cd == overriddenClass || overriddenClass.subclassOf(cd)) {
|
||||
methlist.remove(i); // remove overridden method
|
||||
return;
|
||||
@ -131,7 +131,7 @@ public class ImplementedMethods {
|
||||
private boolean overridingMethodFound(MethodDoc method) {
|
||||
ClassDoc containingClass = method.containingClass();
|
||||
for (int i = 0; i < methlist.size(); i++) {
|
||||
MethodDoc listmethod = (MethodDoc)methlist.get(i);
|
||||
MethodDoc listmethod = methlist.get(i);
|
||||
if (containingClass == listmethod.containingClass()) {
|
||||
// it's the same method.
|
||||
return true;
|
||||
|
@ -49,7 +49,7 @@ public class IndexBuilder {
|
||||
* Mapping of each Unicode Character with the member list containing
|
||||
* members with names starting with it.
|
||||
*/
|
||||
private Map indexmap = new HashMap();
|
||||
private Map<Character,List<Doc>> indexmap = new HashMap<Character,List<Doc>>();
|
||||
|
||||
/**
|
||||
* Don't generate deprecated information if true.
|
||||
@ -68,10 +68,10 @@ public class IndexBuilder {
|
||||
* A comparator used to sort classes and members.
|
||||
* Note: Maybe this compare code belongs in the tool?
|
||||
*/
|
||||
private class DocComparator implements Comparator {
|
||||
public int compare(Object d1, Object d2) {
|
||||
String doc1 = (((Doc) d1).name());
|
||||
String doc2 = (((Doc) d2).name());
|
||||
private class DocComparator implements Comparator<Doc> {
|
||||
public int compare(Doc d1, Doc d2) {
|
||||
String doc1 = d1.name();
|
||||
String doc2 = d2.name();
|
||||
int compareResult;
|
||||
if ((compareResult = doc1.compareToIgnoreCase(doc2)) != 0) {
|
||||
return compareResult;
|
||||
@ -124,8 +124,8 @@ public class IndexBuilder {
|
||||
* sort each element which is a list.
|
||||
*/
|
||||
protected void sortIndexMap() {
|
||||
for (Iterator it = indexmap.values().iterator(); it.hasNext(); ) {
|
||||
Collections.sort((List)it.next(), new DocComparator());
|
||||
for (Iterator<List<Doc>> it = indexmap.values().iterator(); it.hasNext(); ) {
|
||||
Collections.sort(it.next(), new DocComparator());
|
||||
}
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ public class IndexBuilder {
|
||||
ClassDoc[] classes = root.classes();
|
||||
if (!classesOnly) {
|
||||
if (packages.length == 0) {
|
||||
Set set = new HashSet();
|
||||
Set<PackageDoc> set = new HashSet<PackageDoc>();
|
||||
PackageDoc pd;
|
||||
for (int i = 0; i < classes.length; i++) {
|
||||
pd = classes[i].containingPackage();
|
||||
@ -149,7 +149,7 @@ public class IndexBuilder {
|
||||
set.add(pd);
|
||||
}
|
||||
}
|
||||
adjustIndexMap((PackageDoc[]) set.toArray(packages));
|
||||
adjustIndexMap(set.toArray(packages));
|
||||
} else {
|
||||
adjustIndexMap(packages);
|
||||
}
|
||||
@ -193,9 +193,9 @@ public class IndexBuilder {
|
||||
'*' :
|
||||
Character.toUpperCase(name.charAt(0));
|
||||
Character unicode = new Character(ch);
|
||||
List list = (List)indexmap.get(unicode);
|
||||
List<Doc> list = indexmap.get(unicode);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
list = new ArrayList<Doc>();
|
||||
indexmap.put(unicode, list);
|
||||
}
|
||||
list.add(elements[i]);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user