Module java.xml.crypto
Package javax.xml.crypto.dsig.keyinfo

## Interface RetrievalMethod

- All Superinterfaces:
    `URIReference`, `XMLStructure`

      public interface RetrievalMethod
      extends URIReference, XMLStructure

  A representation of the XML `RetrievalMethod` element as defined in the W3C Recommendation for XML-Signature Syntax and Processing. A `RetrievalMethod` object is used to convey a reference to `KeyInfo` information that is stored at another location. The XML schema definition is defined as:

         <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
         <complexType name="RetrievalMethodType">
           <sequence>
             <element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
           </sequence>
           <attribute name="URI" type="anyURI"/>
           <attribute name="Type" type="anyURI" use="optional"/>
         </complexType>

  A `RetrievalMethod` instance may be created by invoking one of the `newRetrievalMethod` methods of the `KeyInfoFactory` class, and passing it the URI identifying the location of the KeyInfo, an optional type URI identifying the type of KeyInfo, and an optional list of `Transform`s; for example:

         KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
         RetrievalMethod rm = factory.newRetrievalMethod
            ("#KeyValue-1", KeyValue.DSA_TYPE, Collections.singletonList(Transform.BASE64));

  Since:
    1.6
  See Also:
    `KeyInfoFactory.newRetrievalMethod(String)`, `KeyInfoFactory.newRetrievalMethod(String, String, List)`

- - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `Data` | `dereference​(XMLCryptoContext context)` | Dereferences the `KeyInfo` information referenced by this `RetrievalMethod` and applies the specified `Transform`s.
    `List<Transform>` | `getTransforms()` | Returns an `unmodifiable list` of `Transform`s of this `RetrievalMethod`.
    `String` | `getURI()` | Returns the URI of the referenced `KeyInfo` information.

    - ### Methods declared in interface javax.xml.crypto.URIReference

      `getType`

    - ### Methods declared in interface javax.xml.crypto.XMLStructure

      `isFeatureSupported`

- - ### Method Detail

    - #### getTransforms

          List<Transform> getTransforms()

      Returns an `unmodifiable list` of `Transform`s of this `RetrievalMethod`.
      Returns:
        an unmodifiable list of `Transform` objects (may be empty but never `null`).

    - #### getURI

          String getURI()

      Returns the URI of the referenced `KeyInfo` information.
      Specified by:
        `getURI` in interface `URIReference`
      Returns:
        the URI of the referenced `KeyInfo` information in RFC 2396 format (never `null`)

    - #### dereference

          Data dereference​(XMLCryptoContext context)
                    throws URIReferenceException

      Dereferences the `KeyInfo` information referenced by this `RetrievalMethod` and applies the specified `Transform`s.
      Parameters:
        `context` - an `XMLCryptoContext` that may contain additional useful information for dereferencing the URI. The context's `baseURI` and `dereferencer` parameters (if specified) are used to resolve and dereference this `RetrievalMethod`
      Returns:
        a `Data` object representing the raw contents of the `KeyInfo` information referenced by this `RetrievalMethod`. It is the caller's responsibility to convert the returned data to an appropriate `KeyInfo` object.
      Throws:
        `NullPointerException` - if `context` is `null`
        `URIReferenceException` - if there is an error while dereferencing