Skip to content

Commit

Permalink
[MPLUGIN-482] Consider implicit module name for javadoc URL calculation
Browse files Browse the repository at this point in the history
Add example JDK21 generated javadoc
Execute IT with profile "run-its"
  • Loading branch information
kwin committed Sep 16, 2023
1 parent f3eba37 commit 247bff7
Show file tree
Hide file tree
Showing 46 changed files with 5,171 additions and 24 deletions.
31 changes: 31 additions & 0 deletions maven-plugin-tools-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -125,4 +130,30 @@
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>run-its</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<!-- don't run ITs against all (non-LTS) JDK javadocs -->
<excludedGroups>nonLtsJavadocs</excludedGroups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

</profiles>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -299,23 +299,18 @@ public URI createLink(FullyQualifiedJavadocReference javadocReference) throws Il
return createLink(javadocReference, baseUri, this::appendMemberAsFragment, moduleName);
}

static URI createLink(
FullyQualifiedJavadocReference javadocReference,
URI baseUri,
BiFunction<URI, FullyQualifiedJavadocReference, URI> fragmentAppender) {
return createLink(javadocReference, baseUri, fragmentAppender, Optional.empty());
}

static URI createLink(
FullyQualifiedJavadocReference javadocReference,
URI baseUri,
BiFunction<URI, FullyQualifiedJavadocReference, URI> fragmentAppender,
Optional<String> pathPrefix)
Optional<String> resolvedModuleName)
throws IllegalArgumentException {
try {
URI uri = createLink(
baseUri,
javadocReference.getModuleName(),
javadocReference.getModuleName().isPresent()
? javadocReference.getModuleName()
: resolvedModuleName,
javadocReference.getPackageName(),
javadocReference.getClassName());
return fragmentAppender.apply(uri, javadocReference);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.maven.tools.plugin.javadoc;

import java.io.IOException;
import java.net.URI;
import java.util.stream.Stream;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

@Tag("nonLtsJavadocs")
class JavadocNonLtsSiteIT extends JavadocSiteIT {

// tests against all non-LTS Javadoc sites need to be enabled explicitly via tag "nonLtsJavadocs"
static Stream<Arguments> javadocBaseUrls() {
return Stream.of(
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/20/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/19/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/18/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/16/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/15/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/14/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/13/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/12/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/10/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/9/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/7/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/6/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/1.5.0/docs/api/")),
Arguments.of(URI.create("https://javaalmanac.io/jdk/1.4/api/index.html")),
Arguments.of(URI.create("https://javaalmanac.io/jdk/1.3/api/index.html")));
}

@ParameterizedTest
@MethodSource("javadocBaseUrls")
void testConstructors(URI javadocBaseUrl) throws IOException {
super.testConstructors(javadocBaseUrl);
}

@ParameterizedTest
@MethodSource("javadocBaseUrls")
void testMethods(URI javadocBaseUrl) throws IOException {
super.testMethods(javadocBaseUrl);
}

@ParameterizedTest
@MethodSource("javadocBaseUrls")
void testFields(URI javadocBaseUrl) throws IOException {
super.testFields(javadocBaseUrl);
}

@ParameterizedTest
@MethodSource("javadocBaseUrls")
void testNestedClass(URI javadocBaseUrl) throws IOException {
super.testNestedClass(javadocBaseUrl);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,11 @@
class JavadocSiteIT {

static Stream<Arguments> javadocBaseUrls() {
// only test LTS versions by default
return Stream.of(
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/16/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/15/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/14/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/13/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/12/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/en/java/javase/11/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/10/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/9/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/8/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/7/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/6/docs/api/")),
Arguments.of(URI.create("https://docs.oracle.com/javase/1.5.0/docs/api/")),
Arguments.of(URI.create("https://javaalmanac.io/jdk/1.4/api/index.html")),
Arguments.of(URI.create("https://javaalmanac.io/jdk/1.3/api/index.html")));
Arguments.of(URI.create("https://docs.oracle.com/javase/8/docs/api/")));
}

@ParameterizedTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class JavadocSiteTest {

static Stream<Arguments> jdkNamesAndVersions() {
return Stream.of(
Arguments.of("jdk21", JavadocLinkGenerator.JavadocToolVersionRange.JDK10_OR_HIGHER, "21"),
Arguments.of("jdk17", JavadocLinkGenerator.JavadocToolVersionRange.JDK10_OR_HIGHER, "17"),
Arguments.of("jdk11", JavadocLinkGenerator.JavadocToolVersionRange.JDK10_OR_HIGHER, "11"),
Arguments.of("jdk8", JavadocLinkGenerator.JavadocToolVersionRange.JDK8_OR_9, "8"));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Fri Sep 08 10:05:46 CEST 2023 -->
<title>All Classes and Interfaces</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-09-08">
<meta name="description" content="class index">
<meta name="generator" content="javadoc/AllClassesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-classes-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-classes">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
</div>
<div id="all-classes-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="all-classes-table-tab0" role="tab" aria-selected="true" aria-controls="all-classes-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="all-classes-table-tab2" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Classes</button><button id="all-classes-table-tab3" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab3', 2)" class="table-tab">Enum Classes</button></div>
<div id="all-classes-table.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="all-classes-table-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/CurrentClass.html" title="class in org.apache.maven.tools.plugin.extractor.annotations.converter.test">CurrentClass</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/OtherClass.html" title="class in org.apache.maven.tools.plugin.extractor.annotations.converter.test">OtherClass</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/other/OtherClassOtherPackage.html" title="class in org.apache.maven.tools.plugin.extractor.annotations.converter.test.other">OtherClassOtherPackage</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/other/OtherClassOtherPackage.EmbeddedEnum.html" title="enum class in org.apache.maven.tools.plugin.extractor.annotations.converter.test.other">OtherClassOtherPackage.EmbeddedEnum</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/SuperClass.html" title="class in org.apache.maven.tools.plugin.extractor.annotations.converter.test">SuperClass</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
</div>
</div>
</div>
</main>
</div>
</div>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Fri Sep 08 10:05:46 CEST 2023 -->
<title>All Packages</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-09-08">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-packages-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-packages">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
</div>
<div class="caption"><span>Package Summary</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/package-summary.html">org.apache.maven.tools.plugin.extractor.annotations.converter.test</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="org/apache/maven/tools/plugin/extractor/annotations/converter/test/other/package-summary.html">org.apache.maven.tools.plugin.extractor.annotations.converter.test.other</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
</main>
</div>
</div>
</body>
</html>
Loading

0 comments on commit 247bff7

Please sign in to comment.