Package org.apache.tomcat.util.compat

## Class Jre19Compat

- java.lang.Object
- - org.apache.tomcat.util.compat.JreCompat
  - - org.apache.tomcat.util.compat.Jre19Compat

    public class Jre19Compat
    extends JreCompat

### Field Summary

Fields
`protected static java.lang.reflect.Method` `getApplicationProtocolMethod`
`protected static java.lang.reflect.Method` `setApplicationProtocolsMethod`

### Constructor Summary

Constructors
`Jre19Compat()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `addBootModulePath​(java.util.Deque<java.net.URL> classPathUrlsToProcess)` Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.
`boolean` `canAccess​(java.lang.Object base, java.lang.reflect.AccessibleObject accessibleObject)` Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?
`void` `disableCachingForJarUrlConnections()` Disables caching for JAR URL connections.
`java.lang.String` `getApplicationProtocol​(javax.net.ssl.SSLEngine sslEngine)` Get the application protocol that has been negotiated for connection associated with the given SSLEngine.
`java.security.KeyStore.LoadStoreParameter` `getDomainLoadStoreParameter​(java.net.URI uri)`
`java.lang.Object` `getExecutor​(java.lang.Thread thread)` Obtains the executor, if any, used to create the provided thread.
`java.lang.String` `getModuleName​(java.lang.Class<?> type)` What is the module of the given class?
`static boolean` `isAlpnSupported()`
`boolean` `isExported​(java.lang.Class<?> type)` Is the given class in an exported package?
`boolean` `isInstanceOfInaccessibleObjectException​(java.lang.Throwable t)` Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.
`boolean` `jarFileIsMultiRelease​(java.util.jar.JarFile jarFile)` Is this JarFile a multi-release JAR file.
`java.util.jar.JarFile` `jarFileNewInstance​(java.io.File f)` Creates a new JarFile instance.
`int` `jarFileRuntimeMajorVersion()`
`void` `setApplicationProtocols​(javax.net.ssl.SSLParameters sslParameters, java.lang.String[] protocols)` Set the application protocols the server will accept for ALPN
`void` `setUseServerCipherSuitesOrder​(javax.net.ssl.SSLParameters sslParameters, boolean useCipherSuitesOrder)`

### Methods inherited from class org.apache.tomcat.util.compat.JreCompat

`getInstance, isJre11Available, isJre19Available, isJre8Available, isJre9Available, jarFileNewInstance`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### setApplicationProtocolsMethod

    protected static final java.lang.reflect.Method setApplicationProtocolsMethod

#### getApplicationProtocolMethod

    protected static final java.lang.reflect.Method getApplicationProtocolMethod

### Constructor Detail

#### Jre19Compat

    public Jre19Compat()

### Method Detail

#### getExecutor

    public java.lang.Object getExecutor​(java.lang.Thread thread)
                                 throws java.lang.NoSuchFieldException,
                                        java.lang.SecurityException,
                                        java.lang.IllegalArgumentException,
                                        java.lang.IllegalAccessException

Description copied from class: `JreCompat`
Obtains the executor, if any, used to create the provided thread.

Overrides:
  `getExecutor` in class `JreCompat`
Parameters:
  `thread` - The thread to examine
Returns:
  The executor, if any, that created the provided thread
Throws:
  `java.lang.NoSuchFieldException` - If a field used via reflection to obtain the executor cannot be found
  `java.lang.SecurityException` - If a security exception occurs while trying to identify the executor
  `java.lang.IllegalArgumentException` - If the instance object does not match the class of the field when obtaining a field value via reflection
  `java.lang.IllegalAccessException` - If a field is not accessible due to access restrictions

#### isInstanceOfInaccessibleObjectException

    public boolean isInstanceOfInaccessibleObjectException​(java.lang.Throwable t)

Description copied from class: `JreCompat`
Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.

Overrides:
  `isInstanceOfInaccessibleObjectException` in class `JreCompat`
Parameters:
  `t` - The exception to test
Returns:
  `true` if the exception is an instance of InaccessibleObjectException, otherwise `false`

#### disableCachingForJarUrlConnections

    public void disableCachingForJarUrlConnections()
                                            throws java.io.IOException

Description copied from class: `JreCompat`
Disables caching for JAR URL connections. For Java 8 and earlier, this also disables caching for ALL URL connections.

Overrides:
  `disableCachingForJarUrlConnections` in class `JreCompat`
Throws:
  `java.io.IOException` - If a dummy JAR URLConnection can not be created

#### addBootModulePath

    public void addBootModulePath​(java.util.Deque<java.net.URL> classPathUrlsToProcess)

Description copied from class: `JreCompat`
Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.

Overrides:
  `addBootModulePath` in class `JreCompat`
Parameters:
  `classPathUrlsToProcess` - The Deque to which the modules should be added

#### jarFileNewInstance

    public java.util.jar.JarFile jarFileNewInstance​(java.io.File f)
                                             throws java.io.IOException

Description copied from class: `JreCompat`
Creates a new JarFile instance. When running on Java 9 and later, the JarFile will be multi-release JAR aware.

Overrides:
  `jarFileNewInstance` in class `JreCompat`
Parameters:
  `f` - The JAR file to open
Returns:
  A JarFile instance based on the provided file
Throws:
  `java.io.IOException` - If an I/O error occurs creating the JarFile instance

#### jarFileIsMultiRelease

    public boolean jarFileIsMultiRelease​(java.util.jar.JarFile jarFile)

Description copied from class: `JreCompat`
Is this JarFile a multi-release JAR file.

Overrides:
  `jarFileIsMultiRelease` in class `JreCompat`
Parameters:
  `jarFile` - The JarFile to test
Returns:
  `true` If it is a multi-release JAR file and is configured to behave as such.

#### jarFileRuntimeMajorVersion

    public int jarFileRuntimeMajorVersion()

#### canAccess

    public boolean canAccess​(java.lang.Object base,
                             java.lang.reflect.AccessibleObject accessibleObject)

Description copied from class: `JreCompat`
Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?

Overrides:
  `canAccess` in class `JreCompat`
Parameters:
  `base` - The specific instance to be tested.
  `accessibleObject` - The method/field/constructor to be tested.
Returns:
  {code true} if the AccessibleObject can be accessed otherwise {code false}

#### isExported

    public boolean isExported​(java.lang.Class<?> type)

Description copied from class: `JreCompat`
Is the given class in an exported package?

Overrides:
  `isExported` in class `JreCompat`
Parameters:
  `type` - The class to test
Returns:
  Always `true` for Java 8. `true` if the enclosing package is exported for Java 9+

#### getModuleName

    public java.lang.String getModuleName​(java.lang.Class<?> type)

Description copied from class: `JreCompat`
What is the module of the given class?

Overrides:
  `getModuleName` in class `JreCompat`
Parameters:
  `type` - The class to test
Returns:
  Always `true` for Java 8. `true` if the enclosing package is exported for Java 9+

#### setUseServerCipherSuitesOrder

    public void setUseServerCipherSuitesOrder​(javax.net.ssl.SSLParameters sslParameters,
                                              boolean useCipherSuitesOrder)

Overrides:
  `setUseServerCipherSuitesOrder` in class `JreCompat`

#### getDomainLoadStoreParameter

    public java.security.KeyStore.LoadStoreParameter getDomainLoadStoreParameter​(java.net.URI uri)

Overrides:
  `getDomainLoadStoreParameter` in class `JreCompat`

#### setApplicationProtocols

    public void setApplicationProtocols​(javax.net.ssl.SSLParameters sslParameters,
                                        java.lang.String[] protocols)

Description copied from class: `JreCompat`
Set the application protocols the server will accept for ALPN

Overrides:
  `setApplicationProtocols` in class `JreCompat`
Parameters:
  `sslParameters` - The SSL parameters for a connection
  `protocols` - The application protocols to be allowed for that connection

#### getApplicationProtocol

    public java.lang.String getApplicationProtocol​(javax.net.ssl.SSLEngine sslEngine)

Description copied from class: `JreCompat`
Get the application protocol that has been negotiated for connection associated with the given SSLEngine.

Overrides:
  `getApplicationProtocol` in class `JreCompat`
Parameters:
  `sslEngine` - The SSLEngine for which to obtain the negotiated protocol
Returns:
  The name of the negotiated protocol

#### isAlpnSupported

    public static boolean isAlpnSupported()