package com.growcontrol.api.serverapi.plugins;
import com.growcontrol.common.meta.MetaAddress;
import com.growcontrol.common.meta.MetaListener;
import com.growcontrol.common.meta.MetaRouter;
import com.poixson.commonapp.app.xApp;
import com.poixson.commonapp.plugin.xJavaPlugin;
import com.poixson.commonjava.xEvents.xEventListener;
import com.poixson.commonjava.xLogger.xLog;
import com.poixson.commonjava.xLogger.commands.xCommandListener;
public abstract class apiServerPlugin extends xJavaPlugin {
// register meta listener
public void register(final MetaAddress address, final MetaListener listener) {
if(address == null) throw new IllegalArgumentException("Cannot register null meta address!");
if(listener == null) throw new IllegalArgumentException("Cannot register null meta listener!");
final MetaRouter router = MetaRouter.get();
router.register(
address,
listener
);
}
// register command handler
public void register(final xCommandListener listener) {
if(listener == null) throw new IllegalArgumentException("Cannot register null command listener!");
xApp.get().getCommandsHandler()
.register(listener);
}
// unregister listener type
@Override
public void unregister(final Class<? extends xEventListener> listenerClass) {
if(listenerClass == null) throw new IllegalArgumentException("Cannot unregister null listener!");
// command listener
if(xCommandListener.class.isInstance(listenerClass)) {
xApp.get().getCommandsHandler()
.unregisterType(listenerClass);
// unknown
} else {
xLog.getRoot().warning("Unknown listener type, cannot unregister!");
// throw new RuntimeException("Cannot register unknown listener type: "
// +listenerClass.getName());
}
}
}