Class ResourceProcessor
- java.lang.Object
-
- io.microsphere.annotation.processor.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 theFilerProcessor
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
Example Usage
// Creating an instance of ResourceProcessor ResourceProcessor resourceProcessor = new ResourceProcessor(processingEnv, StandardLocation.SOURCE_OUTPUT); // Reading content from a resource Optional
content = resourceProcessor.processInResourceContent("example.txt", CharBuffer::toString); // Writing to a resource resourceProcessor.processInResourceWriter("output.txt", writer -> { writer.write("Hello, World!"); }); // Processing an InputStream resourceProcessor.processInResourceInputStream("data.bin", inputStream -> { // Process binary data return null; }); - 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)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static boolean
exists(javax.tools.FileObject resource)
java.util.Optional<javax.tools.FileObject>
getResource(java.lang.String resourceName, boolean forWriting)
<T> T
processInResource(java.lang.String resourceName, boolean forWriting, io.microsphere.lang.function.ThrowableFunction<java.util.Optional<javax.tools.FileObject>,T> resourceCallback)
<T> T
processInResource(java.lang.String resourceName, boolean forWriting, io.microsphere.lang.function.ThrowableFunction<java.util.Optional<javax.tools.FileObject>,T> resourceCallback, java.util.function.Function<java.lang.Throwable,T> exceptionHandler)
<T> java.util.Optional<T>
processInResourceContent(java.lang.String resourceName, io.microsphere.lang.function.ThrowableFunction<java.lang.CharSequence,T> contentCallback)
<T> java.util.Optional<T>
processInResourceContent(java.lang.String resourceName, io.microsphere.lang.function.ThrowableFunction<java.lang.CharSequence,T> contentCallback, java.util.function.BiFunction<javax.tools.FileObject,java.lang.Throwable,T> exceptionHandler)
<T> java.util.Optional<T>
processInResourceInputStream(java.lang.String resourceName, io.microsphere.lang.function.ThrowableFunction<java.io.InputStream,T> streamCallback)
<T> java.util.Optional<T>
processInResourceInputStream(java.lang.String resourceName, io.microsphere.lang.function.ThrowableFunction<java.io.InputStream,T> streamCallback, java.util.function.BiFunction<javax.tools.FileObject,java.lang.Throwable,T> exceptionHandler)
void
processInResourceOutputStream(java.lang.String resourceName, io.microsphere.lang.function.ThrowableConsumer<java.io.OutputStream> streamConsumer)
void
processInResourceOutputStream(java.lang.String resourceName, io.microsphere.lang.function.ThrowableConsumer<java.io.OutputStream> streamConsumer, java.util.function.BiConsumer<javax.tools.FileObject,java.lang.Throwable> exceptionHandler)
<T> java.util.Optional<T>
processInResourceReader(java.lang.String resourceName, io.microsphere.lang.function.ThrowableFunction<java.io.Reader,T> readerCallback)
<T> java.util.Optional<T>
processInResourceReader(java.lang.String resourceName, io.microsphere.lang.function.ThrowableFunction<java.io.Reader,T> readerCallback, java.util.function.BiFunction<javax.tools.FileObject,java.lang.Throwable,T> exceptionHandler)
void
processInResourceWriter(java.lang.String resourceName, io.microsphere.lang.function.ThrowableConsumer<java.io.Writer> writerConsumer)
void
processInResourceWriter(java.lang.String resourceName, io.microsphere.lang.function.ThrowableConsumer<java.io.Writer> writerConsumer, java.util.function.BiConsumer<javax.tools.FileObject,java.lang.Throwable> exceptionHandler)
-
-
-
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, io.microsphere.lang.function.ThrowableFunction<java.util.Optional<javax.tools.FileObject>,T> resourceCallback)
-
processInResource
public <T> T processInResource(java.lang.String resourceName, boolean forWriting, io.microsphere.lang.function.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, io.microsphere.lang.function.ThrowableFunction<java.io.InputStream,T> streamCallback)
-
processInResourceInputStream
public <T> java.util.Optional<T> processInResourceInputStream(java.lang.String resourceName, io.microsphere.lang.function.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, io.microsphere.lang.function.ThrowableFunction<java.io.Reader,T> readerCallback)
-
processInResourceReader
public <T> java.util.Optional<T> processInResourceReader(java.lang.String resourceName, io.microsphere.lang.function.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, io.microsphere.lang.function.ThrowableFunction<java.lang.CharSequence,T> contentCallback)
-
processInResourceContent
public <T> java.util.Optional<T> processInResourceContent(java.lang.String resourceName, io.microsphere.lang.function.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, io.microsphere.lang.function.ThrowableConsumer<java.io.OutputStream> streamConsumer)
-
processInResourceOutputStream
public void processInResourceOutputStream(java.lang.String resourceName, io.microsphere.lang.function.ThrowableConsumer<java.io.OutputStream> streamConsumer, java.util.function.BiConsumer<javax.tools.FileObject,java.lang.Throwable> exceptionHandler)
-
processInResourceWriter
public void processInResourceWriter(java.lang.String resourceName, io.microsphere.lang.function.ThrowableConsumer<java.io.Writer> writerConsumer)
-
processInResourceWriter
public void processInResourceWriter(java.lang.String resourceName, io.microsphere.lang.function.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)
-
-