From 3ae4467e32c99461f3e577e17821c36fb6202eeb Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Thu, 3 Apr 2025 21:01:25 -0400 Subject: [PATCH 1/9] 8353641: Deprecate core library permission classes for removal Now that the Security Manager is permanently disabled, the following permission classes in the core libraries area can be deprecated for removal as they are no longer useful: FilePermission, LinkPermission, LoggingPermission, PropertyPermission, ReflectPermission, RuntimePermission, and SerializablePermission @Deprecated(forRemoval = true, since="25") Is added to each class and the existing @apiNote is converted to @deprected --- src/java.base/share/classes/java/io/FilePermission.java | 9 +++++++-- .../share/classes/java/io/ObjectStreamConstants.java | 5 ++++- .../share/classes/java/io/SerializablePermission.java | 5 +++-- .../share/classes/java/lang/RuntimePermission.java | 5 +++-- .../classes/java/lang/reflect/ReflectPermission.java | 5 +++-- .../share/classes/java/nio/file/LinkPermission.java | 5 +++-- .../share/classes/java/util/PropertyPermission.java | 9 +++++++-- .../share/classes/java/util/concurrent/ForkJoinPool.java | 1 + .../jdk/internal/access/JavaIOFilePermissionAccess.java | 4 +++- .../share/classes/jdk/internal/access/SharedSecrets.java | 3 ++- .../jdk/internal/jrtfs/JrtFileSystemProvider.java | 1 + .../sun/net/www/protocol/file/FileURLConnection.java | 4 +++- .../share/classes/sun/security/util/FilePermCompat.java | 4 +++- .../classes/java/util/logging/LoggingPermission.java | 5 +++-- .../apache/xalan/internal/xsltc/trax/TemplatesImpl.java | 1 + 15 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/java.base/share/classes/java/io/FilePermission.java b/src/java.base/share/classes/java/io/FilePermission.java index 1330766b07852..11fa8c772bd3c 100644 --- a/src/java.base/share/classes/java/io/FilePermission.java +++ b/src/java.base/share/classes/java/io/FilePermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -67,7 +67,7 @@ *

* The actions string is converted to lowercase before processing. * - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * @@ -83,6 +83,8 @@ * @serial exclude */ +@Deprecated(forRemoval = true, since="25") +@SuppressWarnings("removal") public final class FilePermission extends Permission implements Serializable { /** @@ -1115,6 +1117,7 @@ public FilePermissionCollection() { * has been marked readonly */ @Override + @SuppressWarnings("removal") public void add(Permission permission) { if (! (permission instanceof FilePermission fp)) throw new IllegalArgumentException("invalid permission: "+ @@ -1152,6 +1155,7 @@ public void add(Permission permission) { * the set, false if not. */ @Override + @SuppressWarnings("removal") public boolean implies(Permission permission) { if (! (permission instanceof FilePermission fperm)) return false; @@ -1180,6 +1184,7 @@ public boolean implies(Permission permission) { * @return an enumeration of all the FilePermission objects. */ @Override + @SuppressWarnings("removal") public Enumeration elements() { return perms.elements(); } diff --git a/src/java.base/share/classes/java/io/ObjectStreamConstants.java b/src/java.base/share/classes/java/io/ObjectStreamConstants.java index 1768a9667a281..5015d9bc15b41 100644 --- a/src/java.base/share/classes/java/io/ObjectStreamConstants.java +++ b/src/java.base/share/classes/java/io/ObjectStreamConstants.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -186,6 +186,7 @@ public interface ObjectStreamConstants { * @see java.io.ObjectInputStream#enableResolveObject(boolean) * @since 1.2 */ + @SuppressWarnings("removal") static final SerializablePermission SUBSTITUTION_PERMISSION = new SerializablePermission("enableSubstitution"); @@ -196,6 +197,7 @@ public interface ObjectStreamConstants { * @see java.io.ObjectInputStream#readObjectOverride() * @since 1.2 */ + @SuppressWarnings("removal") static final SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION = new SerializablePermission("enableSubclassImplementation"); @@ -205,6 +207,7 @@ public interface ObjectStreamConstants { * @see java.io.ObjectInputFilter.Config#setSerialFilter(ObjectInputFilter) * @since 9 */ + @SuppressWarnings("removal") static final SerializablePermission SERIAL_FILTER_PERMISSION = new SerializablePermission("serialFilter"); diff --git a/src/java.base/share/classes/java/io/SerializablePermission.java b/src/java.base/share/classes/java/io/SerializablePermission.java index 48be2eabf1f71..b6919a88d45e5 100644 --- a/src/java.base/share/classes/java/io/SerializablePermission.java +++ b/src/java.base/share/classes/java/io/SerializablePermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,7 +36,7 @@ * no actions list; you either have the named permission * or you don't. * - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * @@ -51,6 +51,7 @@ /* code was borrowed originally from java.lang.RuntimePermission. */ +@Deprecated(forRemoval = true, since="25") public final class SerializablePermission extends BasicPermission { @java.io.Serial diff --git a/src/java.base/share/classes/java/lang/RuntimePermission.java b/src/java.base/share/classes/java/lang/RuntimePermission.java index dc158be409f8e..1e3bda1625488 100644 --- a/src/java.base/share/classes/java/lang/RuntimePermission.java +++ b/src/java.base/share/classes/java/lang/RuntimePermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,7 +38,7 @@ * An asterisk may appear at the end of the name, following a ".", * or by itself, to signify a wildcard match. For example: "loadLibrary.*" * and "*" signify a wildcard match, while "*loadLibrary" and "a*b" do not. - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * @@ -53,6 +53,7 @@ * @since 1.2 */ +@Deprecated(forRemoval = true, since="25") public final class RuntimePermission extends BasicPermission { @java.io.Serial diff --git a/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java b/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java index 4910109be32b5..a8f9ace27b605 100644 --- a/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java +++ b/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,7 @@ /** * The Permission class for reflective operations. * - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * @@ -38,6 +38,7 @@ * * @since 1.2 */ +@Deprecated(forRemoval = true, since="25") public final class ReflectPermission extends java.security.BasicPermission { diff --git a/src/java.base/share/classes/java/nio/file/LinkPermission.java b/src/java.base/share/classes/java/nio/file/LinkPermission.java index e53b6aebc1f20..8fd9729d4323f 100644 --- a/src/java.base/share/classes/java/nio/file/LinkPermission.java +++ b/src/java.base/share/classes/java/nio/file/LinkPermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,12 +30,13 @@ /** * The {@code Permission} class for link creation operations. * - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * * @since 1.7 */ +@Deprecated(forRemoval = true, since="25") public final class LinkPermission extends BasicPermission { @java.io.Serial static final long serialVersionUID = -1441492453772213220L; diff --git a/src/java.base/share/classes/java/util/PropertyPermission.java b/src/java.base/share/classes/java/util/PropertyPermission.java index f5c6db0b781ec..b37c541af51cb 100644 --- a/src/java.base/share/classes/java/util/PropertyPermission.java +++ b/src/java.base/share/classes/java/util/PropertyPermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -54,7 +54,7 @@ *

* The actions string is converted to lowercase before processing. * - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * @@ -70,6 +70,7 @@ * @serial exclude */ +@Deprecated(forRemoval = true, since="25") public final class PropertyPermission extends BasicPermission { /** @@ -412,6 +413,7 @@ final class PropertyPermissionCollection extends PermissionCollection * Key is property name; value is PropertyPermission. * Not serialized; see serialization section at end of class. */ + @SuppressWarnings("removal") private transient ConcurrentHashMap perms; /** @@ -443,6 +445,7 @@ public PropertyPermissionCollection() { * object has been marked readonly */ @Override + @SuppressWarnings("removal") public void add(Permission permission) { if (! (permission instanceof PropertyPermission pp)) throw new IllegalArgumentException("invalid permission: "+ @@ -487,6 +490,7 @@ public void add(Permission permission) { * the set, false if not. */ @Override + @SuppressWarnings("removal") public boolean implies(Permission permission) { if (! (permission instanceof PropertyPermission pp)) return false; @@ -613,6 +617,7 @@ private void writeObject(ObjectOutputStream out) throws IOException { * perms field. Reads in all_allowed. */ @java.io.Serial + @SuppressWarnings("removal") private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { diff --git a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java index ec46f61291d27..b50fc22374642 100644 --- a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java +++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java @@ -1635,6 +1635,7 @@ final boolean isApparentlyUnblocked() { * Permission required for callers of methods that may start or * kill threads. Lazily constructed. */ + @SuppressWarnings("removal") static volatile RuntimePermission modifyThreadPermission; /** diff --git a/src/java.base/share/classes/jdk/internal/access/JavaIOFilePermissionAccess.java b/src/java.base/share/classes/jdk/internal/access/JavaIOFilePermissionAccess.java index 48a80ec72a445..ed9f88685d682 100644 --- a/src/java.base/share/classes/jdk/internal/access/JavaIOFilePermissionAccess.java +++ b/src/java.base/share/classes/jdk/internal/access/JavaIOFilePermissionAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ public interface JavaIOFilePermissionAccess { * @return the new FilePermission plus the alt path (as npath2) * or the input itself if no alt path is available. */ + @SuppressWarnings("removal") FilePermission newPermPlusAltPath(FilePermission input); /** @@ -44,5 +45,6 @@ public interface JavaIOFilePermissionAccess { * @return the new FilePermission using the alt path (as npath) * or null if no alt path is available */ + @SuppressWarnings("removal") FilePermission newPermUsingAltPath(FilePermission input); } diff --git a/src/java.base/share/classes/jdk/internal/access/SharedSecrets.java b/src/java.base/share/classes/jdk/internal/access/SharedSecrets.java index 8d483507203c3..3ec9d6d4bae8c 100644 --- a/src/java.base/share/classes/jdk/internal/access/SharedSecrets.java +++ b/src/java.base/share/classes/jdk/internal/access/SharedSecrets.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -287,6 +287,7 @@ public static void setJavaIOFileDescriptorAccess(JavaIOFileDescriptorAccess jiof javaIOFileDescriptorAccess = jiofda; } + @SuppressWarnings("removal") public static JavaIOFilePermissionAccess getJavaIOFilePermissionAccess() { var access = javaIOFilePermissionAccess; if (access == null) { diff --git a/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystemProvider.java b/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystemProvider.java index c0d3eeab6bdd3..9ee620f41372c 100644 --- a/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystemProvider.java +++ b/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystemProvider.java @@ -67,6 +67,7 @@ public String getScheme() { /** * Need RuntimePermission "accessSystemModules" to create or get jrt:/ */ + @SuppressWarnings("removal") private void checkPermission() { @SuppressWarnings({ "removal", "suppression" }) SecurityManager sm = System.getSecurityManager(); diff --git a/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java b/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java index 8b8908445a96f..83ff05a574e4d 100644 --- a/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java +++ b/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -199,11 +199,13 @@ public synchronized InputStream getInputStream() return is; } + @SuppressWarnings("removal") Permission permission; /* since getOutputStream isn't supported, only read permission is * relevant */ + @SuppressWarnings("removal") public Permission getPermission() throws IOException { if (permission == null) { String decodedPath = ParseUtil.decode(url.getPath()); diff --git a/src/java.base/share/classes/sun/security/util/FilePermCompat.java b/src/java.base/share/classes/sun/security/util/FilePermCompat.java index 72db4eb93bc05..651c84a462bef 100644 --- a/src/java.base/share/classes/sun/security/util/FilePermCompat.java +++ b/src/java.base/share/classes/sun/security/util/FilePermCompat.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -60,6 +60,7 @@ public class FilePermCompat { } } + @SuppressWarnings("removal") public static Permission newPermPlusAltPath(Permission input) { if (compat && input instanceof FilePermission) { return SharedSecrets.getJavaIOFilePermissionAccess() @@ -68,6 +69,7 @@ public static Permission newPermPlusAltPath(Permission input) { return input; } + @SuppressWarnings("removal") public static Permission newPermUsingAltPath(Permission input) { if (input instanceof FilePermission) { return SharedSecrets.getJavaIOFilePermissionAccess() diff --git a/src/java.logging/share/classes/java/util/logging/LoggingPermission.java b/src/java.logging/share/classes/java/util/logging/LoggingPermission.java index c48d5ba9f0698..bda0f30eec6a9 100644 --- a/src/java.logging/share/classes/java/util/logging/LoggingPermission.java +++ b/src/java.logging/share/classes/java/util/logging/LoggingPermission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,7 +31,7 @@ * This class is for logging permissions. Currently there is only one * LoggingPermission named "control". * - * @apiNote + * @deprecated * This permission cannot be used for controlling access to resources * as the Security Manager is no longer supported. * @@ -45,6 +45,7 @@ * */ +@Deprecated(forRemoval = true, since="25") public final class LoggingPermission extends java.security.BasicPermission { private static final long serialVersionUID = 63564341580231582L; diff --git a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java index 24f10e69853e7..41b83bce5df02 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java @@ -438,6 +438,7 @@ public Set findAll() { * Defines the translet class and auxiliary classes. * Returns a reference to the Class object that defines the main class */ + @SuppressWarnings("removal") private void defineTransletClasses() throws TransformerConfigurationException { From 1fa560a401fd5181863771043bb99b7a48352f4b Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 4 Apr 2025 12:36:00 -0400 Subject: [PATCH 2/9] Add SuppressWarnings to a Windows source missed earlier. --- .../classes/sun/net/www/protocol/file/UNCFileURLConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.base/windows/classes/sun/net/www/protocol/file/UNCFileURLConnection.java b/src/java.base/windows/classes/sun/net/www/protocol/file/UNCFileURLConnection.java index c36b84aa4dcfa..d5a510d8f317e 100644 --- a/src/java.base/windows/classes/sun/net/www/protocol/file/UNCFileURLConnection.java +++ b/src/java.base/windows/classes/sun/net/www/protocol/file/UNCFileURLConnection.java @@ -41,6 +41,7 @@ final class UNCFileURLConnection extends FileURLConnection { } @Override + @SuppressWarnings("removal") public Permission getPermission() { Permission perm = permission; if (perm == null) { @@ -49,4 +50,3 @@ public Permission getPermission() { return perm; } } - From bb18c1e6cbbf37a4e056fa5e04e9c2e29a946cec Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 4 Apr 2025 14:16:45 -0400 Subject: [PATCH 3/9] Updated style of @Deprecated to match most existing @Deprecated annotations `since` comes before `forRemoval` No spaces around `=` --- src/java.base/share/classes/java/io/FilePermission.java | 2 +- src/java.base/share/classes/java/io/SerializablePermission.java | 2 +- src/java.base/share/classes/java/lang/RuntimePermission.java | 2 +- .../share/classes/java/lang/reflect/ReflectPermission.java | 2 +- src/java.base/share/classes/java/nio/file/LinkPermission.java | 2 +- src/java.base/share/classes/java/util/PropertyPermission.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/java.base/share/classes/java/io/FilePermission.java b/src/java.base/share/classes/java/io/FilePermission.java index 11fa8c772bd3c..747e13792862b 100644 --- a/src/java.base/share/classes/java/io/FilePermission.java +++ b/src/java.base/share/classes/java/io/FilePermission.java @@ -83,7 +83,7 @@ * @serial exclude */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) @SuppressWarnings("removal") public final class FilePermission extends Permission implements Serializable { diff --git a/src/java.base/share/classes/java/io/SerializablePermission.java b/src/java.base/share/classes/java/io/SerializablePermission.java index b6919a88d45e5..eb8117bbd8105 100644 --- a/src/java.base/share/classes/java/io/SerializablePermission.java +++ b/src/java.base/share/classes/java/io/SerializablePermission.java @@ -51,7 +51,7 @@ /* code was borrowed originally from java.lang.RuntimePermission. */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) public final class SerializablePermission extends BasicPermission { @java.io.Serial diff --git a/src/java.base/share/classes/java/lang/RuntimePermission.java b/src/java.base/share/classes/java/lang/RuntimePermission.java index 1e3bda1625488..4f5a3d60a7ae7 100644 --- a/src/java.base/share/classes/java/lang/RuntimePermission.java +++ b/src/java.base/share/classes/java/lang/RuntimePermission.java @@ -53,7 +53,7 @@ * @since 1.2 */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) public final class RuntimePermission extends BasicPermission { @java.io.Serial diff --git a/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java b/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java index a8f9ace27b605..af86c99fa40f0 100644 --- a/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java +++ b/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java @@ -38,7 +38,7 @@ * * @since 1.2 */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) public final class ReflectPermission extends java.security.BasicPermission { diff --git a/src/java.base/share/classes/java/nio/file/LinkPermission.java b/src/java.base/share/classes/java/nio/file/LinkPermission.java index 8fd9729d4323f..7a0095b310151 100644 --- a/src/java.base/share/classes/java/nio/file/LinkPermission.java +++ b/src/java.base/share/classes/java/nio/file/LinkPermission.java @@ -36,7 +36,7 @@ * * @since 1.7 */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) public final class LinkPermission extends BasicPermission { @java.io.Serial static final long serialVersionUID = -1441492453772213220L; diff --git a/src/java.base/share/classes/java/util/PropertyPermission.java b/src/java.base/share/classes/java/util/PropertyPermission.java index b37c541af51cb..85b48359c90f6 100644 --- a/src/java.base/share/classes/java/util/PropertyPermission.java +++ b/src/java.base/share/classes/java/util/PropertyPermission.java @@ -70,7 +70,7 @@ * @serial exclude */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) public final class PropertyPermission extends BasicPermission { /** From 25aa6099ede96a21a5239b25c182b9b0cb83ed48 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 4 Apr 2025 14:55:53 -0400 Subject: [PATCH 4/9] Remove unused import of LinkPermission --- src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java b/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java index 16bb2898a8de8..03fb91e7747bc 100644 --- a/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java +++ b/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java @@ -31,7 +31,6 @@ import java.nio.file.DirectoryNotEmptyException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.LinkOption; -import java.nio.file.LinkPermission; import java.nio.file.StandardCopyOption; import java.util.concurrent.ExecutionException; From c14574935a94ecac716b3aed8eb2405a2db38f77 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 4 Apr 2025 15:10:57 -0400 Subject: [PATCH 5/9] Update copyright in WindowsFileCopy --- src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java b/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java index 03fb91e7747bc..a561e81536ab5 100644 --- a/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java +++ b/src/java.base/windows/classes/sun/nio/fs/WindowsFileCopy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it From 9a9417a76df7a66e01e0558c024f6286aa32c90b Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 4 Apr 2025 15:19:16 -0400 Subject: [PATCH 6/9] Remove unnecessary SuppressWarnings and correct Deprecated annotation style --- src/java.base/share/classes/java/io/FilePermission.java | 1 - .../classes/sun/net/www/protocol/file/FileURLConnection.java | 1 - .../share/classes/java/util/logging/LoggingPermission.java | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/java.base/share/classes/java/io/FilePermission.java b/src/java.base/share/classes/java/io/FilePermission.java index 747e13792862b..aa6f11e00ee87 100644 --- a/src/java.base/share/classes/java/io/FilePermission.java +++ b/src/java.base/share/classes/java/io/FilePermission.java @@ -84,7 +84,6 @@ */ @Deprecated(since="25", forRemoval=true) -@SuppressWarnings("removal") public final class FilePermission extends Permission implements Serializable { /** diff --git a/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java b/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java index 83ff05a574e4d..97e797040a05a 100644 --- a/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java +++ b/src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java @@ -199,7 +199,6 @@ public synchronized InputStream getInputStream() return is; } - @SuppressWarnings("removal") Permission permission; /* since getOutputStream isn't supported, only read permission is diff --git a/src/java.logging/share/classes/java/util/logging/LoggingPermission.java b/src/java.logging/share/classes/java/util/logging/LoggingPermission.java index bda0f30eec6a9..d9cf9b58bbdf1 100644 --- a/src/java.logging/share/classes/java/util/logging/LoggingPermission.java +++ b/src/java.logging/share/classes/java/util/logging/LoggingPermission.java @@ -45,7 +45,7 @@ * */ -@Deprecated(forRemoval = true, since="25") +@Deprecated(since="25", forRemoval=true) public final class LoggingPermission extends java.security.BasicPermission { private static final long serialVersionUID = 63564341580231582L; From 322c59387b17d6e00fb3134ee08024c0b8df56cd Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Mon, 7 Apr 2025 13:05:39 -0400 Subject: [PATCH 7/9] Mark as deprecated for removal as of jdk 25: SecureClassLoader.getPermissions, URLClassLoader.getPermissions. Remove dead code from ForkJoinPool. Add @SuppressWarnings("remove") --- src/java.base/share/classes/java/net/URLClassLoader.java | 7 ++++++- .../share/classes/java/security/SecureClassLoader.java | 4 ++++ .../share/classes/java/util/concurrent/ForkJoinPool.java | 7 ------- .../share/classes/sun/reflect/misc/MethodUtil.java | 4 +++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/java.base/share/classes/java/net/URLClassLoader.java b/src/java.base/share/classes/java/net/URLClassLoader.java index 90bb1c56f114e..9a5194d1337d1 100644 --- a/src/java.base/share/classes/java/net/URLClassLoader.java +++ b/src/java.base/share/classes/java/net/URLClassLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -573,8 +573,13 @@ public boolean hasMoreElements() { * * @param codesource the {@code CodeSource} * @throws NullPointerException if {@code codesource} is {@code null}. + * + * @deprecated + * This method cannot be used for controlling access to resources + * as the Security Manager is no longer supported. */ @Override + @Deprecated(since="25", forRemoval=true) protected PermissionCollection getPermissions(CodeSource codesource) { Objects.requireNonNull(codesource); return new Permissions(); diff --git a/src/java.base/share/classes/java/security/SecureClassLoader.java b/src/java.base/share/classes/java/security/SecureClassLoader.java index 8a6ba76e211ac..5dbe4672e4c4a 100644 --- a/src/java.base/share/classes/java/security/SecureClassLoader.java +++ b/src/java.base/share/classes/java/security/SecureClassLoader.java @@ -173,7 +173,11 @@ protected final Class defineClass(String name, java.nio.ByteBuffer b, * * @return the permissions for the codesource. * + * @deprecated + * This method cannot be used for controlling access to resources + * as the Security Manager is no longer supported. */ + @Deprecated(since="25", forRemoval=true) protected PermissionCollection getPermissions(CodeSource codesource) { return new Permissions(); // ProtectionDomain defers the binding diff --git a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java index b50fc22374642..7cb1c81b04951 100644 --- a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java +++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java @@ -1631,13 +1631,6 @@ final boolean isApparentlyUnblocked() { */ private static volatile int poolIds; - /** - * Permission required for callers of methods that may start or - * kill threads. Lazily constructed. - */ - @SuppressWarnings("removal") - static volatile RuntimePermission modifyThreadPermission; - /** * For VirtualThread intrinsics */ diff --git a/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java b/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java index 8d950c9a81888..d99c02821b879 100644 --- a/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java +++ b/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -186,6 +186,8 @@ private Class defineClass(String name, byte[] b) throws IOException { return defineClass(name, b, 0, b.length, cs); } + @Deprecated + @SuppressWarnings("removal") protected PermissionCollection getPermissions(CodeSource codesource) { PermissionCollection perms = super.getPermissions(codesource); perms.add(new AllPermission()); From ecd4ec06916f78a7d23b4e54b616cbe9c1f00e2f Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Mon, 7 Apr 2025 13:49:13 -0400 Subject: [PATCH 8/9] Missing suppresswarnings --- src/java.base/share/classes/java/net/URLClassLoader.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/java.base/share/classes/java/net/URLClassLoader.java b/src/java.base/share/classes/java/net/URLClassLoader.java index 9a5194d1337d1..14506c2c8de95 100644 --- a/src/java.base/share/classes/java/net/URLClassLoader.java +++ b/src/java.base/share/classes/java/net/URLClassLoader.java @@ -580,6 +580,7 @@ public boolean hasMoreElements() { */ @Override @Deprecated(since="25", forRemoval=true) + @SuppressWarnings("removal") protected PermissionCollection getPermissions(CodeSource codesource) { Objects.requireNonNull(codesource); return new Permissions(); From 6d3f003d69d3f3880621c8b8f8ef44456bf3fd14 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Mon, 7 Apr 2025 14:10:46 -0400 Subject: [PATCH 9/9] Revert "Mark as deprecated for removal as of jdk 25: SecureClassLoader.getPermissions, URLClassLoader.getPermissions." SecureClassLoader.getPermissions and URLClassLoader.getPermissions are not marked as Deprecated. --- src/java.base/share/classes/java/net/URLClassLoader.java | 8 +------- .../share/classes/java/security/SecureClassLoader.java | 4 ---- .../share/classes/sun/reflect/misc/MethodUtil.java | 4 +--- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/java.base/share/classes/java/net/URLClassLoader.java b/src/java.base/share/classes/java/net/URLClassLoader.java index 14506c2c8de95..90bb1c56f114e 100644 --- a/src/java.base/share/classes/java/net/URLClassLoader.java +++ b/src/java.base/share/classes/java/net/URLClassLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -573,14 +573,8 @@ public boolean hasMoreElements() { * * @param codesource the {@code CodeSource} * @throws NullPointerException if {@code codesource} is {@code null}. - * - * @deprecated - * This method cannot be used for controlling access to resources - * as the Security Manager is no longer supported. */ @Override - @Deprecated(since="25", forRemoval=true) - @SuppressWarnings("removal") protected PermissionCollection getPermissions(CodeSource codesource) { Objects.requireNonNull(codesource); return new Permissions(); diff --git a/src/java.base/share/classes/java/security/SecureClassLoader.java b/src/java.base/share/classes/java/security/SecureClassLoader.java index 5dbe4672e4c4a..8a6ba76e211ac 100644 --- a/src/java.base/share/classes/java/security/SecureClassLoader.java +++ b/src/java.base/share/classes/java/security/SecureClassLoader.java @@ -173,11 +173,7 @@ protected final Class defineClass(String name, java.nio.ByteBuffer b, * * @return the permissions for the codesource. * - * @deprecated - * This method cannot be used for controlling access to resources - * as the Security Manager is no longer supported. */ - @Deprecated(since="25", forRemoval=true) protected PermissionCollection getPermissions(CodeSource codesource) { return new Permissions(); // ProtectionDomain defers the binding diff --git a/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java b/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java index d99c02821b879..8d950c9a81888 100644 --- a/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java +++ b/src/java.base/share/classes/sun/reflect/misc/MethodUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -186,8 +186,6 @@ private Class defineClass(String name, byte[] b) throws IOException { return defineClass(name, b, 0, b.length, cs); } - @Deprecated - @SuppressWarnings("removal") protected PermissionCollection getPermissions(CodeSource codesource) { PermissionCollection perms = super.getPermissions(codesource); perms.add(new AllPermission());