34 lines
1.5 KiB
Java
34 lines
1.5 KiB
Java
package love.distributedrebirth.bassboonyd.info;
|
||
|
||
import java.lang.annotation.Annotation;
|
||
import java.util.LinkedHashSet;
|
||
|
||
import love.distributedrebirth.bassboonyd.BãßBȍőn;
|
||
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinNailʸᴰ;
|
||
import love.distributedrebirth.bassboonyd.BãßBȍőnLoad殭屍;
|
||
import love.distributedrebirth.bassboonyd.BãßBȍőnPhaseBarrierʸᴰ;
|
||
import love.distributedrebirth.bassboonyd.sinit.BãßBȍőnꝐŕḯṿª₮ḕ;
|
||
import love.distributedrebirth.bassboonyd.sinit.BãßBȍőnꝐŕḯṿª₮ḕInit注;
|
||
|
||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||
public interface BãßBȍőnAnnotationʸᴰ<T, K extends BãßBȍőnCoffinNailʸᴰ> extends BãßBȍőn<T, K> {
|
||
|
||
public static class Ꝑŕḯṿª₮ḕ implements BãßBȍőnꝐŕḯṿª₮ḕ {
|
||
|
||
@BãßBȍőnꝐŕḯṿª₮ḕInit注(dependencies = {BãßBȍőnPhaseBarrierʸᴰ.Ꝑŕḯṿª₮ḕPhaseBoonLaw.class})
|
||
private static void init(BãßBȍőn<?,?> boon) {
|
||
for (Class<?> interfaceClass:BãßBȍőnLoad殭屍.walkInterfaces(boon.getClass(), new LinkedHashSet<>())) {
|
||
BãßBȍőnAnnotation注 anno = interfaceClass.getAnnotation(BãßBȍőnAnnotation注.class);
|
||
if (anno == null) {
|
||
continue;
|
||
}
|
||
for (Class<? extends Annotation> required:anno.required()) {
|
||
if (!boon.getClass().isAnnotationPresent(required)) {
|
||
throw new IllegalStateException("Missing required annotation: "+required.getSimpleName()+" on: "+boon.getClass().getSimpleName());
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|