/**
*
*/
package jframe.core.plugin;
import org.slf4j.LoggerFactory;
import jframe.core.plugin.loader.PluginClassLoader;
/**
* @author dzh
* @date Oct 14, 2013 8:04:31 AM
* @since 1.0
*/
@jframe.core.plugin.annotation.Plugin
public class DefPlugin implements Plugin {
private PluginContext _context;
private int _id;
private PluginStatus _status = PluginStatus.DESTROY;
public DefPlugin() {
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#getStatus()
*/
public PluginStatus getStatus() {
return _status;
}
protected synchronized void setStatus(PluginStatus status) {
_status = status;
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#init(jframe.core.plugin.PluginContext)
*/
public void init(PluginContext context) throws PluginException {
this._context = context;
setStatus(PluginStatus.INIT);
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#getID()
*/
public int getID() {
return _id;
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#getName()
*/
public String getName() {
try {
return getPluginClassLoader().getPluginCase().getPluginName();
} catch (NullPointerException e) {
logWarn("NullPointerException when invoke DefPlugin.getName()");
}
return "";
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#getPluginClassLoader()
*/
public PluginClassLoader getPluginClassLoader() {
return (PluginClassLoader) this.getClass().getClassLoader();
}
public PluginContext getContext() {
return _context;
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#start()
*/
public void start() throws PluginException {
logInfo("Plugin " + getName() + " starting.");
setStatus(PluginStatus.START);
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#stop()
*/
public void stop() throws PluginException {
logInfo("Plugin " + getName() + " stopping.");
setStatus(PluginStatus.STOP);
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#destroy()
*/
public void destroy() throws PluginException {
logInfo("Plugin " + getName() + " destroying.");
setStatus(PluginStatus.DESTROY);
getPluginClassLoader().dispose();
}
/*
* (non-Javadoc)
*
* @see jframe.core.plugin.Plugin#setID(int)
*/
public void setID(int id) {
this._id = id;
}
/**
* 发送插件状态改变通知事件
*
* @param event
*/
public void notifyEvent(PluginEvent event) {
_context.notifyPluginEvent(event);
}
public String getConfig(String key) {
return _context.getConfig().getConfig(key);
}
public String getConfig(String key, String defVal) {
return _context.getConfig().getConfig(key, defVal);
}
public PluginRef getPluginRef() {
return _context.getPlugin(_id);
}
public void logWarn(String msg) {
LoggerFactory.getLogger(getClass()).warn(msg);
}
public void logError(String msg) {
LoggerFactory.getLogger(getClass()).error(msg);
}
public void logInfo(String msg) {
LoggerFactory.getLogger(getClass()).info(msg);
}
public void logDebug(String msg) {
LoggerFactory.getLogger(getClass()).debug(msg);
}
}