*** This class provides Binary Compatibility only, not Source Compatibility ***

Class AbstractMetadataSource

java.lang.Object
com.sas.services.deployment.AbstractMetadataSource
All Implemented Interfaces:
MetadataSourceInterface, Serializable
Direct Known Subclasses:
OMRMetadataSource, URLMetadataSource

@SASScope("ALL") @BinaryCompatibilityOnly public abstract class AbstractMetadataSource extends Object implements MetadataSourceInterface
An abstract class representing a source of metadata such as an SAS Metadata Repository or a URL accessible file containing metadata exported from a SAS Metadata Repository via the Foundation Services Manager console plug-in.

A concrete subclass must implement the abstract method getMetadata() which is used to get the XML UTF-8 encoded metadata describing an application's foundation service deployment.

An application is represented in a SAS Metadata Repository as a SoftwareComponent element. Each application will have 1..* collections of services using a Tree to contain them. These deployment groups are used to restrict which collections of services are deployed. When deploying services one may specify 0..* deployment groups for a particular application. If no groups are specified then no restriction is applied and all groups are deployed. If 1..* deployment groups are specified then only services defined within those groups are eligible for deployment.

Since:
1.0
See Also:
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Constructs a default instance.
     
    AbstractMetadataSource(String softwareComponentName, String serviceGroupName)
    Constructs an instance with the specified foundation service deployment name.
     
    AbstractMetadataSource(String softwareComponentName, Set<String> serviceGroupNames)
    Constructs an instance used to deploy specified foundation service deployments.
    protected
    AbstractMetadataSource(Set<String> serviceGroupNames)
    Constructs an instance used to deploy specified foundation service deployments.
  • Method Summary

    Modifier and Type
    Method
    Description
    final boolean
    Adds an RMI binding.
    final void
    addServiceDeploymentName(String serviceDeploymentGroup)
    Adds the name of a service deployment group to the set of service deployment groups that are to be deployed.
    static com.sas.metadata.remote.MdStore
    createMdStore(boolean isRemotelyAccessible, Map<String,String> metaOptions, Environment environment)
    Creates a metadata object store in a new metadata factory.
    void
    Destroys this metadata source by disposing the metadata object store.
    boolean
    equals(Object other)
    Determines whether or not the other object equals this object.
    final String
    Gets the name of the application's foundation services deployment.
    protected String
    Gets a message describing this metadata source's inability to deploy services.
    final com.sas.metadata.remote.MdObjectStore
    Gets the metadata object store.
    abstract String
    Gets metadata describing an application's foundation services deployment.
    Properties
    Gets the properties which define this metadata source's configuration.
    final RMIClientSocketFactory
    Gets the RMI client socket factory.
    final RMIServerSocketFactory
    Gets the RMI server socket factory.
    final Set<String>
    Gets the set of service deployment names that are to be deployed.
    final String
    Gets the name of the metadata SoftwareComponent that roots the service deployment metadata hierarchy.
    protected static final String
    getStringFromInputSource(InputStream inputStream)
    Gets an XML string representing a foundation services deployment from the specified input stream.
    int
    Gets a hash code for this service attribute.
    final boolean
    isServiceDeploymentDeployable(String applicationServiceDeployment)
    An application's foundation service deployment is deployable if: The SoftwareComponent name matches The SoftwareComponent ClassIdentifier designates the element as representing an application's foundation service deployment All of the service deployment groups to be deployed are defined as subtree elements of the SoftwareComponent
    final boolean
    isServiceDeploymentDeployable(String applicationServiceDeployment, com.sas.metadata.remote.Tree serviceGroup)
    Determines whether or not the specified application service deployment's service deployment group is deployable.
    Attempts to lookup services using previously discovered RMI bindings.
    final void
    removeServiceDeploymentName(String serviceDeploymentGroup)
    Removes a service deployment group name from the groups that are to be deployed.
    final void
    setApplicationServiceDeployment(String softwareComponentName)
    Sets the name of the metadata SoftwareComponent that roots an application's service deployment metadata hierarchy.
    void
    setProperties(Properties properties)
    Sets the properties which define this metadata source's configuration.
    final void
    setRMIClientSocketFactory(RMIClientSocketFactory socketFactory)
    Sets the RMI client socket factory.
    final void
    setRMIServerSocketFactory(RMIServerSocketFactory socketFactory)
    Sets the RMI server socket factory.
    final void
    setServiceDeploymentNames(Set<String> serviceGroupNames)
    Sets the set of deployment group names for Tree elements.
    protected final void
    setSoftwareComponentName(String softwareComponentName)
    Specifies the name of the application containing foundation service deployment metadata.The metadata SoftwareComponent that serves as the root for the service deployment metadata hierarchy.
    String
    Gets a string representation of this OMR metadata source.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • AbstractMetadataSource

      protected AbstractMetadataSource() throws IllegalArgumentException
      Constructs a default instance. Instead of using this default constructor use AbstractMetadataSource(applicationDeployment, deploymentGroup) or AbstractMetadataSource(applicationDeployment, deploymentGroups) which specify one or more foundation service deployment names.
      Throws:
      IllegalArgumentException - if unable to create a metadata object store.
    • AbstractMetadataSource

      public AbstractMetadataSource(String softwareComponentName, Set<String> serviceGroupNames) throws InitializationException
      Constructs an instance used to deploy specified foundation service deployments.
      Parameters:
      softwareComponentName - The name of the metadata SoftwareComponent that serves as the root of the service deployment hierarchy.
      serviceGroupNames - Set of String names designating the service groups that are to be deployed. Use this parameter if you want to deploy services that belong to specified groups, but not all groups (e.g. services in the "Core" group, but not in "Stored Process" group). If a null or empty set is specified, then no filter will be applied. The service deployment name corresponds to the Name attribute of a metadata Tree that is a subtree of the SoftwareComponent.
      Throws:
      InitializationException - if an invalid set of service deployment names is specified.
    • AbstractMetadataSource

      protected AbstractMetadataSource(Set<String> serviceGroupNames) throws InitializationException
      Constructs an instance used to deploy specified foundation service deployments.

      A subclass must initialize the name of the service deployment by calling setSoftwareComponentName(String).

      Parameters:
      serviceGroupNames - Set of String names designating the service groups that are to be deployed. Use this parameter if you want to deploy services that belong to specified groups, but not all groups (e.g. services in the "Core" group, but not in "Stored Process" group). If a null or empty set is specified, then no filter will be applied. The service deployment name corresponds to the Name attribute of a metadata Tree that is a subtree of the SoftwareComponent.
      Throws:
      InitializationException - if an invalid set of service deployment names is specified.
    • AbstractMetadataSource

      public AbstractMetadataSource(String softwareComponentName, String serviceGroupName) throws InitializationException
      Constructs an instance with the specified foundation service deployment name. This name corresponds to the metadata SoftwareComponent's name attribute.
      Parameters:
      softwareComponentName - The name of the metadata SoftwareComponent that serves as the root of the service deployment hierarchy.
      serviceGroupName - The name of the foundation service deployment group that is to be deployed. This name corresponds to the metadata Tree's Name attribute.
      Throws:
      InitializationException - if an invalid service deployment name is specified.
  • Method Details

    • createMdStore

      public static com.sas.metadata.remote.MdStore createMdStore(boolean isRemotelyAccessible, Map<String,String> metaOptions, Environment environment) throws ServiceException
      Creates a metadata object store in a new metadata factory.
      Parameters:
      isRemotelyAccessible - false if objects created by the metadata factory will only be accessed from within this JVM or true if remotely accessible objects are required.
      metaOptions - Options required to open a connection to the metadata server.
      environment - Resources environment or null if a default environment should be used.
      Returns:
      Metadata store. The caller is responsible for disposing the metadata object store's factory when it is no longer needed.
      Throws:
      ServiceException
    • getProperties

      public Properties getProperties()
      Gets the properties which define this metadata source's configuration.}
      Specified by:
      getProperties in interface MetadataSourceInterface
      Returns:
      Properties which define this metadata source's configuration.
    • setProperties

      public void setProperties(Properties properties)
      Sets the properties which define this metadata source's configuration.}
      Specified by:
      setProperties in interface MetadataSourceInterface
      Parameters:
      properties - Properties which define this metadata source's configuration.
    • isServiceDeploymentDeployable

      public final boolean isServiceDeploymentDeployable(String applicationServiceDeployment)
      An application's foundation service deployment is deployable if:
      • The SoftwareComponent name matches
      • The SoftwareComponent ClassIdentifier designates the element as representing an application's foundation service deployment
      • All of the service deployment groups to be deployed are defined as subtree elements of the SoftwareComponent
      Specified by:
      isServiceDeploymentDeployable in interface MetadataSourceInterface
      Parameters:
      applicationServiceDeployment - Metadata SoftwareComponent being considered for deployment
      Returns:
      true if its OK to deploy the foundation services or false if it isn't.
      See Also:
    • isServiceDeploymentDeployable

      public final boolean isServiceDeploymentDeployable(String applicationServiceDeployment, com.sas.metadata.remote.Tree serviceGroup)
      Determines whether or not the specified application service deployment's service deployment group is deployable.
      Specified by:
      isServiceDeploymentDeployable in interface MetadataSourceInterface
      Parameters:
      applicationServiceDeployment - Metadata SoftwareComponent being considered for deployment.
      serviceGroup - Service deployment group defined under the application's service deployment.
      Returns:
      true if it is OK to deploy this service deployment group for the specified application service deployment. or false if it isn't.
      See Also:
    • getSoftwareComponentName

      public final String getSoftwareComponentName()
      Gets the name of the metadata SoftwareComponent that roots the service deployment metadata hierarchy.
      Returns:
      name of the metadata SoftwareComponent that roots the service deployment metadata hierarchy or null if no name is defined.
    • setApplicationServiceDeployment

      public final void setApplicationServiceDeployment(String softwareComponentName)
      Sets the name of the metadata SoftwareComponent that roots an application's service deployment metadata hierarchy.
      Specified by:
      setApplicationServiceDeployment in interface MetadataSourceInterface
      Parameters:
      softwareComponentName - Name of the metadata SoftwareComponent that roots the service deployment metadata hierarchy or null if no name is defined.
      See Also:
    • getServiceDeploymentNames

      public final Set<String> getServiceDeploymentNames()
      Gets the set of service deployment names that are to be deployed. A service deployment name corresponds to the metadata SoftwareComponent element's Name attribute.
      Specified by:
      getServiceDeploymentNames in interface MetadataSourceInterface
      Returns:
      Set of String names of the service deployments that are to be deployed. Note that this set may not contain any elements, but it is guaranteed to be non-null.
      See Also:
    • setServiceDeploymentNames

      public final void setServiceDeploymentNames(Set<String> serviceGroupNames)
      Sets the set of deployment group names for Tree elements. Each element of the Set must be a String representing the name of a service group which is to be deployed. An empty set or null set indicates that services will not be filtered.
      Parameters:
      serviceGroupNames - Set of String names designating the service groups that are to be deployed. Use this parameter if you want to deploy services that belong to specified groups, but not all groups (e.g. services in the "Core" group, but not in "Stored Process" group). If a null or empty set is specified, then no filter will be applied. The service deployment name corresponds to the Name attribute of a metadata Tree that is a subtree of the SoftwareComponent.
    • setSoftwareComponentName

      protected final void setSoftwareComponentName(String softwareComponentName) throws InitializationException
      Specifies the name of the application containing foundation service deployment metadata.The metadata SoftwareComponent that serves as the root for the service deployment metadata hierarchy.
      Parameters:
      softwareComponentName - The name of the metadata SoftwareComponent that serves as the root of the service deployment hierarchy.
      Throws:
      InitializationException - if an invalid service deployment name is specified.
    • addServiceDeploymentName

      public final void addServiceDeploymentName(String serviceDeploymentGroup) throws InitializationException
      Adds the name of a service deployment group to the set of service deployment groups that are to be deployed.
      Parameters:
      serviceDeploymentGroup - Name of a service deployment group to be added to the set that is to be deployed.
      Throws:
      InitializationException - if an invalid service deployment name is specified.
    • removeServiceDeploymentName

      public final void removeServiceDeploymentName(String serviceDeploymentGroup)
      Removes a service deployment group name from the groups that are to be deployed.
      Parameters:
      serviceDeploymentGroup - Name of a service deployment group that is to be removed from the set of deployable groups.
    • getMetadata

      public abstract String getMetadata() throws ServiceException
      Gets metadata describing an application's foundation services deployment.
      Specified by:
      getMetadata in interface MetadataSourceInterface
      Returns:
      XML string describing an application's foundation services deployment.
      Throws:
      ServiceException - if unable to retrieve the metadata.
      See Also:
    • getApplicationServiceDeployment

      public final String getApplicationServiceDeployment()
      Gets the name of the application's foundation services deployment.
      Specified by:
      getApplicationServiceDeployment in interface MetadataSourceInterface
      Returns:
      Name of the application's foundation services deployment.
      See Also:
    • getStringFromInputSource

      protected static final String getStringFromInputSource(InputStream inputStream) throws ServiceException
      Gets an XML string representing a foundation services deployment from the specified input stream. Note that service deployments are encoded using utf-8.
      Parameters:
      inputStream - Input stream from which the metadata will be read. Note that the input stream should be encoded using an utf-8 character set.
      Returns:
      String acquired from the input stream or null if unable to read the string.
      Throws:
      ServiceException - if unable to obtain a String from the specified input source.
    • getRMIClientSocketFactory

      public final RMIClientSocketFactory getRMIClientSocketFactory()
      Gets the RMI client socket factory.
      Returns:
      RMI client socket factory or null if the default client socket factory is desired.
    • getRMIServerSocketFactory

      public final RMIServerSocketFactory getRMIServerSocketFactory()
      Gets the RMI server socket factory.
      Returns:
      RMI server socket factory or null if the default server socket factory is desired.
    • setRMIClientSocketFactory

      public final void setRMIClientSocketFactory(RMIClientSocketFactory socketFactory)
      Sets the RMI client socket factory.
      Parameters:
      socketFactory - RMI client socket factory or null if the default client socket factory is desired.
    • setRMIServerSocketFactory

      public final void setRMIServerSocketFactory(RMIServerSocketFactory socketFactory)
      Sets the RMI server socket factory.
      Parameters:
      socketFactory - RMI server socket factory or null if the default server socket factory is desired.
    • getMdObjectStore

      public final com.sas.metadata.remote.MdObjectStore getMdObjectStore() throws IllegalStateException
      Gets the metadata object store.
      Specified by:
      getMdObjectStore in interface MetadataSourceInterface
      Returns:
      Metadata object store.
      Throws:
      IllegalStateException - if the metadata source has been destroyed and the metadata object store is null.
    • destroy

      public void destroy()
      Destroys this metadata source by disposing the metadata object store.
      Specified by:
      destroy in interface MetadataSourceInterface
    • addRMIBinding

      public final boolean addRMIBinding(RMIBinding rmiBinding)
      Adds an RMI binding.
      Parameters:
      rmiBinding - RMI binding that describes a remote discovery service.
      Returns:
      true if the RMI binding has already been registered or was successfully added to the list of bindings.
    • lookupServices

      public final List<RemoteServiceInterface> lookupServices(DiscoveryServiceInterface discoveryService)
      Attempts to lookup services using previously discovered RMI bindings. Rediscovered services will be registered with the specified discovery service.
      Parameters:
      discoveryService -
      Returns:
      List of services
    • getDeployFailureMessage

      protected String getDeployFailureMessage()
      Gets a message describing this metadata source's inability to deploy services. A subclass should override this method if a more detailed message can be provided.
      Returns:
      Message describing a failure to deploy services.
    • toString

      public String toString()
      Gets a string representation of this OMR metadata source.
      Overrides:
      toString in class Object
      Returns:
      String representation of this instance.
    • hashCode

      public int hashCode()
      Gets a hash code for this service attribute. The hash is an XOR of all of this service's fields.
      Overrides:
      hashCode in class Object
      Returns:
      Hash code.
    • equals

      public boolean equals(Object other)
      Determines whether or not the other object equals this object.
      Overrides:
      equals in class Object
      Parameters:
      other - Other object.
      Returns:
      true if the objects are equivalent.