From dc26ebb76ebc0d99d3aaa6337f6824d5f5511542 Mon Sep 17 00:00:00 2001 From: eric2788 Date: Sat, 14 May 2022 13:56:36 +0800 Subject: [PATCH 1/5] changed all getDeclaredFields to getFields --- ELDependenci-plugin/pom.xml | 2 +- .../src/main/java/com/ericlam/mc/eld/ELDTypeListener.java | 2 +- .../java/com/ericlam/mc/eld/commands/ELDCommandHandler.java | 2 +- .../com/ericlam/mc/eld/configurations/ELDConfigManager.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ELDependenci-plugin/pom.xml b/ELDependenci-plugin/pom.xml index 672e6e0..c092d18 100644 --- a/ELDependenci-plugin/pom.xml +++ b/ELDependenci-plugin/pom.xml @@ -10,7 +10,7 @@ 4.0.0 ELDependenci-plugin - ${project.parent.version} + ${project.parent.version}.1 diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java index ca0068c..5c62d61 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java @@ -25,7 +25,7 @@ public ELDTypeListener(ConfigPoolService configPoolService) { @Override public void hear(TypeLiteral typeLiteral, TypeEncounter typeEncounter) { - for (Field field : typeLiteral.getRawType().getDeclaredFields()) { + for (Field field : typeLiteral.getRawType().getFields()) { if (!field.isAnnotationPresent(InjectPool.class)) continue; if (!(field.getGenericType() instanceof ParameterizedType)) continue; if (field.getType() == GroupConfig.class) { diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java index 910d28d..ac15409 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java @@ -29,7 +29,7 @@ public final class ELDCommandHandler implements CommandExecutor, TabCompleter { private static Field[] getDeclaredFieldsForNodes(Class node){ if (nodePlaceholders.containsKey(node)) return nodePlaceholders.get(node); - var fields = node.getDeclaredFields(); + var fields = node.getFields(); nodePlaceholders.put(node, fields); return fields; } diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/configurations/ELDConfigManager.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/configurations/ELDConfigManager.java index cb7e2ee..f9d94a6 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/configurations/ELDConfigManager.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/configurations/ELDConfigManager.java @@ -148,7 +148,7 @@ class FileControllerImpl implements FileController { private final Field[] fields; public FileControllerImpl() { - this.fields = config.getDeclaredFields(); + this.fields = config.getFields(); } @Override From c9a0daae686898f5d5b8fbce7dda5477e581f467 Mon Sep 17 00:00:00 2001 From: eric2788 Date: Sat, 14 May 2022 14:38:47 +0800 Subject: [PATCH 2/5] =?UTF-8?q?addon=20=E6=96=B0=E5=A2=9E=20ReflectionServ?= =?UTF-8?q?ice;=20=E7=8F=BE=E5=9C=A8=E6=8C=87=E4=BB=A4=E5=92=8C=20@InjectP?= =?UTF-8?q?ool=20=E6=94=AF=E6=8F=B4=E5=9C=A8=20=E6=8A=BD=E8=B1=A1=E9=A1=9E?= =?UTF-8?q?=E5=88=A5=E5=AE=9A=E7=BE=A9=20field?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ELDependenci-plugin/pom.xml | 2 +- .../com/ericlam/mc/eld/ELDTypeListener.java | 10 +++- .../java/com/ericlam/mc/eld/ELDependenci.java | 3 +- .../mc/eld/commands/ELDCommandHandler.java | 3 +- .../mc/eld/module/ELDConfigModule.java | 9 +++- .../mc/eld/services/ELDReflectionService.java | 50 +++++++++++++++++++ .../com/ericlam/mc/eld/ReflectionService.java | 32 ++++++++++++ 7 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/services/ELDReflectionService.java create mode 100644 eldependenci-addon/src/main/java/com/ericlam/mc/eld/ReflectionService.java diff --git a/ELDependenci-plugin/pom.xml b/ELDependenci-plugin/pom.xml index c092d18..19e7038 100644 --- a/ELDependenci-plugin/pom.xml +++ b/ELDependenci-plugin/pom.xml @@ -10,7 +10,7 @@ 4.0.0 ELDependenci-plugin - ${project.parent.version}.1 + ${project.parent.version}.2 diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java index 5c62d61..c38f40b 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDTypeListener.java @@ -6,26 +6,32 @@ import com.ericlam.mc.eld.configurations.GroupConfig; import com.ericlam.mc.eld.configurations.GroupLang; import com.ericlam.mc.eld.services.ConfigPoolService; +import com.google.common.collect.Lists; import com.google.inject.MembersInjector; import com.google.inject.TypeLiteral; import com.google.inject.spi.TypeEncounter; import com.google.inject.spi.TypeListener; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; +import java.util.List; @SuppressWarnings("unchecked") public final class ELDTypeListener implements TypeListener { private final ConfigPoolService configPoolService; + private final ReflectionService reflectionService; - public ELDTypeListener(ConfigPoolService configPoolService) { + public ELDTypeListener(ConfigPoolService configPoolService, ReflectionService reflectionService) { this.configPoolService = configPoolService; + this.reflectionService = reflectionService; } @Override public void hear(TypeLiteral typeLiteral, TypeEncounter typeEncounter) { - for (Field field : typeLiteral.getRawType().getFields()) { + for (Field field : reflectionService.getDeclaredFieldsUpTo(typeLiteral.getRawType(), null)) { if (!field.isAnnotationPresent(InjectPool.class)) continue; if (!(field.getGenericType() instanceof ParameterizedType)) continue; if (field.getType() == GroupConfig.class) { diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDependenci.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDependenci.java index a21e95f..bd7eae0 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDependenci.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/ELDependenci.java @@ -15,6 +15,7 @@ import com.ericlam.mc.eld.module.ELDLoggingModule; import com.ericlam.mc.eld.services.ArgParserService; import com.ericlam.mc.eld.services.ELDConfigPoolService; +import com.ericlam.mc.eld.services.ELDReflectionService; import com.ericlam.mc.eld.services.logging.ELDLoggingService; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.inject.Guice; @@ -70,7 +71,7 @@ public void onLoad() { groupConfigService = new ELDConfigPoolService(eldConfig); this.module.setDefaultSingleton(eldConfig.defaultSingleton); this.sharePluginInstance = eldConfig.sharePluginInstance; - this.module.addModule(new ELDConfigModule(groupConfigService)); + this.module.addModule(new ELDConfigModule(groupConfigService, new ELDReflectionService())); this.module.addModule(new ELDLoggingModule(new ELDLoggingService(eldConfig))); } diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java index ac15409..30099e7 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/commands/ELDCommandHandler.java @@ -8,6 +8,7 @@ import com.ericlam.mc.eld.bukkit.ELDMessageConfig; import com.ericlam.mc.eld.components.CommandNode; import com.ericlam.mc.eld.exceptions.ArgumentParseException; +import com.ericlam.mc.eld.services.ELDReflectionService; import com.google.inject.Injector; import org.bukkit.command.*; import org.bukkit.entity.Player; @@ -29,7 +30,7 @@ public final class ELDCommandHandler implements CommandExecutor, TabCompleter { private static Field[] getDeclaredFieldsForNodes(Class node){ if (nodePlaceholders.containsKey(node)) return nodePlaceholders.get(node); - var fields = node.getFields(); + var fields = ELDReflectionService.getDeclaredFieldsUpToStatic(node, null).toArray(Field[]::new); nodePlaceholders.put(node, fields); return fields; } diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/module/ELDConfigModule.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/module/ELDConfigModule.java index 4abe719..5275230 100644 --- a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/module/ELDConfigModule.java +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/module/ELDConfigModule.java @@ -1,9 +1,11 @@ package com.ericlam.mc.eld.module; import com.ericlam.mc.eld.ELDTypeListener; +import com.ericlam.mc.eld.ReflectionService; import com.ericlam.mc.eld.configurations.ELDConfigManager; import com.ericlam.mc.eld.services.ConfigPoolService; import com.ericlam.mc.eld.services.ELDConfigPoolService; +import com.ericlam.mc.eld.services.ELDReflectionService; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.inject.AbstractModule; import com.google.inject.matcher.Matchers; @@ -12,9 +14,11 @@ public final class ELDConfigModule extends AbstractModule { private final ELDConfigPoolService groupConfigService; + private final ELDReflectionService reflectionService; - public ELDConfigModule(ELDConfigPoolService groupConfigService) { + public ELDConfigModule(ELDConfigPoolService groupConfigService, ELDReflectionService reflectionService) { this.groupConfigService = groupConfigService; + this.reflectionService = reflectionService; } @Override @@ -22,6 +26,7 @@ protected void configure() { bind(ObjectMapper.class).annotatedWith(Names.named("eld-yaml")).toInstance(ELDConfigManager.YAML_MAPPER); bind(ObjectMapper.class).annotatedWith(Names.named("eld-json")).toInstance(ELDConfigManager.JSON_MAPPER); bind(ConfigPoolService.class).toInstance(groupConfigService); - bindListener(Matchers.any(), new ELDTypeListener(groupConfigService)); + bind(ReflectionService.class).toInstance(reflectionService); + bindListener(Matchers.any(), new ELDTypeListener(groupConfigService, reflectionService)); } } diff --git a/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/services/ELDReflectionService.java b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/services/ELDReflectionService.java new file mode 100644 index 0000000..9c4ca00 --- /dev/null +++ b/ELDependenci-plugin/src/main/java/com/ericlam/mc/eld/services/ELDReflectionService.java @@ -0,0 +1,50 @@ +package com.ericlam.mc.eld.services; + +import com.ericlam.mc.eld.ReflectionService; +import com.google.common.collect.Lists; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.List; + +public class ELDReflectionService implements ReflectionService { + + @Override + public List getDeclaredFieldsUpTo(@NotNull Class startClass, @Nullable Class exclusiveParent) { + return getDeclaredFieldsUpToStatic(startClass, exclusiveParent); + } + + @Override + public List getDeclaredMethodsUpTo(@NotNull Class startClass, @Nullable Class exclusiveParent) { + return getDeclaredMethodsUpToStatic(startClass, exclusiveParent); + } + + public static List getDeclaredFieldsUpToStatic(@NotNull Class startClass, @Nullable Class exclusiveParent) { + List currentClassFields = Lists.newArrayList(startClass.getDeclaredFields()); + Class parentClass = startClass.getSuperclass(); + + if (parentClass != null && !(parentClass.equals(exclusiveParent))) { + List parentClassFields = + (List) getDeclaredFieldsUpToStatic(parentClass, exclusiveParent); + currentClassFields.addAll(parentClassFields); + } + + return currentClassFields; + } + + public List getDeclaredMethodsUpToStatic(@NotNull Class startClass, @Nullable Class exclusiveParent) { + List currentClassMethods = Lists.newArrayList(startClass.getDeclaredMethods()); + Class parentClass = startClass.getSuperclass(); + + if (parentClass != null && !(parentClass.equals(exclusiveParent))) { + List parentClassFields = + (List) getDeclaredMethodsUpToStatic(parentClass, exclusiveParent); + currentClassMethods.addAll(parentClassFields); + } + + return currentClassMethods; + } + +} diff --git a/eldependenci-addon/src/main/java/com/ericlam/mc/eld/ReflectionService.java b/eldependenci-addon/src/main/java/com/ericlam/mc/eld/ReflectionService.java new file mode 100644 index 0000000..040cb05 --- /dev/null +++ b/eldependenci-addon/src/main/java/com/ericlam/mc/eld/ReflectionService.java @@ -0,0 +1,32 @@ +package com.ericlam.mc.eld; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.List; + +/** + * 反射工具服務 + */ +public interface ReflectionService { + + /** + * 取得整個 class 上下關係的 declared fields + * + * @param startClass 開始類別 + * @param exclusiveParent 到此父類別停止 + * @return 整個 class 上下關係的 declared fields + */ + List getDeclaredFieldsUpTo(@Nonnull Class startClass, @Nullable Class exclusiveParent); + + /** + * 取得整個 class 上下關係的 declared methods + * + * @param startClass 開始類別 + * @param exclusiveParent 到此父類別停止 + * @return 整個 class 上下關係的 declared methods + */ + List getDeclaredMethodsUpTo(@Nonnull Class startClass, @Nullable Class exclusiveParent); + +} From bd959b467319056b68b23a30e90f959a15f66f6f Mon Sep 17 00:00:00 2001 From: eric2788 Date: Sat, 14 May 2022 15:01:02 +0800 Subject: [PATCH 3/5] update to 0.1.8 --- ELDependenci-plugin/pom.xml | 4 ++-- eldependenci-addon/pom.xml | 2 +- eldependenci-framework/pom.xml | 2 +- pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ELDependenci-plugin/pom.xml b/ELDependenci-plugin/pom.xml index 19e7038..0f434a1 100644 --- a/ELDependenci-plugin/pom.xml +++ b/ELDependenci-plugin/pom.xml @@ -5,12 +5,12 @@ eldependenci org.eldependenci - 0.1.7 + 0.1.8 4.0.0 ELDependenci-plugin - ${project.parent.version}.2 + ${project.parent.version} diff --git a/eldependenci-addon/pom.xml b/eldependenci-addon/pom.xml index fbfa929..bb4d8b9 100644 --- a/eldependenci-addon/pom.xml +++ b/eldependenci-addon/pom.xml @@ -5,7 +5,7 @@ eldependenci org.eldependenci - 0.1.7 + 0.1.8 4.0.0 diff --git a/eldependenci-framework/pom.xml b/eldependenci-framework/pom.xml index 1bf1df0..63b612f 100644 --- a/eldependenci-framework/pom.xml +++ b/eldependenci-framework/pom.xml @@ -5,7 +5,7 @@ eldependenci org.eldependenci - 0.1.7 + 0.1.8 4.0.0 diff --git a/pom.xml b/pom.xml index 83b7608..f3fffe6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.eldependenci eldependenci pom - 0.1.7 + 0.1.8 eldependenci-framework eldependenci-addon From e4aee1e267207fb5d20297b359d52de0ca726222 Mon Sep 17 00:00:00 2001 From: eric2788 Date: Sat, 14 May 2022 15:03:31 +0800 Subject: [PATCH 4/5] update to 0.1.8 and workflow --- .github/workflows/publish.yml | 8 ++++++++ .github/workflows/verify.yml | 3 +++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 01a8d92..b51eb70 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -36,11 +36,19 @@ jobs: packages: write steps: - uses: actions/checkout@v2 + - uses: actions-ecosystem/action-get-latest-tag@v1 + id: latest-tag + - uses: jungwinter/split@v2 + id: version + with: + msg: ${{ steps.latest-tag.outputs.tag }} + separator: '.' - uses: actions/setup-java@v2 with: java-version: '18' distribution: 'adopt' - name: Publish package run: mvn --batch-mode deploy + if: ${{ steps.version.outputs.length == 3 }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 0c06eaf..6ff1331 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -1,5 +1,8 @@ name: Verify Process +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + on: pull_request: branches: [ master ] From 4edc9124677914fe09ec507c3733a91fa53ce1e5 Mon Sep 17 00:00:00 2001 From: eric2788 Date: Sat, 14 May 2022 15:13:30 +0800 Subject: [PATCH 5/5] enabled snapshot --- ELDependenci-plugin/pom.xml | 2 +- eldependenci-addon/pom.xml | 2 +- eldependenci-framework/pom.xml | 2 +- pom.xml | 9 +++++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ELDependenci-plugin/pom.xml b/ELDependenci-plugin/pom.xml index 0f434a1..e6e5bb1 100644 --- a/ELDependenci-plugin/pom.xml +++ b/ELDependenci-plugin/pom.xml @@ -5,7 +5,7 @@ eldependenci org.eldependenci - 0.1.8 + 0.1.8-SNAPSHOT 4.0.0 diff --git a/eldependenci-addon/pom.xml b/eldependenci-addon/pom.xml index bb4d8b9..2d85725 100644 --- a/eldependenci-addon/pom.xml +++ b/eldependenci-addon/pom.xml @@ -5,7 +5,7 @@ eldependenci org.eldependenci - 0.1.8 + 0.1.8-SNAPSHOT 4.0.0 diff --git a/eldependenci-framework/pom.xml b/eldependenci-framework/pom.xml index 63b612f..912cf2f 100644 --- a/eldependenci-framework/pom.xml +++ b/eldependenci-framework/pom.xml @@ -5,7 +5,7 @@ eldependenci org.eldependenci - 0.1.8 + 0.1.8-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index f3fffe6..273bcaf 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.eldependenci eldependenci pom - 0.1.8 + 0.1.8-SNAPSHOT eldependenci-framework eldependenci-addon @@ -243,8 +243,13 @@ github Github ELDependenci Apache Maven Packages https://maven.pkg.github.com/ELDependenci/eldependenci - false + + github + Github ELDependenci Apache Maven Packages + https://maven.pkg.github.com/ELDependenci/eldependenci + true + \ No newline at end of file