public interface Response
Adaptor.getDocContent(Request, Response) for performing the actions needed
 to satisfy a request.
 There are several ways that a request can be processed. In the simplest
 case an Adaptor always sets different pieces of metadata, calls getOutputStream(), and writes the document contents. If the document does not
 exist, it should call respondNotFound() instead.
 
For improved efficiency during recrawl by the GSA, an Adaptor should check
 Request.hasChangedSinceLastAccess(java.util.Date) and call respondNotModified() when it is true. This prevents the Adaptor from
 ever needing to retrieve the document contents and metadata.
 
Avoid implementing this interface in adaptor unit tests because
 new methods may be added in the future. Instead use
 UnsupportedResponse, or use an automated mock
 generator like Mockito or java.lang.reflect.Proxy.
| Modifier and Type | Method and Description | 
|---|---|
void | 
addAnchor(URI uri,
         String text)
Add a hyperlink for the GSA to follow without modifying the document
 contents. 
 | 
void | 
addMetadata(String key,
           String value)
Add metadata element that applies to the document. 
 | 
OutputStream | 
getOutputStream()
Get stream to write document contents to. 
 | 
void | 
putNamedResource(String fragment,
                Acl acl)
Provide alternative ACLs for this document, uniquely identified by
 response document's  
DocId and fragment. | 
void | 
respondNoContent()
Respond to the GSA that it already has the latest content 
 of a file but not necessarily the latest ACLs or metadata;
 Respond to non GSA client that it already has the latest version
 of a file. 
 | 
void | 
respondNotFound()
Respond to the GSA or other client that the request document does not
 exist. 
 | 
void | 
respondNotModified()
Respond to the GSA or other client that it already has the latest version
 of a file and its metadata. 
 | 
void | 
setAcl(Acl acl)
Provide the document's ACLs for early-binding security on the GSA. 
 | 
void | 
setContentType(String contentType)
Describe the content type of the document. 
 | 
void | 
setCrawlOnce(boolean crawlOnce)
Instruct the GSA to not recrawl the document after the initial
 retrieval. 
 | 
void | 
setDisplayUrl(URI displayUrl)
Set the URI to be displayed in search results. 
 | 
void | 
setForcedTransmissionDecision(MetadataTransform.TransmissionDecision transmissionDecision)
Set a forced  
MetadataTransform.TransmissionDecision that can override transmission
 decisions made by MetadataTransforms. | 
void | 
setLastModified(Date lastModified)
Provide the last modification time of the document. 
 | 
void | 
setLock(boolean lock)
Instruct the GSA to "lock" the document into its index. 
 | 
void | 
setNoArchive(boolean noArchive)
Whether the GSA should show the "Cached" link in search results for this
 document. 
 | 
void | 
setNoFollow(boolean noFollow)
Whether the GSA should follow the links within the document to find other
 documents. 
 | 
void | 
setNoIndex(boolean noIndex)
Whether the GSA should index the content for searching. 
 | 
void | 
setParam(String key,
        String value)
Adds a parameter to a Map for use by
  
MetadataTransforms when making
 transforms or decisions. | 
void | 
setSecure(boolean secure)
Mark the document as secure, for use with late-binding security. 
 | 
void respondNotModified()
                 throws IOException
If called, this must be the last call to this interface. Once you call this method, for the rest of the processing, exceptions may no longer be communicated to clients cleanly.
IOException - if communicating with client failsvoid respondNotFound()
              throws IOException
If called, this must be the last call to this interface. Once you call this method, for the rest of the processing, exceptions may no longer be communicated to the clients cleanly.
IOException - if communicating with client failsvoid respondNoContent()
               throws IOException
If called, this must be the last call to this interface. Once you call this method, for the rest of the processing, exceptions may no longer be communicated to the clients cleanly.
IOException - if communicating with client failsOutputStream getOutputStream() throws IOException
OutputStream when done.
 If called, this must be the last call to this interface (although, for convenience, you may call this method multiple times). Once you call this method, for the rest of the processing, exceptions may no longer be communicated to clients cleanly.
IOException - if connection's stream cannot be providedvoid setContentType(String contentType)
contentType - to set in response headersvoid setLastModified(Date lastModified)
lastModified - to send in response headersvoid addMetadata(String key, String value)
key - the key of metadata elementvalue - the value of metadata elementNullPointerException - if key or value
     is nullvoid setAcl(Acl acl)
null, which means the document
 is public if the document isn't marked as secure via setSecure(boolean).acl - access controls for document being sentvoid putNamedResource(String fragment, Acl acl)
DocId and fragment.fragment - disambiguating name when document has multiple ACLsacl - access controls for document being sentvoid setSecure(boolean secure)
false, which means the document
 is public if there are no ACLs. ACLs should be used, if possible, instead
 of setting this option to true. When true, the GSA needs to
 be correctly configured to issue a SAML request to the Adaptor.
 Setting ACLs to non-null will override setSecure and send secure indicator
 to GSA.secure - controls whether access is controlled or publicvoid addAnchor(URI uri, String text)
<a href='$uri'>$text</a>. If you want to link to a DocId, then you
 may use the DocIdEncoder provided by AdaptorContext.getDocIdEncoder() to produce an appropriate URI.uri - the URI of the anchortext - the text of the anchor, or nullNullPointerException - if uri is nullvoid setNoIndex(boolean noIndex)
true,
 the document will not be visible in search results. This does not change
 the GSA's behavior of following links within the document to find other
 documents. By default, the GSA will index the document (a value of false).noIndex - true when the GSA shouldn't index this documentvoid setNoFollow(boolean noFollow)
false).noFollow - true when the GSA shouldn't follow links from this
     document to find other documentsvoid setNoArchive(boolean noArchive)
false).noArchive - true when the GSA shouldn't show the "Cached"
     link in search resultsvoid setDisplayUrl(URI displayUrl)
null, then the
 crawl URI representing the DocId is used. The default is null.displayUrl - URI to be used for this document in search resultsvoid setCrawlOnce(boolean crawlOnce)
false.crawlOnce - if true, the document does not need to be
     recrawled periodicallyvoid setLock(boolean lock)
false.lock - if true, keep this document in the index in preference
     to unlocked documentsvoid setForcedTransmissionDecision(MetadataTransform.TransmissionDecision transmissionDecision)
MetadataTransform.TransmissionDecision that can override transmission
 decisions made by MetadataTransforms.
 Some connectors send content that must be preserved in order for the connector to function properly, and transforms that decide to drop that content essentially break the connector. For instance, dropping folders disrupts graph traverser type connectors.
transmissionDecision - a
     TransmissionDecisionvoid setParam(String key, String value)
MetadataTransforms when making
 transforms or decisions. Params are data associated with the document,
 but might not be indexed and searchable. Before the metadata transforms are
 called, the params are seeded with the document's DocId,
 and values from setLock, setCrawlOnce,
 setDisplayUrl, setContentType, and setLastModified.
 
 To avoid possible name conflicts with parameter entries supplied by the
 library, the key of a connector-supplied parameter must start with
 X-.
 
Example:
 response.setParam("X-LastAccessDate", ISO8601.format(lastAccessDate));
 key - a key for a Map entryvalue - the value for the Map entry for keyIllegalArgumentException - if key is not prefixed with X-IllegalStateException - if the response has been sentNullPointerException - if key is null