@Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { RemotingProfileAdd.INSTANCE.installServices(context, parentAddress, parentModel); } }, OperationContext.Stage.RUNTIME);
private OptionMap createChannelOptionMap(final OperationContext context, final ModelNode channelCreationOptionsNode) throws OperationFailedException { final OptionMap optionMap; if (channelCreationOptionsNode.isDefined()) { final OptionMap.Builder optionMapBuilder = OptionMap.builder(); final ClassLoader loader = this.getClass().getClassLoader(); for (final Property optionProperty : channelCreationOptionsNode.asPropertyList()) { final String name = optionProperty.getName(); final ModelNode propValueModel = optionProperty.getValue(); final String type = RemoteConnectorChannelCreationOptionResource.CHANNEL_CREATION_OPTION_TYPE .resolveModelAttribute(context, propValueModel).asString(); final String optionClassName = this.getClassNameForChannelOptionType(type); final String fullyQualifiedOptionName = optionClassName + "." + name; final Option option = Option.fromString(fullyQualifiedOptionName, loader); final String value = RemoteConnectorChannelCreationOptionResource.CHANNEL_CREATION_OPTION_VALUE .resolveModelAttribute(context, propValueModel).asString(); optionMapBuilder.set(option, option.parseValue(value, loader)); } optionMap = optionMapBuilder.getMap(); } else { optionMap = OptionMap.EMPTY; } return optionMap; }
OptionMap channelCreationOptions = createChannelOptionMap(context, channelCreationOptionsNode);
@Override protected void recreateParentService(OperationContext context, PathAddress parentAddress, ModelNode parentModel) throws OperationFailedException { RemotingProfileAdd.INSTANCE.installServices(context, parentAddress, parentModel); }
@Override protected void recreateParentService(final OperationContext context, final PathAddress parentAddress, final ModelNode parentModel) throws OperationFailedException { switch(context.getCurrentStage()){ case RUNTIME: // service installation in another step: when interruption is thrown then it is handled by RollbackHandler // declared in RestartParentResourceHandlerBase context.addStep(new OperationStepHandler() { @Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { RemotingProfileAdd.INSTANCE.installServices(context, parentAddress, parentModel); } }, OperationContext.Stage.RUNTIME); break; case DONE: // executed from RollbackHandler - service is being installed using correct configuration RemotingProfileAdd.INSTANCE.installServices(context, parentAddress, parentModel); break; } }
@Override protected void recoverServices(final OperationContext context, final ModelNode operation, final ModelNode profileNode) throws OperationFailedException { try { final PathAddress address = PathAddress.pathAddress(operation.require(OP_ADDR)); RemotingProfileAdd.INSTANCE.installServices(context, address, profileNode); } catch (OperationFailedException e) { throw ControllerLogger.ROOT_LOGGER.failedToRecoverServices(e); } }
@Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { final Resource resource = context.readResource(PathAddress.EMPTY_ADDRESS); final ModelNode model = Resource.Tools.readModel(resource); final PathAddress address = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)); RemotingProfileAdd.INSTANCE.installServices(context, address, model); } }