GuardingDynamicLinkerExporter (Java SE 13 & JDK 13 )
Description: declaration: module: jdk.dynalink, package: jdk.dynalink.linker, class: GuardingDynamicLinkerExporter
Keywords: jdk.dynalink.linker.GuardingDynamicLinkerExporter class

Module jdk.dynalink
Package jdk.dynalink.linker

# Class GuardingDynamicLinkerExporter

java.lang.Object
jdk.dynalink.linker.GuardingDynamicLinkerExporter

All Implemented Interfaces:
  `Supplier<List<GuardingDynamicLinker>>`

    public abstract class GuardingDynamicLinkerExporter
    extends Object
    implements Supplier<List<GuardingDynamicLinker>>

A class acting as a supplier of guarding dynamic linkers that can be automatically loaded by other language runtimes. Language runtimes wishing to export their own linkers should subclass this class and implement the `Supplier.get()` method to return a list of exported linkers and declare the subclass in `/META-INF/services/jdk.dynalink.linker.GuardingDynamicLinkerExporter` resource of their distribution (typically, JAR file) so that dynamic linker factories can discover them using the `ServiceLoader` mechanism. Note that instantiating this class is tied to a security check for the `RuntimePermission("dynalink.exportLinkersAutomatically")` when a security manager is present, to ensure that only trusted runtimes can automatically export their linkers into other runtimes.

See Also:
  `DynamicLinkerFactory.setClassLoader(ClassLoader)`

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static String` | `AUTOLOAD_PERMISSION_NAME` | The name of the runtime permission for creating instances of this class.

- ## Constructor Summary

  Constructors
  Modifier | Constructor | Description
  --- | --- | ---
  `protected` | `GuardingDynamicLinkerExporter()` | Creates a new linker exporter.

- ## Method Summary

  ### Methods declared in class java.lang.Object

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

  ### Methods declared in interface java.util.function.Supplier

  `get`

- ## Field Details

  - ### AUTOLOAD_PERMISSION_NAME

    public static final String AUTOLOAD_PERMISSION_NAME
    The name of the runtime permission for creating instances of this class. Granting this permission to a language runtime allows it to export its linkers for automatic loading into other language runtimes.
    See Also:
      Constant Field Values

- ## Constructor Details

  - ### GuardingDynamicLinkerExporter

    protected GuardingDynamicLinkerExporter()
    Creates a new linker exporter. If there is a security manager installed checks for the `RuntimePermission("dynalink.exportLinkersAutomatically")` runtime permission. This ensures only language runtimes granted this permission will be allowed to export their linkers for automatic loading.
    Throws:
      `SecurityException` - if the necessary runtime permission is not granted.