# Class DefaultResponsibility

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultResponsibility

All Implemented Interfaces:
  `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`

Direct Known Subclasses:
  `DefaultResponsibleParty`

@UML(identifier="CI_Responsibility", specification=ISO_19115) public class DefaultResponsibility extends ISOMetadata
Information about the party and their role. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
`CI_Responsibility` `├─party……………………` Information about the parties. `│ └─name……………` Name of the party. `└─role………………………` Function performed by the responsible party.
Note on International Standard versions
This class is derived from a new type defined in the ISO 19115 international standard published in 2014, while GeoAPI 3.0 is based on the version published in 2003. Consequently this implementation class does not yet implement a GeoAPI interface, but is expected to do so after the next GeoAPI releases. When the interface will become available, all references to this implementation class in Apache SIS will be replaced be references to the `Responsibility` interface.

## Limitations

- Instances of this class are not synchronized for multi-threading. Synchronization, if needed, is caller's responsibility.
- Serialized objects of this class are not guaranteed to be compatible with future Apache SIS releases. Serialization support is appropriate for short term storage or RMI between applications running the same version of Apache SIS. For long term storage, use `XML` instead.

Since:
  0.5
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class ModifiableMetadata

  `ModifiableMetadata​.State`

- ## Field Summary

  ### Fields inherited from class ISOMetadata

  `identifiers`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultResponsibility()`
  Constructs an initially empty responsible party.
  `DefaultResponsibility(DefaultResponsibility object)`
  Constructs a new instance initialized with the values from the specified metadata object.
  `DefaultResponsibility(Role role, Extent extent, AbstractParty party)`
  Constructs a responsibility initialized to the specified values.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Collection<Extent>`
  `getExtents()`
  Returns the spatial or temporal extents of the role.
  `Collection<AbstractParty>`
  `getParties()`
  Returns information about the parties.
  `Role`
  `getRole()`
  Returns the function performed by the responsible party.
  `void`
  `setExtents(Collection<? extends Extent> newValues)`
  Sets the spatial and temporal extents of the role.
  `void`
  `setParties(Collection<? extends AbstractParty> newValues)`
  Sets information about the parties.
  `void`
  `setRole(Role newValue)`
  Sets the function performed by the responsible party.

  ### Methods inherited from class ISOMetadata

  `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier`

  ### Methods inherited from class ModifiableMetadata

  `checkWritePermission, collectionType, copyCollection, copyList, copyMap, copySet, deepCopy, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, writeCollection, writeList, writeMap, writeSet`

  ### Methods inherited from class AbstractMetadata

  `asMap, asTreeTable, clone, equals, equals, getInterface, hashCode, isEmpty, nilReasons, prune, toString`

  ### Methods inherited from class Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### DefaultResponsibility

    public DefaultResponsibility()
    Constructs an initially empty responsible party.

  - ### DefaultResponsibility

    public DefaultResponsibility(Role role, Extent extent, AbstractParty party)
    Constructs a responsibility initialized to the specified values.
    Parameters:
      `role` - function performed by the responsible party, or `null`.
      `extent` - spatial or temporal extent of the role, or `null`.
      `party` - information about the party, or `null`.

  - ### DefaultResponsibility

    public DefaultResponsibility(DefaultResponsibility object)
    Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, because the other metadata contained in the given object are not recursively copied.
    Parameters:
      `object` - the metadata to copy values from, or `null` if none.

- ## Method Details

  - ### getRole

    @UML(identifier="role", obligation=MANDATORY, specification=ISO_19115) public Role getRole()
    Returns the function performed by the responsible party.
    Returns:
      function performed by the responsible party.

  - ### setRole

    public void setRole(Role newValue)
    Sets the function performed by the responsible party.
    Parameters:
      `newValue` - the new role, or `null` if none.

  - ### getExtents

    @UML(identifier="extent", obligation=OPTIONAL, specification=ISO_19115) public Collection<Extent> getExtents()
    Returns the spatial or temporal extents of the role.
    Returns:
      the spatial or temporal extents of the role.

  - ### setExtents

    public void setExtents(Collection<? extends Extent> newValues)
    Sets the spatial and temporal extents of the role.
    Parameters:
      `newValues` - the new spatial and temporal extents of the role.

  - ### getParties

    @UML(identifier="party", obligation=MANDATORY, specification=ISO_19115) public Collection<AbstractParty> getParties()
    Returns information about the parties.
    Upcoming API change — generalization
    The element type will be changed to the `Party` interface when GeoAPI will provide it (tentatively in GeoAPI 3.1).
    Returns:
      information about the parties.

  - ### setParties

    public void setParties(Collection<? extends AbstractParty> newValues)
    Sets information about the parties.
    Upcoming API change — generalization
    The element type will be changed to the `Party` interface when GeoAPI will provide it (tentatively in GeoAPI 3.1).
    Parameters:
      `newValues` - new information about the parties.