/**
*
*/
package logbook.scripting;
import logbook.data.Data;
import logbook.data.DataType;
import logbook.data.EventListener;
import logbook.scripting.ScriptLoader.MethodInvoke;
import logbook.scripting.ScriptLoader.ScriptCollection;
/**
* @author Nekopanda
*
*/
public class EventListenerProxy implements EventListener {
private class UpdateMethod implements MethodInvoke {
public DataType type;
public Data data;
@Override
public Object invoke(Object arg) {
((EventListener) arg).update(this.type, this.data);
return null;
}
}
private ScriptCollection script;
private final UpdateMethod updateMethod = new UpdateMethod();
private static EventListenerProxy instance = new EventListenerProxy();
public static EventListenerProxy get() {
instance.script = ScriptLoader.getScriptCollection("update", EventListener.class);
return instance;
}
@Override
public void update(DataType type, Data data) {
this.updateMethod.type = type;
this.updateMethod.data = data;
this.script.invoke(this.updateMethod);
}
}