protected void checkState(Message msg) { if (!stateChecker.isOperationAllowed(msg.getClass().getName(), self.getState().toString())) { throw new OperationFailureException( errf.stringToOperationError( String.format( "backup storage cannot proceed message[%s] because its state is %s", msg.getClass().getName(), self.getState()))); } }
protected void handle(APIChangeBackupStorageStateMsg msg) { APIChangeBackupStorageStateEvent evt = new APIChangeBackupStorageStateEvent(msg.getId()); BackupStorageState currState = self.getState(); BackupStorageStateEvent event = BackupStorageStateEvent.valueOf(msg.getStateEvent()); BackupStorageState nextState = AbstractBackupStorage.getNextState(currState, event); try { extpEmitter.preChange(self, event); } catch (BackupStorageException 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(getSelfInventory()); bus.publish(evt); }