blob: 9392dc623d8fb7d8b86ce7d290ea60d34fbbef05 [file] [log] [blame]
// Copyright 2011 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.enterprise.adaptor;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
/**
* Methods for an Adaptor to communicate with the adaptor library.
* Implementations of this class must be thread-safe.
*/
public interface AdaptorContext {
/**
* Configuration instance for the adaptor and all things within the adaptor
* library.
*/
public Config getConfig();
/**
* Callback object for pushing {@code DocId}s to the GSA at any time.
*/
public DocIdPusher getDocIdPusher();
/**
* Callback object for asynchronously pushing {@code DocId}s to the GSA
* at any time.
*/
public AsyncDocIdPusher getAsyncDocIdPusher();
/**
* A way to construct URIs from DocIds.
*/
public DocIdEncoder getDocIdEncoder();
/**
* Add a status source to the dashboard. The source will automatically be
* removed just before {@link Adaptor#destroy}. Source registration should
* occur during {@link Adaptor#init}.
*/
public void addStatusSource(StatusSource source);
/**
* Override the default {@link ExceptionHandler} for full push.
*/
public void setGetDocIdsFullErrorHandler(ExceptionHandler handler);
/**
* Retrieve the current {@link ExceptionHandler} for full push.
*/
public ExceptionHandler getGetDocIdsFullErrorHandler();
/**
* Override the default {@link ExceptionHandler} for incremental push.
*/
public void setGetDocIdsIncrementalErrorHandler(
ExceptionHandler handler);
/**
* Retrieve the current {@link ExceptionHandler} for incremental push.
*/
public ExceptionHandler getGetDocIdsIncrementalErrorHandler();
/**
* Retrieve decoder for sensitive values, like passwords. To protect sensitive
* values, the user should have previously encoded them using the Dashboard.
* However, a user is still allowed to choose to keep sensitive values in
* plain text.
*/
public SensitiveValueDecoder getSensitiveValueDecoder();
/**
* Registers a handler with the library's {@link
* com.sun.net.httpserver.HttpServer} in similar fashion to {@link
* com.sun.net.httpserver.HttpServer#createContext}. The handler will
* automatically be removed during adaptor shutdown. Handler registration
* should occur during {@link Adaptor#init}.
*
* <p>Although {@code path} may be passed directly to the underlying {@code
* HttpServer}, that is not necessarily the case. Thus, implementations should
* use the returned context's path when forming URLs to the handler. In
* addition, the handler and context may be modified before being returned;
* this is primarily to allow adding commonly-needed filters for error
* handling and logging, but also available for implementation-specific needs.
*/
public HttpContext createHttpContext(String path, HttpHandler handler);
/**
* Get the session for the user communicating via {@code ex}. If a session
* does not already exist, then {@code create} determines if one should be
* created.
*
* @param ex exchange which user issued request
* @param create whether a new session should be created if one does not
* already exist for this user
* @return user's session, or {@code null} if session did not already exist
* and {@code create = false}
*/
public Session getUserSession(HttpExchange ex, boolean create);
/**
* Register a polling incremental lister, so that it can be called when
* appropriate. Registration may not occur after {@link Adaptor#init}.
*/
public void setPollingIncrementalLister(PollingIncrementalLister lister);
/**
* Register an authentication provider, so it can authenticate users for the
* GSA. Registration may not occur after {@link Adaptor#init}.
*/
public void setAuthnAuthority(AuthnAuthority authnAuthority);
/**
* Register an authorization provider, so it can check authorization of users
* for the GSA. Registration may not occur after {@link Adaptor#init}.
*/
public void setAuthzAuthority(AuthzAuthority authzAuthority);
}