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

com.sas.services.deployment
Class AbstractMetadataSource

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

public abstract class AbstractMetadataSource
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:
OMRMetadataSource, URLMetadataSource, Serialized Form

Constructor Summary
protected AbstractMetadataSource()
          Constructs a default instance.
protected AbstractMetadataSource(java.util.Set serviceGroupNames)
          Constructs an instance used to deploy specified foundation service deployments.
  AbstractMetadataSource(java.lang.String softwareComponentName, java.util.Set serviceGroupNames)
          Constructs an instance used to deploy specified foundation service deployments.
  AbstractMetadataSource(java.lang.String softwareComponentName, java.lang.String serviceGroupName)
          Constructs an instance with the specified foundation service deployment name.
 
Method Summary
 boolean addRMIBinding(RMIBinding rmiBinding)
          Adds an RMI binding.
 void addServiceDeploymentName(java.lang.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, java.util.Map metaOptions, Environment environment)
          Creates a metadata object store in a new metadata factory.
 void destroy()
          Destroys this metadata source by disposing the metadata object store.
 boolean equals(java.lang.Object other)
          Determines whether or not the other object equals this object.
 java.lang.String getApplicationServiceDeployment()
          Gets the name of the application's foundation services deployment.
protected  java.lang.String getDeployFailureMessage()
          Gets a message describing this metadata source's inability to deploy services.
 com.sas.metadata.remote.MdObjectStore getMdObjectStore()
          Gets the metadata object store.
abstract  java.lang.String getMetadata()
          Gets metadata describing an application's foundation services deployment.
 java.util.Properties getProperties()
          Gets the properties which define this metadata source's configuration.
 java.rmi.server.RMIClientSocketFactory getRMIClientSocketFactory()
          Gets the RMI client socket factory.
 java.rmi.server.RMIServerSocketFactory getRMIServerSocketFactory()
          Gets the RMI server socket factory.
 java.util.Set getServiceDeploymentNames()
          Gets the set of service deployment names that are to be deployed.
 java.lang.String getSoftwareComponentName()
          Gets the name of the metadata SoftwareComponent that roots the service deployment metadata hierarchy.
protected static java.lang.String getStringFromInputSource(java.io.InputStream inputStream)
          Gets an XML string representing a foundation services deployment from the specified input stream.
 int hashCode()
          Gets a hash code for this service attribute.
 boolean isServiceDeploymentDeployable(java.lang.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
 boolean isServiceDeploymentDeployable(java.lang.String applicationServiceDeployment, com.sas.metadata.remote.Tree serviceGroup)
          Determines whether or not the specified application service deployment's service deployment group is deployable.
 java.util.List lookupServices(DiscoveryServiceInterface discoveryService)
          Attempts to lookup services using previously discovered RMI bindings.
 void removeServiceDeploymentName(java.lang.String serviceDeploymentGroup)
          Removes a service deployment group name from the groups that are to be deployed.
 void setApplicationServiceDeployment(java.lang.String softwareComponentName)
          Sets the name of the metadata SoftwareComponent that roots an application's service deployment metadata hierarchy.
 void setProperties(java.util.Properties properties)
          Sets the properties which define this metadata source's configuration.
 void setRMIClientSocketFactory(java.rmi.server.RMIClientSocketFactory socketFactory)
          Sets the RMI client socket factory.
 void setRMIServerSocketFactory(java.rmi.server.RMIServerSocketFactory socketFactory)
          Sets the RMI server socket factory.
 void setServiceDeploymentNames(java.util.Set serviceGroupNames)
          Sets the set of deployment group names for Tree elements.
protected  void setSoftwareComponentName(java.lang.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.
 java.lang.String toString()
          Gets a string representation of this OMR metadata source.
 

Constructor Detail

AbstractMetadataSource

protected AbstractMetadataSource()
                          throws java.lang.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:
java.lang.IllegalArgumentException - if unable to create a metadata object store.

AbstractMetadataSource

public AbstractMetadataSource(java.lang.String softwareComponentName,
                              java.util.Set 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(java.util.Set 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(java.lang.String softwareComponentName,
                              java.lang.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 Detail

createMdStore

public static com.sas.metadata.remote.MdStore createMdStore(boolean isRemotelyAccessible,
                                                            java.util.Map 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 java.util.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(java.util.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(java.lang.String applicationServiceDeployment)
An application's foundation service deployment is deployable if:

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:
MetadataSourceInterface.isServiceDeploymentDeployable(String)

isServiceDeploymentDeployable

public final boolean isServiceDeploymentDeployable(java.lang.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:
MetadataSourceInterface.isServiceDeploymentDeployable(String, Tree)

getSoftwareComponentName

public final java.lang.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(java.lang.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:
MetadataSourceInterface.setApplicationServiceDeployment(String)

getServiceDeploymentNames

public final java.util.Set 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:
MetadataSourceInterface.getServiceDeploymentNames()

setServiceDeploymentNames

public final void setServiceDeploymentNames(java.util.Set 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(java.lang.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(java.lang.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(java.lang.String serviceDeploymentGroup)
Removes a service deployment group name from the groups that are to be deployed.

Parameters:
serviceDeploymentGroup - Name of a service deployment gruop that is to be removed from the set of deployable groups.

getMetadata

public abstract java.lang.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:
MetadataSourceInterface.getMetadata()

getApplicationServiceDeployment

public final java.lang.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:
MetadataSourceInterface.getApplicationServiceDeployment()

getStringFromInputSource

protected static final java.lang.String getStringFromInputSource(java.io.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 java.rmi.server.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 java.rmi.server.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(java.rmi.server.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(java.rmi.server.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 java.lang.IllegalStateException
Gets the metadata object store.

Specified by:
getMdObjectStore in interface MetadataSourceInterface
Returns:
Metadata object store.
Throws:
java.lang.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 java.util.List 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 java.lang.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 java.lang.String toString()
Gets a string representation of this OMR metadata source.

Overrides:
toString in class java.lang.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 java.lang.Object
Returns:
Hash code.

equals

public boolean equals(java.lang.Object other)
Determines whether or not the other object equals this object.

Overrides:
equals in class java.lang.Object
Parameters:
other - Other object.
Returns:
true if the objects are equivalent.

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




Copyright © 2009 SAS Institute Inc. All Rights Reserved.