You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2018/11/23 17:32:28 UTC
[maven-javadoc-plugin] 02/02: Fix tests for Java 10
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MJAVADOC-542
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git
commit a149869a69eb04cac94a2d783b235a89f3c29b6f
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Nov 23 18:32:19 2018 +0100
Fix tests for Java 10
---
Jenkinsfile | 2 +-
pom.xml | 3 +-
src/it/projects/MJAVADOC-257/invoker.properties | 2 +
src/it/projects/MJAVADOC-497/verify.bsh | 17 +-
src/it/projects/MJAVADOC-538/pom.xml | 23 ++
.../maven/plugins/javadoc/AbstractJavadocMojo.java | 98 ++++--
.../apache/maven/plugins/javadoc/JavadocUtil.java | 119 ++++---
.../maven/plugins/javadoc/java-api-element-list-10 | 391 +++++++++++++++++++++
.../maven/plugins/javadoc/java-api-element-list-11 | 282 +++++++++++++++
.../maven/plugins/javadoc/JavadocReportTest.java | 71 +++-
10 files changed, 903 insertions(+), 105 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 8a16e4c..cc4e4ff 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -17,4 +17,4 @@
* under the License.
*/
-asfMavenTlpPlgnBuild(jdk:['7','8','9'])
+asfMavenTlpPlgnBuild(jdk:['7','8','9','10'])
diff --git a/pom.xml b/pom.xml
index 2cb684d..cccd3f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -299,7 +299,7 @@ under the License.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>2.12.0</version>
+ <version>2.23.4</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -329,6 +329,7 @@ under the License.
<!-- Checksum files cannot contain a license header -->
<exclude>**/*.sha1</exclude>
<!-- Javadoc package list files cannot contain a license header -->
+ <exclude>**/*element-list*</exclude>
<exclude>**/*package-list*</exclude>
<!-- This file is used to patch the generated Javadoc html files -->
<exclude>src/main/resources/org/apache/maven/plugins/javadoc/frame-injection-fix.txt</exclude>
diff --git a/src/it/projects/MJAVADOC-257/invoker.properties b/src/it/projects/MJAVADOC-257/invoker.properties
index 08d1d7b..12cb573 100644
--- a/src/it/projects/MJAVADOC-257/invoker.properties
+++ b/src/it/projects/MJAVADOC-257/invoker.properties
@@ -16,3 +16,5 @@
# under the License.
invoker.goals=clean site
+# there are no new doclettags for plugin-tools
+invoker.java.version=10-
diff --git a/src/it/projects/MJAVADOC-497/verify.bsh b/src/it/projects/MJAVADOC-497/verify.bsh
index 8f23e77..b891a9b 100644
--- a/src/it/projects/MJAVADOC-497/verify.bsh
+++ b/src/it/projects/MJAVADOC-497/verify.bsh
@@ -21,14 +21,25 @@ import java.io.*;
try
{
- File packageList = new File( basedir, "target/site/apidocs/package-list" );
- if ( !packageList.exists() )
+ File list;
+
+ String javaVersion = System.getProperty( "java.version" );
+ if ( javaVersion.startsWith( "1." ) || javaVersion.equals( "9" ) )
+ {
+ list = new File( basedir, "target/site/apidocs/package-list" );
+ }
+ else
+ {
+ list = new File( basedir, "target/site/apidocs/element-list" );
+ }
+
+ if ( !list.exists() )
{
System.err.println( packageList + " is missing" );
return false;
}
- FileReader fr = new FileReader( packageList );
+ FileReader fr = new FileReader( list );
BufferedReader br = new BufferedReader( fr );
String line = br.readLine();
if ( !"com.example.foo".equals( line ) || br.readLine() != null )
diff --git a/src/it/projects/MJAVADOC-538/pom.xml b/src/it/projects/MJAVADOC-538/pom.xml
index e7d3ae1..05e8ac1 100644
--- a/src/it/projects/MJAVADOC-538/pom.xml
+++ b/src/it/projects/MJAVADOC-538/pom.xml
@@ -45,4 +45,27 @@
</plugins>
</pluginManagement>
</build>
+
+ <profiles>
+ <profile>
+ <activation>
+ <jdk>[10,)</jdk>
+ </activation>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <additionalOptions>
+ <option>-html4</option>
+ </additionalOptions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
index 5dc3fd6..2f571d6 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -98,10 +98,8 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
import java.io.File;
import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.io.Writer;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -247,6 +245,10 @@ public abstract class AbstractJavadocMojo
* Default location for css
*/
private static final String RESOURCE_CSS_DIR = RESOURCE_DIR + "/css";
+
+ private static final String PACKAGE_LIST = "package-list";
+ private static final String ELEMENT_LIST = "element-list";
+
/**
* For Javadoc options appears since Java 1.4.
@@ -1748,6 +1750,8 @@ public abstract class AbstractJavadocMojo
DEFAULT_JAVA_API_LINKS.put( "api_1.7", "https://docs.oracle.com/javase/7/docs/api/" );
DEFAULT_JAVA_API_LINKS.put( "api_1.8", "https://docs.oracle.com/javase/8/docs/api/" );
DEFAULT_JAVA_API_LINKS.put( "api_9", "https://docs.oracle.com/javase/9/docs/api/" );
+ DEFAULT_JAVA_API_LINKS.put( "api_10", "https://docs.oracle.com/javase/10/docs/api/" );
+ DEFAULT_JAVA_API_LINKS.put( "api_11", "https://docs.oracle.com/en/java/javase/11/docs/api" );
}
// ----------------------------------------------------------------------
@@ -5800,34 +5804,32 @@ public abstract class AbstractJavadocMojo
return null;
}
- File javaApiPackageListFile = new File( getJavadocOptionsFile().getParentFile(), "package-list" );
+ final Path javaApiListFile;
+ final String resourceName;
+ if ( JavaVersion.parse( apiVersion ).isAtLeast( "10" ) )
+ {
+ javaApiListFile = getJavadocOptionsFile().getParentFile().toPath().resolve( "element-list" );
+ resourceName = "java-api-element-list-" + apiVersion;
+ }
+ else
+ {
+ javaApiListFile = getJavadocOptionsFile().getParentFile().toPath().resolve( "package-list" );
+ resourceName = "java-api-package-list-" + apiVersion;
+ }
OfflineLink link = new OfflineLink();
- link.setLocation( javaApiPackageListFile.getParentFile().getAbsolutePath() );
+ link.setLocation( javaApiListFile.getParent().toAbsolutePath().toString() );
link.setUrl( javaApiLink );
- InputStream in = null;
- OutputStream out = null;
- try
+ try ( InputStream in = this.getClass().getResourceAsStream( resourceName ) )
{
- in = this.getClass().getResourceAsStream( "java-api-package-list-" + apiVersion );
- out = new FileOutputStream( javaApiPackageListFile );
- IOUtil.copy( in, out );
- out.close();
- out = null;
- in.close();
- in = null;
+ Files.copy( in, javaApiListFile );
}
catch ( IOException ioe )
{
logError( "Can't get java-api-package-list-" + apiVersion + ": " + ioe.getMessage(), ioe );
return null;
}
- finally
- {
- IOUtil.close( in );
- IOUtil.close( out );
- }
return link;
}
@@ -5870,12 +5872,15 @@ public abstract class AbstractJavadocMojo
{
try
{
- URI linkUri;
+ final URI packageListUri;
+ final URI elementListUri;
+
if ( link.trim().toLowerCase( Locale.ENGLISH ).startsWith( "http:" ) || link.trim().toLowerCase(
Locale.ENGLISH ).startsWith( "https:" ) || link.trim().toLowerCase( Locale.ENGLISH ).startsWith(
"ftp:" ) || link.trim().toLowerCase( Locale.ENGLISH ).startsWith( "file:" ) )
{
- linkUri = new URI( link + "/package-list" );
+ packageListUri = new URI( link + '/' + PACKAGE_LIST );
+ elementListUri = new URI( link + '/' + ELEMENT_LIST );
}
else
{
@@ -5896,27 +5901,44 @@ public abstract class AbstractJavadocMojo
getLog().error( "The given File link: " + dir + " is not a dir." );
}
}
- linkUri = new File( dir, "package-list" ).toURI();
+ packageListUri = new File( dir, PACKAGE_LIST ).toURI();
+ elementListUri = new File( dir, ELEMENT_LIST ).toURI();
}
- if ( !JavadocUtil.isValidPackageList( linkUri.toURL(), settings, validateLinks ) )
+
+ IOException elementListIOException = null;
+ try
{
- if ( getLog().isErrorEnabled() )
+ if ( JavadocUtil.isValidElementList( elementListUri.toURL(), settings, validateLinks ) )
{
- if ( detecting )
- {
- getLog().warn( "Invalid link: " + link + "/package-list. Ignored it." );
- }
- else
- {
- getLog().error( "Invalid link: " + link + "/package-list. Ignored it." );
- }
+ return true;
}
+ }
+ catch ( IOException e )
+ {
+ elementListIOException = e;
+ }
+
+ if ( JavadocUtil.isValidPackageList( packageListUri.toURL(), settings, validateLinks ) )
+ {
+ return true;
+ }
- return false;
+ if ( getLog().isErrorEnabled() )
+ {
+ if ( detecting )
+ {
+ getLog().warn( "Invalid links: "
+ + link + " with /" + PACKAGE_LIST + " or / " + ELEMENT_LIST + ". Ignored it." );
+ }
+ else
+ {
+ getLog().error( "Invalid links: "
+ + link + " with /" + PACKAGE_LIST + " or / " + ELEMENT_LIST + ". Ignored it." );
+ }
}
- return true;
+ return false;
}
catch ( URISyntaxException e )
{
@@ -5924,11 +5946,11 @@ public abstract class AbstractJavadocMojo
{
if ( detecting )
{
- getLog().warn( "Malformed link: " + link + "/package-list. Ignored it." );
+ getLog().warn( "Malformed link: " + e.getInput() + ". Ignored it." );
}
else
{
- getLog().error( "Malformed link: " + link + "/package-list. Ignored it." );
+ getLog().error( "Malformed link: " + e.getInput() + ". Ignored it." );
}
}
return false;
@@ -5939,11 +5961,11 @@ public abstract class AbstractJavadocMojo
{
if ( detecting )
{
- getLog().warn( "Error fetching link: " + link + "/package-list. Ignored it." );
+ getLog().warn( "Error fetching link: " + link + ". Ignored it." );
}
else
{
- getLog().error( "Error fetching link: " + link + "/package-list. Ignored it." );
+ getLog().error( "Error fetching link: " + link + ". Ignored it." );
}
}
return false;
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
index 380524e..42ee8cf 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
@@ -1689,74 +1689,107 @@ public class JavadocUtil
throw new IllegalArgumentException( "The url is null" );
}
- BufferedReader reader = null;
- HttpGet httpMethod = null;
- HttpClient httpClient = null;
-
- try
+ try ( BufferedReader reader = getReader( url, settings ) )
{
- if ( "file".equals( url.getProtocol() ) )
- {
- // Intentionally using the platform default encoding here since this is what Javadoc uses internally.
- reader = new BufferedReader( new InputStreamReader( url.openStream() ) );
- }
- else
+ if ( validateContent )
{
- // http, https...
- httpClient = createHttpClient( settings, url );
-
- httpMethod = new HttpGet( url.toString() );
- HttpResponse response;
- try
- {
- response = httpClient.execute( httpMethod );
- }
- catch ( SocketTimeoutException e )
- {
- // could be a sporadic failure, one more retry before we give up
- response = httpClient.execute( httpMethod );
- }
-
- int status = response.getStatusLine().getStatusCode();
- if ( status != HttpStatus.SC_OK )
+ for ( String line = reader.readLine(); line != null; line = reader.readLine() )
{
- throw new FileNotFoundException( "Unexpected HTTP status code " + status + " getting resource "
- + url.toExternalForm() + "." );
+ if ( !isValidPackageName( line ) )
+ {
+ return false;
+ }
}
-
- // Intentionally using the platform default encoding here since this is what Javadoc uses internally.
- reader = new BufferedReader( new InputStreamReader( response.getEntity().getContent() ) );
}
+ return true;
+ }
+ }
+
+ protected static boolean isValidElementList( URL url, Settings settings, boolean validateContent )
+ throws IOException
+ {
+ if ( url == null )
+ {
+ throw new IllegalArgumentException( "The url is null" );
+ }
+ try ( BufferedReader reader = getReader( url, settings ) )
+ {
if ( validateContent )
{
for ( String line = reader.readLine(); line != null; line = reader.readLine() )
{
+ if ( line.startsWith( "module:" ) )
+ {
+ continue;
+ }
+
if ( !isValidPackageName( line ) )
{
return false;
}
}
}
-
- reader.close();
- reader = null;
-
return true;
}
- finally
+ }
+
+ private static BufferedReader getReader( URL url, Settings settings ) throws IOException
+ {
+ BufferedReader reader = null;
+
+ if ( "file".equals( url.getProtocol() ) )
{
- IOUtil.close( reader );
+ // Intentionally using the platform default encoding here since this is what Javadoc uses internally.
+ reader = new BufferedReader( new InputStreamReader( url.openStream() ) );
+ }
+ else
+ {
+ // http, https...
+ final HttpClient httpClient = createHttpClient( settings, url );
- if ( httpMethod != null )
+ final HttpGet httpMethod = new HttpGet( url.toString() );
+
+ HttpResponse response;
+ try
{
- httpMethod.releaseConnection();
+ response = httpClient.execute( httpMethod );
}
- if ( httpClient != null )
+ catch ( SocketTimeoutException e )
{
- httpClient.getConnectionManager().shutdown();
+ // could be a sporadic failure, one more retry before we give up
+ response = httpClient.execute( httpMethod );
}
+
+ int status = response.getStatusLine().getStatusCode();
+ if ( status != HttpStatus.SC_OK )
+ {
+ throw new FileNotFoundException( "Unexpected HTTP status code " + status + " getting resource "
+ + url.toExternalForm() + "." );
+ }
+
+ // Intentionally using the platform default encoding here since this is what Javadoc uses internally.
+ reader = new BufferedReader( new InputStreamReader( response.getEntity().getContent() ) )
+ {
+ @Override
+ public void close()
+ throws IOException
+ {
+ super.close();
+
+ if ( httpMethod != null )
+ {
+ httpMethod.releaseConnection();
+ }
+ if ( httpClient != null )
+ {
+ httpClient.getConnectionManager().shutdown();
+ }
+ }
+ };
}
+
+ return reader;
}
private static boolean isValidPackageName( String str )
diff --git a/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-10 b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-10
new file mode 100644
index 0000000..8c46f3d
--- /dev/null
+++ b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-10
@@ -0,0 +1,391 @@
+module:java.activation
+javax.activation
+module:java.base
+java.io
+java.lang
+java.lang.annotation
+java.lang.invoke
+java.lang.module
+java.lang.ref
+java.lang.reflect
+java.math
+java.net
+java.net.spi
+java.nio
+java.nio.channels
+java.nio.channels.spi
+java.nio.charset
+java.nio.charset.spi
+java.nio.file
+java.nio.file.attribute
+java.nio.file.spi
+java.security
+java.security.acl
+java.security.cert
+java.security.interfaces
+java.security.spec
+java.text
+java.text.spi
+java.time
+java.time.chrono
+java.time.format
+java.time.temporal
+java.time.zone
+java.util
+java.util.concurrent
+java.util.concurrent.atomic
+java.util.concurrent.locks
+java.util.function
+java.util.jar
+java.util.regex
+java.util.spi
+java.util.stream
+java.util.zip
+javax.crypto
+javax.crypto.interfaces
+javax.crypto.spec
+javax.net
+javax.net.ssl
+javax.security.auth
+javax.security.auth.callback
+javax.security.auth.login
+javax.security.auth.spi
+javax.security.auth.x500
+javax.security.cert
+module:java.compiler
+javax.annotation.processing
+javax.lang.model
+javax.lang.model.element
+javax.lang.model.type
+javax.lang.model.util
+javax.tools
+module:java.corba
+javax.activity
+javax.rmi
+javax.rmi.CORBA
+org.omg.CORBA
+org.omg.CORBA_2_3
+org.omg.CORBA_2_3.portable
+org.omg.CORBA.DynAnyPackage
+org.omg.CORBA.ORBPackage
+org.omg.CORBA.portable
+org.omg.CORBA.TypeCodePackage
+org.omg.CosNaming
+org.omg.CosNaming.NamingContextExtPackage
+org.omg.CosNaming.NamingContextPackage
+org.omg.Dynamic
+org.omg.DynamicAny
+org.omg.DynamicAny.DynAnyFactoryPackage
+org.omg.DynamicAny.DynAnyPackage
+org.omg.IOP
+org.omg.IOP.CodecFactoryPackage
+org.omg.IOP.CodecPackage
+org.omg.Messaging
+org.omg.PortableInterceptor
+org.omg.PortableInterceptor.ORBInitInfoPackage
+org.omg.PortableServer
+org.omg.PortableServer.CurrentPackage
+org.omg.PortableServer.POAManagerPackage
+org.omg.PortableServer.POAPackage
+org.omg.PortableServer.portable
+org.omg.PortableServer.ServantLocatorPackage
+org.omg.SendingContext
+org.omg.stub.java.rmi
+module:java.datatransfer
+java.awt.datatransfer
+module:java.desktop
+java.applet
+java.awt
+java.awt.color
+java.awt.desktop
+java.awt.dnd
+java.awt.event
+java.awt.font
+java.awt.geom
+java.awt.im
+java.awt.im.spi
+java.awt.image
+java.awt.image.renderable
+java.awt.print
+java.beans
+java.beans.beancontext
+javax.accessibility
+javax.imageio
+javax.imageio.event
+javax.imageio.metadata
+javax.imageio.plugins.bmp
+javax.imageio.plugins.jpeg
+javax.imageio.plugins.tiff
+javax.imageio.spi
+javax.imageio.stream
+javax.print
+javax.print.attribute
+javax.print.attribute.standard
+javax.print.event
+javax.sound.midi
+javax.sound.midi.spi
+javax.sound.sampled
+javax.sound.sampled.spi
+javax.swing
+javax.swing.border
+javax.swing.colorchooser
+javax.swing.event
+javax.swing.filechooser
+javax.swing.plaf
+javax.swing.plaf.basic
+javax.swing.plaf.metal
+javax.swing.plaf.multi
+javax.swing.plaf.nimbus
+javax.swing.plaf.synth
+javax.swing.table
+javax.swing.text
+javax.swing.text.html
+javax.swing.text.html.parser
+javax.swing.text.rtf
+javax.swing.tree
+javax.swing.undo
+module:java.instrument
+java.lang.instrument
+module:java.jnlp
+javax.jnlp
+module:java.logging
+java.util.logging
+module:java.management
+java.lang.management
+javax.management
+javax.management.loading
+javax.management.modelmbean
+javax.management.monitor
+javax.management.openmbean
+javax.management.relation
+javax.management.remote
+javax.management.timer
+module:java.management.rmi
+javax.management.remote.rmi
+module:java.naming
+javax.naming
+javax.naming.directory
+javax.naming.event
+javax.naming.ldap
+javax.naming.spi
+module:java.prefs
+java.util.prefs
+module:java.rmi
+java.rmi
+java.rmi.activation
+java.rmi.dgc
+java.rmi.registry
+java.rmi.server
+javax.rmi.ssl
+module:java.scripting
+javax.script
+module:java.se
+module:java.se.ee
+module:java.security.jgss
+javax.security.auth.kerberos
+org.ietf.jgss
+module:java.security.sasl
+javax.security.sasl
+module:java.smartcardio
+javax.smartcardio
+module:java.sql
+java.sql
+javax.sql
+javax.transaction.xa
+module:java.sql.rowset
+javax.sql.rowset
+javax.sql.rowset.serial
+javax.sql.rowset.spi
+module:java.transaction
+javax.transaction
+module:java.xml
+javax.xml
+javax.xml.catalog
+javax.xml.datatype
+javax.xml.namespace
+javax.xml.parsers
+javax.xml.stream
+javax.xml.stream.events
+javax.xml.stream.util
+javax.xml.transform
+javax.xml.transform.dom
+javax.xml.transform.sax
+javax.xml.transform.stax
+javax.xml.transform.stream
+javax.xml.validation
+javax.xml.xpath
+org.w3c.dom
+org.w3c.dom.bootstrap
+org.w3c.dom.events
+org.w3c.dom.ls
+org.w3c.dom.ranges
+org.w3c.dom.traversal
+org.w3c.dom.views
+org.xml.sax
+org.xml.sax.ext
+org.xml.sax.helpers
+module:java.xml.bind
+javax.xml.bind
+javax.xml.bind.annotation
+javax.xml.bind.annotation.adapters
+javax.xml.bind.attachment
+javax.xml.bind.helpers
+javax.xml.bind.util
+module:java.xml.crypto
+javax.xml.crypto
+javax.xml.crypto.dom
+javax.xml.crypto.dsig
+javax.xml.crypto.dsig.dom
+javax.xml.crypto.dsig.keyinfo
+javax.xml.crypto.dsig.spec
+module:java.xml.ws
+javax.jws
+javax.jws.soap
+javax.xml.soap
+javax.xml.ws
+javax.xml.ws.handler
+javax.xml.ws.handler.soap
+javax.xml.ws.http
+javax.xml.ws.soap
+javax.xml.ws.spi
+javax.xml.ws.spi.http
+javax.xml.ws.wsaddressing
+module:java.xml.ws.annotation
+javax.annotation
+module:javafx.base
+javafx.beans
+javafx.beans.binding
+javafx.beans.property
+javafx.beans.property.adapter
+javafx.beans.value
+javafx.collections
+javafx.collections.transformation
+javafx.event
+javafx.util
+javafx.util.converter
+module:javafx.controls
+javafx.scene.chart
+javafx.scene.control
+javafx.scene.control.cell
+javafx.scene.control.skin
+module:javafx.fxml
+javafx.fxml
+module:javafx.graphics
+javafx.animation
+javafx.application
+javafx.concurrent
+javafx.css
+javafx.css.converter
+javafx.geometry
+javafx.print
+javafx.scene
+javafx.scene.canvas
+javafx.scene.effect
+javafx.scene.image
+javafx.scene.input
+javafx.scene.layout
+javafx.scene.paint
+javafx.scene.shape
+javafx.scene.text
+javafx.scene.transform
+javafx.stage
+module:javafx.media
+javafx.scene.media
+module:javafx.swing
+javafx.embed.swing
+module:javafx.web
+javafx.scene.web
+module:jdk.accessibility
+com.sun.java.accessibility.util
+module:jdk.attach
+com.sun.tools.attach
+com.sun.tools.attach.spi
+module:jdk.charsets
+module:jdk.compiler
+com.sun.source.doctree
+com.sun.source.tree
+com.sun.source.util
+com.sun.tools.javac
+module:jdk.crypto.cryptoki
+module:jdk.crypto.ec
+module:jdk.dynalink
+jdk.dynalink
+jdk.dynalink.beans
+jdk.dynalink.linker
+jdk.dynalink.linker.support
+jdk.dynalink.support
+module:jdk.editpad
+module:jdk.hotspot.agent
+module:jdk.httpserver
+com.sun.net.httpserver
+com.sun.net.httpserver.spi
+module:jdk.incubator.httpclient
+jdk.incubator.http
+module:jdk.jartool
+com.sun.jarsigner
+jdk.security.jarsigner
+module:jdk.javadoc
+com.sun.javadoc
+com.sun.tools.javadoc
+jdk.javadoc.doclet
+module:jdk.jcmd
+module:jdk.jconsole
+com.sun.tools.jconsole
+module:jdk.jdeps
+module:jdk.jdi
+com.sun.jdi
+com.sun.jdi.connect
+com.sun.jdi.connect.spi
+com.sun.jdi.event
+com.sun.jdi.request
+module:jdk.jdwp.agent
+module:jdk.jfr
+jdk.jfr
+jdk.jfr.consumer
+module:jdk.jlink
+module:jdk.jshell
+jdk.jshell
+jdk.jshell.execution
+jdk.jshell.spi
+jdk.jshell.tool
+module:jdk.jsobject
+netscape.javascript
+module:jdk.jstatd
+module:jdk.localedata
+module:jdk.management
+com.sun.management
+module:jdk.management.agent
+module:jdk.management.cmm
+jdk.management.cmm
+module:jdk.management.jfr
+jdk.management.jfr
+module:jdk.management.resource
+jdk.management.resource
+module:jdk.naming.dns
+module:jdk.naming.rmi
+module:jdk.net
+jdk.net
+module:jdk.pack
+module:jdk.packager.services
+jdk.packager.services
+jdk.packager.services.singleton
+module:jdk.rmic
+module:jdk.scripting.nashorn
+jdk.nashorn.api.scripting
+jdk.nashorn.api.tree
+module:jdk.sctp
+com.sun.nio.sctp
+module:jdk.security.auth
+com.sun.security.auth
+com.sun.security.auth.callback
+com.sun.security.auth.login
+com.sun.security.auth.module
+module:jdk.security.jgss
+com.sun.security.jgss
+module:jdk.snmp
+module:jdk.xml.dom
+org.w3c.dom.css
+org.w3c.dom.html
+org.w3c.dom.stylesheets
+org.w3c.dom.xpath
+module:jdk.zipfs
\ No newline at end of file
diff --git a/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11 b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11
new file mode 100644
index 0000000..bfb4f01
--- /dev/null
+++ b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11
@@ -0,0 +1,282 @@
+module:java.base
+java.io
+java.lang
+java.lang.annotation
+java.lang.invoke
+java.lang.module
+java.lang.ref
+java.lang.reflect
+java.math
+java.net
+java.net.spi
+java.nio
+java.nio.channels
+java.nio.channels.spi
+java.nio.charset
+java.nio.charset.spi
+java.nio.file
+java.nio.file.attribute
+java.nio.file.spi
+java.security
+java.security.acl
+java.security.cert
+java.security.interfaces
+java.security.spec
+java.text
+java.text.spi
+java.time
+java.time.chrono
+java.time.format
+java.time.temporal
+java.time.zone
+java.util
+java.util.concurrent
+java.util.concurrent.atomic
+java.util.concurrent.locks
+java.util.function
+java.util.jar
+java.util.regex
+java.util.spi
+java.util.stream
+java.util.zip
+javax.crypto
+javax.crypto.interfaces
+javax.crypto.spec
+javax.net
+javax.net.ssl
+javax.security.auth
+javax.security.auth.callback
+javax.security.auth.login
+javax.security.auth.spi
+javax.security.auth.x500
+javax.security.cert
+module:java.compiler
+javax.annotation.processing
+javax.lang.model
+javax.lang.model.element
+javax.lang.model.type
+javax.lang.model.util
+javax.tools
+module:java.datatransfer
+java.awt.datatransfer
+module:java.desktop
+java.applet
+java.awt
+java.awt.color
+java.awt.desktop
+java.awt.dnd
+java.awt.event
+java.awt.font
+java.awt.geom
+java.awt.im
+java.awt.im.spi
+java.awt.image
+java.awt.image.renderable
+java.awt.print
+java.beans
+java.beans.beancontext
+javax.accessibility
+javax.imageio
+javax.imageio.event
+javax.imageio.metadata
+javax.imageio.plugins.bmp
+javax.imageio.plugins.jpeg
+javax.imageio.plugins.tiff
+javax.imageio.spi
+javax.imageio.stream
+javax.print
+javax.print.attribute
+javax.print.attribute.standard
+javax.print.event
+javax.sound.midi
+javax.sound.midi.spi
+javax.sound.sampled
+javax.sound.sampled.spi
+javax.swing
+javax.swing.border
+javax.swing.colorchooser
+javax.swing.event
+javax.swing.filechooser
+javax.swing.plaf
+javax.swing.plaf.basic
+javax.swing.plaf.metal
+javax.swing.plaf.multi
+javax.swing.plaf.nimbus
+javax.swing.plaf.synth
+javax.swing.table
+javax.swing.text
+javax.swing.text.html
+javax.swing.text.html.parser
+javax.swing.text.rtf
+javax.swing.tree
+javax.swing.undo
+module:java.instrument
+java.lang.instrument
+module:java.logging
+java.util.logging
+module:java.management
+java.lang.management
+javax.management
+javax.management.loading
+javax.management.modelmbean
+javax.management.monitor
+javax.management.openmbean
+javax.management.relation
+javax.management.remote
+javax.management.timer
+module:java.management.rmi
+javax.management.remote.rmi
+module:java.naming
+javax.naming
+javax.naming.directory
+javax.naming.event
+javax.naming.ldap
+javax.naming.spi
+module:java.net.http
+java.net.http
+module:java.prefs
+java.util.prefs
+module:java.rmi
+java.rmi
+java.rmi.activation
+java.rmi.dgc
+java.rmi.registry
+java.rmi.server
+javax.rmi.ssl
+module:java.scripting
+javax.script
+module:java.se
+module:java.security.jgss
+javax.security.auth.kerberos
+org.ietf.jgss
+module:java.security.sasl
+javax.security.sasl
+module:java.smartcardio
+javax.smartcardio
+module:java.sql
+java.sql
+javax.sql
+module:java.sql.rowset
+javax.sql.rowset
+javax.sql.rowset.serial
+javax.sql.rowset.spi
+module:java.transaction.xa
+javax.transaction.xa
+module:java.xml
+javax.xml
+javax.xml.catalog
+javax.xml.datatype
+javax.xml.namespace
+javax.xml.parsers
+javax.xml.stream
+javax.xml.stream.events
+javax.xml.stream.util
+javax.xml.transform
+javax.xml.transform.dom
+javax.xml.transform.sax
+javax.xml.transform.stax
+javax.xml.transform.stream
+javax.xml.validation
+javax.xml.xpath
+org.w3c.dom
+org.w3c.dom.bootstrap
+org.w3c.dom.events
+org.w3c.dom.ls
+org.w3c.dom.ranges
+org.w3c.dom.traversal
+org.w3c.dom.views
+org.xml.sax
+org.xml.sax.ext
+org.xml.sax.helpers
+module:java.xml.crypto
+javax.xml.crypto
+javax.xml.crypto.dom
+javax.xml.crypto.dsig
+javax.xml.crypto.dsig.dom
+javax.xml.crypto.dsig.keyinfo
+javax.xml.crypto.dsig.spec
+module:jdk.accessibility
+com.sun.java.accessibility.util
+module:jdk.attach
+com.sun.tools.attach
+com.sun.tools.attach.spi
+module:jdk.charsets
+module:jdk.compiler
+com.sun.source.doctree
+com.sun.source.tree
+com.sun.source.util
+com.sun.tools.javac
+module:jdk.crypto.cryptoki
+module:jdk.crypto.ec
+module:jdk.dynalink
+jdk.dynalink
+jdk.dynalink.beans
+jdk.dynalink.linker
+jdk.dynalink.linker.support
+jdk.dynalink.support
+module:jdk.editpad
+module:jdk.hotspot.agent
+module:jdk.httpserver
+com.sun.net.httpserver
+com.sun.net.httpserver.spi
+module:jdk.jartool
+com.sun.jarsigner
+jdk.security.jarsigner
+module:jdk.javadoc
+com.sun.javadoc
+com.sun.tools.javadoc
+jdk.javadoc.doclet
+module:jdk.jcmd
+module:jdk.jconsole
+com.sun.tools.jconsole
+module:jdk.jdeps
+module:jdk.jdi
+com.sun.jdi
+com.sun.jdi.connect
+com.sun.jdi.connect.spi
+com.sun.jdi.event
+com.sun.jdi.request
+module:jdk.jdwp.agent
+module:jdk.jfr
+jdk.jfr
+jdk.jfr.consumer
+module:jdk.jlink
+module:jdk.jshell
+jdk.jshell
+jdk.jshell.execution
+jdk.jshell.spi
+jdk.jshell.tool
+module:jdk.jsobject
+netscape.javascript
+module:jdk.jstatd
+module:jdk.localedata
+module:jdk.management
+com.sun.management
+module:jdk.management.agent
+module:jdk.management.jfr
+jdk.management.jfr
+module:jdk.naming.dns
+module:jdk.naming.rmi
+module:jdk.net
+jdk.net
+jdk.nio
+module:jdk.pack
+module:jdk.rmic
+module:jdk.scripting.nashorn
+jdk.nashorn.api.scripting
+jdk.nashorn.api.tree
+module:jdk.sctp
+com.sun.nio.sctp
+module:jdk.security.auth
+com.sun.security.auth
+com.sun.security.auth.callback
+com.sun.security.auth.login
+com.sun.security.auth.module
+module:jdk.security.jgss
+com.sun.security.jgss
+module:jdk.xml.dom
+org.w3c.dom.css
+org.w3c.dom.html
+org.w3c.dom.stylesheets
+org.w3c.dom.xpath
+module:jdk.zipfs
\ No newline at end of file
diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java b/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java
index f21e063..5c8d6fe 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java
@@ -29,9 +29,11 @@ import java.io.IOException;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.nio.file.Files;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.StringJoiner;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
@@ -193,21 +195,12 @@ public class JavadocReportTest
private static String readFile( File file )
throws IOException
{
- String strTmp;
StringBuilder str = new StringBuilder( (int) file.length() );
- BufferedReader in = new BufferedReader( new FileReader( file ) );
- try
+ for ( String strTmp : Files.readAllLines( file.toPath() ) )
{
- while ( ( strTmp = in.readLine() ) != null )
- {
- str.append( LINE_SEPARATOR );
- str.append( strTmp );
- }
- }
- finally
- {
- in.close();
+ str.append( LINE_SEPARATOR);
+ str.append( strTmp );
}
return str.toString();
@@ -259,8 +252,16 @@ public class JavadocReportTest
assertTrue( new File( apidocs, "index-all.html" ).exists() );
assertTrue( new File( apidocs, "index.html" ).exists() );
assertTrue( new File( apidocs, "overview-tree.html" ).exists() );
- assertTrue( new File( apidocs, "package-list" ).exists() );
assertTrue( new File( apidocs, "stylesheet.css" ).exists() );
+
+ if ( JavaVersion.JAVA_VERSION.isAtLeast( "10" ) )
+ {
+ assertTrue( new File( apidocs, "element-list" ).exists() );
+ }
+ else
+ {
+ assertTrue( new File( apidocs, "package-list" ).exists() );
+ }
}
/**
@@ -314,8 +315,8 @@ public class JavadocReportTest
throws Exception
{
// Should be an assumption, but not supported by TestCase
- // Seems like a bug in Javadoc 9
- if ( JavaVersion.JAVA_SPECIFICATION_VERSION.compareTo( JavaVersion.parse( "9" ) ) == 0 )
+ // Seems like a bug in Javadoc 9 and above
+ if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isAtLeast( "9" ) )
{
return;
}
@@ -495,8 +496,16 @@ public class JavadocReportTest
assertTrue( new File( apidocs, "index-all.html" ).exists() );
assertTrue( new File( apidocs, "index.html" ).exists() );
assertTrue( new File( apidocs, "overview-tree.html" ).exists() );
- assertTrue( new File( apidocs, "package-list" ).exists() );
assertTrue( new File( apidocs, "stylesheet.css" ).exists() );
+
+ if ( JavaVersion.JAVA_VERSION.isBefore( "10" ) )
+ {
+ assertTrue( new File( apidocs, "package-list" ).exists() );
+ }
+ else
+ {
+ assertTrue( new File( apidocs, "element-list" ).exists() );
+ }
}
/**
@@ -539,7 +548,15 @@ public class JavadocReportTest
// ----------------------------------------------------------------------
// taglet-test: check if a taglet is used
// ----------------------------------------------------------------------
-
+
+ // Should be an assumption, but not supported by TestCase
+ // com.sun.tools.doclets.Taglet not supported by Java9 anymore
+ // Should be refactored with jdk.javadoc.doclet.Taglet
+ if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isAtLeast( "10" ) )
+ {
+ return;
+ }
+
File testPom = new File( unit, "taglet-test/taglet-test-plugin-config.xml" );
JavadocReport mojo = lookupMojo( testPom );
@@ -661,7 +678,7 @@ public class JavadocReportTest
assertTrue( content.contains( "<img src=\"doc-files/maven-feather.png\" alt=\"Maven\">" ) );
JavaVersion javadocVersion = (JavaVersion) getVariableValueFromObject( mojo, "javadocRuntimeVersion" );
- if( javadocVersion.isAtLeast( "1.8" ) && javadocVersion.isBefore( "10" ) )
+ if( javadocVersion.isAtLeast( "1.8" ) && javadocVersion.isBefore( "12" ) )
{
// https://bugs.openjdk.java.net/browse/JDK-8032205
assertTrue( "Javadoc runtime version: " + javadocVersion
@@ -1020,6 +1037,13 @@ public class JavadocReportTest
public void testTagletArtifacts()
throws Exception
{
+ // Should be an assumption, but not supported by TestCase
+ // com.sun.tools.doclets.Taglet not supported by Java 10 anymore
+ if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isAtLeast( "10" ) )
+ {
+ return;
+ }
+
File testPom = new File( unit, "tagletArtifacts-test/tagletArtifacts-test-plugin-config.xml" );
JavadocReport mojo = lookupMojo( testPom );
@@ -1112,7 +1136,16 @@ public class JavadocReportTest
mojo.execute();
String content = readFile( stylesheetfile );
- assertTrue( content.contains( "/* Javadoc style sheet */" ) );
+ if ( JavaVersion.JAVA_VERSION.isAtLeast( "10" ) )
+ {
+ assertTrue( "/* " + LINE_SEPARATOR +
+ " * Javadoc style sheet" + LINE_SEPARATOR +
+ " */" ) );
+ }
+ else
+ {
+ assertTrue( content.contains( "/* Javadoc style sheet */" ) );
+ }
String optionsContent = readFile( options );
assertFalse( optionsContent.contains( "-stylesheetfile" ) );