Skip to content

Commit

Permalink
Merge pull request #17 from ELDEpendenci/develop
Browse files Browse the repository at this point in the history
  • Loading branch information
eric2788 authored Jun 9, 2022
2 parents d229bdf + 358a23a commit 6386815
Show file tree
Hide file tree
Showing 53 changed files with 1,594 additions and 175 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: build plugin

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

on:
push:
branches:
- develop

jobs:
build_plugin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v3
with:
java-version: '18'
distribution: 'adopt'
- name: Build with Maven
run: mvn --batch-mode clean package
- name: upload artifacts
uses: actions/upload-artifact@v1
with:
name: plugin
path: ./ELDependenci-MVC-plugin/target
12 changes: 10 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- uses: eric2788/maven-jar-publish@v2
with:
java-version: 18
body: 版本更新請到[這裏](https://eric2788.gitbook.io/eldependenci-mvc/references/update/v0.1.4)查看。
body: 版本更新請到[這裏](https://eric2788.gitbook.io/eldependenci-mvc/references/update)查看。
upload-module: './ELDependenci-MVC-plugin'
- name: 'Update javadocs'
id: update-javadoc
Expand All @@ -37,11 +37,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
run: mvn --batch-mode clean deploy
if: ${{ steps.version.outputs.length <= 3 }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
7 changes: 5 additions & 2 deletions ELDependenci-MVC-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
<parent>
<artifactId>eldependenci-mvc-module</artifactId>
<groupId>org.eldependenci</groupId>
<version>0.1.4</version>
<version>0.1.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>ELDependenci-MVC-plugin</artifactId>
<version>${project.parent.version}</version>

<dependencies>
<dependency>
Expand All @@ -27,6 +26,10 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.ericlam.mc.eld.services.ConfigPoolService;
import com.ericlam.mc.eld.services.ItemStackService;
import com.ericlam.mc.eldgui.manager.ReflectionCacheManager;
import com.google.inject.Inject;
import com.google.inject.Injector;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -29,13 +30,13 @@ public class ELDGDispatcher implements UIDispatcher, Listener {
@Inject
private Injector injector;
@Inject
private ManagerFactory managerFactory;
@Inject
private ELDGMVCInstallation eldgmvcInstallation;
@Inject
private ConfigPoolService configPoolService;
@Inject
private ItemStackService itemStackService;
@Inject
private ReflectionCacheManager reflectionCacheManager;

public ELDGDispatcher(
Object controller,
Expand Down Expand Up @@ -68,14 +69,13 @@ public void openFor(Player player, Consumer<UISession> initSession) {
injector,
session,
player,
managerFactory,
guiSessionMap::remove,
goTo,
eldgmvcInstallation,
configPoolService,
itemStackService
itemStackService,
reflectionCacheManager
);

this.guiSessionMap.put(player, eldgui);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.ericlam.mc.eldgui;

import com.ericlam.mc.eld.ELDLifeCycle;
import com.ericlam.mc.eld.services.ScheduleService;
import com.ericlam.mc.eld.bukkit.ELDLifeCycle;
import org.bukkit.plugin.java.JavaPlugin;

import javax.inject.Inject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.ericlam.mc.eldgui.demo.ELDGLoadingView;
import com.ericlam.mc.eldgui.exception.ExceptionViewHandler;
import com.ericlam.mc.eldgui.exception.HandleForControllers;
import com.ericlam.mc.eldgui.middleware.MiddleWare;
import com.ericlam.mc.eldgui.view.LoadingView;

import java.lang.annotation.Annotation;
Expand All @@ -15,10 +16,12 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

public class ELDGMVCInstallation implements MVCInstallation{
public class ELDGMVCInstallation implements MVCInstallation {

private final Map<String, Class<?>> controllerMap = new ConcurrentHashMap<>();
private final Map<Class<? extends Annotation>, QualifierFilter<? extends Annotation>> qualifierMap = new ConcurrentHashMap<>();
private final Map<Class<? extends Annotation>, Class<? extends MiddleWare<? extends Annotation>>> middleWares = new ConcurrentHashMap<>();

private final Map<Class<?>, Class<? extends ExceptionViewHandler>> exceptionHandlerMap = new ConcurrentHashMap<>();
private final Set<Class<? extends ExceptionViewHandler>> scopedExceptionHandlerSet = new HashSet<>();
private final Map<Class<? extends ComponentFactory<?>>, Class<? extends ComponentFactory<?>>> componentFactoryMap = new ConcurrentHashMap<>();
Expand All @@ -36,11 +39,17 @@ public <A extends Annotation> void registerQualifier(Class<A> qualifier, Qualifi
this.qualifierMap.put(qualifier, predicate);
}

@Override
public <A extends Annotation, M extends MiddleWare<A>> void registerMiddleWare(Class<A> qualifier, Class<M> middleWareClass) {
this.middleWares.put(qualifier, middleWareClass);
}


@Override
public void registerControllers(Class<?>... controllers) {
for (Class<?> controller : controllers) {
if (!controller.isAnnotationPresent(UIController.class)) {
plugin.getLogger().warning("controller "+controller+" do not have @UIController, skipped");
plugin.getLogger().warning("controller " + controller + " do not have @UIController, skipped");
continue;
}
UIController uic = controller.getAnnotation(UIController.class);
Expand All @@ -52,7 +61,7 @@ public void registerControllers(Class<?>... controllers) {
public final void addExceptionViewHandlers(List<Class<? extends ExceptionViewHandler>> exceptionHandlers) {
for (Class<? extends ExceptionViewHandler> handler : exceptionHandlers) {
if (!handler.isAnnotationPresent(HandleForControllers.class)) {
plugin.getLogger().info("exception view handler "+handler+" do not have @HandleForControllers, will use it as plugin scoped");
plugin.getLogger().info("exception view handler " + handler + " do not have @HandleForControllers, will use it as plugin scoped");
this.scopedExceptionHandlerSet.add(handler);
continue;
}
Expand Down Expand Up @@ -106,4 +115,8 @@ public Map<Class<?>, Class<? extends ExceptionViewHandler>> getExceptionHandlerM
public Map<Class<? extends ComponentFactory<?>>, Class<? extends ComponentFactory<?>>> getComponentFactoryMap() {
return componentFactoryMap;
}

public Map<Class<? extends Annotation>, Class<? extends MiddleWare<? extends Annotation>>> getMiddleWares() {
return middleWares;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ericlam.mc.eldgui;

import com.ericlam.mc.eldgui.demo.login.AuthService;
import com.ericlam.mc.eldgui.demo.user.UserService;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
Expand All @@ -15,6 +16,7 @@ public ELDGMVCModule(ELDGMVCInstallation eldgmvcInstallation) {
@Override
protected void configure() {
bind(UserService.class).in(Scopes.SINGLETON); // test only
bind(AuthService.class).in(Scopes.SINGLETON); // test only
bind(ELDGMVCInstallation.class).toInstance(eldgmvcInstallation);
}
}
Original file line number Diff line number Diff line change
@@ -1,52 +1,41 @@
package com.ericlam.mc.eldgui;

import com.ericlam.mc.eld.AddonManager;
import com.ericlam.mc.eld.ELDBukkitAddon;
import com.ericlam.mc.eld.ManagerProvider;
import com.ericlam.mc.eld.ServiceCollection;
import com.ericlam.mc.eld.annotations.ELDPlugin;
import com.ericlam.mc.eld.*;
import com.ericlam.mc.eldgui.component.factory.*;
import com.ericlam.mc.eldgui.config.ELDGConfig;
import com.ericlam.mc.eldgui.config.ELDGLanguage;
import com.ericlam.mc.eldgui.demo.DemoInventories;
import com.ericlam.mc.eldgui.demo.async.AsyncController;
import com.ericlam.mc.eldgui.demo.error.ErrorController;
import com.ericlam.mc.eldgui.demo.login.LoginController;
import com.ericlam.mc.eldgui.demo.middlewares.AuthenticateMiddleWare;
import com.ericlam.mc.eldgui.demo.middlewares.AuthorizeMiddleWare;
import com.ericlam.mc.eldgui.demo.middlewares.RequireAdmin;
import com.ericlam.mc.eldgui.demo.middlewares.RequireLogin;
import com.ericlam.mc.eldgui.demo.test.TestController;
import com.ericlam.mc.eldgui.demo.user.UserController;
import com.ericlam.mc.eldgui.manager.ReflectionCacheManager;

@ELDPlugin(
@ELDBukkit(
lifeCycle = ELDGLifeCycle.class,
registry = ELDGRegistry.class
)
public final class ELDGPlugin extends ELDBukkitAddon {
public final class ELDGPlugin extends ELDBukkitPlugin {

private final ELDGMVCInstallation eldgmvcInstallation = new ELDGMVCInstallation(this);


@Override
protected void bindServices(ServiceCollection serviceCollection) {
public void bindServices(ServiceCollection serviceCollection) {
serviceCollection.bindService(InventoryService.class, ELDGInventoryService.class);
serviceCollection.addSingleton(ManagerFactory.class);
serviceCollection.addSingleton(ReflectionCacheManager.class);
serviceCollection.addGroupConfiguration(DemoInventories.class);
serviceCollection.addConfiguration(ELDGLanguage.class);
serviceCollection.addConfiguration(ELDGConfig.class);
}


@Override
protected void preAddonInstall(ManagerProvider managerProvider, AddonManager addonManager) {
ELDGMVCInstallation eldgmvcInstallation = new ELDGMVCInstallation(this);
AddonInstallation addonManager = serviceCollection.getInstallation(AddonInstallation.class);
addonManager.customInstallation(MVCInstallation.class, eldgmvcInstallation);
// my demo register

ELDGConfig config = managerProvider.getConfigStorage().getConfigAs(ELDGConfig.class);

// register controller
if (config.enableDemo){
eldgmvcInstallation.registerControllers(
UserController.class,
ErrorController.class,
TestController.class,
AsyncController.class
);
}

// register component factory
eldgmvcInstallation.addComponentFactory(ButtonFactory.class, ELDGButtonFactory.class);
Expand All @@ -59,8 +48,31 @@ protected void preAddonInstall(ManagerProvider managerProvider, AddonManager add
eldgmvcInstallation.addComponentFactory(BukkitItemFactory.class, ELDGBukkitItemFactory.class);
eldgmvcInstallation.addComponentFactory(DateSelectorFactory.class, ELDGDateSelectorFactory.class);
eldgmvcInstallation.addComponentFactory(TimeSelectorFactory.class, ELDGTimeSelectorFactory.class);
eldgmvcInstallation.addComponentFactory(PasswordInputFactory.class, ELDGPasswordInputFactory.class);

// install module
addonManager.installModule(new ELDGMVCModule(eldgmvcInstallation));
}


@Override
protected void manageProvider(BukkitManagerProvider bukkitManagerProvider) {
ELDGConfig config = bukkitManagerProvider.getConfigStorage().getConfigAs(ELDGConfig.class);


// my demo register
if (config.enableDemo) {
eldgmvcInstallation.registerControllers(
UserController.class,
ErrorController.class,
TestController.class,
AsyncController.class,
LoginController.class
);

eldgmvcInstallation.registerMiddleWare(RequireLogin.class, AuthenticateMiddleWare.class);
eldgmvcInstallation.registerMiddleWare(RequireAdmin.class, AuthorizeMiddleWare.class);
}

}
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
package com.ericlam.mc.eldgui;

import com.ericlam.mc.eld.registrations.CommandRegistry;
import com.ericlam.mc.eld.registrations.ComponentsRegistry;
import com.ericlam.mc.eld.registrations.ListenerRegistry;
import com.ericlam.mc.eld.bukkit.CommandNode;
import com.ericlam.mc.eld.bukkit.ComponentsRegistry;
import com.ericlam.mc.eld.registration.CommandRegistry;
import com.ericlam.mc.eld.registration.ListenerRegistry;
import com.ericlam.mc.eldgui.command.ELDGCommand;
import com.ericlam.mc.eldgui.command.ELDGDemoCommand;
import org.bukkit.event.Listener;

public final class ELDGRegistry implements ComponentsRegistry {


@Override
public void registerCommand(CommandRegistry commandRegistry) {
public void registerCommand(CommandRegistry<CommandNode> commandRegistry) {
commandRegistry.command(ELDGCommand.class, c -> {
c.command(ELDGDemoCommand.class);
});
}

@Override
public void registerListeners(ListenerRegistry listenerRegistry) {
// no listeners
}
public void registerListeners(ListenerRegistry<Listener> listenerRegistry) {

}
}
Loading

0 comments on commit 6386815

Please sign in to comment.