void beforeChange(ZoneVO vo, final ZoneStateEvent event) { final ZoneInventory zinv = ZoneInventory.valueOf(vo); final ZoneState next = AbstractZone.getNextState(vo.getState(), event); CollectionUtils.safeForEach(changeExts, new ForEachFunction<ZoneChangeStateExtensionPoint>() { @Override public void run(ZoneChangeStateExtensionPoint arg) { arg.beforeChangeZoneState(zinv, event, next); } }); }
void preChange(ZoneVO vo, ZoneStateEvent event) throws ZoneException { ZoneInventory zinv = ZoneInventory.valueOf(vo); ZoneState next = AbstractZone.getNextState(vo.getState(), event); for (ZoneChangeStateExtensionPoint extp : changeExts) { try { extp.preChangeZoneState(zinv, event, next); } catch (ZoneException ze) { logger.debug(String.format("Extension: %s refused zone change state operation[ZoneStateEvent:%s] because %s", extp.getClass() .getCanonicalName(), event, ze.getMessage())); throw ze; } catch (Exception e) { logger.warn("Exception happened while calling " + extp.getClass().getCanonicalName() + ".preChangeZoneState(), " + "zone name: " + zinv.getName() + " uuid: " + zinv.getUuid(), e); } } }
protected void handle(APIChangeZoneStateMsg msg) { APIChangeZoneStateEvent evt = new APIChangeZoneStateEvent(msg.getId()); ZoneStateEvent stateEvt = ZoneStateEvent.valueOf(msg.getStateEvent()); try { extpEmitter.preChange(self, stateEvt); } catch (ZoneException e) { evt.setError(err(SysErrors.CHANGE_RESOURCE_STATE_ERROR, e.getMessage())); bus.publish(evt); return; } ZoneState formerState = self.getState(); extpEmitter.beforeChange(self, stateEvt); ZoneState next = AbstractZone.getNextState(self.getState(), stateEvt); self.setState(next); self = dbf.updateAndRefresh(self); extpEmitter.afterChange(self, stateEvt, formerState); evt.setInventory(ZoneInventory.valueOf(self)); logger.debug(String.format("Changed state of zone[uuid:%s] from %s to %s by event %s", self.getUuid(), formerState, self.getState(), stateEvt)); bus.publish(evt); }
public static ZoneInventory valueOf(ZoneVO vo) { ZoneInventory inv = new ZoneInventory(); inv.setName(vo.getName()); inv.setDescription(vo.getDescription()); inv.setUuid(vo.getUuid()); inv.setState(vo.getState().toString()); inv.setType(vo.getType()); inv.setCreateDate(vo.getCreateDate()); inv.setLastOpDate(vo.getLastOpDate()); return inv; }