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 AbstractCapability
    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
      • getAdditionalRequiredPackages

        public Set<String> getAdditionalRequiredPackages()
        Description copied from interface: Capability
        Gets the names of any "additional" Galleon packages that must be installed in order for this capability to function. The purpose of providing this information is to make it available to the Galleon tooling that produces Galleon feature-specs, in order to allow the tooling to include the package information in the relevant spec.

        A package is "additional" if it is not one of the "standard" packages that must be installed. The names of "standard" packages should not be returned. The "standard" packages are:

        1. The root package for the process type; i.e. the package that provides the main module whose name is passed to JBoss Modules when the process is launched.
        2. If this capability is provided by an Extension, the package that installs the module that provides the extension.
        3. Any package that is listed as an additional required package by capability upon which this capability has a requirement.
        4. Any package that is non-optionally required, either directly or transitively, by one of the other types of standard packages.
        Returns:
        the additional package names. Will not return null but may be empty
      • 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
        Overrides:
        getDynamicName in class AbstractCapability
        Parameters:
        dynamicNameElement - the dynamic portion of the name. Cannot be null
        Returns:
        the full capability name