mirror of
https://github.com/zaaarf/lillero-processor.git
synced 2024-11-22 16:54:53 +01:00
chore: more code refactoring for quality
This commit is contained in:
parent
0e8ae4b69a
commit
f01f45f9cf
3 changed files with 10 additions and 18 deletions
|
@ -3,8 +3,6 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
group 'ftbsc.lll.processor'
|
group 'ftbsc.lll.processor'
|
||||||
sourceCompatibility = 1.8
|
|
||||||
targetCompatibility = 1.8
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
@ -15,5 +13,4 @@ repositories {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.squareup:javapoet:1.13.0'
|
implementation 'com.squareup:javapoet:1.13.0'
|
||||||
implementation 'ftbsc:lll:0.2.1'
|
implementation 'ftbsc:lll:0.2.1'
|
||||||
implementation 'org.ow2.asm:asm-commons:9.4'
|
|
||||||
}
|
}
|
|
@ -9,8 +9,6 @@ import ftbsc.lll.processor.exceptions.MappingNotFoundException;
|
||||||
import ftbsc.lll.processor.exceptions.MappingsFileNotFoundException;
|
import ftbsc.lll.processor.exceptions.MappingsFileNotFoundException;
|
||||||
import ftbsc.lll.tools.DescriptorBuilder;
|
import ftbsc.lll.tools.DescriptorBuilder;
|
||||||
import ftbsc.lll.tools.SrgMapper;
|
import ftbsc.lll.tools.SrgMapper;
|
||||||
import org.objectweb.asm.tree.ClassNode;
|
|
||||||
import org.objectweb.asm.tree.MethodNode;
|
|
||||||
|
|
||||||
import javax.annotation.processing.*;
|
import javax.annotation.processing.*;
|
||||||
import javax.lang.model.SourceVersion;
|
import javax.lang.model.SourceVersion;
|
||||||
|
@ -79,7 +77,7 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
/**
|
/**
|
||||||
* This checks whether a given class contains the requirements to be parsed into a Lillero injector.
|
* This checks whether a given class contains the requirements to be parsed into a Lillero injector.
|
||||||
* It must have at least one method annotated with {@link Target}, and one method annotated with {@link Injector}
|
* It must have at least one method annotated with {@link Target}, and one method annotated with {@link Injector}
|
||||||
* that must be public, static and take in a {@link ClassNode} and a {@link MethodNode}.
|
* that must be public, static and take in a ClassNode and MethodNode from ObjectWeb's ASM library.
|
||||||
* @param elem the element to check.
|
* @param elem the element to check.
|
||||||
* @return whether it can be converted into a valid {@link IInjector}.
|
* @return whether it can be converted into a valid {@link IInjector}.
|
||||||
*/
|
*/
|
||||||
|
@ -122,6 +120,12 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
.get(); //will never be null so can ignore warning
|
.get(); //will never be null so can ignore warning
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a {@link MethodSpec} for a public method whose body simply returns a {@link String}.
|
||||||
|
* @param name the name of the method
|
||||||
|
* @param returnString the {@link String} to return
|
||||||
|
* @return the built {@link MethodSpec}
|
||||||
|
*/
|
||||||
private static MethodSpec buildStringReturnMethod(String name, String returnString) {
|
private static MethodSpec buildStringReturnMethod(String name, String returnString) {
|
||||||
return MethodSpec.methodBuilder(name)
|
return MethodSpec.methodBuilder(name)
|
||||||
.addModifiers(Modifier.PUBLIC)
|
.addModifiers(Modifier.PUBLIC)
|
||||||
|
@ -231,12 +235,6 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
String injectorSimpleClassName = cl.getSimpleName().toString() + "Injector";
|
String injectorSimpleClassName = cl.getSimpleName().toString() + "Injector";
|
||||||
String injectorClassName = packageName + "." + injectorSimpleClassName;
|
String injectorClassName = packageName + "." + injectorSimpleClassName;
|
||||||
|
|
||||||
MethodSpec methodDesc = MethodSpec.methodBuilder("methodDesc")
|
|
||||||
.addModifiers(Modifier.PUBLIC)
|
|
||||||
.returns(String.class)
|
|
||||||
.addCode("return $S;", targetMethodDescriptor)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
MethodSpec inject = MethodSpec.methodBuilder("inject")
|
MethodSpec inject = MethodSpec.methodBuilder("inject")
|
||||||
.addModifiers(Modifier.PUBLIC)
|
.addModifiers(Modifier.PUBLIC)
|
||||||
.returns(void.class)
|
.returns(void.class)
|
||||||
|
@ -258,7 +256,7 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
.addMethod(buildStringReturnMethod("reason", ann.reason()))
|
.addMethod(buildStringReturnMethod("reason", ann.reason()))
|
||||||
.addMethod(buildStringReturnMethod("targetClass", targetClassSrgName.replace('/', '.')))
|
.addMethod(buildStringReturnMethod("targetClass", targetClassSrgName.replace('/', '.')))
|
||||||
.addMethod(buildStringReturnMethod("methodName", targetMethodSrgName))
|
.addMethod(buildStringReturnMethod("methodName", targetMethodSrgName))
|
||||||
.addMethod(methodDesc)
|
.addMethod(buildStringReturnMethod("methodDesc", targetMethodDescriptor))
|
||||||
.addMethod(inject)
|
.addMethod(inject)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,10 @@ import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
import org.objectweb.asm.tree.ClassNode;
|
|
||||||
import org.objectweb.asm.tree.MethodNode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks a method as the injector method for purposes of generation.
|
* Marks a method as the injector method for purposes of generation.
|
||||||
* The method itself should be {@code public static}, and take in a {@link ClassNode}
|
* The method itself should be {@code public static}, and take in a ClassNode and MethodNode
|
||||||
* and a {@link MethodNode} as parameters. It will be discarded otherwise.
|
* (from the ObjectWeb ASM library) as parameters. It will be discarded otherwise.
|
||||||
* It will also be discarded unless the containing class is not annotated with {@link Patch}
|
* It will also be discarded unless the containing class is not annotated with {@link Patch}
|
||||||
* and no other method within the class is annotated with {@link Target}.
|
* and no other method within the class is annotated with {@link Target}.
|
||||||
* @see Patch
|
* @see Patch
|
||||||
|
|
Loading…
Reference in a new issue