Class ModuleReaderProxy

java.lang.Object
io.github.classgraph.ModuleReaderProxy
All Implemented Interfaces:
Closeable, AutoCloseable

public class ModuleReaderProxy extends Object implements Closeable
A ModuleReader proxy, written using reflection to preserve backwards compatibility with JDK 7 and 8.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static Class<?>
    Class collectorClass = Class.forName("java.util.stream.Collector");
    private static Object
    Collectorinvalid input: '<'Object, ?, List> collectorsToList = Collectors.toList();
    private final AutoCloseable
    The module reader.
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Calls ModuleReader#close().
    find(String path)
    Use the proxied ModuleReader to find the named resource as a URI.
    Get the list of resources accessible to a ModuleReader.
    open(String path)
    Use the proxied ModuleReader to open the named resource as an InputStream.
    read(String path)
    Use the proxied ModuleReader to open the named resource as a ByteBuffer.
    void
    release(ByteBuffer byteBuffer)
    Release a ByteBuffer allocated by calling read(String).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Details

      • moduleReader

        private final AutoCloseable moduleReader
        The module reader.
      • collectorClass

        private static Class<?> collectorClass
        Class collectorClass = Class.forName("java.util.stream.Collector");
      • collectorsToList

        private static Object collectorsToList
        Collectorinvalid input: '<'Object, ?, List> collectorsToList = Collectors.toList();
      • reflectionUtils

        private ReflectionUtils reflectionUtils
      • Constructor Details

        • ModuleReaderProxy

          ModuleReaderProxy(ModuleRef moduleRef) throws IOException
          Constructor.
          Parameters:
          moduleRef - the module ref
          Throws:
          IOException - If an I/O exception occurs.
      • Method Details

        • close

          public void close()
          Calls ModuleReader#close().
          Specified by:
          close in interface AutoCloseable
          Specified by:
          close in interface Closeable
        • list

          public List<String> list() throws SecurityException
          Get the list of resources accessible to a ModuleReader. From the documentation for ModuleReader#list(): "Whether the stream of elements includes names corresponding to directories in the module is module reader specific. In lazy implementations then an IOException may be thrown when using the stream to list the module contents. If this occurs then the IOException will be wrapped in an java.io.UncheckedIOException and thrown from the method that caused the access to be attempted. SecurityException may also be thrown when using the stream to list the module contents and access is denied by the security manager."
          Returns:
          A list of the paths of resources in the module.
          Throws:
          SecurityException - If the module cannot be accessed.
        • open

          public InputStream open(String path) throws SecurityException
          Use the proxied ModuleReader to open the named resource as an InputStream.
          Parameters:
          path - The path to the resource to open.
          Returns:
          An InputStream for the content of the resource.
          Throws:
          SecurityException - If the module cannot be accessed.
          IllegalArgumentException - If the module cannot be accessed.
        • read

          Use the proxied ModuleReader to open the named resource as a ByteBuffer. Call release(ByteBuffer) when you have finished with the ByteBuffer.
          Parameters:
          path - The path to the resource to open.
          Returns:
          A ByteBuffer for the content of the resource.
          Throws:
          SecurityException - If the module cannot be accessed.
          OutOfMemoryError - if the resource is larger than 2GB, the maximum capacity of a byte buffer.
        • release

          public void release(ByteBuffer byteBuffer)
          Release a ByteBuffer allocated by calling read(String).
          Parameters:
          byteBuffer - The ByteBuffer to release.
        • find

          public URI find(String path)
          Use the proxied ModuleReader to find the named resource as a URI.
          Parameters:
          path - The path to the resource to open.
          Returns:
          A URI for the resource.
          Throws:
          SecurityException - If the module cannot be accessed.