Bump toolchain, Javadoc-generated links, and handwritten links to Java 27.

I rechecked links that looked worth rechecking.

RELNOTES=n/a
PiperOrigin-RevId: 994789692
This commit is contained in:
cpovirk authored and Google Java Core Libraries committed 2026-10-06 19:51:23 -07:00
1 parent 82786379da
commit 3dab0e8773
26 files changed
+47 -47

No files matched your search

+6 -6
View File
@@ -39,13 +39,13 @@ jobs:
# When we specify multiple JDKs, the final one becomes the default, which is used to execute Maven itself.
# Our Maven configuration then specifies different JDKs to use for some of the steps:
# - 11 (sometimes) to *download* to support anyone who runs JDiff or our Gradle integration tests (including our doc snapshots and our Java 11 CI test run) but not to use directly
# - 26 for running Javadoc and javac (to help people who build Guava locally and might not use a recent JDK to run Maven)
# - 27 for running Javadoc and javac (to help people who build Guava locally and might not use a recent JDK to run Maven)
- name: 'Set up JDKs'
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
java-version: |
${{ matrix.java }}
26
27
distribution: 'temurin'
cache: 'maven'
- name: 'Install'
@@ -71,12 +71,12 @@ jobs:
- name: 'Set up JDKs'
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
# For the usage of the JDK 11+17, see util/gradle_integration_tests.sh
# And 26 is for running javac (as configured in the Maven build), as usual.
# And 27 is for running javac (as configured in the Maven build), as usual.
with:
java-version: |
11
17
26
27
distribution: 'temurin'
cache: 'maven'
- name: 'Set up Gradle'
@@ -100,7 +100,7 @@ jobs:
with:
# For discussion, see the first setup-java block.
# The publish-snapshot workflow doesn't run tests, so we don't have to care which version Maven would select for that step.
java-version: 26
java-version: 27
distribution: 'temurin'
cache: 'maven'
server-id: central
@@ -132,7 +132,7 @@ jobs:
# But we need Java 11 for JDiff.
java-version: |
11
26
27
distribution: 'temurin'
cache: 'maven'
- name: 'Generate latest docs'
@@ -427,7 +427,7 @@ public class PreconditionsTest extends TestCase {
// 'test' to demonstrate some potentially ambiguous overloads. This 'test' is kind of strange,
// but essentially each line will be a call to a Preconditions method that, but for a documented
// change would be a compiler error.
// See https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.12.2 for the spec on
// See https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.12.2 for the spec on
// how javac selects overloads
@SuppressWarnings("null")
public void overloadSelection() {
@@ -166,7 +166,7 @@ public class FluentIterableTest extends TestCase {
* This test passes if the {@code concat(…).filter(…).filter(…)} statement at the end compiles.
* That statement compiles only if {@link FluentIterable#concat concat(aIterable, bIterable)}
* returns a {@link FluentIterable} of elements of an anonymous type whose supertypes are the <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.9">intersection</a>
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.9">intersection</a>
* of the supertypes of {@code A} and the supertypes of {@code B}.
*/
public void testConcatIntersectionType() {
@@ -103,7 +103,7 @@ class LockHeldAssertingSet<E> extends ForwardingSet<E> implements Serializable {
* We don't assert that the lock is held during calls to iterator(), stream(), and spliterator:
* `Synchronized` doesn't guarantee that it will hold the mutex for those calls because callers
* are responsible for taking the mutex themselves:
* https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Collections.html#synchronizedCollection(java.util.Collection)
* https://docs.oracle.com/en/java/javase/27/docs/api/java.base/java/util/Collections.html#synchronizedCollection(java.util.Collection)
*
* Similarly, we avoid having those methods *implemented* in terms of *other* TestSet methods
* that will perform holdsLock assertions:
@@ -25,7 +25,7 @@ import org.jspecify.annotations.Nullable;
/**
* A trivial class {@code int} wrapper that is not a <a
* href="https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/lang/doc-files/ValueBased.html">value-based
* href="https://docs.oracle.com/en/java/javase/27/docs/api/java.base/java/lang/doc-files/ValueBased.html">value-based
* class</a> like {@link Integer}. That allows us to have different equivalent instances.
*/
@NullMarked
@@ -63,7 +63,7 @@ public class MacHashFunctionTest extends TestCase {
// From https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Mac
// TODO(cpovirk): Evaluate newer list:
// https://docs.oracle.com/en/java/javase/26/docs/specs/security/standard-names.html#mac-algorithms
// https://docs.oracle.com/en/java/javase/27/docs/specs/security/standard-names.html#mac-algorithms
private static final ImmutableTable<String, SecretKey, HashFunction> ALGORITHMS =
new ImmutableTable.Builder<String, SecretKey, HashFunction>()
.put("HmacMD5", MD5_KEY, hmacMd5(MD5_KEY))
+2 -2
View File
@@ -190,7 +190,7 @@
</tags>
<!-- TODO(cpovirk): Move this to the parent after making the package-list files available there. -->
<!-- We add the link ourselves so that we can choose Java 26 over the version that -source suggests. -->
<!-- We add the link ourselves so that we can choose Java 27 over the version that -source suggests. -->
<detectJavaApiLink>false</detectJavaApiLink>
<offlineLinks>
<!-- We need local copies of some of these for 2 reasons: a User-Agent problem (https://stackoverflow.com/a/47891403/28465) and an SSL problem (https://issues.apache.org/jira/browse/MJAVADOC-507). If we choose to work around the User-Agent problem, we can go back to <links>, sidestepping the SSL problem. -->
@@ -204,7 +204,7 @@
</offlineLink>
</offlineLinks>
<links>
<link>https://docs.oracle.com/en/java/javase/26/docs/api/</link>
<link>https://docs.oracle.com/en/java/javase/27/docs/api/</link>
<link>https://jspecify.dev/docs/api/</link>
</links>
<overview>../../overview.html</overview>
@@ -383,7 +383,7 @@ public final class IntMath {
* }
*
* @throws ArithmeticException if {@code m <= 0}
* @see <a href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.17.3">
* @see <a href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.17.3">
* Remainder Operator</a>
*/
public static int mod(int x, int m) {
@@ -449,7 +449,7 @@ public final class LongMath {
* }
*
* @throws ArithmeticException if {@code m <= 0}
* @see <a href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.17.3">
* @see <a href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.17.3">
* Remainder Operator</a>
*/
@GwtIncompatible // TODO
@@ -473,7 +473,7 @@ public final class LongMath {
* }
*
* @throws ArithmeticException if {@code m <= 0}
* @see <a href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.17.3">
* @see <a href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.17.3">
* Remainder Operator</a>
*/
@GwtIncompatible // TODO
@@ -570,7 +570,7 @@ public final class ClassPath {
/**
* Returns the class path URIs specified by the {@code Class-Path} manifest attribute, according
* to <a
* href="https://docs.oracle.com/en/java/javase/26/docs/specs/jar/jar.html#main-attributes">JAR
* href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR
* File Specification</a>. If {@code manifest} is null, it means the jar file has no manifest, and
* an empty set will be returned.
*/
@@ -652,7 +652,7 @@ public final class ClassPath {
/**
* Returns the absolute uri of the Class-Path entry value as specified in <a
* href="https://docs.oracle.com/en/java/javase/26/docs/specs/jar/jar.html#main-attributes">JAR
* href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR
* File Specification</a>. Even though the specification only talks about relative urls, absolute
* urls are actually supported too (for example, in Maven surefire plugin).
*/
@@ -454,7 +454,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -466,7 +466,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -478,7 +478,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -490,7 +490,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -147,7 +147,7 @@ public interface ListenableFuture<V extends @Nullable Object> extends Future<V>
* Futures#addCallback addCallback()}.
*
* <p>Memory consistency effects: Actions in a thread prior to adding a listener <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-17.html#jls-17.4.5">
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-17.html#jls-17.4.5">
* <i>happen-before</i></a> its execution begins, perhaps in another thread.
*
* <p>Guava implementations of {@code ListenableFuture} promptly release references to listeners
+3 -3
View File
@@ -396,7 +396,7 @@
<configuration>
<toolchains>
<jdk>
<version>26</version>
<version>27</version>
</jdk>
</toolchains>
</configuration>
@@ -466,14 +466,14 @@
(But don't run that if you have put something into ~/.m2/toolchains.xml yourself.)
-->
<execution>
<id>download-26-and-surefire-version</id>
<id>download-27-and-surefire-version</id>
<goals>
<goal>toolchain</goal>
</goals>
<configuration>
<toolchains>
<jdk>
<version>26</version>
<version>27</version>
<vendor>temurin</vendor>
</jdk>
<testJdk>
@@ -147,7 +147,7 @@ public interface ListenableFuture<V extends @Nullable Object> extends Future<V>
* Futures#addCallback addCallback()}.
*
* <p>Memory consistency effects: Actions in a thread prior to adding a listener <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-17.html#jls-17.4.5">
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-17.html#jls-17.4.5">
* <i>happen-before</i></a> its execution begins, perhaps in another thread.
*
* <p>Guava implementations of {@code ListenableFuture} promptly release references to listeners
@@ -427,7 +427,7 @@ public class PreconditionsTest extends TestCase {
// 'test' to demonstrate some potentially ambiguous overloads. This 'test' is kind of strange,
// but essentially each line will be a call to a Preconditions method that, but for a documented
// change would be a compiler error.
// See https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.12.2 for the spec on
// See https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.12.2 for the spec on
// how javac selects overloads
@SuppressWarnings("null")
public void overloadSelection() {
@@ -166,7 +166,7 @@ public class FluentIterableTest extends TestCase {
* This test passes if the {@code concat(…).filter(…).filter(…)} statement at the end compiles.
* That statement compiles only if {@link FluentIterable#concat concat(aIterable, bIterable)}
* returns a {@link FluentIterable} of elements of an anonymous type whose supertypes are the <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.9">intersection</a>
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.9">intersection</a>
* of the supertypes of {@code A} and the supertypes of {@code B}.
*/
public void testConcatIntersectionType() {
@@ -105,7 +105,7 @@ class LockHeldAssertingSet<E> extends ForwardingSet<E> implements Serializable {
* We don't assert that the lock is held during calls to iterator(), stream(), and spliterator:
* `Synchronized` doesn't guarantee that it will hold the mutex for those calls because callers
* are responsible for taking the mutex themselves:
* https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Collections.html#synchronizedCollection(java.util.Collection)
* https://docs.oracle.com/en/java/javase/27/docs/api/java.base/java/util/Collections.html#synchronizedCollection(java.util.Collection)
*
* Similarly, we avoid having those methods *implemented* in terms of *other* TestSet methods
* that will perform holdsLock assertions:
@@ -25,7 +25,7 @@ import org.jspecify.annotations.Nullable;
/**
* A trivial class {@code int} wrapper that is not a <a
* href="https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/lang/doc-files/ValueBased.html">value-based
* href="https://docs.oracle.com/en/java/javase/27/docs/api/java.base/java/lang/doc-files/ValueBased.html">value-based
* class</a> like {@link Integer}. That allows us to have different equivalent instances.
*/
@NullMarked
@@ -63,7 +63,7 @@ public class MacHashFunctionTest extends TestCase {
// From https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Mac
// TODO(cpovirk): Evaluate newer list:
// https://docs.oracle.com/en/java/javase/26/docs/specs/security/standard-names.html#mac-algorithms
// https://docs.oracle.com/en/java/javase/27/docs/specs/security/standard-names.html#mac-algorithms
private static final ImmutableTable<String, SecretKey, HashFunction> ALGORITHMS =
new ImmutableTable.Builder<String, SecretKey, HashFunction>()
.put("HmacMD5", MD5_KEY, hmacMd5(MD5_KEY))
+2 -2
View File
@@ -183,7 +183,7 @@
</tags>
<!-- TODO(cpovirk): Move this to the parent after making the package-list files available there. -->
<!-- We add the link ourselves so that we can choose Java 26 over the version that -source suggests. -->
<!-- We add the link ourselves so that we can choose Java 27 over the version that -source suggests. -->
<detectJavaApiLink>false</detectJavaApiLink>
<offlineLinks>
<!-- We need local copies of some of these for 2 reasons: a User-Agent problem (https://stackoverflow.com/a/47891403/28465) and an SSL problem (https://issues.apache.org/jira/browse/MJAVADOC-507). If we choose to work around the User-Agent problem, we can go back to <links>, sidestepping the SSL problem. -->
@@ -197,7 +197,7 @@
</offlineLink>
</offlineLinks>
<links>
<link>https://docs.oracle.com/en/java/javase/26/docs/api/</link>
<link>https://docs.oracle.com/en/java/javase/27/docs/api/</link>
<link>https://jspecify.dev/docs/api/</link>
</links>
<overview>../overview.html</overview>
@@ -383,7 +383,7 @@ public final class IntMath {
* }
*
* @throws ArithmeticException if {@code m <= 0}
* @see <a href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.17.3">
* @see <a href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.17.3">
* Remainder Operator</a>
*/
public static int mod(int x, int m) {
@@ -449,7 +449,7 @@ public final class LongMath {
* }
*
* @throws ArithmeticException if {@code m <= 0}
* @see <a href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.17.3">
* @see <a href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.17.3">
* Remainder Operator</a>
*/
@GwtIncompatible // TODO
@@ -473,7 +473,7 @@ public final class LongMath {
* }
*
* @throws ArithmeticException if {@code m <= 0}
* @see <a href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-15.html#jls-15.17.3">
* @see <a href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-15.html#jls-15.17.3">
* Remainder Operator</a>
*/
@GwtIncompatible // TODO
@@ -570,7 +570,7 @@ public final class ClassPath {
/**
* Returns the class path URIs specified by the {@code Class-Path} manifest attribute, according
* to <a
* href="https://docs.oracle.com/en/java/javase/26/docs/specs/jar/jar.html#main-attributes">JAR
* href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR
* File Specification</a>. If {@code manifest} is null, it means the jar file has no manifest, and
* an empty set will be returned.
*/
@@ -652,7 +652,7 @@ public final class ClassPath {
/**
* Returns the absolute uri of the Class-Path entry value as specified in <a
* href="https://docs.oracle.com/en/java/javase/26/docs/specs/jar/jar.html#main-attributes">JAR
* href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR
* File Specification</a>. Even though the specification only talks about relative urls, absolute
* urls are actually supported too (for example, in Maven surefire plugin).
*/
@@ -454,7 +454,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -466,7 +466,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -478,7 +478,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -490,7 +490,7 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
/**
* Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined
* according to <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-4.html#jls-4.5.1">the rules for
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.5.1">the rules for
* type arguments</a> introduced with Java generics.
*
* @since 19.0
@@ -147,7 +147,7 @@ public interface ListenableFuture<V extends @Nullable Object> extends Future<V>
* Futures#addCallback addCallback()}.
*
* <p>Memory consistency effects: Actions in a thread prior to adding a listener <a
* href="https://docs.oracle.com/javase/specs/jls/se26/html/jls-17.html#jls-17.4.5">
* href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-17.html#jls-17.4.5">
* <i>happen-before</i></a> its execution begins, perhaps in another thread.
*
* <p>Guava implementations of {@code ListenableFuture} promptly release references to listeners
+3 -3
View File
@@ -397,7 +397,7 @@
<configuration>
<toolchains>
<jdk>
<version>26</version>
<version>27</version>
</jdk>
</toolchains>
</configuration>
@@ -462,14 +462,14 @@
(But don't run that if you have put something into ~/.m2/toolchains.xml yourself.)
-->
<execution>
<id>download-26-and-surefire-version</id>
<id>download-27-and-surefire-version</id>
<goals>
<goal>toolchain</goal>
</goals>
<configuration>
<toolchains>
<jdk>
<version>26</version>
<version>27</version>
<vendor>temurin</vendor>
</jdk>
<testJdk>