chore: more code refactoring for quality

This commit is contained in:
zaaarf 2023-02-27 12:45:39 +01:00
parent 0e8ae4b69a
commit f01f45f9cf
No known key found for this signature in database
GPG key ID: AD8563472FD43386
3 changed files with 10 additions and 18 deletions

View file

@ -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'
} }

View file

@ -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();

View file

@ -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