Class ObjectTypeAttributeDefinition

All Implemented Interfaces:
Feature

public class ObjectTypeAttributeDefinition extends SimpleAttributeDefinition
AttributeDefinition for attributes of type ModelType.OBJECT that aren't simple maps, but rather a set fixed keys where each key may be associated with a value of a different type.
Author:
James R. Perkins, Richard Achmatowicz (c) 2012 RedHat Inc.
See Also:
  • Constructor Details

  • Method Details

    • convertParameterExpressions

      protected org.jboss.dmr.ModelNode convertParameterExpressions(org.jboss.dmr.ModelNode parameter)
      Description copied from class: AttributeDefinition
      Examine the given operation parameter value for any expression syntax, converting the relevant node to ModelType.EXPRESSION if such is supported.

      This implementation checks if expressions are allowed and if so, calls AttributeDefinition.convertStringExpression(ModelNode) to convert a ModelType.STRING to a ModelType.EXPRESSION. No other conversions are performed. For use cases requiring more complex behavior, a subclass that overrides this method should be used.

      If expressions are supported this implementation also checks if the attribute type is one of the complex DMR types. If it is, an IllegalStateException is thrown, as this implementation cannot properly handle such a combination, and a subclass that overrides this method should be used.

      Overrides:
      convertParameterExpressions in class AttributeDefinition
      Parameters:
      parameter - the node to examine. Cannot not be null
      Returns:
      a node matching parameter but with expressions converted, or the original parameter if no conversion was performed. Will not return null
    • getValueTypes

      public final AttributeDefinition[] getValueTypes()
    • addCapabilityRequirements

      public void addCapabilityRequirements(OperationContext context, Resource resource, org.jboss.dmr.ModelNode attributeValue)
      Description copied from class: AttributeDefinition
      Based on the given attribute value, add capability requirements. If this definition is for an attribute whose value is or contains a reference to the name of some capability, this method should record the addition of a requirement for the capability.

      This is a no-op in this base class. Subclasses that support attribute types that can represent capability references should override this method.

      Overrides:
      addCapabilityRequirements in class AttributeDefinition
      Parameters:
      context - the operation context
      resource - the resource on which requirements are gathered
      attributeValue - the value of the attribute described by this object
    • removeCapabilityRequirements

      public void removeCapabilityRequirements(OperationContext context, Resource resource, org.jboss.dmr.ModelNode attributeValue)
      Description copied from class: AttributeDefinition
      Based on the given attribute value, remove capability requirements. If this definition is for an attribute whose value is or contains a reference to the name of some capability, this method should record the removal of a requirement for the capability.

      This is a no-op in this base class. Subclasses that support attribute types that can represent capability references should override this method.

      Overrides:
      removeCapabilityRequirements in class AttributeDefinition
      Parameters:
      context - the operation context
      resource - resource from which capability requirement is to be removed from, null is legal value in case that CapabilityReferenceRecorder doesn't require it.
      attributeValue - the value of the attribute described by this object
    • addResourceAttributeDescription

      public org.jboss.dmr.ModelNode addResourceAttributeDescription(ResourceBundle bundle, String prefix, org.jboss.dmr.ModelNode resourceDescription)
      Description copied from class: AttributeDefinition
      Creates a returns a basic model node describing the attribute, after attaching it to the given overall resource description model node. The node describing the attribute is returned to make it easy to perform further modification.
      Overrides:
      addResourceAttributeDescription in class AttributeDefinition
      Parameters:
      bundle - resource bundle to use for text descriptions
      prefix - prefix to prepend to the attribute name key when looking up descriptions
      resourceDescription - the overall resource description
      Returns:
      the attribute description node
    • addOperationParameterDescription

      public org.jboss.dmr.ModelNode addOperationParameterDescription(org.jboss.dmr.ModelNode resourceDescription, String operationName, ResourceDescriptionResolver resolver, Locale locale, ResourceBundle bundle)
      Description copied from class: AttributeDefinition
      Creates a returns a basic model node describing a parameter that sets this attribute, after attaching it to the given overall operation description model node. The node describing the parameter is returned to make it easy to perform further modification.
      Overrides:
      addOperationParameterDescription in class AttributeDefinition
      Parameters:
      resourceDescription - the overall resource description
      operationName - the operation name
      resolver - provider of localized text descriptions
      locale - locale to pass to the resolver
      bundle - bundle to pass to the resolver
      Returns:
      the attribute description node
    • addOperationReplyDescription

      public org.jboss.dmr.ModelNode addOperationReplyDescription(org.jboss.dmr.ModelNode resourceDescription, String operationName, ResourceDescriptionResolver resolver, Locale locale, ResourceBundle bundle)
      Description copied from class: AttributeDefinition
      Creates a returns a basic model node describing a parameter that sets this attribute, after attaching it to the given overall operation description model node. The node describing the parameter is returned to make it easy to perform further modification.
      Overrides:
      addOperationReplyDescription in class AttributeDefinition
      Parameters:
      resourceDescription - the overall resource description
      operationName - the operation name
      resolver - provider of localized text descriptions
      locale - locale to pass to the resolver
      bundle - bundle to pass to the resolver
      Returns:
      the attribute description node
    • addResourceAttributeDescription

      public org.jboss.dmr.ModelNode addResourceAttributeDescription(org.jboss.dmr.ModelNode resourceDescription, ResourceDescriptionResolver resolver, Locale locale, ResourceBundle bundle)
      Description copied from class: AttributeDefinition
      Creates a returns a basic model node describing the attribute, after attaching it to the given overall resource description model node. The node describing the attribute is returned to make it easy to perform further modification.
      Overrides:
      addResourceAttributeDescription in class AttributeDefinition
      Parameters:
      resourceDescription - the overall resource description
      resolver - provider of localized text descriptions
      locale - locale to pass to the resolver
      bundle - bundle to pass to the resolver
      Returns:
      the attribute description node
    • addOperationParameterDescription

      public org.jboss.dmr.ModelNode addOperationParameterDescription(ResourceBundle bundle, String prefix, org.jboss.dmr.ModelNode operationDescription)
      Description copied from class: AttributeDefinition
      Creates a returns a basic model node describing a parameter that sets this attribute, after attaching it to the given overall operation description model node. The node describing the parameter is returned to make it easy to perform further modification.
      Overrides:
      addOperationParameterDescription in class AttributeDefinition
      Parameters:
      bundle - resource bundle to use for text descriptions
      prefix - prefix to prepend to the attribute name key when looking up descriptions
      operationDescription - the overall resource description
      Returns:
      the attribute description node
    • resolveValue

      public org.jboss.dmr.ModelNode resolveValue(ExpressionResolver resolver, org.jboss.dmr.ModelNode value) throws OperationFailedException
      Overrides the superclass implementation to allow the AttributeDefinition for each field in the object to in turn resolve that field. Takes the given value, resolves it using the given resolver and validates it using this attribute's validator. If the value is undefined and a default value is available, the default value is used.
      Overrides:
      resolveValue in class AttributeDefinition
      Parameters:
      resolver - the expression resolver
      value - a node that is expected to be a valid value for an attribute defined by this definition
      Returns:
      the resolved value, possibly the default value if value is not defined
      Throws:
      OperationFailedException - if the value is not valid
    • addValueTypeDescription

      protected void addValueTypeDescription(org.jboss.dmr.ModelNode node, String prefix, ResourceBundle bundle, boolean forOperation, ResourceDescriptionResolver resolver, Locale locale)
    • create

      public static ObjectTypeAttributeDefinition.Builder create(String name, AttributeDefinition... valueTypes)
    • addAllowedValuesToDescription

      protected void addAllowedValuesToDescription(org.jboss.dmr.ModelNode result, ParameterValidator validator)
      Description copied from class: AttributeDefinition
      Adds the allowed values. Override for attributes who should not use the allowed values.
      Overrides:
      addAllowedValuesToDescription in class AttributeDefinition
      Parameters:
      result - the node to add the allowed values to
      validator - the validator to get the allowed values from