### *** This interface provides Binary Compatibility only, not Source Compatibility ***

Package com.sas.services.deployment

# Interface MetadataSourceInterface

All Superinterfaces:
  `Serializable`

All Known Implementing Classes:
  `AbstractMetadataSource`, `OMRMetadataSource`, `URLMetadataSource`

@SASScope("ALL") @BinaryCompatibilityOnly public interface MetadataSourceInterface extends Serializable
Interface specifying methods used to deploy foundation services from a metadata source.

Since:
  1.0

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `destroy()`
  Destroys the metadata source.
  `String`
  `getApplicationServiceDeployment()`
  Gets the name of the application service deployment.
  `com.sas.metadata.remote.MdObjectStore`
  `getMdObjectStore()`
  Gets the metadata object store.
  `String`
  `getMetadata()`
  Gets XML formatted metadata.
  `Properties`
  `getProperties()`
  Gets the properties which define this metadata source's configuration.
  `Set<String>`
  `getServiceDeploymentNames()`
  Gets the set of service deployment names that are to be deployed.
  `boolean`
  `isServiceDeploymentDeployable(String applicationServiceDeployment)`
  Determines whether the specified service deployment is can be deployed.
  `boolean`
  `isServiceDeploymentDeployable(String applicationServiceDeployment, com.sas.metadata.remote.Tree serviceDeploymentGroup)`
  Determines whether or not the specified application service deployment's service deployment group can be deployed.
  `void`
  `setApplicationServiceDeployment(String softwareComponentName)`
  Sets the name of the application service deployment.
  `void`
  `setProperties(Properties properties)`
  Sets the properties which define this metadata source's configuration.

- ## Method Details

  - ### getMetadata

    String getMetadata() throws ServiceException
    Gets XML formatted metadata.
    Returns:
      XML formatted metadata obtained from the metadata source.
    Throws:
      `ServiceException` - if unable to acquire metadata from the source.

  - ### isServiceDeploymentDeployable

    boolean isServiceDeploymentDeployable(String applicationServiceDeployment)
    Determines whether the specified service deployment is can be deployed.
    Parameters:
      `applicationServiceDeployment` - An application's foundation services deployment which is represented using a metadata `SoftwareComponent`.
    Returns:
      `true` if it is OK to deploy this appliation's service deployment or `false` if it isn't.

  - ### isServiceDeploymentDeployable

    boolean isServiceDeploymentDeployable(String applicationServiceDeployment, com.sas.metadata.remote.Tree serviceDeploymentGroup)
    Determines whether or not the specified application service deployment's service deployment group can be deployed.
    Parameters:
      `applicationServiceDeployment` - An application's foundation services deployment which is represented using a metadata `SoftwareComponent`.
      `serviceDeploymentGroup` - Service deployment group defined under the application's service deployment.
    Returns:
      `true` if it is OK to deploy this service deployment or `false` if it isn't.

  - ### getApplicationServiceDeployment

    String getApplicationServiceDeployment()
    Gets the name of the application service deployment.
    Returns:
      Application's service deployment name.

  - ### setApplicationServiceDeployment

    void setApplicationServiceDeployment(String softwareComponentName)
    Sets the name of the application service deployment.
    Parameters:
      `softwareComponentName` - An application's foundation services deployment which is represented using a metadata `SoftwareComponent`.

  - ### getServiceDeploymentNames

    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.

    If a set of service deployment names is not currently defined then a set will be lazily instantiated and returned with no elements.

    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`.

  - ### destroy

    void destroy()
    Destroys the metadata source. This method should be called when this metadata source is no longer needed to release any resources it may be holding.

  - ### getMdObjectStore

    com.sas.metadata.remote.MdObjectStore getMdObjectStore()
    Gets the metadata object store.
    Returns:
      Metadata object store or `null` if an object store is not available.

  - ### getProperties

    Properties getProperties()
    Gets the properties which define this metadata source's configuration.
    Returns:
      Properties which define this metadata source's configuration.

  - ### setProperties

    void setProperties(Properties properties)
    Sets the properties which define this metadata source's configuration.
    Parameters:
      `properties` - Properties which define this metadata source's configuration.