Class ResourceProcessor


  • public class ResourceProcessor
    extends java.lang.Object
    A processor class that provides a comprehensive and exception-safe mechanism for handling resources during annotation processing. It extends the capabilities of the FilerProcessor to manage both reading from and writing to resources using various I/O operations. This class abstracts away boilerplate code required for resource management, including opening/closing streams, handling exceptions, and caching accessed file objects to avoid redundant operations.

    It supports functional-style interaction with resources through callback interfaces like ThrowableFunction, allowing custom logic to be applied on resources such as reading content, writing data, or manipulating streams in a type-safe manner.

    The class also maintains an internal cache of accessed file objects to optimize performance by avoiding repeated calls to locate or create them. It handles both input (read) and output (write) operations seamlessly, offering convenience methods for common use cases like: - Processing resources via InputStream or Reader - Manipulating resources via OutputStream or Writer - Reading or modifying the content directly as CharSequence

    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    FilerProcessor
    • Constructor Summary

      Constructors 
      Constructor Description
      ResourceProcessor​(javax.annotation.processing.ProcessingEnvironment processingEnv, javax.tools.JavaFileManager.Location location)  
      ResourceProcessor​(javax.annotation.processing.ProcessingEnvironment processingEnv, javax.tools.JavaFileManager.Location location, java.lang.CharSequence moduleAndPackage)  
    • Constructor Detail

      • ResourceProcessor

        public ResourceProcessor​(javax.annotation.processing.ProcessingEnvironment processingEnv,
                                 javax.tools.JavaFileManager.Location location)
      • ResourceProcessor

        public ResourceProcessor​(javax.annotation.processing.ProcessingEnvironment processingEnv,
                                 javax.tools.JavaFileManager.Location location,
                                 java.lang.CharSequence moduleAndPackage)
    • Method Detail

      • processInResource

        public <T> T processInResource​(java.lang.String resourceName,
                                       boolean forWriting,
                                       ThrowableFunction<java.util.Optional<javax.tools.FileObject>,​T> resourceCallback)
      • processInResource

        public <T> T processInResource​(java.lang.String resourceName,
                                       boolean forWriting,
                                       ThrowableFunction<java.util.Optional<javax.tools.FileObject>,​T> resourceCallback,
                                       java.util.function.Function<java.lang.Throwable,​T> exceptionHandler)
      • getResource

        public java.util.Optional<javax.tools.FileObject> getResource​(java.lang.String resourceName,
                                                                      boolean forWriting)
      • processInResourceInputStream

        public <T> java.util.Optional<T> processInResourceInputStream​(java.lang.String resourceName,
                                                                      ThrowableFunction<java.io.InputStream,​T> streamCallback)
      • processInResourceInputStream

        public <T> java.util.Optional<T> processInResourceInputStream​(java.lang.String resourceName,
                                                                      ThrowableFunction<java.io.InputStream,​T> streamCallback,
                                                                      java.util.function.BiFunction<javax.tools.FileObject,​java.lang.Throwable,​T> exceptionHandler)
      • processInResourceReader

        public <T> java.util.Optional<T> processInResourceReader​(java.lang.String resourceName,
                                                                 ThrowableFunction<java.io.Reader,​T> readerCallback)
      • processInResourceReader

        public <T> java.util.Optional<T> processInResourceReader​(java.lang.String resourceName,
                                                                 ThrowableFunction<java.io.Reader,​T> readerCallback,
                                                                 java.util.function.BiFunction<javax.tools.FileObject,​java.lang.Throwable,​T> exceptionHandler)
      • processInResourceContent

        public <T> java.util.Optional<T> processInResourceContent​(java.lang.String resourceName,
                                                                  ThrowableFunction<java.lang.CharSequence,​T> contentCallback)
      • processInResourceContent

        public <T> java.util.Optional<T> processInResourceContent​(java.lang.String resourceName,
                                                                  ThrowableFunction<java.lang.CharSequence,​T> contentCallback,
                                                                  java.util.function.BiFunction<javax.tools.FileObject,​java.lang.Throwable,​T> exceptionHandler)
      • processInResourceOutputStream

        public void processInResourceOutputStream​(java.lang.String resourceName,
                                                  ThrowableConsumer<java.io.OutputStream> streamConsumer)
      • processInResourceOutputStream

        public void processInResourceOutputStream​(java.lang.String resourceName,
                                                  ThrowableConsumer<java.io.OutputStream> streamConsumer,
                                                  java.util.function.BiConsumer<javax.tools.FileObject,​java.lang.Throwable> exceptionHandler)
      • processInResourceWriter

        public void processInResourceWriter​(java.lang.String resourceName,
                                            ThrowableConsumer<java.io.Writer> writerConsumer)
      • processInResourceWriter

        public void processInResourceWriter​(java.lang.String resourceName,
                                            ThrowableConsumer<java.io.Writer> writerConsumer,
                                            java.util.function.BiConsumer<javax.tools.FileObject,​java.lang.Throwable> exceptionHandler)
      • exists

        public static boolean exists​(javax.tools.FileObject resource)