public static void validateDefaultInterfaceReference(final OperationContext context, final ModelNode bindingGroup) throws OperationFailedException { ModelNode defaultInterfaceNode = bindingGroup.get(DEFAULT_INTERFACE.getName()); if (defaultInterfaceNode.getType() == ModelType.STRING) { // ignore UNDEFINED and EXPRESSION String defaultInterface = defaultInterfaceNode.asString(); PathAddress interfaceAddress = PathAddress.pathAddress(PathElement.pathElement(INTERFACE, defaultInterface)); try { context.readResourceFromRoot(interfaceAddress, false); } catch (RuntimeException e) { throw ControllerMessages.MESSAGES.nonexistentInterface(defaultInterface, DEFAULT_INTERFACE.getName()); } } }
@Override public void validateResolvedParameter(String parameterName, ModelNode value) throws OperationFailedException { switch (value.getType()) { case EXPRESSION: if (!allowExpression) { throw MESSAGES.expressionNotAllowed(parameterName); } break; case UNDEFINED: if (allowNull != null) { if (!allowNull) { throw MESSAGES.nullNotAllowed(parameterName); } break; } // else fall through and let the delegate validate default: delegate.validateResolvedParameter(parameterName, value); } }
public ChainedParameterValidator(final ParameterValidator... validators) { if (validators == null) throw MESSAGES.nullVar("validators"); this.validators = validators; }
public static String convertPath(String abstractPath) { if (abstractPath == null) { throw MESSAGES.nullVar("abstractPath"); } if (abstractPath.length() == 0) { throw MESSAGES.emptyVar("abstractPath"); } // Use File.getAbsolutePath() to make relative paths absolute File f = new File(abstractPath); return f.getAbsolutePath(); }
final String defaultInterface = attrValues[1]; final ModelNode groupAddress = new ModelNode().set(address); groupAddress.add(SOCKET_BINDING_GROUP, socketBindingGroupName); final ModelNode bindingGroupUpdate = new ModelNode(); bindingGroupUpdate.get(OP).set(ADD); SocketBindingGroupResourceDefinition.DEFAULT_INTERFACE.parseAndSetParameter(defaultInterface, bindingGroupUpdate, reader); if (bindingGroupUpdate.get(SocketBindingGroupResourceDefinition.DEFAULT_INTERFACE.getName()).getType() != ModelType.EXPRESSION && !interfaces.contains(defaultInterface)) { throw MESSAGES.unknownInterface(defaultInterface, Attribute.DEFAULT_INTERFACE.getLocalName(), Element.INTERFACES.getLocalName(), reader.getLocation()); final String bindingName = parseSocketBinding(reader, interfaces, groupAddress, updates); if (!uniqueBindingNames.add(bindingName)) { throw MESSAGES.alreadyDeclared(Element.SOCKET_BINDING.getLocalName(), bindingName, Element.SOCKET_BINDING_GROUP.getLocalName(), socketBindingGroupName, reader.getLocation());
throw MESSAGES.duplicateDeclaration("subsystem", reader.getLocation()); for (final ModelNode update : subsystems) { final ModelNode subsystemAddress = address.clone(); for (final Property path : update.get(OP_ADDR).asPropertyList()) { subsystemAddress.add(path.getName(), path.getValue().asString());
@Override public void execute(final OperationContext context, final ModelNode ignored) throws OperationFailedException { final Resource resource = context.readResource(PathAddress.EMPTY_ADDRESS); final ModelNode model = resource.getModel(); for(final AttributeDefinition definition : InterfaceDefinition.ROOT_ATTRIBUTES) { final String attributeName = definition.getName(); final boolean has = model.hasDefined(attributeName); if(! has && isRequired(definition, model)) { throw new OperationFailedException(new ModelNode().set(MESSAGES.required(attributeName))); throw new OperationFailedException(new ModelNode().set(MESSAGES.invalidAttributeCombo(attributeName, sb))); context.completeStep(OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER);
protected void validateAndSet(final AttributeDefinition definition, final ModelNode operation, final ModelNode subModel) throws OperationFailedException { final String attributeName = definition.getName(); final boolean has = operation.has(attributeName); if(! has && definition.isRequired(operation)) { throw new OperationFailedException(new ModelNode().set(MESSAGES.required(attributeName))); } if(has) { if(! definition.isAllowed(operation)) { throw new OperationFailedException(new ModelNode().set(MESSAGES.invalid(attributeName))); } definition.validateAndSet(operation, subModel); } else { // create the undefined node subModel.get(definition.getName()); } }
private ModelNode parseServerAttributes(final XMLExtendedStreamReader reader, final ModelNode parentAddress, final Set<String> serverNames) throws XMLStreamException { final ModelNode addUpdate = new ModelNode(); addUpdate.get(OP).set(ADD); case NAME: { if (!serverNames.add(value)) { throw MESSAGES.duplicateDeclaration("server", value, reader.getLocation()); final ModelNode address = parentAddress.clone().add(SERVER_CONFIG, value); ServerConfigResourceDefinition.GROUP.parseAndSetParameter(value, addUpdate, reader); break; ServerConfigResourceDefinition.AUTO_START.parseAndSetParameter(value, addUpdate, reader); break;
public static List<ClientMapping> parseClientMappings(ModelNode mappings) throws OperationFailedException { List<ClientMapping> clientMappings = new ArrayList<ClientMapping>(); for (ModelNode mappingNode : mappings.asList()) { ModelNode sourceNode = mappingNode.get(SOURCE_NETWORK); final InetAddress sourceAddress; final int mask; final String destination; final int port; if (sourceNode.isDefined()) { MaskedAddressValidator.ParsedResult parsedResult = MaskedAddressValidator.parseMasked(sourceNode); sourceAddress = parsedResult.address; if (! destinationNode.isDefined()) { throw ControllerMessages.MESSAGES.nullNotAllowed(DESTINATION_ADDRESS); destination = destinationNode.asString();
name = value.trim(); if (RESTRICTED_PATHS.contains(value)) { throw MESSAGES.reserved(name, reader.getLocation()); throw MESSAGES.alreadyDefined(name, reader.getLocation()); final ModelNode update = new ModelNode(); update.get(OP_ADDR).set(address).add(ModelDescriptionConstants.PATH, name); update.get(OP).set(ADD);
boolean wildcard = resourceDefinition.getPathElement().isWildcard(); String name = null; ModelNode op = Util.createAddOperation(); throw MESSAGES.missingRequiredAttributes(new StringBuilder(NAME), reader.getLocation()); PathElement path = wildcard ? PathElement.pathElement(resourceDefinition.getPathElement().getKey(), name) : resourceDefinition.getPathElement(); PathAddress address = parentAddress.append(path); if(!noAddOperation) { op.get(ADDRESS).set(address.toModelNode()); list.add(op);
final ModelNode groupAddOp = new ModelNode(); groupAddOp.get(OP).set(ADD); groupAddOp.get(OP_ADDR); ServerGroupResourceDefinition.PROFILE.parseAndSetParameter(value, groupAddOp, reader); break; ServerGroupResourceDefinition.MANAGEMENT_SUBSYSTEM_ENDPOINT.parseAndSetParameter(value, groupAddOp, reader); break; throw MESSAGES.alreadyDefined(element.getLocalName(), reader.getLocation());
assert isControllingThread(); if (response == null) { throw MESSAGES.nullVar("response"); throw MESSAGES.nullVar("operation"); throw MESSAGES.nullVar("step"); throw MESSAGES.nullVar("stage"); throw MESSAGES.operationAlreadyComplete(); throw MESSAGES.stageAlreadyComplete(stage); throw MESSAGES.invalidStage(stage, processType); throw MESSAGES.invalidStepStage(); if (activeStep.operation.hasDefined(OPERATION_HEADERS) && activeStep.operation.get(OPERATION_HEADERS).hasDefined(CALLER_TYPE)) { operation.get(OPERATION_HEADERS, CALLER_TYPE).set(activeStep.operation.get(OPERATION_HEADERS, CALLER_TYPE));
SocketBindingGroupResourceDefinition.DEFAULT_INTERFACE.parseAndSetParameter(value, op, reader); required.remove(attribute); break; SocketBindingGroupResourceDefinition.PORT_OFFSET.parseAndSetParameter(value, op, reader); break; ModelNode groupAddress = address.clone().add(SOCKET_BINDING_GROUP, socketBindingGroupName); op.get(OP_ADDR).set(groupAddress); throw ControllerMessages.MESSAGES.alreadyDeclared(Element.SOCKET_BINDING.getLocalName(), Element.OUTBOUND_SOCKET_BINDING.getLocalName(), bindingName, Element.SOCKET_BINDING_GROUP.getLocalName(), socketBindingGroupName, reader.getLocation()); final String bindingName = parseOutboundSocketBinding(reader, interfaces, groupAddress, updates); if (!uniqueBindingNames.add(bindingName)) { throw ControllerMessages.MESSAGES.alreadyDeclared(Element.SOCKET_BINDING.getLocalName(), Element.OUTBOUND_SOCKET_BINDING.getLocalName(), bindingName, Element.SOCKET_BINDING_GROUP.getLocalName(), socketBindingGroupName, reader.getLocation());
throw MESSAGES.duplicateDeclaration("JVM", value, reader.getLocation()); JvmAttributes.JAVA_HOME.parseAndSetParameter(value, addOp, reader); break; try { JvmAttributes.TYPE.parseAndSetParameter(value, addOp, reader); } catch (final IllegalArgumentException e) { throw ParseUtils.invalidAttributeValue(reader, i); JvmAttributes.DEBUG_ENABLED.parseAndSetParameter(value, addOp, reader); break; final ModelNode address = parentAddress.clone(); address.add(ModelDescriptionConstants.JVM, name); addOp.get(OP_ADDR).set(address); updates.add(addOp); throw MESSAGES.alreadyDefined(element.getLocalName(), reader.getLocation()); throw MESSAGES.alreadyDefined(element.getLocalName(), reader.getLocation());
@Override public ManagementResourceRegistration registerSubModel(final ResourceDefinition resourceDefinition) { if (resourceDefinition == null) { throw MESSAGES.nullVar("resourceDefinition"); } final PathElement address = resourceDefinition.getPathElement(); if (address == null) { throw MESSAGES.cannotRegisterSubmodelWithNullPath(); } if (isRuntimeOnly()) { throw MESSAGES.cannotRegisterSubmodel(); } final AbstractResourceRegistration existing = getSubRegistration(PathAddress.pathAddress(address)); if (existing != null && existing.getValueString().equals(address.getValue())) { throw MESSAGES.nodeAlreadyRegistered(existing.getLocationString()); } final String key = address.getKey(); final NodeSubregistry child = getOrCreateSubregistry(key); final ManagementResourceRegistration resourceRegistration = child.register(address.getValue(), resourceDefinition, false); resourceDefinition.registerAttributes(resourceRegistration); resourceDefinition.registerOperations(resourceRegistration); resourceDefinition.registerChildren(resourceRegistration); return resourceRegistration; }
/** {@inheritDoc} */ @Override public final ManagementResourceRegistration getOverrideModel(String name) { if (name == null) { throw ControllerMessages.MESSAGES.nullVar("name"); } if (parent == null) { throw ControllerMessages.MESSAGES.cannotOverrideRootRegistration(); } if (!PathElement.WILDCARD_VALUE.equals(valueString)) { throw ControllerMessages.MESSAGES.cannotOverrideNonWildCardRegistration(valueString); } PathElement pe = PathElement.pathElement(parent.getKeyName(),name); return parent.getParent().getSubModel(PathAddress.pathAddress(pe)); }
private ModelNode parseClientMapping(XMLExtendedStreamReader reader) throws XMLStreamException { final ModelNode mapping = new ModelNode(); boolean hasDestinationAddress = false; final int count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { final String value = reader.getAttributeValue(i); if (!isNoNamespaceAttribute(reader, i)) { throw unexpectedAttribute(reader, i); } final Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i)); switch (attribute) { case SOURCE_NETWORK: AbstractSocketBindingResourceDefinition.CLIENT_MAPPING_SOURCE_NETWORK.parseAndSetParameter(value, mapping, reader); break; case DESTINATION_ADDRESS: AbstractSocketBindingResourceDefinition.CLIENT_MAPPING_DESTINATION_ADDRESS.parseAndSetParameter(value, mapping, reader); hasDestinationAddress = true; break; case DESTINATION_PORT: { AbstractSocketBindingResourceDefinition.CLIENT_MAPPING_DESTINATION_PORT.parseAndSetParameter(value, mapping, reader); break; } } } if (!hasDestinationAddress) { throw MESSAGES.missingRequiredAttributes(new StringBuilder(DESTINATION_ADDRESS), reader.getLocation()); } requireNoContent(reader); return mapping; }
private void recoverServices(final OperationContext context, final ModelNode operation, final ModelNode invalidatedParentModel) { PathAddress address = getParentAddress(PathAddress.pathAddress(operation.require(OP_ADDR))); ServiceName serviceName = getParentServiceName(address); ModelNode parentModel = getOriginalModel(context, address); if (parentModel != null && context.revertResourceRestarted(address, this)) { try { removeServices(context, serviceName, invalidatedParentModel); recreateParentService(context, address, parentModel, null); } catch (OperationFailedException e) { throw ControllerMessages.MESSAGES.failedToRecoverServices(e); } } }