diff --git a/build.xml b/build.xml index 46937a3..fdcc328 100644 --- a/build.xml +++ b/build.xml @@ -67,6 +67,7 @@ + @@ -165,6 +166,7 @@ + diff --git a/ivy.xml b/ivy.xml index 435c349..99cde78 100644 --- a/ivy.xml +++ b/ivy.xml @@ -17,7 +17,7 @@ - + ]> diff --git a/src/main/docs/bundled-signatures.html b/src/main/docs/bundled-signatures.html index 64e2fc7..52f7547 100644 --- a/src/main/docs/bundled-signatures.html +++ b/src/main/docs/bundled-signatures.html @@ -29,14 +29,14 @@

Bundled Signatures Documentation

  • jdk-unsafe-*: Signatures of "unsafe" methods that use default charset, default locale, or default timezone. For server applications it is very stupid to call those methods, as the results will definitely not what the user wants -(for Java * = 1.7, 1.8, 9,..., 19; Ant / Maven / Gradle automatically add the compile Java version).
  • +(for Java * = 1.7, 1.8, 9,..., 20; Ant / Maven / Gradle automatically add the compile Java version).
  • jdk-deprecated-*: This disallows all deprecated -methods from the JDK (for Java * = 1.7, 1.8, 9,..., 19; Ant / Maven / Gradle automatically add the compile Java version).
  • +methods from the JDK (for Java * = 1.7, 1.8, 9,..., 20; Ant / Maven / Gradle automatically add the compile Java version).
  • jdk-internal-*: Lists all internal packages of the JDK as of Security.getProperty("package.access"). Calling those methods will always trigger security manager and is completely forbidden from Java 9 on -(for Java * = 1.7, 1.8, 9,..., 19; Ant / Maven / Gradle automatically add the compile Java version, since forbiddenapis v2.1).
  • +(for Java * = 1.7, 1.8, 9,..., 20; Ant / Maven / Gradle automatically add the compile Java version, since forbiddenapis v2.1).
  • jdk-non-portable: Signatures of all non-portable (like com.sun.management.HotSpotDiagnosticMXBean) or internal runtime APIs (like sun.misc.Unsafe). This is a superset of jdk-internal.
    diff --git a/src/main/java/de/thetaphi/forbiddenapis/AsmUtils.java b/src/main/java/de/thetaphi/forbiddenapis/AsmUtils.java index 1d07bc3..a2b8779 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/AsmUtils.java +++ b/src/main/java/de/thetaphi/forbiddenapis/AsmUtils.java @@ -180,7 +180,7 @@ private static byte[] readStream(final InputStream in) throws IOException { @SuppressWarnings("unused") public static ClassReader readAndPatchClass(InputStream in) throws IOException { final byte[] bytecode = readStream(in); - if (false) patchClassMajorVersion(bytecode, Opcodes.V19 + 1, Opcodes.V19); + if (false) patchClassMajorVersion(bytecode, Opcodes.V21 + 1, Opcodes.V21); return new ClassReader(bytecode); } diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-20.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-20.txt new file mode 100644 index 0000000..35707e3 --- /dev/null +++ b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-20.txt @@ -0,0 +1,656 @@ +# This file contains API signatures extracted from the rt.jar / jimage file shipped with the class library of Oracle's Java Runtime Environment. +# It is provided here for reference, but can easily regenerated by executing from the source folder of forbidden-apis: +# $ ant generate-deprecated + +# This file contains all public, deprecated API signatures in Java version 20 (extracted from build 20). + +@ignoreUnresolvable +@defaultMessage Deprecated in Java 20 + +java.applet.Applet +java.applet.AppletContext +java.applet.AppletStub +java.applet.AudioClip +java.awt.AWTEvent#(java.awt.Event) +java.awt.AWTKeyStroke#registerSubclass(java.lang.Class) +java.awt.BorderLayout#addLayoutComponent(java.lang.String,java.awt.Component) +java.awt.CardLayout#addLayoutComponent(java.lang.String,java.awt.Component) +java.awt.CheckboxGroup#getCurrent() +java.awt.CheckboxGroup#setCurrent(java.awt.Checkbox) +java.awt.Choice#countItems() +java.awt.Component#action(java.awt.Event,java.lang.Object) +java.awt.Component#bounds() +java.awt.Component#deliverEvent(java.awt.Event) +java.awt.Component#disable() +java.awt.Component#enable() +java.awt.Component#enable(boolean) +java.awt.Component#gotFocus(java.awt.Event,java.lang.Object) +java.awt.Component#handleEvent(java.awt.Event) +java.awt.Component#hide() +java.awt.Component#inside(int,int) +java.awt.Component#isFocusTraversable() +java.awt.Component#keyDown(java.awt.Event,int) +java.awt.Component#keyUp(java.awt.Event,int) +java.awt.Component#layout() +java.awt.Component#locate(int,int) +java.awt.Component#location() +java.awt.Component#lostFocus(java.awt.Event,java.lang.Object) +java.awt.Component#minimumSize() +java.awt.Component#mouseDown(java.awt.Event,int,int) +java.awt.Component#mouseDrag(java.awt.Event,int,int) +java.awt.Component#mouseEnter(java.awt.Event,int,int) +java.awt.Component#mouseExit(java.awt.Event,int,int) +java.awt.Component#mouseMove(java.awt.Event,int,int) +java.awt.Component#mouseUp(java.awt.Event,int,int) +java.awt.Component#move(int,int) +java.awt.Component#nextFocus() +java.awt.Component#postEvent(java.awt.Event) +java.awt.Component#preferredSize() +java.awt.Component#reshape(int,int,int,int) +java.awt.Component#resize(int,int) +java.awt.Component#resize(java.awt.Dimension) +java.awt.Component#show() +java.awt.Component#show(boolean) +java.awt.Component#size() +java.awt.ComponentOrientation#getOrientation(java.util.ResourceBundle) +java.awt.Container#countComponents() +java.awt.Container#deliverEvent(java.awt.Event) +java.awt.Container#insets() +java.awt.Container#layout() +java.awt.Container#locate(int,int) +java.awt.Container#minimumSize() +java.awt.Container#preferredSize() +java.awt.Cursor#predefined +java.awt.Dialog#hide() +java.awt.Dialog#show() +java.awt.Event +java.awt.FontMetrics#getMaxDecent() +java.awt.Frame#CROSSHAIR_CURSOR +java.awt.Frame#DEFAULT_CURSOR +java.awt.Frame#E_RESIZE_CURSOR +java.awt.Frame#HAND_CURSOR +java.awt.Frame#MOVE_CURSOR +java.awt.Frame#NE_RESIZE_CURSOR +java.awt.Frame#NW_RESIZE_CURSOR +java.awt.Frame#N_RESIZE_CURSOR +java.awt.Frame#SE_RESIZE_CURSOR +java.awt.Frame#SW_RESIZE_CURSOR +java.awt.Frame#S_RESIZE_CURSOR +java.awt.Frame#TEXT_CURSOR +java.awt.Frame#WAIT_CURSOR +java.awt.Frame#W_RESIZE_CURSOR +java.awt.Frame#getCursorType() +java.awt.Frame#setCursor(int) +java.awt.Graphics#finalize() +java.awt.Graphics#getClipRect() +java.awt.List#addItem(java.lang.String) +java.awt.List#addItem(java.lang.String,int) +java.awt.List#allowsMultipleSelections() +java.awt.List#clear() +java.awt.List#countItems() +java.awt.List#delItem(int) +java.awt.List#delItems(int,int) +java.awt.List#isSelected(int) +java.awt.List#minimumSize() +java.awt.List#minimumSize(int) +java.awt.List#preferredSize() +java.awt.List#preferredSize(int) +java.awt.List#setMultipleSelections(boolean) +java.awt.Menu#countItems() +java.awt.MenuBar#countMenus() +java.awt.MenuComponent#postEvent(java.awt.Event) +java.awt.MenuContainer#postEvent(java.awt.Event) +java.awt.MenuItem#disable() +java.awt.MenuItem#enable() +java.awt.MenuItem#enable(boolean) +java.awt.Polygon#getBoundingBox() +java.awt.Polygon#inside(int,int) +java.awt.PrintJob#finalize() +java.awt.Rectangle#inside(int,int) +java.awt.Rectangle#move(int,int) +java.awt.Rectangle#reshape(int,int,int,int) +java.awt.Rectangle#resize(int,int) +java.awt.ScrollPane#layout() +java.awt.Scrollbar#getLineIncrement() +java.awt.Scrollbar#getPageIncrement() +java.awt.Scrollbar#getVisible() +java.awt.Scrollbar#setLineIncrement(int) +java.awt.Scrollbar#setPageIncrement(int) +java.awt.TextArea#appendText(java.lang.String) +java.awt.TextArea#insertText(java.lang.String,int) +java.awt.TextArea#minimumSize() +java.awt.TextArea#minimumSize(int,int) +java.awt.TextArea#preferredSize() +java.awt.TextArea#preferredSize(int,int) +java.awt.TextArea#replaceText(java.lang.String,int,int) +java.awt.TextField#minimumSize() +java.awt.TextField#minimumSize(int) +java.awt.TextField#preferredSize() +java.awt.TextField#preferredSize(int) +java.awt.TextField#setEchoCharacter(char) +java.awt.Toolkit#getFontList() +java.awt.Toolkit#getFontMetrics(java.awt.Font) +java.awt.Toolkit#getMenuShortcutKeyMask() +java.awt.Window#applyResourceBundle(java.lang.String) +java.awt.Window#applyResourceBundle(java.util.ResourceBundle) +java.awt.Window#hide() +java.awt.Window#postEvent(java.awt.Event) +java.awt.Window#reshape(int,int,int,int) +java.awt.Window#show() +java.awt.datatransfer.DataFlavor#equals(java.lang.String) +java.awt.datatransfer.DataFlavor#normalizeMimeType(java.lang.String) +java.awt.datatransfer.DataFlavor#normalizeMimeTypeParameter(java.lang.String,java.lang.String) +java.awt.datatransfer.DataFlavor#plainTextFlavor +java.awt.event.InputEvent#ALT_GRAPH_MASK +java.awt.event.InputEvent#ALT_MASK +java.awt.event.InputEvent#BUTTON1_MASK +java.awt.event.InputEvent#BUTTON2_MASK +java.awt.event.InputEvent#BUTTON3_MASK +java.awt.event.InputEvent#CTRL_MASK +java.awt.event.InputEvent#META_MASK +java.awt.event.InputEvent#SHIFT_MASK +java.awt.event.InputEvent#getModifiers() +java.awt.event.KeyEvent#(java.awt.Component,int,long,int,int) +java.awt.event.KeyEvent#getKeyModifiersText(int) +java.awt.event.KeyEvent#setModifiers(int) +java.awt.image.renderable.RenderContext#concetenateTransform(java.awt.geom.AffineTransform) +java.awt.image.renderable.RenderContext#preConcetenateTransform(java.awt.geom.AffineTransform) +java.beans.AppletInitializer +java.beans.Beans#instantiate(java.lang.ClassLoader,java.lang.String,java.beans.beancontext.BeanContext,java.beans.AppletInitializer) +java.io.ByteArrayOutputStream#toString(int) +java.io.DataInputStream#readLine() +java.io.File#toURL() +java.io.LineNumberInputStream +java.io.ObjectInputStream#readLine() +java.io.ObjectOutputStream$PutField#write(java.io.ObjectOutput) +java.io.StreamTokenizer#(java.io.InputStream) +java.io.StringBufferInputStream +java.io.WriteAbortedException#detail +java.lang.Boolean#(boolean) +java.lang.Boolean#(java.lang.String) +java.lang.Byte#(byte) +java.lang.Byte#(java.lang.String) +java.lang.Character#(char) +java.lang.Character#isJavaLetter(char) +java.lang.Character#isJavaLetterOrDigit(char) +java.lang.Character#isSpace(char) +java.lang.Character$UnicodeBlock#SURROGATES_AREA +java.lang.Class#newInstance() +java.lang.ClassLoader#defineClass(byte[],int,int) +java.lang.ClassLoader#getPackage(java.lang.String) +java.lang.Compiler +java.lang.Double#(double) +java.lang.Double#(java.lang.String) +java.lang.Enum#finalize() +java.lang.Float#(double) +java.lang.Float#(float) +java.lang.Float#(java.lang.String) +java.lang.Integer#(int) +java.lang.Integer#(java.lang.String) +java.lang.Long#(java.lang.String) +java.lang.Long#(long) +java.lang.Object#finalize() +java.lang.Package#getPackage(java.lang.String) +java.lang.Runtime#exec(java.lang.String) +java.lang.Runtime#exec(java.lang.String,java.lang.String[]) +java.lang.Runtime#exec(java.lang.String,java.lang.String[],java.io.File) +java.lang.Runtime#runFinalization() +java.lang.Runtime$Version#major() +java.lang.Runtime$Version#minor() +java.lang.Runtime$Version#security() +java.lang.SecurityManager +java.lang.Short#(java.lang.String) +java.lang.Short#(short) +java.lang.String#(byte[],int) +java.lang.String#(byte[],int,int,int) +java.lang.String#getBytes(int,int,byte[],int) +java.lang.System#getSecurityManager() +java.lang.System#runFinalization() +java.lang.System#setSecurityManager(java.lang.SecurityManager) +java.lang.Thread#checkAccess() +java.lang.Thread#countStackFrames() +java.lang.Thread#getId() +java.lang.Thread#resume() +java.lang.Thread#stop() +java.lang.Thread#suspend() +java.lang.ThreadDeath +java.lang.ThreadGroup#allowThreadSuspension(boolean) +java.lang.ThreadGroup#checkAccess() +java.lang.ThreadGroup#destroy() +java.lang.ThreadGroup#isDaemon() +java.lang.ThreadGroup#isDestroyed() +java.lang.ThreadGroup#resume() +java.lang.ThreadGroup#setDaemon(boolean) +java.lang.ThreadGroup#stop() +java.lang.ThreadGroup#suspend() +java.lang.invoke.MethodHandles$Lookup#hasPrivateAccess() +java.lang.management.MemoryMXBean#getObjectPendingFinalizationCount() +java.lang.ref.Reference#isEnqueued() +java.lang.reflect.AccessibleObject#() +java.lang.reflect.AccessibleObject#isAccessible() +java.lang.reflect.Proxy#getProxyClass(java.lang.ClassLoader,java.lang.Class[]) +java.math.BigDecimal#ROUND_CEILING +java.math.BigDecimal#ROUND_DOWN +java.math.BigDecimal#ROUND_FLOOR +java.math.BigDecimal#ROUND_HALF_DOWN +java.math.BigDecimal#ROUND_HALF_EVEN +java.math.BigDecimal#ROUND_HALF_UP +java.math.BigDecimal#ROUND_UNNECESSARY +java.math.BigDecimal#ROUND_UP +java.math.BigDecimal#divide(java.math.BigDecimal,int) +java.math.BigDecimal#divide(java.math.BigDecimal,int,int) +java.math.BigDecimal#setScale(int,int) +java.net.DatagramSocket#setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) +java.net.DatagramSocketImpl#getTTL() +java.net.DatagramSocketImpl#setTTL(byte) +java.net.HttpURLConnection#HTTP_SERVER_ERROR +java.net.MulticastSocket#getInterface() +java.net.MulticastSocket#getLoopbackMode() +java.net.MulticastSocket#getTTL() +java.net.MulticastSocket#joinGroup(java.net.InetAddress) +java.net.MulticastSocket#leaveGroup(java.net.InetAddress) +java.net.MulticastSocket#send(java.net.DatagramPacket,byte) +java.net.MulticastSocket#setInterface(java.net.InetAddress) +java.net.MulticastSocket#setLoopbackMode(boolean) +java.net.MulticastSocket#setTTL(byte) +java.net.ServerSocket#setSocketFactory(java.net.SocketImplFactory) +java.net.Socket#(java.lang.String,int,boolean) +java.net.Socket#(java.net.InetAddress,int,boolean) +java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory) +java.net.URL#(java.lang.String) +java.net.URL#(java.lang.String,java.lang.String,int,java.lang.String) +java.net.URL#(java.lang.String,java.lang.String,int,java.lang.String,java.net.URLStreamHandler) +java.net.URL#(java.lang.String,java.lang.String,java.lang.String) +java.net.URL#(java.net.URL,java.lang.String) +java.net.URL#(java.net.URL,java.lang.String,java.net.URLStreamHandler) +java.net.URLConnection#getDefaultRequestProperty(java.lang.String) +java.net.URLConnection#setDefaultRequestProperty(java.lang.String,java.lang.String) +java.net.URLDecoder#decode(java.lang.String) +java.net.URLEncoder#encode(java.lang.String) +java.net.URLStreamHandler#setURL(java.net.URL,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String) +java.rmi.RMISecurityException +java.rmi.RMISecurityManager +java.rmi.ServerRuntimeException +java.rmi.dgc.VMID#isUnique() +java.rmi.registry.RegistryHandler +java.rmi.server.LoaderHandler +java.rmi.server.LogStream +java.rmi.server.Operation +java.rmi.server.RMIClassLoader#getSecurityContext(java.lang.ClassLoader) +java.rmi.server.RMIClassLoader#loadClass(java.lang.String) +java.rmi.server.RemoteCall +java.rmi.server.RemoteRef#done(java.rmi.server.RemoteCall) +java.rmi.server.RemoteRef#invoke(java.rmi.server.RemoteCall) +java.rmi.server.RemoteRef#newCall(java.rmi.server.RemoteObject,java.rmi.server.Operation[],int,long) +java.rmi.server.RemoteRef#serialVersionUID +java.rmi.server.RemoteStub +java.rmi.server.ServerRef +java.rmi.server.Skeleton +java.rmi.server.SkeletonMismatchException +java.rmi.server.SkeletonNotFoundException +java.rmi.server.SocketSecurityException +java.rmi.server.UnicastRemoteObject#exportObject(java.rmi.Remote) +java.security.AccessControlContext +java.security.AccessControlException +java.security.AccessController +java.security.AuthProvider#(java.lang.String,double,java.lang.String) +java.security.Certificate +java.security.DomainCombiner +java.security.Identity +java.security.IdentityScope +java.security.Key#serialVersionUID +java.security.Policy +java.security.Policy$Parameters +java.security.PolicySpi +java.security.PrivateKey#serialVersionUID +java.security.Provider#(java.lang.String,double,java.lang.String) +java.security.Provider#getVersion() +java.security.PublicKey#serialVersionUID +java.security.Security#getAlgorithmProperty(java.lang.String,java.lang.String) +java.security.Signature#getParameter(java.lang.String) +java.security.Signature#setParameter(java.lang.String,java.lang.Object) +java.security.SignatureSpi#engineGetParameter(java.lang.String) +java.security.SignatureSpi#engineSetParameter(java.lang.String,java.lang.Object) +java.security.Signer +java.security.cert.X509CRL#getIssuerDN() +java.security.cert.X509CRLSelector#addIssuerName(java.lang.String) +java.security.cert.X509CertSelector#getIssuerAsString() +java.security.cert.X509CertSelector#getSubjectAsString() +java.security.cert.X509CertSelector#setIssuer(java.lang.String) +java.security.cert.X509CertSelector#setSubject(java.lang.String) +java.security.cert.X509Certificate#getIssuerDN() +java.security.cert.X509Certificate#getSubjectDN() +java.security.interfaces.DSAPrivateKey#serialVersionUID +java.security.interfaces.DSAPublicKey#serialVersionUID +java.security.interfaces.ECPrivateKey#serialVersionUID +java.security.interfaces.ECPublicKey#serialVersionUID +java.security.interfaces.RSAMultiPrimePrivateCrtKey#serialVersionUID +java.security.interfaces.RSAPrivateCrtKey#serialVersionUID +java.security.interfaces.RSAPrivateKey#serialVersionUID +java.security.interfaces.RSAPublicKey#serialVersionUID +java.security.spec.PSSParameterSpec#(int) +java.security.spec.PSSParameterSpec#DEFAULT +java.sql.CallableStatement#getBigDecimal(int,int) +java.sql.Date#(int,int,int) +java.sql.Date#getHours() +java.sql.Date#getMinutes() +java.sql.Date#getSeconds() +java.sql.Date#setHours(int) +java.sql.Date#setMinutes(int) +java.sql.Date#setSeconds(int) +java.sql.DriverManager#getLogStream() +java.sql.DriverManager#setLogStream(java.io.PrintStream) +java.sql.PreparedStatement#setUnicodeStream(int,java.io.InputStream,int) +java.sql.ResultSet#getBigDecimal(int,int) +java.sql.ResultSet#getBigDecimal(java.lang.String,int) +java.sql.ResultSet#getUnicodeStream(int) +java.sql.ResultSet#getUnicodeStream(java.lang.String) +java.sql.Time#(int,int,int) +java.sql.Time#getDate() +java.sql.Time#getDay() +java.sql.Time#getMonth() +java.sql.Time#getYear() +java.sql.Time#setDate(int) +java.sql.Time#setMonth(int) +java.sql.Time#setYear(int) +java.sql.Timestamp#(int,int,int,int,int,int,int) +java.util.Date#(int,int,int) +java.util.Date#(int,int,int,int,int) +java.util.Date#(int,int,int,int,int,int) +java.util.Date#(java.lang.String) +java.util.Date#UTC(int,int,int,int,int,int) +java.util.Date#getDate() +java.util.Date#getDay() +java.util.Date#getHours() +java.util.Date#getMinutes() +java.util.Date#getMonth() +java.util.Date#getSeconds() +java.util.Date#getTimezoneOffset() +java.util.Date#getYear() +java.util.Date#parse(java.lang.String) +java.util.Date#setDate(int) +java.util.Date#setHours(int) +java.util.Date#setMinutes(int) +java.util.Date#setMonth(int) +java.util.Date#setSeconds(int) +java.util.Date#setYear(int) +java.util.Date#toGMTString() +java.util.Date#toLocaleString() +java.util.Locale#(java.lang.String) +java.util.Locale#(java.lang.String,java.lang.String) +java.util.Locale#(java.lang.String,java.lang.String,java.lang.String) +java.util.Observable +java.util.Observer +java.util.Properties#save(java.io.OutputStream,java.lang.String) +java.util.concurrent.Executors#privilegedCallable(java.util.concurrent.Callable) +java.util.concurrent.Executors#privilegedCallableUsingCurrentClassLoader(java.util.concurrent.Callable) +java.util.concurrent.Executors#privilegedThreadFactory() +java.util.concurrent.ThreadPoolExecutor#finalize() +java.util.concurrent.atomic.AtomicBoolean#weakCompareAndSet(boolean,boolean) +java.util.concurrent.atomic.AtomicInteger#weakCompareAndSet(int,int) +java.util.concurrent.atomic.AtomicIntegerArray#weakCompareAndSet(int,int,int) +java.util.concurrent.atomic.AtomicLong#weakCompareAndSet(long,long) +java.util.concurrent.atomic.AtomicLongArray#weakCompareAndSet(int,long,long) +java.util.concurrent.atomic.AtomicReference#weakCompareAndSet(java.lang.Object,java.lang.Object) +java.util.concurrent.atomic.AtomicReferenceArray#weakCompareAndSet(int,java.lang.Object,java.lang.Object) +java.util.jar.Attributes$Name#EXTENSION_INSTALLATION +java.util.jar.Attributes$Name#IMPLEMENTATION_URL +java.util.jar.Attributes$Name#IMPLEMENTATION_VENDOR_ID +java.util.logging.LogManager#checkAccess() +java.util.logging.LogManager#getLoggingMXBean() +java.util.logging.LogRecord#getThreadID() +java.util.logging.LogRecord#setMillis(long) +java.util.logging.LogRecord#setThreadID(int) +java.util.logging.Logger#global +java.util.logging.Logger#logrb(java.util.logging.Level,java.lang.String,java.lang.String,java.lang.String,java.lang.String) +java.util.logging.Logger#logrb(java.util.logging.Level,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.Object) +java.util.logging.Logger#logrb(java.util.logging.Level,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.Object[]) +java.util.logging.Logger#logrb(java.util.logging.Level,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.Throwable) +java.util.logging.LoggingMXBean +javax.accessibility.AccessibleResourceBundle +javax.crypto.SecretKey#serialVersionUID +javax.crypto.interfaces.DHPrivateKey#serialVersionUID +javax.crypto.interfaces.DHPublicKey#serialVersionUID +javax.crypto.interfaces.PBEKey#serialVersionUID +javax.crypto.spec.OAEPParameterSpec#DEFAULT +javax.imageio.spi.ImageReaderSpi#STANDARD_INPUT_TYPE +javax.imageio.spi.ImageWriterSpi#STANDARD_OUTPUT_TYPE +javax.imageio.spi.ServiceRegistry#finalize() +javax.imageio.stream.FileCacheImageInputStream#finalize() +javax.imageio.stream.FileImageInputStream#finalize() +javax.imageio.stream.FileImageOutputStream#finalize() +javax.imageio.stream.ImageInputStreamImpl#finalize() +javax.imageio.stream.MemoryCacheImageInputStream#finalize() +javax.lang.model.util.AbstractAnnotationValueVisitor6#() +javax.lang.model.util.AbstractAnnotationValueVisitor7#() +javax.lang.model.util.AbstractElementVisitor6#() +javax.lang.model.util.AbstractElementVisitor7#() +javax.lang.model.util.AbstractTypeVisitor6#() +javax.lang.model.util.AbstractTypeVisitor7#() +javax.lang.model.util.ElementKindVisitor6#() +javax.lang.model.util.ElementKindVisitor6#(java.lang.Object) +javax.lang.model.util.ElementKindVisitor7#() +javax.lang.model.util.ElementKindVisitor7#(java.lang.Object) +javax.lang.model.util.ElementScanner6#() +javax.lang.model.util.ElementScanner6#(java.lang.Object) +javax.lang.model.util.ElementScanner7#() +javax.lang.model.util.ElementScanner7#(java.lang.Object) +javax.lang.model.util.SimpleAnnotationValueVisitor6#() +javax.lang.model.util.SimpleAnnotationValueVisitor6#(java.lang.Object) +javax.lang.model.util.SimpleAnnotationValueVisitor7#() +javax.lang.model.util.SimpleAnnotationValueVisitor7#(java.lang.Object) +javax.lang.model.util.SimpleElementVisitor6#() +javax.lang.model.util.SimpleElementVisitor6#(java.lang.Object) +javax.lang.model.util.SimpleElementVisitor7#() +javax.lang.model.util.SimpleElementVisitor7#(java.lang.Object) +javax.lang.model.util.SimpleTypeVisitor6#() +javax.lang.model.util.SimpleTypeVisitor6#(java.lang.Object) +javax.lang.model.util.SimpleTypeVisitor7#() +javax.lang.model.util.SimpleTypeVisitor7#(java.lang.Object) +javax.lang.model.util.TypeKindVisitor6#() +javax.lang.model.util.TypeKindVisitor6#(java.lang.Object) +javax.lang.model.util.TypeKindVisitor7#() +javax.lang.model.util.TypeKindVisitor7#(java.lang.Object) +javax.management.AttributeValueExp#() +javax.management.AttributeValueExp#setMBeanServer(javax.management.MBeanServer) +javax.management.DefaultLoaderRepository +javax.management.MBeanServer#deserialize(java.lang.String,byte[]) +javax.management.MBeanServer#deserialize(java.lang.String,javax.management.ObjectName,byte[]) +javax.management.MBeanServer#deserialize(javax.management.ObjectName,byte[]) +javax.management.StringValueExp#setMBeanServer(javax.management.MBeanServer) +javax.management.ValueExp#setMBeanServer(javax.management.MBeanServer) +javax.management.loading.DefaultLoaderRepository +javax.management.loading.MLet +javax.management.loading.MLetContent +javax.management.loading.MLetMBean +javax.management.loading.PrivateMLet +javax.management.monitor.CounterMonitor#getDerivedGauge() +javax.management.monitor.CounterMonitor#getDerivedGaugeTimeStamp() +javax.management.monitor.CounterMonitor#getThreshold() +javax.management.monitor.CounterMonitor#setThreshold(java.lang.Number) +javax.management.monitor.CounterMonitorMBean#getDerivedGauge() +javax.management.monitor.CounterMonitorMBean#getDerivedGaugeTimeStamp() +javax.management.monitor.CounterMonitorMBean#getThreshold() +javax.management.monitor.CounterMonitorMBean#setThreshold(java.lang.Number) +javax.management.monitor.GaugeMonitor#getDerivedGauge() +javax.management.monitor.GaugeMonitor#getDerivedGaugeTimeStamp() +javax.management.monitor.GaugeMonitorMBean#getDerivedGauge() +javax.management.monitor.GaugeMonitorMBean#getDerivedGaugeTimeStamp() +javax.management.monitor.Monitor#alreadyNotified +javax.management.monitor.Monitor#dbgTag +javax.management.monitor.Monitor#getObservedObject() +javax.management.monitor.Monitor#setObservedObject(javax.management.ObjectName) +javax.management.monitor.MonitorMBean#getObservedObject() +javax.management.monitor.MonitorMBean#setObservedObject(javax.management.ObjectName) +javax.management.monitor.StringMonitor#getDerivedGauge() +javax.management.monitor.StringMonitor#getDerivedGaugeTimeStamp() +javax.management.monitor.StringMonitorMBean#getDerivedGauge() +javax.management.monitor.StringMonitorMBean#getDerivedGaugeTimeStamp() +javax.management.openmbean.OpenType#ALLOWED_CLASSNAMES +javax.management.relation.RoleStatus#() +javax.management.remote.rmi.RMIIIOPServerImpl +javax.naming.Context#APPLET +javax.naming.Name#serialVersionUID +javax.naming.directory.Attribute#serialVersionUID +javax.net.ssl.HandshakeCompletedEvent#getPeerCertificateChain() +javax.net.ssl.SSLSession#getPeerCertificateChain() +javax.security.auth.Subject#doAs(javax.security.auth.Subject,java.security.PrivilegedAction) +javax.security.auth.Subject#doAs(javax.security.auth.Subject,java.security.PrivilegedExceptionAction) +javax.security.auth.Subject#doAsPrivileged(javax.security.auth.Subject,java.security.PrivilegedAction,java.security.AccessControlContext) +javax.security.auth.Subject#doAsPrivileged(javax.security.auth.Subject,java.security.PrivilegedExceptionAction,java.security.AccessControlContext) +javax.security.auth.Subject#getSubject(java.security.AccessControlContext) +javax.security.auth.SubjectDomainCombiner +javax.security.cert.Certificate +javax.security.cert.CertificateEncodingException +javax.security.cert.CertificateException +javax.security.cert.CertificateExpiredException +javax.security.cert.CertificateNotYetValidException +javax.security.cert.CertificateParsingException +javax.security.cert.X509Certificate +javax.sql.rowset.BaseRowSet#setUnicodeStream(int,java.io.InputStream,int) +javax.sql.rowset.CachedRowSet#COMMIT_ON_ACCEPT_CHANGES +javax.swing.AbstractButton#getLabel() +javax.swing.AbstractButton#setLabel(java.lang.String) +javax.swing.FocusManager#disableSwingFocusManager() +javax.swing.FocusManager#isFocusManagerEnabled() +javax.swing.ImageIcon#component +javax.swing.ImageIcon#tracker +javax.swing.InputVerifier#shouldYieldFocus(javax.swing.JComponent) +javax.swing.JApplet +javax.swing.JComponent#disable() +javax.swing.JComponent#enable() +javax.swing.JComponent#getNextFocusableComponent() +javax.swing.JComponent#hide() +javax.swing.JComponent#isManagingFocus() +javax.swing.JComponent#requestDefaultFocus() +javax.swing.JComponent#reshape(int,int,int,int) +javax.swing.JComponent#setNextFocusableComponent(java.awt.Component) +javax.swing.JComponent$AccessibleJComponent#accessibleFocusHandler +javax.swing.JComponent$AccessibleJComponent$AccessibleFocusHandler +javax.swing.JInternalFrame#getMenuBar() +javax.swing.JInternalFrame#setMenuBar(javax.swing.JMenuBar) +javax.swing.JList#getSelectedValues() +javax.swing.JMenuBar#getComponentAtIndex(int) +javax.swing.JPasswordField#getText() +javax.swing.JPasswordField#getText(int,int) +javax.swing.JPopupMenu#getComponentAtIndex(int) +javax.swing.JRootPane#getMenuBar() +javax.swing.JRootPane#setMenuBar(javax.swing.JMenuBar) +javax.swing.JTable#createScrollPaneForTable(javax.swing.JTable) +javax.swing.JTable#sizeColumnsToFit(boolean) +javax.swing.JViewport#backingStore +javax.swing.JViewport#isBackingStoreEnabled() +javax.swing.JViewport#setBackingStoreEnabled(boolean) +javax.swing.KeyStroke#getKeyStroke(char,boolean) +javax.swing.RepaintManager#addDirtyRegion(java.applet.Applet,int,int,int,int) +javax.swing.ScrollPaneLayout#getViewportBorderBounds(javax.swing.JScrollPane) +javax.swing.SwingUtilities#findFocusOwner(java.awt.Component) +javax.swing.plaf.TextUI#getToolTipText(javax.swing.text.JTextComponent,java.awt.Point) +javax.swing.plaf.TextUI#modelToView(javax.swing.text.JTextComponent,int) +javax.swing.plaf.TextUI#modelToView(javax.swing.text.JTextComponent,int,javax.swing.text.Position$Bias) +javax.swing.plaf.TextUI#viewToModel(javax.swing.text.JTextComponent,java.awt.Point) +javax.swing.plaf.TextUI#viewToModel(javax.swing.text.JTextComponent,java.awt.Point,javax.swing.text.Position$Bias[]) +javax.swing.plaf.basic.BasicDesktopPaneUI#closeKey +javax.swing.plaf.basic.BasicDesktopPaneUI#maximizeKey +javax.swing.plaf.basic.BasicDesktopPaneUI#minimizeKey +javax.swing.plaf.basic.BasicDesktopPaneUI#navigateKey +javax.swing.plaf.basic.BasicDesktopPaneUI#navigateKey2 +javax.swing.plaf.basic.BasicDirectoryModel#intervalAdded(javax.swing.event.ListDataEvent) +javax.swing.plaf.basic.BasicDirectoryModel#intervalRemoved(javax.swing.event.ListDataEvent) +javax.swing.plaf.basic.BasicDirectoryModel#lt(java.io.File,java.io.File) +javax.swing.plaf.basic.BasicInternalFrameUI#openMenuKey +javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler +javax.swing.plaf.basic.BasicScrollPaneUI$HSBChangeListener +javax.swing.plaf.basic.BasicScrollPaneUI$PropertyChangeHandler +javax.swing.plaf.basic.BasicScrollPaneUI$VSBChangeListener +javax.swing.plaf.basic.BasicScrollPaneUI$ViewportChangeHandler +javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardDownRightListener() +javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardEndListener() +javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardHomeListener() +javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardResizeToggleListener() +javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardUpLeftListener() +javax.swing.plaf.basic.BasicSplitPaneUI#dividerResizeToggleKey +javax.swing.plaf.basic.BasicSplitPaneUI#downKey +javax.swing.plaf.basic.BasicSplitPaneUI#endKey +javax.swing.plaf.basic.BasicSplitPaneUI#getDividerBorderSize() +javax.swing.plaf.basic.BasicSplitPaneUI#homeKey +javax.swing.plaf.basic.BasicSplitPaneUI#keyboardDownRightListener +javax.swing.plaf.basic.BasicSplitPaneUI#keyboardEndListener +javax.swing.plaf.basic.BasicSplitPaneUI#keyboardHomeListener +javax.swing.plaf.basic.BasicSplitPaneUI#keyboardResizeToggleListener +javax.swing.plaf.basic.BasicSplitPaneUI#keyboardUpLeftListener +javax.swing.plaf.basic.BasicSplitPaneUI#leftKey +javax.swing.plaf.basic.BasicSplitPaneUI#rightKey +javax.swing.plaf.basic.BasicSplitPaneUI#upKey +javax.swing.plaf.basic.BasicTabbedPaneUI#downKey +javax.swing.plaf.basic.BasicTabbedPaneUI#leftKey +javax.swing.plaf.basic.BasicTabbedPaneUI#rightKey +javax.swing.plaf.basic.BasicTabbedPaneUI#upKey +javax.swing.plaf.basic.BasicTextUI#modelToView(javax.swing.text.JTextComponent,int) +javax.swing.plaf.basic.BasicTextUI#modelToView(javax.swing.text.JTextComponent,int,javax.swing.text.Position$Bias) +javax.swing.plaf.basic.BasicTextUI#viewToModel(javax.swing.text.JTextComponent,java.awt.Point) +javax.swing.plaf.basic.BasicTextUI#viewToModel(javax.swing.text.JTextComponent,java.awt.Point,javax.swing.text.Position$Bias[]) +javax.swing.plaf.basic.BasicToolBarUI#createFloatingFrame(javax.swing.JToolBar) +javax.swing.plaf.basic.BasicToolBarUI#downKey +javax.swing.plaf.basic.BasicToolBarUI#leftKey +javax.swing.plaf.basic.BasicToolBarUI#rightKey +javax.swing.plaf.basic.BasicToolBarUI#upKey +javax.swing.plaf.metal.MetalComboBoxUI#editablePropertyChanged(java.beans.PropertyChangeEvent) +javax.swing.plaf.metal.MetalComboBoxUI#removeListeners() +javax.swing.plaf.metal.MetalComboBoxUI$MetalComboPopup +javax.swing.plaf.metal.MetalFileChooserUI$FileRenderer +javax.swing.plaf.metal.MetalFileChooserUI$SingleClickListener +javax.swing.plaf.metal.MetalScrollPaneUI#uninstallListeners(javax.swing.JScrollPane) +javax.swing.plaf.multi.MultiTextUI#modelToView(javax.swing.text.JTextComponent,int) +javax.swing.plaf.multi.MultiTextUI#modelToView(javax.swing.text.JTextComponent,int,javax.swing.text.Position$Bias) +javax.swing.plaf.multi.MultiTextUI#viewToModel(javax.swing.text.JTextComponent,java.awt.Point) +javax.swing.plaf.multi.MultiTextUI#viewToModel(javax.swing.text.JTextComponent,java.awt.Point,javax.swing.text.Position$Bias[]) +javax.swing.table.TableColumn#disableResizedPosting() +javax.swing.table.TableColumn#enableResizedPosting() +javax.swing.table.TableColumn#resizedPostingDisableCount +javax.swing.text.DefaultTextUI +javax.swing.text.JTextComponent#modelToView(int) +javax.swing.text.JTextComponent#viewToModel(java.awt.Point) +javax.swing.text.LabelView#getFontMetrics() +javax.swing.text.PasswordView#drawEchoCharacter(java.awt.Graphics,int,int,char) +javax.swing.text.PasswordView#drawSelectedText(java.awt.Graphics,int,int,int,int) +javax.swing.text.PasswordView#drawUnselectedText(java.awt.Graphics,int,int,int,int) +javax.swing.text.PlainView#drawLine(int,java.awt.Graphics,int,int) +javax.swing.text.PlainView#drawSelectedText(java.awt.Graphics,int,int,int,int) +javax.swing.text.PlainView#drawUnselectedText(java.awt.Graphics,int,int,int,int) +javax.swing.text.TableView#createTableCell(javax.swing.text.Element) +javax.swing.text.TableView$TableCell +javax.swing.text.Utilities#drawTabbedText(javax.swing.text.Segment,int,int,java.awt.Graphics,javax.swing.text.TabExpander,int) +javax.swing.text.Utilities#getBreakLocation(javax.swing.text.Segment,java.awt.FontMetrics,int,int,javax.swing.text.TabExpander,int) +javax.swing.text.Utilities#getPositionAbove(javax.swing.text.JTextComponent,int,int) +javax.swing.text.Utilities#getPositionBelow(javax.swing.text.JTextComponent,int,int) +javax.swing.text.Utilities#getTabbedTextOffset(javax.swing.text.Segment,java.awt.FontMetrics,int,int,javax.swing.text.TabExpander,int) +javax.swing.text.Utilities#getTabbedTextOffset(javax.swing.text.Segment,java.awt.FontMetrics,int,int,javax.swing.text.TabExpander,int,boolean) +javax.swing.text.Utilities#getTabbedTextWidth(javax.swing.text.Segment,java.awt.FontMetrics,int,javax.swing.text.TabExpander,int) +javax.swing.text.View#modelToView(int,java.awt.Shape) +javax.swing.text.View#viewToModel(float,float,java.awt.Shape) +javax.swing.text.WrappedPlainView#drawLine(int,int,java.awt.Graphics,int,int) +javax.swing.text.WrappedPlainView#drawSelectedText(java.awt.Graphics,int,int,int,int) +javax.swing.text.WrappedPlainView#drawUnselectedText(java.awt.Graphics,int,int,int,int) +javax.swing.text.html.FormView#RESET +javax.swing.text.html.FormView#SUBMIT +javax.swing.text.html.HTMLEditorKit$InsertHTMLTextAction#insertAtBoundry(javax.swing.JEditorPane,javax.swing.text.html.HTMLDocument,int,javax.swing.text.Element,java.lang.String,javax.swing.text.html.HTML$Tag,javax.swing.text.html.HTML$Tag) +javax.swing.tree.DefaultTreeSelectionModel#notifyPathChange(java.util.Vector,javax.swing.tree.TreePath) +javax.tools.StandardJavaFileManager#getJavaFileObjectsFromPaths(java.lang.Iterable) +javax.tools.ToolProvider#getSystemToolClassLoader() +javax.xml.stream.XMLEventFactory#newInstance(java.lang.String,java.lang.ClassLoader) +javax.xml.stream.XMLInputFactory#newInstance(java.lang.String,java.lang.ClassLoader) +javax.xml.stream.XMLOutputFactory#newInstance(java.lang.String,java.lang.ClassLoader) +org.ietf.jgss.GSSContext#acceptSecContext(java.io.InputStream,java.io.OutputStream) +org.ietf.jgss.GSSContext#getMIC(java.io.InputStream,java.io.OutputStream,org.ietf.jgss.MessageProp) +org.ietf.jgss.GSSContext#initSecContext(java.io.InputStream,java.io.OutputStream) +org.ietf.jgss.GSSContext#unwrap(java.io.InputStream,java.io.OutputStream,org.ietf.jgss.MessageProp) +org.ietf.jgss.GSSContext#verifyMIC(java.io.InputStream,java.io.InputStream,org.ietf.jgss.MessageProp) +org.ietf.jgss.GSSContext#wrap(java.io.InputStream,java.io.OutputStream,org.ietf.jgss.MessageProp) +org.xml.sax.AttributeList +org.xml.sax.DocumentHandler +org.xml.sax.HandlerBase +org.xml.sax.Parser +org.xml.sax.helpers.AttributeListImpl +org.xml.sax.helpers.ParserFactory +org.xml.sax.helpers.XMLReaderFactory diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-20.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-20.txt new file mode 100644 index 0000000..cd970fc --- /dev/null +++ b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-20.txt @@ -0,0 +1,10 @@ +# This file contains API signatures that are marked as internal in Java. +# It is provided here for reference, but can easily regenerated by executing from the source folder of forbidden-apis: +# $ ant generate-internal + +# This file contains all internal packages listed in Security.getProperty("package.access") of Java version 20 (extracted from build 20). + +@defaultMessage non-public internal runtime class in Java 20 + +sun.misc.** +sun.reflect.** diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-20.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-20.txt new file mode 100644 index 0000000..dc23005 --- /dev/null +++ b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-20.txt @@ -0,0 +1,19 @@ +# (C) Copyright Uwe Schindler (Generics Policeman) and others. +# +# Licensed 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. + +# These methods and classes should not be used by server classes (unsafe, no charset, no locale,...): + +# We only include 19 for now. +# TODO: Scan Java 20 API for additional locale/charset/... violations! +@includeBundled jdk-unsafe-19