Created DefaultBãßBȍőn interface

This commit is contained in:
Willem Cazander 2022-10-14 01:35:53 +02:00
parent 3acc28dbbf
commit 2e29efb5fe
78 changed files with 963 additions and 606 deletions

View file

@ -0,0 +1,45 @@
package love.distributedrebirth.bassboonyd;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőn<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőnCoffinStoreʸᴰ<T, K> {
static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static final Map<Object, BãßBȍőnCoffinOpenʸᴰ<?>> GRAVE_YARD = new HashMap<>();
private static final ReadWriteLock FUNERAL = new ReentrantReadWriteLock();
}
@SuppressWarnings("unchecked")
default T BȍőnCoffinHeadStoneʸᴰ() {
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
default BãßBȍőnCoffinʸᴰ<K> GET_BBC() {
BãßBȍőnCoffinOpenʸᴰ<K> zombieCoffin = null;
Lock bibleReader = Ꝑŕḯṿª.FUNERAL.readLock(); // Can't force enum only, thus no jvm safety
bibleReader.lock();
try {
zombieCoffin = (BãßBȍőnCoffinOpenʸᴰ<K>) Ꝑŕḯṿª.GRAVE_YARD.get(BȍőnCoffinHeadStoneʸᴰ());
} finally {
bibleReader.unlock();
}
if (zombieCoffin == null) {
Lock shemiraWriter = Ꝑŕḯṿª.FUNERAL.writeLock();
shemiraWriter.lock();
try {
zombieCoffin = BãßBȍőnCoffinOpenʸᴰ.newInstance();
Ꝑŕḯṿª.GRAVE_YARD.put(BȍőnCoffinHeadStoneʸᴰ(), zombieCoffin);
} finally {
shemiraWriter.unlock();
}
}
return zombieCoffin;
}
}

View file

@ -0,0 +1,91 @@
package love.distributedrebirth.bassboonyd;
import java.util.List;
import java.util.Map;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinGhostʸᴰ {
Object PUT_GHOST(String key, Object value);
Object GHOST_OBJ(String key);
@SuppressWarnings("unchecked")
default <Y> Y GHOST_OBJ(String key, Class<Y> type) {
return (Y) GHOST_OBJ(key);
}
default String GHOST_STR(String key) {
return String.class.cast(GHOST_OBJ(key));
}
default Short GHOST_SHORT(String key) {
return Short.class.cast(GHOST_OBJ(key));
}
default Character GHOST_CHAR(String key) {
return Character.class.cast(GHOST_OBJ(key));
}
default Integer GHOST_INT(String key) {
return Integer.class.cast(GHOST_OBJ(key));
}
default Long GHOST_LONG(String key) {
return Long.class.cast(GHOST_OBJ(key));
}
default Boolean GHOST_BOOL(String key) {
return Boolean.class.cast(GHOST_OBJ(key));
}
default Float GHOST_FLOAT(String key) {
return Float.class.cast(GHOST_OBJ(key));
}
default Double GHOST_DOUBLE(String key) {
return Double.class.cast(GHOST_OBJ(key));
}
@SuppressWarnings("unchecked")
default Map<String,Object> GHOST_MAP_OBJ(String key) {
return Map.class.cast(GHOST_OBJ(key));
}
default Object GHOST_MAP_OBJ_VALUE(String key, String valueKey) {
return GHOST_MAP_OBJ(key).get(valueKey);
}
@SuppressWarnings("unchecked")
default Map<String,String> GHOST_MAP_STR(String key) {
return Map.class.cast(GHOST_OBJ(key));
}
default String GHOST_MAP_STR_VALUE(String key, String valueKey) {
return GHOST_MAP_STR(key).get(valueKey);
}
@SuppressWarnings("unchecked")
default Map<String,Integer> GHOST_MAP_INT(String key) {
return Map.class.cast(GHOST_OBJ(key));
}
default Integer GHOST_MAP_INT_VALUE(String key, String valueKey) {
return GHOST_MAP_INT(key).get(valueKey);
}
@SuppressWarnings("unchecked")
default List<Object> GHOST_LIST_OBJ(String key) {
return List.class.cast(GHOST_OBJ(key));
}
@SuppressWarnings("unchecked")
default List<String> GHOST_LIST_STR(String key) {
return List.class.cast(GHOST_OBJ(key));
}
@SuppressWarnings("unchecked")
default List<Integer> GHOST_LIST_INT(String key) {
return List.class.cast(GHOST_OBJ(key));
}
}

View file

@ -6,7 +6,7 @@ import java.util.Map;
import java.util.function.Consumer;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőnCoffinʸᴰ<T>, DefaultInitMethodʸᴰ {
public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőnCoffinʸᴰ<T> {
void LOCK_COFFIN();
@ -20,30 +20,56 @@ public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKey
PUT_OBJ(key, new ArrayList<>());
}
static <T extends DefaultEnumBaseʸᴰ<?> & BãßBȍőnCoffinStoreʸᴰ<?>> void lockCoffin(T store, Consumer<String> logHandler) {
static void lockCoffin(DefaultEnumBaseʸᴰ<?,?> store, Consumer<String> logHandler) {
logHandler.accept("Lock: "+store.BãßClassNaam()+" since: "+store.BãßAuthorCopyright());
for (Object o:store.BãßInstances()) {
BãßBȍőnCoffinStoreʸᴰ<?> coffin = BãßBȍőnCoffinStoreʸᴰ.class.cast(o);
BãßBȍőnCoffinStoreʸᴰ<?, ?> coffin = BãßBȍőnCoffinStoreʸᴰ.class.cast(o);
BãßBȍőnCoffinOpenʸᴰ<?> coffinOpen = BãßBȍőnCoffinOpenʸᴰ.class.cast(coffin.GET_BBC());
coffinOpen.LOCK_COFFIN();
}
}
static class BãßBȍőnFamilyGrave implements BãßBȍőnCoffinGhostʸᴰ {
final Map<String,Object> ghosts = new HashMap<>();
volatile boolean deathLock = false;
public void LOCK_GHOST() {
deathLock = true;
}
@Override
public Object PUT_GHOST(String key, Object value) {
if (deathLock) {
throw new IllegalStateException("Can't restore body of family ghost.");
}
return ghosts.put(key, value);
}
@Override
public Object GHOST_OBJ(String key) {
return ghosts.get(key);
}
}
static <Y extends BãßBȍőnCoffinStoreKeyʸᴰ> BãßBȍőnCoffinOpenʸᴰ<Y> newInstance() {
return new BãßBȍőnCoffinOpenʸᴰ<Y>() {
final Map<Y,Object> initMap = new HashMap<>();
final Map<Class<?>,BãßBȍőnFamilyGrave> familyGrave = new HashMap<>();
volatile boolean deathLock = false;
@Override
public void LOCK_COFFIN() {
deathLock = true;
for (BãßBȍőnFamilyGrave grave:familyGrave.values()) {
grave.LOCK_GHOST();
}
}
@Override
public Object GET_OBJ(Y key) {
return initMap.get(key);
}
@Override
public Object PUT_OBJ(Y key, Object value) {
if (deathLock) {
@ -51,6 +77,16 @@ public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKey
}
return initMap.put(key, value);
}
@Override
public BãßBȍőnCoffinGhostʸᴰ UNHOLY(Class<?> familyName) {
BãßBȍőnFamilyGrave familyGhosts = familyGrave.get(familyName);
if (familyGhosts == null) {
familyGhosts = new BãßBȍőnFamilyGrave();
familyGrave.put(familyName, familyGhosts);
}
return familyGhosts;
}
};
}
}

View file

@ -4,4 +4,12 @@ package love.distributedrebirth.bassboonyd;
public interface BãßBȍőnCoffinStoreKeyʸᴰ {
String name();
static class None implements BãßBȍőnCoffinStoreKeyʸᴰ {
@Override
public String name() {
return BãßBȍőnCoffinStoreKeyʸᴰ.class.getSimpleName();
}
}
}

View file

@ -1,7 +1,9 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinStoreʸᴰ<T extends BãßBȍőnCoffinStoreKeyʸᴰ> {
public interface BãßBȍőnCoffinStoreʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> {
BãßBȍőnCoffinʸᴰ<T> GET_BBC();
BãßBȍőnCoffinʸᴰ<K> GET_BBC();
T BȍőnCoffinHeadStoneʸᴰ();
}

View file

@ -6,8 +6,10 @@ import java.util.Map;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinʸᴰ<T extends BãßBȍőnCoffinStoreKeyʸᴰ> {
BãßBȍőnCoffinGhostʸᴰ UNHOLY(Class<?> familyName);
Object GET_OBJ(T key);
@SuppressWarnings("unchecked")
default <Y> Y GET_OBJ(T key, Class<Y> type) {
return (Y) GET_OBJ(key);
@ -50,16 +52,28 @@ public interface BãßBȍőnCoffinʸᴰ<T extends BãßBȍőnCoffinStoreKeyʸᴰ
return Map.class.cast(GET_OBJ(key));
}
default Object GET_MAP_OBJ_VALUE(T key, String valueKey) {
return GET_MAP_OBJ(key).get(valueKey);
}
@SuppressWarnings("unchecked")
default Map<String,String> GET_MAP_STR(T key) {
return Map.class.cast(GET_OBJ(key));
}
default String GET_MAP_STR_VALUE(T key, String valueKey) {
return GET_MAP_STR(key).get(valueKey);
}
@SuppressWarnings("unchecked")
default Map<String,Integer> GET_MAP_INT(T key) {
return Map.class.cast(GET_OBJ(key));
}
default Integer GET_MAP_INT_VALUE(T key, String valueKey) {
return GET_MAP_INT(key).get(valueKey);
}
@SuppressWarnings("unchecked")
default List<Object> GET_LIST_OBJ(T key) {
return List.class.cast(GET_OBJ(key));

View file

@ -1,5 +1,5 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnInitMarkerʸᴰ {
public interface BãßBȍőnꝐŕḯṿª {
}

View file

@ -0,0 +1,10 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ {
NONE,
BBC,
BOON,
BOON_AND_BBC
}

View file

@ -0,0 +1,13 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ {
BOON_PRE_BOOT,
BOON_PRE_SERVICE,
SERVICE_PRE,
SERVICE,
SERVICE_POST,
BOON_POST_SERVICE,
BOON_POST_DONE,
}

View file

@ -8,6 +8,9 @@ import java.lang.annotation.Target;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface BãßBȍőnInitMethodʸᴰ {
public @interface BãßBȍőnꝐŕḯṿªḕInitʸᴰ {
BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ phase() default BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.SERVICE;
BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ args() default BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.NONE;
}

View file

@ -1,14 +0,0 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnAuthorInfoʸᴰ.class})
public interface DefaultAuthorInfoʸᴰ {
default String BãßAuthorNaam() {
return getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class).name();
}
default String BãßAuthorCopyright() {
return getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class).copyright();
}
}

View file

@ -0,0 +1,9 @@
package love.distributedrebirth.bassboonyd;
public interface DefaultBãßBȍőn<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends
BãßBȍőn<T,K>,
InjectInitMethodʸᴰ<T,K>,
InjectAuthorInfoʸᴰ<T,K>,
InjectClassInfoʸᴰ<T,K>,
InjectPackageInfoʸᴰ<T,K> {
}

View file

@ -1,14 +0,0 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class})
public interface DefaultClassInfoʸᴰ {
default String BãßClassNaam() {
return getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class).name();
}
default String BãßClassPurpose() {
return getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class).purpose();
}
}

View file

@ -1,15 +1,15 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface DefaultEnumBaseʸᴰ<T> extends DefaultAuthorInfoʸᴰ,DefaultClassInfoʸᴰ,DefaultPackageInfoʸᴰ {
public interface DefaultEnumBaseʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultBãßBȍőn<T, K> {
// Bȍőn prefix is for set instance enum methods (called DefaultEnumSetʸᴰ)
// Bãß prefix is for single instance enum methods (called DefaultEnumInstanceʸᴰ)
int ordinal();
String name();
// Bȍőn prefix is for set instance enum methods (called DefaultEnumSetʸᴰ)
// Bãß prefix is for single instance enum methods (called DefaultEnumInstanceʸᴰ)
default String BȍőnNaam() {
return name();
}
@ -23,10 +23,4 @@ public interface DefaultEnumBaseʸᴰ<T> extends DefaultAuthorInfoʸᴰ,DefaultC
throw new RuntimeException(e);
}
}
/*
default String BȍőnNaamI18N() {
return BãßClassNaam() + BãßBȍőnConstantsʸᴰ.STR_DOT + BȍőnNaam();
}
*/
}

View file

@ -1,7 +1,7 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface DefaultEnumInstanceʸᴰ<T> extends DefaultEnumBaseʸᴰ<T> {
public interface DefaultEnumInstanceʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseʸᴰ<T,K> {
default T BãßInstance() {
return BãßInstances()[BãßBȍőnConstantsʸᴰ.INT_ZERO];

View file

@ -8,50 +8,59 @@ import java.util.function.Function;
import java.util.stream.Collectors;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface DefaultEnumSetʸᴰ<T> extends DefaultEnumBaseʸᴰ<T> {
public interface DefaultEnumSetʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseʸᴰ<T,K> {
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static final String GHOST_KEY_RANG_TEL_EEN = "rangTelEen";
@BãßBȍőnꝐŕḯṿªḕInitʸᴰ(args = BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC)
private static void init(DefaultEnumSetʸᴰ<?,?> boon, BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(GHOST_KEY_RANG_TEL_EEN, boon.BȍőnRangTelNul() + BãßBȍőnConstantsʸᴰ.INT_ONE);
}
}
default int BȍőnRangTelNul() {
return ordinal();
}
default int BȍőnRangTelEen() {
return ordinal() + 1;
return GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_INT(Ꝑŕḯṿª.GHOST_KEY_RANG_TEL_EEN);
}
default List<T> BãßInstancesList() {
return Arrays.asList(BãßInstances());
}
default <K> Map<K,T> BãßInstancesToMap(Function<T,K> keyMapper) {
default Map<String,T> BãßInstancesToMap(Function<T,String> keyMapper) {
return BãßInstancesList().stream().collect(Collectors.toMap(keyMapper, v -> v));
}
default T BȍőnVolgende() {
T[] values = BãßInstances();
int resultIndex = 0;
for (int i=0;i<values.length;i++) {
int resultIndex = BãßBȍőnConstantsʸᴰ.INT_ZERO;
for (int i=BãßBȍőnConstantsʸᴰ.INT_ZERO;i<values.length;i++) {
if (this == values[i]) {
resultIndex = i + 1;
resultIndex = i + BãßBȍőnConstantsʸᴰ.INT_ONE;
break;
}
}
if (resultIndex == values.length) {
resultIndex = 0;
resultIndex = BãßBȍőnConstantsʸᴰ.INT_ZERO;
}
return values[resultIndex];
}
default T BȍőnVorige() {
T[] values = BãßInstances();
int resultIndex = 0;
for (int i=0;i<values.length;i++) {
int resultIndex = BãßBȍőnConstantsʸᴰ.INT_ZERO;
for (int i=BãßBȍőnConstantsʸᴰ.INT_ZERO;i<values.length;i++) {
if (this == values[i]) {
resultIndex = i - 1;
resultIndex = i - BãßBȍőnConstantsʸᴰ.INT_ONE;
break;
}
}
if (resultIndex < 0) {
resultIndex = values.length - 1;
if (resultIndex < BãßBȍőnConstantsʸᴰ.INT_ZERO) {
resultIndex = values.length - BãßBȍőnConstantsʸᴰ.INT_ONE;
}
return values[resultIndex];
}

View file

@ -1,63 +0,0 @@
package love.distributedrebirth.bassboonyd;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedHashSet;
import java.util.Set;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {})
public interface DefaultInitMethodʸᴰ {
default void BOON_INIT(Object boon) {
final class InitScanner {
public void scanInterfaces(Object boon, Object bbc) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
for (Class<?> interfaceClass:walkInterfaces(boon.getClass(), new LinkedHashSet<>())) {
for (Class<?> declaredClass:((Class<?>) interfaceClass).getDeclaredClasses()) {
initStaticMarker(declaredClass, bbc);
}
}
}
public void scanClass(Object boon, Object bbc) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
for (Class<?> declaredClass:boon.getClass().getDeclaredClasses()) {
initStaticMarker(declaredClass, bbc);
}
}
private void initStaticMarker(Class<?> declaredClass, Object bbc) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
if (!BãßBȍőnInitMarkerʸᴰ.class.isAssignableFrom(declaredClass)) {
return;
}
for (Method m:declaredClass.getDeclaredMethods()) {
if (m.isAnnotationPresent(BãßBȍőnInitMethodʸᴰ.class)) {
m.setAccessible(true);
m.invoke(null, bbc);
}
}
}
private Set<Class<?>> walkInterfaces(Class<?> clazz, Set<Class<?>> result) {
while (clazz != null) {
for (Class<?> next : clazz.getInterfaces()) {
if (result.add(next)) {
return walkInterfaces(next, result);
}
}
clazz = clazz.getSuperclass();
}
return result;
}
}
InitScanner init = new InitScanner();
try {
init.scanInterfaces(boon, this);
init.scanClass(boon, this);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

View file

@ -1,10 +0,0 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnPackageInfoʸᴰ.class})
public interface DefaultPackageInfoʸᴰ {
default String BãßPackageNaam() {
return getClass().getAnnotation(BãßBȍőnPackageInfoʸᴰ.class).name();
}
}

View file

@ -0,0 +1,28 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnAuthorInfoʸᴰ.class})
public interface InjectAuthorInfoʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőn<T,K> {
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static final String GHOST_KEY_AUTHOR_NAME = "authorName";
private static final String GHOST_KEY_AUTHOR_COPYRIGHT = "authorCopyright";
private static final String DEFAULT_AUTHOR_NAME = "奴隸來自 仙上主天";
private static final String DEFAULT_AUTHOR_COPYRIGHT = "©Δ∞ 仙上主天";
@BãßBȍőnꝐŕḯṿªḕInitʸᴰ(phase = BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.BOON_PRE_BOOT, args = BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC)
private static void init(BãßBȍőn<?,?> boon, BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
BãßBȍőnAuthorInfoʸᴰ anno = boon.getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class);
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(GHOST_KEY_AUTHOR_NAME, anno!=null?anno.name():DEFAULT_AUTHOR_NAME);
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(GHOST_KEY_AUTHOR_COPYRIGHT, anno!=null?anno.copyright():DEFAULT_AUTHOR_COPYRIGHT);
}
}
default String BãßAuthorNaam() {
return GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_STR(Ꝑŕḯṿª.GHOST_KEY_AUTHOR_NAME);
}
default String BãßAuthorCopyright() {
return GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_STR(Ꝑŕḯṿª.GHOST_KEY_AUTHOR_COPYRIGHT);
}
}

View file

@ -0,0 +1,27 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class})
public interface InjectClassInfoʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőn<T, K> {
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static final String GHOST_KEY_BEAN_NAME = "beanName";
private static final String GHOST_KEY_BEAN_PURPOSE = "beanPurpose";
private static final String DEFAULT_BEAN_PURPOSE = "Undefined";
@BãßBȍőnꝐŕḯṿªḕInitʸᴰ(phase = BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.BOON_PRE_BOOT, args = BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC)
private static void init(BãßBȍőn<?,?> boon, BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
BãßBȍőnClassInfoʸᴰ anno = boon.getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class);
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(GHOST_KEY_BEAN_NAME, anno!=null?anno.name():boon.getClass().getSimpleName());
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(GHOST_KEY_BEAN_PURPOSE, anno!=null?anno.purpose():DEFAULT_BEAN_PURPOSE);
}
}
default String BãßClassNaam() {
return GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_STR(Ꝑŕḯṿª.GHOST_KEY_BEAN_NAME);
}
default String BãßClassPurpose() {
return GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_STR(Ꝑŕḯṿª.GHOST_KEY_BEAN_PURPOSE);
}
}

View file

@ -0,0 +1,85 @@
package love.distributedrebirth.bassboonyd;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.function.Consumer;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface InjectInitMethodʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőn<T,K> {
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static void scanInterfaces(BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ phase, Object boon, BãßBȍőnCoffinOpenʸᴰ<?> bbc) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
for (Class<?> interfaceClass:walkInterfaces(boon.getClass(), new LinkedHashSet<>())) {
for (Class<?> declaredClass:((Class<?>) interfaceClass).getDeclaredClasses()) {
initPrivateMarker(phase, declaredClass, bbc, boon);
}
}
}
private static void scanClass(BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ phase, Object boon, BãßBȍőnCoffinOpenʸᴰ<?> bbc) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
for (Class<?> declaredClass:boon.getClass().getDeclaredClasses()) {
initPrivateMarker(phase, declaredClass, bbc, boon);
}
}
private static void initPrivateMarker(BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ phase, Class<?> declaredClass, BãßBȍőnCoffinOpenʸᴰ<?> bbc, Object boon) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
if (!BãßBȍőnꝐŕḯṿª.class.isAssignableFrom(declaredClass)) {
return;
}
for (Method m:declaredClass.getDeclaredMethods()) {
if (!m.isAnnotationPresent(BãßBȍőnꝐŕḯṿªḕInitʸᴰ.class)) {
continue;
}
BãßBȍőnꝐŕḯṿªḕInitʸᴰ anno = m.getAnnotation(BãßBȍőnꝐŕḯṿªḕInitʸᴰ.class);
if (phase != anno.phase()) {
continue; // TODO: redo to fast code path
}
//System.out.println("annoInvoke: "+anno.args()+" req="+phase+" of "+boon.getClass().getSimpleName()+"."+boon+" from: "+declaredClass.getName());
m.setAccessible(true);
if (anno.args() == BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BBC) {
m.invoke(null, bbc);
} else if (anno.args() == BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON) {
m.invoke(null, boon);
} else if (anno.args() == BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC) {
m.invoke(null, boon, bbc);
} else {
m.invoke(null);
}
}
}
private static Set<Class<?>> walkInterfaces(Class<?> clazz, Set<Class<?>> result) {
while (clazz != null) {
for (Class<?> next : clazz.getInterfaces()) {
if (result.add(next)) {
walkInterfaces(next, result);
}
}
clazz = clazz.getSuperclass();
}
return result;
}
}
default void BOON_INIT() {
BOON_INIT(null);
}
default void BOON_INIT(Consumer<BãßBȍőnCoffinOpenʸᴰ<K>> initBody) {
BãßBȍőnCoffinOpenʸᴰ<K> bbc = (BãßBȍőnCoffinOpenʸᴰ<K>) GET_BBC();
try {
for (BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ phase:BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.values()) {
Ꝑŕḯṿª.scanInterfaces(phase, this, bbc);
Ꝑŕḯṿª.scanClass(phase, this, bbc);
}
if (initBody != null) {
initBody.accept(bbc);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,20 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnPackageInfoʸᴰ.class})
public interface InjectPackageInfoʸᴰ<T, K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőn<T, K> {
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static final String GHOST_KEY_PACKAGE_NAME = "packageName";
@BãßBȍőnꝐŕḯṿªḕInitʸᴰ(phase = BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.BOON_PRE_BOOT, args = BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC)
private static void init(BãßBȍőn<?,?> boon, BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
BãßBȍőnPackageInfoʸᴰ anno = boon.getClass().getAnnotation(BãßBȍőnPackageInfoʸᴰ.class);
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(GHOST_KEY_PACKAGE_NAME, anno!=null?anno.name():boon.getClass().getPackage().getName());
}
}
default String BãßPackageNaam() {
return GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_STR(Ꝑŕḯṿª.GHOST_KEY_PACKAGE_NAME);
}
}

View file

@ -1,46 +1,61 @@
package love.distributedrebirth.bassboonyd.jmx;
import java.util.HashMap;
import java.util.Map;
import love.distributedrebirth.bassboonyd.BãßBȍőnAnnotationInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnConstantsʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboonyd.DefaultEnumBaseʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class})
public interface DefaultEnumBaseᴶᴹˣ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseʸᴰ<T>,BãßBȍőnCoffinStoreʸᴰ<K> {
public interface DefaultEnumBaseᴶᴹˣ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseʸᴰ<T,K> {
void BȍőnJmxInit(K key);
default GuageCounterᴶᴹˣ BȍőnJmxInitGuageCounter(K key, String name) {
return BȍőnJmxInitGuageCounter(key, name, BãßBȍőnConstantsʸᴰ.STR_EMPTY);
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
private static final String GHOST_KEY_JMX = "JMX";
}
default GuageCounterᴶᴹˣ BȍőnJmxInitGuageCounter(K key, String name, String description) {
public static Map<String, Object> GHOST_MAP(BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
Map<String, Object> result = BBC.UNHOLY(Ꝑŕḯṿª.class).GHOST_MAP_OBJ(Ꝑŕḯṿª.GHOST_KEY_JMX);
if (result == null) {
result = new HashMap<>();
BBC.UNHOLY(Ꝑŕḯṿª.class).PUT_GHOST(Ꝑŕḯṿª.GHOST_KEY_JMX, result);
}
return result;
}
default GuageCounterᴶᴹˣ BȍőnJmxInitGuageCounter(String name) {
return BȍőnJmxInitGuageCounter(name, BãßBȍőnConstantsʸᴰ.STR_EMPTY);
}
default GuageCounterᴶᴹˣ BȍőnJmxInitGuageCounter(String name, String description) {
GuageCounterᴶᴹˣ result = new GuageCounterᴶᴹˣ(name, description);
GET_BBC().GET_MAP_OBJ(key).put(name, result);
GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_MAP_OBJ(Ꝑŕḯṿª.GHOST_KEY_JMX).put(name, result);
return result;
}
default StringAttributeᴶᴹˣ BȍőnJmxInitStringAttribute(K key, String name) {
return BȍőnJmxInitStringAttribute(key, name, BãßBȍőnConstantsʸᴰ.STR_EMPTY);
default StringAttributeᴶᴹˣ BȍőnJmxInitStringAttribute(String name) {
return BȍőnJmxInitStringAttribute(name, BãßBȍőnConstantsʸᴰ.STR_EMPTY);
}
default StringAttributeᴶᴹˣ BȍőnJmxInitStringAttribute(K key, String name, String description) {
default StringAttributeᴶᴹˣ BȍőnJmxInitStringAttribute(String name, String description) {
StringAttributeᴶᴹˣ result = new StringAttributeᴶᴹˣ(name, description);
GET_BBC().GET_MAP_OBJ(key).put(name, result);
GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_MAP_OBJ(Ꝑŕḯṿª.GHOST_KEY_JMX).put(name, result);
return result;
}
default BooleanAttributeᴶᴹˣ BȍőnJmxInitBooleanAttribute(K key, String name) {
return BȍőnJmxInitBooleanAttribute(key, name, BãßBȍőnConstantsʸᴰ.STR_EMPTY);
default BooleanAttributeᴶᴹˣ BȍőnJmxInitBooleanAttribute(String name) {
return BȍőnJmxInitBooleanAttribute(name, BãßBȍőnConstantsʸᴰ.STR_EMPTY);
}
default BooleanAttributeᴶᴹˣ BȍőnJmxInitBooleanAttribute(K key, String name, String description) {
default BooleanAttributeᴶᴹˣ BȍőnJmxInitBooleanAttribute(String name, String description) {
BooleanAttributeᴶᴹˣ result = new BooleanAttributeᴶᴹˣ(name, description);
GET_BBC().GET_MAP_OBJ(key).put(name, result);
GET_BBC().UNHOLY(Ꝑŕḯṿª.class).GHOST_MAP_OBJ(Ꝑŕḯṿª.GHOST_KEY_JMX).put(name, result);
return result;
}
}

View file

@ -11,29 +11,34 @@ import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnConstantsʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿªḕInitʸᴰ;
import love.distributedrebirth.bassboonyd.DefaultEnumInstanceʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class})
public interface DefaultEnumInstanceᴶᴹˣ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseᴶᴹˣ<T,K>,DefaultEnumInstanceʸᴰ<T> {
public interface DefaultEnumInstanceᴶᴹˣ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseᴶᴹˣ<T,K>,DefaultEnumInstanceʸᴰ<T,K> {
@SuppressWarnings("unchecked")
default void BȍőnJmxInit(K key) {
BãßBȍőnCoffinOpenʸᴰ<K> coffin = BãßBȍőnCoffinOpenʸᴰ.class.cast(GET_BBC());
coffin.PUT_MAP(key);
try {
StringBuilder name = new StringBuilder();
name.append(BãßPackageNaam());
name.append(BãßBȍőnConstantsʸᴰ.STR_COLON);
name.append(BãßBȍőnConstantsʸᴰ.STR_TYPE);
name.append(BãßBȍőnConstantsʸᴰ.STR_IS);
name.append(BãßClassNaam());
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName1 = new ObjectName(name.toString());
server.registerMBean(new MBeanDynamicᴶᴹˣ(BãßClassPurpose(), GET_BBC().GET_MAP_OBJ(key)), objectName1);
} catch (Exception e) {
throw new RuntimeException(e);
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
@BãßBȍőnꝐŕḯṿªḕInitʸᴰ(phase = BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.BOON_PRE_SERVICE, args = BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC)
private static void init(DefaultEnumBaseᴶᴹˣ<?,?> boon, BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
try {
StringBuilder name = new StringBuilder();
name.append(boon.BãßPackageNaam());
name.append(BãßBȍőnConstantsʸᴰ.STR_COLON);
name.append(BãßBȍőnConstantsʸᴰ.STR_TYPE);
name.append(BãßBȍőnConstantsʸᴰ.STR_IS);
name.append(boon.BãßClassNaam());
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName1 = new ObjectName(name.toString());
server.registerMBean(new MBeanDynamicᴶᴹˣ(boon.BãßClassPurpose(), DefaultEnumBaseᴶᴹˣ.GHOST_MAP(BBC)), objectName1);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}

View file

@ -11,33 +11,38 @@ import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnConstantsʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnꝐŕḯṿªḕInitʸᴰ;
import love.distributedrebirth.bassboonyd.DefaultEnumSetʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class})
public interface DefaultEnumSetᴶᴹˣ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseᴶᴹˣ<T,K>,DefaultEnumSetʸᴰ<T> {
public interface DefaultEnumSetᴶᴹˣ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends DefaultEnumBaseᴶᴹˣ<T,K>,DefaultEnumSetʸᴰ<T,K> {
@SuppressWarnings("unchecked")
default void BȍőnJmxInit(K key) {
BãßBȍőnCoffinOpenʸᴰ<K> coffin = BãßBȍőnCoffinOpenʸᴰ.class.cast(GET_BBC());
coffin.PUT_MAP(key);
try {
StringBuilder name = new StringBuilder();
name.append(BãßPackageNaam());
name.append(BãßBȍőnConstantsʸᴰ.STR_COLON);
name.append(BãßBȍőnConstantsʸᴰ.STR_TYPE);
name.append(BãßBȍőnConstantsʸᴰ.STR_IS);
name.append(BãßClassNaam());
name.append(BãßBȍőnConstantsʸᴰ.STR_COMMA);
name.append(BãßBȍőnConstantsʸᴰ.STR_NAME);
name.append(BãßBȍőnConstantsʸᴰ.STR_IS);
name.append(BȍőnNaam());
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName1 = new ObjectName(name.toString());
server.registerMBean(new MBeanDynamicᴶᴹˣ(BãßClassPurpose(), GET_BBC().GET_MAP_OBJ(key)), objectName1);
} catch (Exception e) {
throw new RuntimeException(e);
public static class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª {
@BãßBȍőnꝐŕḯṿªḕInitʸᴰ(phase = BãßBȍőnꝐŕḯṿªḕInitPhaseʸᴰ.BOON_PRE_SERVICE, args = BãßBȍőnꝐŕḯṿªḕInitArgsʸᴰ.BOON_AND_BBC)
private static void init(DefaultEnumBaseᴶᴹˣ<?,?> boon, BãßBȍőnCoffinOpenʸᴰ<?> BBC) {
try {
StringBuilder name = new StringBuilder();
name.append(boon.BãßPackageNaam());
name.append(BãßBȍőnConstantsʸᴰ.STR_COLON);
name.append(BãßBȍőnConstantsʸᴰ.STR_TYPE);
name.append(BãßBȍőnConstantsʸᴰ.STR_IS);
name.append(boon.BãßClassNaam());
name.append(BãßBȍőnConstantsʸᴰ.STR_COMMA);
name.append(BãßBȍőnConstantsʸᴰ.STR_NAME);
name.append(BãßBȍőnConstantsʸᴰ.STR_IS);
name.append(boon.BȍőnNaam());
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName1 = new ObjectName(name.toString());
server.registerMBean(new MBeanDynamicᴶᴹˣ(boon.BãßClassPurpose(), DefaultEnumBaseᴶᴹˣ.GHOST_MAP(BBC)), objectName1);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}

View file

@ -1,13 +0,0 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
/**
* Only use when no other coffin keys are needed on instance or enum.
*/
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum MBeanStoreKeyᴶᴹˣ implements BãßBȍőnCoffinStoreKeyʸᴰ {
JMX,
;
}