MC Servers: модуль управдения серверами Minecraft
This commit is contained in:
16
mcserver-manager/build.gradle
Normal file
16
mcserver-manager/build.gradle
Normal file
@@ -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')
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 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<?, MainMenu> 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,3 +3,5 @@ include 'core'
|
||||
include 'commons'
|
||||
include 'webinterface'
|
||||
include 'bridge'
|
||||
include 'mcserver-manager'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user