Class RuntimeCapability<T>

  • Type Parameters:
    T - the type of the runtime API object exposed by the capability
    All Implemented Interfaces:
    Capability

    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 Detail

      • buildDynamicCapabilityName

        public static String buildDynamicCapabilityName​(String baseName,
                                                        String dynamicNameElement)
      • 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
      • 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
      • 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
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object