package com.neverwinterdp.registry;
import com.neverwinterdp.registry.event.NodeEvent;
import com.neverwinterdp.registry.event.NodeWatcher;
abstract public class DataChangeNodeWatcher<T> extends NodeWatcher {
protected Registry registry ;
protected Class<T> dataType;
public DataChangeNodeWatcher(Registry registry, Class<T> dataType) {
this.registry = registry;
this.dataType = dataType;
}
@Override
public void onEvent(NodeEvent event) {
try {
if(event.getType() == NodeEvent.Type.MODIFY || event.getType() == NodeEvent.Type.CREATE) {
String path = event.getPath();
T data = registry.getDataAs(path, dataType);
onChange(event, data);
}
} catch(Exception ex) {
ex.printStackTrace();
}
}
abstract public void onChange(NodeEvent event, T data) ;
}