diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 27513fef6f..8b98a73850 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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' diff --git a/android/guava-tests/test/com/google/common/base/PreconditionsTest.java b/android/guava-tests/test/com/google/common/base/PreconditionsTest.java index 4f7dad4ce7..f13f72c02c 100644 --- a/android/guava-tests/test/com/google/common/base/PreconditionsTest.java +++ b/android/guava-tests/test/com/google/common/base/PreconditionsTest.java @@ -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() { diff --git a/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java b/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java index cbd141f542..b839bfc56c 100644 --- a/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java +++ b/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java @@ -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 intersection + * href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.9">intersection * of the supertypes of {@code A} and the supertypes of {@code B}. */ public void testConcatIntersectionType() { diff --git a/android/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java b/android/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java index 90ce704a66..3b8b48e4cc 100644 --- a/android/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java +++ b/android/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java @@ -103,7 +103,7 @@ class LockHeldAssertingSet extends ForwardingSet 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: diff --git a/android/guava-tests/test/com/google/common/collect/MyInteger.java b/android/guava-tests/test/com/google/common/collect/MyInteger.java index d0f07fbb7d..5baeaec0e9 100644 --- a/android/guava-tests/test/com/google/common/collect/MyInteger.java +++ b/android/guava-tests/test/com/google/common/collect/MyInteger.java @@ -25,7 +25,7 @@ import org.jspecify.annotations.Nullable; /** * A trivial class {@code int} wrapper that is not a value-based + * href="https://docs.oracle.com/en/java/javase/27/docs/api/java.base/java/lang/doc-files/ValueBased.html">value-based * class like {@link Integer}. That allows us to have different equivalent instances. */ @NullMarked diff --git a/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java b/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java index a5ec3ae479..9a642f3c3f 100644 --- a/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java +++ b/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java @@ -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 ALGORITHMS = new ImmutableTable.Builder() .put("HmacMD5", MD5_KEY, hmacMd5(MD5_KEY)) diff --git a/android/guava/pom.xml b/android/guava/pom.xml index 88885f58dd..0c6454463e 100644 --- a/android/guava/pom.xml +++ b/android/guava/pom.xml @@ -190,7 +190,7 @@ - + false @@ -204,7 +204,7 @@ - https://docs.oracle.com/en/java/javase/26/docs/api/ + https://docs.oracle.com/en/java/javase/27/docs/api/ https://jspecify.dev/docs/api/ ../../overview.html diff --git a/android/guava/src/com/google/common/math/IntMath.java b/android/guava/src/com/google/common/math/IntMath.java index 32d0a984b3..8277109c1d 100644 --- a/android/guava/src/com/google/common/math/IntMath.java +++ b/android/guava/src/com/google/common/math/IntMath.java @@ -383,7 +383,7 @@ public final class IntMath { * } * * @throws ArithmeticException if {@code m <= 0} - * @see + * @see * Remainder Operator */ public static int mod(int x, int m) { diff --git a/android/guava/src/com/google/common/math/LongMath.java b/android/guava/src/com/google/common/math/LongMath.java index ddab4a446f..45fbe5cef7 100644 --- a/android/guava/src/com/google/common/math/LongMath.java +++ b/android/guava/src/com/google/common/math/LongMath.java @@ -449,7 +449,7 @@ public final class LongMath { * } * * @throws ArithmeticException if {@code m <= 0} - * @see + * @see * Remainder Operator */ @GwtIncompatible // TODO @@ -473,7 +473,7 @@ public final class LongMath { * } * * @throws ArithmeticException if {@code m <= 0} - * @see + * @see * Remainder Operator */ @GwtIncompatible // TODO diff --git a/android/guava/src/com/google/common/reflect/ClassPath.java b/android/guava/src/com/google/common/reflect/ClassPath.java index a0a02a4b57..f170f02a34 100644 --- a/android/guava/src/com/google/common/reflect/ClassPath.java +++ b/android/guava/src/com/google/common/reflect/ClassPath.java @@ -570,7 +570,7 @@ public final class ClassPath { /** * Returns the class path URIs specified by the {@code Class-Path} manifest attribute, according * to JAR + * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR * File Specification. 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 JAR + * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR * File Specification. Even though the specification only talks about relative urls, absolute * urls are actually supported too (for example, in Maven surefire plugin). */ diff --git a/android/guava/src/com/google/common/reflect/TypeToken.java b/android/guava/src/com/google/common/reflect/TypeToken.java index f7fa9026fe..2606d4b73d 100644 --- a/android/guava/src/com/google/common/reflect/TypeToken.java +++ b/android/guava/src/com/google/common/reflect/TypeToken.java @@ -454,7 +454,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined * according to 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 introduced with Java generics. * * @since 19.0 @@ -466,7 +466,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined * according to 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 introduced with Java generics. * * @since 19.0 @@ -478,7 +478,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined * according to 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 introduced with Java generics. * * @since 19.0 @@ -490,7 +490,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined * according to 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 introduced with Java generics. * * @since 19.0 diff --git a/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java b/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java index bb41dd9ef4..46f7f5f95a 100644 --- a/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java +++ b/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java @@ -147,7 +147,7 @@ public interface ListenableFuture extends Future * Futures#addCallback addCallback()}. * *

Memory consistency effects: Actions in a thread prior to adding a listener + * href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-17.html#jls-17.4.5"> * happen-before its execution begins, perhaps in another thread. * *

Guava implementations of {@code ListenableFuture} promptly release references to listeners diff --git a/android/pom.xml b/android/pom.xml index fc67457bd5..005c3dcda6 100644 --- a/android/pom.xml +++ b/android/pom.xml @@ -396,7 +396,7 @@ - 26 + 27 @@ -466,14 +466,14 @@ (But don't run that if you have put something into ~/.m2/toolchains.xml yourself.) --> - download-26-and-surefire-version + download-27-and-surefire-version toolchain - 26 + 27 temurin diff --git a/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java b/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java index bb41dd9ef4..46f7f5f95a 100644 --- a/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java +++ b/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java @@ -147,7 +147,7 @@ public interface ListenableFuture extends Future * Futures#addCallback addCallback()}. * *

Memory consistency effects: Actions in a thread prior to adding a listener + * href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-17.html#jls-17.4.5"> * happen-before its execution begins, perhaps in another thread. * *

Guava implementations of {@code ListenableFuture} promptly release references to listeners diff --git a/guava-tests/test/com/google/common/base/PreconditionsTest.java b/guava-tests/test/com/google/common/base/PreconditionsTest.java index 4f7dad4ce7..f13f72c02c 100644 --- a/guava-tests/test/com/google/common/base/PreconditionsTest.java +++ b/guava-tests/test/com/google/common/base/PreconditionsTest.java @@ -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() { diff --git a/guava-tests/test/com/google/common/collect/FluentIterableTest.java b/guava-tests/test/com/google/common/collect/FluentIterableTest.java index a4c284eccb..f5fdee6718 100644 --- a/guava-tests/test/com/google/common/collect/FluentIterableTest.java +++ b/guava-tests/test/com/google/common/collect/FluentIterableTest.java @@ -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 intersection + * href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-4.html#jls-4.9">intersection * of the supertypes of {@code A} and the supertypes of {@code B}. */ public void testConcatIntersectionType() { diff --git a/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java b/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java index 09ebb271d4..63eb0a2b84 100644 --- a/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java +++ b/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java @@ -105,7 +105,7 @@ class LockHeldAssertingSet extends ForwardingSet 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: diff --git a/guava-tests/test/com/google/common/collect/MyInteger.java b/guava-tests/test/com/google/common/collect/MyInteger.java index d0f07fbb7d..5baeaec0e9 100644 --- a/guava-tests/test/com/google/common/collect/MyInteger.java +++ b/guava-tests/test/com/google/common/collect/MyInteger.java @@ -25,7 +25,7 @@ import org.jspecify.annotations.Nullable; /** * A trivial class {@code int} wrapper that is not a value-based + * href="https://docs.oracle.com/en/java/javase/27/docs/api/java.base/java/lang/doc-files/ValueBased.html">value-based * class like {@link Integer}. That allows us to have different equivalent instances. */ @NullMarked diff --git a/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java b/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java index a5ec3ae479..9a642f3c3f 100644 --- a/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java +++ b/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java @@ -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 ALGORITHMS = new ImmutableTable.Builder() .put("HmacMD5", MD5_KEY, hmacMd5(MD5_KEY)) diff --git a/guava/pom.xml b/guava/pom.xml index b4fe0f9406..4431f1839c 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -183,7 +183,7 @@ - + false @@ -197,7 +197,7 @@ - https://docs.oracle.com/en/java/javase/26/docs/api/ + https://docs.oracle.com/en/java/javase/27/docs/api/ https://jspecify.dev/docs/api/ ../overview.html diff --git a/guava/src/com/google/common/math/IntMath.java b/guava/src/com/google/common/math/IntMath.java index 32d0a984b3..8277109c1d 100644 --- a/guava/src/com/google/common/math/IntMath.java +++ b/guava/src/com/google/common/math/IntMath.java @@ -383,7 +383,7 @@ public final class IntMath { * } * * @throws ArithmeticException if {@code m <= 0} - * @see + * @see * Remainder Operator */ public static int mod(int x, int m) { diff --git a/guava/src/com/google/common/math/LongMath.java b/guava/src/com/google/common/math/LongMath.java index ddab4a446f..45fbe5cef7 100644 --- a/guava/src/com/google/common/math/LongMath.java +++ b/guava/src/com/google/common/math/LongMath.java @@ -449,7 +449,7 @@ public final class LongMath { * } * * @throws ArithmeticException if {@code m <= 0} - * @see + * @see * Remainder Operator */ @GwtIncompatible // TODO @@ -473,7 +473,7 @@ public final class LongMath { * } * * @throws ArithmeticException if {@code m <= 0} - * @see + * @see * Remainder Operator */ @GwtIncompatible // TODO diff --git a/guava/src/com/google/common/reflect/ClassPath.java b/guava/src/com/google/common/reflect/ClassPath.java index a0a02a4b57..f170f02a34 100644 --- a/guava/src/com/google/common/reflect/ClassPath.java +++ b/guava/src/com/google/common/reflect/ClassPath.java @@ -570,7 +570,7 @@ public final class ClassPath { /** * Returns the class path URIs specified by the {@code Class-Path} manifest attribute, according * to JAR + * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR * File Specification. 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 JAR + * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jar/jar.html#main-attributes">JAR * File Specification. Even though the specification only talks about relative urls, absolute * urls are actually supported too (for example, in Maven surefire plugin). */ diff --git a/guava/src/com/google/common/reflect/TypeToken.java b/guava/src/com/google/common/reflect/TypeToken.java index f7fa9026fe..2606d4b73d 100644 --- a/guava/src/com/google/common/reflect/TypeToken.java +++ b/guava/src/com/google/common/reflect/TypeToken.java @@ -454,7 +454,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined * according to 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 introduced with Java generics. * * @since 19.0 @@ -466,7 +466,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined * according to 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 introduced with Java generics. * * @since 19.0 @@ -478,7 +478,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined * according to 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 introduced with Java generics. * * @since 19.0 @@ -490,7 +490,7 @@ public abstract class TypeToken extends TypeCapture implements Serializabl /** * Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined * according to 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 introduced with Java generics. * * @since 19.0 diff --git a/guava/src/com/google/common/util/concurrent/ListenableFuture.java b/guava/src/com/google/common/util/concurrent/ListenableFuture.java index bb41dd9ef4..46f7f5f95a 100644 --- a/guava/src/com/google/common/util/concurrent/ListenableFuture.java +++ b/guava/src/com/google/common/util/concurrent/ListenableFuture.java @@ -147,7 +147,7 @@ public interface ListenableFuture extends Future * Futures#addCallback addCallback()}. * *

Memory consistency effects: Actions in a thread prior to adding a listener + * href="https://docs.oracle.com/javase/specs/jls/se27/html/jls-17.html#jls-17.4.5"> * happen-before its execution begins, perhaps in another thread. * *

Guava implementations of {@code ListenableFuture} promptly release references to listeners diff --git a/pom.xml b/pom.xml index bf6f6097eb..cc9738eb71 100644 --- a/pom.xml +++ b/pom.xml @@ -397,7 +397,7 @@ - 26 + 27 @@ -462,14 +462,14 @@ (But don't run that if you have put something into ~/.m2/toolchains.xml yourself.) --> - download-26-and-surefire-version + download-27-and-surefire-version toolchain - 26 + 27 temurin