mirror of
https://github.com/zaaarf/lillero-processor.git
synced 2024-11-14 17:19:21 +01:00
feat: initial implementation of anonymous class support, merged FindField and FindMethod
This commit is contained in:
parent
eea87d367f
commit
a96417ece9
3 changed files with 71 additions and 39 deletions
56
src/main/java/ftbsc/lll/processor/annotations/Find.java
Normal file
56
src/main/java/ftbsc/lll/processor/annotations/Find.java
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
package ftbsc.lll.processor.annotations;
|
||||||
|
|
||||||
|
import ftbsc.lll.proxies.FieldProxy;
|
||||||
|
import ftbsc.lll.proxies.MethodProxy;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the marked method in the Injector, having the
|
||||||
|
* implementation return a built {@link MethodProxy} or
|
||||||
|
* {@link FieldProxy} with the specified characteristics.
|
||||||
|
* @since 0.4.0
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.CLASS)
|
||||||
|
@java.lang.annotation.Target(ElementType.METHOD)
|
||||||
|
public @interface Find {
|
||||||
|
/**
|
||||||
|
* @return the {@link Class} object containing the target, or the
|
||||||
|
* {@link Object} class if not specified (the {@link Class} from
|
||||||
|
* {@link Patch#value()} is instead used)
|
||||||
|
*/
|
||||||
|
Class<?> parent() default Object.class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the name of the inner class that contains the target,
|
||||||
|
* defaults to empty string (not an inner class)
|
||||||
|
* @since 0.4.0
|
||||||
|
*/
|
||||||
|
String parentInnerClass() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the anonymous class counter (1 for the first, 2 for
|
||||||
|
* the second, 3 for the third...) for the class that contains
|
||||||
|
* the target, defaults to 0 (not an anonymous class)
|
||||||
|
* @since 0.4.0
|
||||||
|
*/
|
||||||
|
int parentAnonymousClassCounter() default 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The name of the class member to find. If omitted, the name of the
|
||||||
|
* annotated method will be used.
|
||||||
|
* @return the name of the target, will default to the empty string
|
||||||
|
* (the name of the annotated method will instead be used)
|
||||||
|
*/
|
||||||
|
String name() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only use if the target is a method.
|
||||||
|
* @return a list of the parameters of the method, will default to empty
|
||||||
|
* array (in that case, an attempt will be made to match a method without
|
||||||
|
* args first)
|
||||||
|
*/
|
||||||
|
Class<?>[] params() default {};
|
||||||
|
}
|
|
@ -1,39 +0,0 @@
|
||||||
package ftbsc.lll.processor.annotations;
|
|
||||||
|
|
||||||
import ftbsc.lll.proxies.MethodProxy;
|
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides the marked method in the Injector, having the
|
|
||||||
* implementation return a built {@link MethodProxy} with
|
|
||||||
* the specified parameters.
|
|
||||||
* @since 0.2.0
|
|
||||||
*/
|
|
||||||
@Retention(RetentionPolicy.CLASS)
|
|
||||||
@java.lang.annotation.Target(ElementType.METHOD)
|
|
||||||
public @interface FindMethod {
|
|
||||||
/**
|
|
||||||
* @return the {@link Class} object containing the desired method,
|
|
||||||
* or the {@link Object} class if not specified (the {@link Class}
|
|
||||||
* from {@link Patch#value()} is instead used)
|
|
||||||
*/
|
|
||||||
Class<?> parent() default Object.class;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the method to find. If omitted, the name of the annotated
|
|
||||||
* method will be used.
|
|
||||||
* @return the name of the method, will default to the empty string
|
|
||||||
* (the name of the annotated method will instead be used)
|
|
||||||
*/
|
|
||||||
String name() default "";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return a list of the parameters of the method, will default to empty
|
|
||||||
* array (in that case, an attempt will be made to match a method without
|
|
||||||
* args first)
|
|
||||||
*/
|
|
||||||
Class<?>[] params() default {};
|
|
||||||
}
|
|
|
@ -23,4 +23,19 @@ public @interface Patch {
|
||||||
* @return the patching reason, for logging, defaults to "No reason specified."
|
* @return the patching reason, for logging, defaults to "No reason specified."
|
||||||
*/
|
*/
|
||||||
String reason() default "No reason specified.";
|
String reason() default "No reason specified.";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the name of the inner class that should be targeted,
|
||||||
|
* defaults to empty string (not an inner class)
|
||||||
|
* @since 0.4.0
|
||||||
|
*/
|
||||||
|
String innerClass() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the anonymous class counter (1 for the first, 2 for
|
||||||
|
* the second, 3 for the third...) for the class that should be
|
||||||
|
* targeted, defaults to 0 (not an anonymous class)
|
||||||
|
* @since 0.4.0
|
||||||
|
*/
|
||||||
|
int anonymousClassCounter() default 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue