name.remal.classes-processing

Plugin class: name.remal.gradle_plugins.plugins.classes_processing.ClassesProcessingPlugin

plugins {
    id 'name.remal.classes-processing' version '1.5.0'
}
plugins {
    id("name.remal.classes-processing") version "1.5.0"
}

 

This plugin add output classes processing for all tasks of type AbstractCompile. Basically sources of all JVM languages are built by such task.

Classes processing is implemented by services of type ClassesProcessor. Such services can be also created by ClassesProcessorsGradleTaskFactory factories.

The services and factories are loaded using ServiceLoader mechanism. Their class files are accessible using name.remal:gradle-plugins-api:1.5.0 Maven compile-only dependency.

 

name.remal.gradle_plugins.api.classes_processing.ClassesProcessor

Method Description
void process(byte[] bytecode, BytecodeModifier bytecodeModifier, String className, String resourceName, ProcessContext context) This method is executed for each being processed class file.
int getStage() Returns stage number for the processor. Processors are sorted by stage first and then by order.
int getOrder() Returns order number within stage for the processor. Processors are sorted by stage first and then by order.

name.remal.gradle_plugins.api.classes_processing.BytecodeModifier

Method Description
void modify(byte[] modifiedBytecode) Write modified bytecode.

name.remal.gradle_plugins.api.classes_processing.ProcessContext

Property Type Description
classesDir File Class files root directory.
classpath List<File> Compilation classpath.
classpathClassLoader ClassLoader Compilation classpath class loader.
Method Description
boolean doesResourceExist(String relativePath) Checks if resource exists in classesDir.
byte[]? readBinaryResource(String relativePath) Read binary resource from classesDir. Returns null if it doesn't exist.
String? readTextResource(String relativePath) Read text resource from classesDir. Returns null if it doesn't exist.
void writeBinaryResource(String relativePath, byte[] content) Write binary resource to classesDir.
void writeTextResource(String relativePath, String content) Write text resource to classesDir using UTF-8 charset.
void appendTextResource(String relativePath, String content) Append text resource to classesDir using UTF-8 charset.
void writeService(String serviceName, String implementationName) Add implementation class name to corresponding file in META-INF/services/<service-name>. It's used for ServiceLoader mechanism.
void writeService(Class<?> serviceClass, String implementationName) Add implementation class name to corresponding file in META-INF/services/<service-name>. It's used for ServiceLoader mechanism.
void writeService(String serviceName, Class<?> implementationClass) Add implementation class name to corresponding file in META-INF/services/<service-name>. It's used for ServiceLoader mechanism.
void writeService(Class<?> serviceClass, Class<?> implementationClass) Add implementation class name to corresponding file in META-INF/services/<service-name>. It's used for ServiceLoader mechanism.
boolean doesClasspathResourceExist(String relativePath) Checks if resource exists in classpath.
byte[]? readClasspathBinaryResource(String relativePath) Read binary resource from classpath. Returns null if it doesn't exist.
String? readClasspathTextResource(String relativePath) Read text resource from classpath. Returns null if it doesn't exist.

name.remal.gradle_plugins.api.classes_processing.ClassesProcessorsGradleTaskFactory

Method Description
List<ClassesProcessor> createClassesProcessors(AbstractCompile compileTask) Create a list of ClassesProcessor instances for specified AbstractCompile task.