private void populateModelWithCoreEnvConfig(ModelNode operation, ModelNode model) throws OperationFailedException { // core environment TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER.validateAndSet(operation, model); // We have some complex logic for the 'process-id' stuff because of the alternatives if (operation.hasDefined(TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName()) && operation .get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName()) .asBoolean()) { TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.validateAndSet(operation, model); if (operation.hasDefined( TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())) { throw new OperationFailedException( String.format( "%s must be undefined if %s is 'true'.", TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName(), TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName())); } else if (operation.hasDefined( TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())) { throw new OperationFailedException( String.format( "%s must be undefined if %s is 'true'.", TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName(), TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName())); } // model.get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName()); // model.get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName()); } else if (operation.hasDefined( TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())) { TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.validateAndSet( operation, model); TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.validateAndSet( operation, model); } else if (operation.hasDefined( TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())) { throw new OperationFailedException( String.format( "%s must be defined if %s is defined.", TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName(), TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())); } else { // not uuid and also not sockets! throw new OperationFailedException( String.format( "Either %s must be 'true' or %s must be defined.", TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName(), TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())); } }
private void performCoreEnvironmentBootTime(OperationContext context, ModelNode coreEnvModel) throws OperationFailedException { // Configure the core configuration. final String nodeIdentifier = TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER .resolveModelAttribute(context, coreEnvModel) .asString(); TransactionLogger.ROOT_LOGGER.debugf("nodeIdentifier=%s%n", nodeIdentifier); final CoreEnvironmentService coreEnvironmentService = new CoreEnvironmentService(nodeIdentifier); String socketBindingName = null; if (TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID .resolveModelAttribute(context, coreEnvModel) .asBoolean(false)) { // Use the UUID based id UuidProcessId id = new UuidProcessId(); coreEnvironmentService.setProcessImplementation(id); } else { // Use the socket process id coreEnvironmentService.setProcessImplementationClassName(ProcessIdType.SOCKET.getClazz()); socketBindingName = TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING .resolveModelAttribute(context, coreEnvModel) .asString(); int ports = TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS .resolveModelAttribute(context, coreEnvModel) .asInt(); coreEnvironmentService.setSocketProcessIdMaxPorts(ports); } final ServiceBuilder<?> coreEnvBuilder = context .getServiceTarget() .addService(TxnServices.JBOSS_TXN_CORE_ENVIRONMENT, coreEnvironmentService); if (socketBindingName != null) { // Add a dependency on the socket id binding ServiceName bindingName = SocketBinding.JBOSS_BINDING_NAME.append(socketBindingName); coreEnvBuilder.addDependency( bindingName, SocketBinding.class, coreEnvironmentService.getSocketProcessBindingInjector()); } coreEnvBuilder.setInitialMode(ServiceController.Mode.ACTIVE).install(); }