package com.neverwinterdp.vm.event; import com.neverwinterdp.registry.event.NodeEvent; import com.neverwinterdp.registry.event.NodeWatcher; import com.neverwinterdp.registry.Registry; import com.neverwinterdp.vm.VMDescriptor; import com.neverwinterdp.vm.VMStatus; public class VMStatusNodeWatcher extends NodeWatcher { private Registry registry; public VMStatusNodeWatcher(Registry registry) { this.registry = registry; } @Override public void onEvent(NodeEvent event) { //System.out.println("got status event " + event.getPath()); try { if(event.getType() == NodeEvent.Type.MODIFY || event.getType() == NodeEvent.Type.CREATE) { String path = event.getPath(); String descriptorPath = path.substring(0, path.lastIndexOf('/')) ; VMDescriptor vmDescriptor = registry.getDataAs(descriptorPath, VMDescriptor.class); VMStatus vmStatus = registry.getDataAs(path, VMStatus.class); onChange(event, vmDescriptor, vmStatus); } } catch(Exception ex) { ex.printStackTrace(); } } public void onChange(NodeEvent event, VMDescriptor vmDescriptor, VMStatus vmStatus) throws Exception { throw new Exception("This method need to override!") ; } }