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 Detail

    - #### 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 Detail

    - #### 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.