MC Servers: модуль управдения серверами Minecraft
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user