| // 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); | |
| } |