Class RuntimeCapability<T>

java.lang.Object
org.jboss.as.controller.capability.RuntimeCapability<T>
Type Parameters:
T - the type of the runtime API object exposed by the capability
All Implemented Interfaces:
Capability, Feature

public class RuntimeCapability<T> extends Object implements Capability
A capability exposed in a running WildFly process.
Author:
Brian Stansberry (c) 2014 Red Hat Inc.
  • Method Details

    • buildDynamicCapabilityName

      public static String buildDynamicCapabilityName(String baseName, String dynamicNameElement)
    • fromBaseCapability

      public RuntimeCapability<T> fromBaseCapability(String dynamicElement)
    • buildDynamicCapabilityName

      public static String buildDynamicCapabilityName(String baseName, String... dynamicNameElement)
      Constructs a full capability name from a static base name and a dynamic element.
      Parameters:
      baseName - the base name. Cannot be null
      dynamicNameElement - the dynamic portion of the name. Cannot be null
      Returns:
      the full capability name. Will not return null
    • resolveCapabilityName

      public static <T> String resolveCapabilityName(UnaryServiceDescriptor<T> descriptor, String name)
      Resolves the full capability name from a unary service descriptor and reference.
      Parameters:
      descriptor - a service descriptor
      name - the dynamic name component
      Returns:
      the full capability name.
    • resolveCapabilityName

      public static <T> String resolveCapabilityName(BinaryServiceDescriptor<T> descriptor, String parent, String child)
      Resolves the full capability name from a binary service descriptor and references.
      Parameters:
      descriptor - a service descriptor
      parent - the first dynamic name component
      child - the second dynamic name component
      Returns:
      the full capability name.
    • resolveCapabilityName

      public static <T> String resolveCapabilityName(TernaryServiceDescriptor<T> descriptor, String grandparent, String parent, String child)
      Resolves the full capability name from a ternary service descriptor and references.
      Parameters:
      descriptor - a service descriptor
      grandparent - the first dynamic name component
      parent - the second dynamic name component
      child - the third dynamic name component
      Returns:
      the full capability name.
    • resolveCapabilityName

      public static <T> String resolveCapabilityName(QuaternaryServiceDescriptor<T> descriptor, String greatGrandparent, String grandparent, String parent, String child)
      Resolves the full capability name from a ternary service descriptor and references.
      Parameters:
      descriptor - a service descriptor
      greatGrandparent - the first dynamic name component
      grandparent - the second dynamic name component
      parent - the third dynamic name component
      child - the fourth dynamic name component
      Returns:
      the full capability name.
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName()
      Gets the name of the service provided by this capability, if there is one.
      Returns:
      the name of the service. Will not be null
      Throws:
      IllegalArgumentException - if the capability does not provide a service
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName(Class<?> serviceValueType)
      Gets the name of service provided by this capability.
      Parameters:
      serviceValueType - the expected type of the service's value. Only used to provide validate that the service value type provided by the capability matches the caller's expectation. May be null in which case no validation is performed
      Returns:
      the name of the service. Will not be null
      Throws:
      IllegalArgumentException - if the capability does not provide a service or if its value type is not assignable to serviceValueType
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName(String... dynamicNameElements)
      Gets the name of the service provided by this capability, if there is one. Only usable with dynamically named capabilities.
      Parameters:
      dynamicNameElements - the dynamic portion of the capability name. Cannot be null
      Returns:
      the name of the service. Will not be null
      Throws:
      IllegalArgumentException - if the capability does not provide a service
      AssertionError - if isDynamicallyNamed() does not return true
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName(PathAddress address)
      Gets the name of the service provided by this capability, if there is one. Only usable with dynamically named capabilities.
      Parameters:
      address - Path address for which service name is calculated from Cannot be null
      Returns:
      the name of the service. Will not be null
      Throws:
      IllegalArgumentException - if the capability does not provide a service
      AssertionError - if isDynamicallyNamed() does not return true
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName(String dynamicNameElement, Class<?> serviceValueType)
      Gets the name of service provided by this capability.
      Parameters:
      dynamicNameElement - the dynamic portion of the capability name. Cannot be null
      serviceValueType - the expected type of the service's value. Only used to provide validate that the service value type provided by the capability matches the caller's expectation. May be null in which case no validation is performed
      Returns:
      the name of the service. Will not be null
      Throws:
      IllegalArgumentException - if the capability does not provide a service or if its value type is not assignable to serviceValueType
      IllegalStateException - if isDynamicallyNamed() does not return true
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName(Class<?> serviceValueType, String... dynamicNameElements)
    • getCapabilityServiceName

      public org.jboss.msc.service.ServiceName getCapabilityServiceName(PathAddress address, Class<?> serviceValueType)
      Gets the name of service provided by this capability.
      Parameters:
      address - the path from which dynamic portion of the capability name is calculated from. Cannot be null
      serviceValueType - the expected type of the service's value. Only used to provide validate that the service value type provided by the capability matches the caller's expectation. May be null in which case no validation is performed
      Returns:
      the name of the service. Will not be null
      Throws:
      IllegalArgumentException - if the capability does not provide a service or if its value type is not assignable to serviceValueType
      IllegalStateException - if isDynamicallyNamed() does not return true
    • getCapabilityServiceValueType

      public Class<?> getCapabilityServiceValueType()
      Gets the valid type to pass to getCapabilityServiceName(Class).
      Returns:
      the valid type. May be null if this capability does not provide a service
    • getRuntimeAPI

      public T getRuntimeAPI()
      Object encapsulating the API exposed by this capability to other capabilities that require it, if it does expose such an API.
      Returns:
      the API object, or null if the capability exposes no API to other capabilities
    • isAllowMultipleRegistrations

      public boolean isAllowMultipleRegistrations()
      Gets whether this capability can be registered at more than one point within the same overall scope.
      Returns:
      true if the capability can legally be registered in more than one location in the same scope; false if an attempt to do this should result in an exception
    • fromBaseCapability

      public RuntimeCapability<T> fromBaseCapability(String... dynamicElement)
      Creates a fully named capability from a dynamically named base capability. Capability providers should use this method to generate fully named capabilities in logic that handles dynamically named resources.
      Parameters:
      dynamicElement - the dynamic portion of the full capability name. Cannot be null or empty
      Returns:
      the fully named capability.
      Throws:
      AssertionError - if isDynamicallyNamed() returns false
    • fromBaseCapability

      public RuntimeCapability<T> fromBaseCapability(PathAddress path)
      Creates a fully named capability from a dynamically named base capability. Capability providers should use this method to generate fully named capabilities in logic that handles dynamically named resources.
      Parameters:
      path - the dynamic portion of the full capability name. Cannot be null or empty
      Returns:
      the fully named capability.
      Throws:
      AssertionError - if isDynamicallyNamed() returns false
    • getName

      public String getName()
      Description copied from interface: Capability
      Gets the basic name of the capability. If Capability.isDynamicallyNamed() returns true this will be the basic name of the capability, not including any dynamic portions.
      Specified by:
      getName in interface Capability
      Returns:
      the name. Will not be null
      See Also:
    • getRequirements

      public Set<String> getRequirements()
      Description copied from interface: Capability
      Gets the names of other capabilities required by this capability. These are static requirements.
      Specified by:
      getRequirements in interface Capability
      Returns:
      the capability names. Will not be null but may be empty.
    • isDynamicallyNamed

      public boolean isDynamicallyNamed()
      Description copied from interface: Capability
      Gets whether this capability is a dynamically named one, whose runtime variants will have a dynamic element added to the base name provided by Capability.getName().
      Specified by:
      isDynamicallyNamed in interface Capability
      Returns:
      true if this capability is dynamically named
    • getDynamicName

      public String getDynamicName(String dynamicNameElement)
      Description copied from interface: Capability
      Gets the full name of a capability, including a dynamic element
      Specified by:
      getDynamicName in interface Capability
      Parameters:
      dynamicNameElement - the dynamic portion of the name. Cannot be null
      Returns:
      the full capability name
    • getDynamicName

      public String getDynamicName(PathAddress address)
      Specified by:
      getDynamicName in interface Capability
    • getStability

      public Stability getStability()
      Description copied from interface: Feature
      Returns the stability level of this feature.
      Specified by:
      getStability in interface Feature
      Returns:
      a stability level
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object