public class AdaptorWithRespondNoContentTemplate extends AbstractAdaptor implements AuthzAuthority
Constructor and Description |
---|
AdaptorWithRespondNoContentTemplate() |
Modifier and Type | Method and Description |
---|---|
void |
getDocContent(Request request,
Response response)
Provides contents and metadata of particular document.
|
void |
getDocIds(DocIdPusher pusher)
Pushes all the
DocId s that are suppose to be indexed by the GSA. |
void |
init(AdaptorContext context)
Initialize adaptor with the current context.
|
Map<DocId,AuthzStatus> |
isUserAuthorized(AuthnIdentity userIdentity,
Collection<DocId> ids)
Determines whether the user identified is allowed to access the
DocId s. |
static void |
main(String[] args)
Call default main for adaptors.
|
destroy, initConfig, main
public void init(AdaptorContext context)
AbstractAdaptor
context
points to other useful objects that can be used at any time. For example,
methods on DocIdPusher
provided via AdaptorContext.getDocIdPusher()
are allowed to be called whenever the
Adaptor wishes. This allows doing event-based incremental pushes at any
time.
The method is called at the end of GsaCommunicationHandler.start(java.lang.Runnable)
.
If you experience a fatal error during initialization, feel free to
throw an Exception
to cancel the startup process.
This implementation does nothing.
init
in interface Adaptor
init
in class AbstractAdaptor
context
- for instance includes completed configpublic void getDocContent(Request request, Response response) throws IOException, InterruptedException
Adaptor
If you experience a fatal error, feel free to throw an IOException
or RuntimeException
. In the case of an error, the GSA
will determine if and when to retry.
getDocContent
in interface Adaptor
request
- info about document being soughtresponse
- place to put document dataIOException
- if getting data failsInterruptedException
- if an IO operation throws itpublic void getDocIds(DocIdPusher pusher) throws IOException, InterruptedException
Adaptor
DocId
s that are suppose to be indexed by the GSA.
This will frequently involve re-sending DocId
s to the GSA, but this
allows healing previous errors and cache inconsistencies. Re-sending DocIds
is very fast and should be considered free on the GSA. This method
should determine a list of DocId
s to push and call DocIdPusher.pushDocIds(java.lang.Iterable<com.google.enterprise.adaptor.DocId>)
one or more times and DocIdPusher.pushNamedResources(java.util.Map<com.google.enterprise.adaptor.DocId, com.google.enterprise.adaptor.Acl>)
if using named resources.
pusher
is provided as convenience and is the same object
provided to Adaptor.init(com.google.enterprise.adaptor.AdaptorContext)
previously. This method may take a while and
implementations are free to call Thread.sleep(long)
occasionally to
reduce load.
If you experience a fatal error, feel free to throw an IOException
or RuntimeException
. In the case of an error, the
ExceptionHandler
in use in AdaptorContext
will
determine if and when to retry.
getDocIds
in interface Adaptor
pusher
- used to send doc ids to GSAIOException
- if getting data failsInterruptedException
- if an IO operations throws itpublic Map<DocId,AuthzStatus> isUserAuthorized(AuthnIdentity userIdentity, Collection<DocId> ids) throws IOException
AuthzAuthority
DocId
s. The user is either anonymous or assumed to be previously
authenticated. If an anonymous user is denied access to a document, then
the caller may prompt the user to go through an authentication process and
then try again.
Returns AuthzStatus.PERMIT
for DocId
s the user is
allowed to access. Retutrns AuthzStatus.DENY
for DocId
s the
user is not allowed to access. If the document exists, AuthzStatus.INDETERMINATE
will not be returned for that DocId
.
If the document doesn't exist, then there are several possibilities. If
the repository is fully-public then it will return PERMIT
. This
will allow the caller to provide a cached version of the file to the user
or call Adaptor.getDocContent(com.google.enterprise.adaptor.Request, com.google.enterprise.adaptor.Response)
which should call Response.respondNotFound()
. If the adaptor is not sensitive to users knowing
that certain documents do not exist, then it will return INDETERMINATE
. This will be interpreted as the document does not exist; no
cached copy will be provided to the user but the user may be informed the
document doesn't exist. Highly sensitive repositories may return DENY
.
If you experience a fatal error, feel free to throw an IOException
or RuntimeException
. In the case of an error, the
users will be denied access to the resources.
isUserAuthorized
in interface AuthzAuthority
userIdentity
- user to authorize, or null
for anonymous
usersids
- Collection of DocId
s that need to be checkedAuthzStatus
for each DocId
provided in ids
IOException
- on failurepublic static void main(String[] args)
args
- argv