From 5aabb6fe1ac71e2a605dcc5d2481a0f162948fc6 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sun, 12 Mar 2017 02:24:55 +0300 Subject: [PATCH] =?UTF-8?q?MC=20Servers:=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB?= =?UTF-8?q?=D1=8C=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=B4=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0=D0=BC=D0=B8?= =?UTF-8?q?=20Minecraft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcserver-manager/build.gradle | 16 ++++++ .../main/java/asys/mcsmanager/Activator.java | 57 +++++++++++++++++++ settings.gradle | 2 + 3 files changed, 75 insertions(+) create mode 100644 mcserver-manager/build.gradle create mode 100644 mcserver-manager/src/main/java/asys/mcsmanager/Activator.java diff --git a/mcserver-manager/build.gradle b/mcserver-manager/build.gradle new file mode 100644 index 0000000..008d4a4 --- /dev/null +++ b/mcserver-manager/build.gradle @@ -0,0 +1,16 @@ +group = 'asys' +version = '0.1-SNAPSHOT' + +apply plugin: 'osgi' + +jar { + manifest { + name = 'ASys MC server manager' + instruction 'Bundle-Activator', 'asys.mcsmanager.Activator' + } +} + +dependencies { + compile project(':core') + compile project(':webinterface') +} diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/Activator.java b/mcserver-manager/src/main/java/asys/mcsmanager/Activator.java new file mode 100644 index 0000000..d34eda3 --- /dev/null +++ b/mcserver-manager/src/main/java/asys/mcsmanager/Activator.java @@ -0,0 +1,57 @@ +/* + * DmitriyMX + * 2017-03-11 + */ +package asys.mcsmanager; + +import asys.webinterface.api.MainMenu; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.util.tracker.ServiceTracker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Activator implements BundleActivator, ServiceListener { + private final Logger logger = LoggerFactory.getLogger(Activator.class); + private ServiceTracker serviceTracker; + + @Override + public void start(BundleContext context) throws Exception { + logger.debug("Register service listener"); + context.addServiceListener(this); + + logger.debug("Get service: {}", MainMenu.class); + serviceTracker = new ServiceTracker<>(context, MainMenu.class, null); + } + + @Override + public void stop(BundleContext context) throws Exception { + serviceTracker.close(); + context.removeServiceListener(this); + } + + @Override + public void serviceChanged(ServiceEvent event) { + if (event.getType() == ServiceEvent.REGISTERED) { + String[] objectClass = (String[]) event.getServiceReference().getProperty("objectClass"); + for (String classStr : objectClass) { + if (classStr.equals("asys.webinterface.api.MainMenu")) { + try { + serviceTracker.open(); + MainMenu mainMenu = serviceTracker.waitForService(5000); + if (mainMenu != null) { + mainMenu.addItem("Серверы", "/modules/mcsmanager"); + return; + } else { + logger.debug("service not found =("); + } + } catch (InterruptedException ignore) { + // ignore + } + } + } + } + } +} diff --git a/settings.gradle b/settings.gradle index c2b72e9..8ebf8bd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,3 +3,5 @@ include 'core' include 'commons' include 'webinterface' include 'bridge' +include 'mcserver-manager' +