protected void handle(APIChangePrimaryStorageStateMsg msg) { APIChangePrimaryStorageStateEvent evt = new APIChangePrimaryStorageStateEvent(msg.getId()); PrimaryStorageState currState = self.getState(); PrimaryStorageStateEvent event = PrimaryStorageStateEvent.valueOf(msg.getStateEvent()); PrimaryStorageState nextState = AbstractPrimaryStorage.getNextState(currState, event); try { extpEmitter.preChange(self, event); } catch (PrimaryStorageException e) { evt.setErrorCode( errf.instantiateErrorCode(SysErrors.CHANGE_RESOURCE_STATE_ERROR, e.getMessage())); bus.publish(evt); return; } extpEmitter.beforeChange(self, event); changeStateHook(event, nextState); self.setState(nextState); self = dbf.updateAndRefresh(self); extpEmitter.afterChange(self, event, currState); evt.setInventory(PrimaryStorageInventory.valueOf(self)); bus.publish(evt); }