Class DynamicProxyConfigGenerator


  • public class DynamicProxyConfigGenerator
    extends java.lang.Object
    DynamicProxyConfigGenerator generates a JSON String with the fully qualified interface names for which dynamic proxy classes should be generated at native image build time.

    Substrate VM doesn't provide machinery for generating and interpreting bytecodes at run time. Therefore all dynamic proxy classes need to be generated at native image build time.

    The output of DynamicProxyConfigGenerator is intended to be passed to the -H:DynamicProxyConfigurationFiles=/path/to/proxy-config.json option of the native-image GraalVM utility. This allows picocli-based native image applications that use @Command-annotated interfaces with @Option and @Parameters-annotated methods to define options and positional parameters.

    Alternatively, the generated configuration files can be supplied to the native-image tool by placing them in a META-INF/native-image/ directory on the class path, for example, in a JAR file used in the image build. This directory (or any of its subdirectories) is searched for files with the names jni-config.json, reflect-config.json, proxy-config.json and resource-config.json, which are then automatically included in the build. Not all of those files must be present. When multiple files with the same name are found, all of them are included.

    Since:
    4.0
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String generateProxyConfig​(CommandLine.Model.CommandSpec[] specs, java.lang.String[] interfaceClasses)
      Returns a JSON String with the interface names to generate dynamic proxy classes for in the native image, used by the specified CommandSpec objects.
      static void main​(java.lang.String... args)
      Runs this class as a standalone application, printing the resulting JSON String to a file or to System.out.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DynamicProxyConfigGenerator

        public DynamicProxyConfigGenerator()
    • Method Detail

      • main

        public static void main​(java.lang.String... args)
        Runs this class as a standalone application, printing the resulting JSON String to a file or to System.out.
        Parameters:
        args - one or more fully qualified class names of @Command-annotated classes.
      • generateProxyConfig

        public static java.lang.String generateProxyConfig​(CommandLine.Model.CommandSpec[] specs,
                                                           java.lang.String[] interfaceClasses)
        Returns a JSON String with the interface names to generate dynamic proxy classes for in the native image, used by the specified CommandSpec objects.
        Parameters:
        specs - one or more CommandSpec objects to inspect for dynamic proxies
        interfaceClasses - other (non-@Command) fully qualified interface names to generate dynamic proxy classes for
        Returns:
        a JSON String in the format required by the -H:DynamicProxyConfigurationFiles=/path/to/proxy-config.json option of the GraalVM native-image utility.