/*
* Copyright 2000-2001,2004 The Apache Software Foundation.
*
* 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 org.apache.jetspeed.services.urlmanager;
import org.apache.turbine.services.Service;
import java.util.List;
/**
* <p>This service provides a central repository for storing URL
* informations</p>
* <strong>It should be extended to also provide access to their contents</strong>
*
* @author <a href="mailto:raphael@apache.org">Rapha謖 Luta</a>
* @version $Id: URLManagerService.java,v 1.6 2004/02/23 03:30:47 jford Exp $
*/
public interface URLManagerService extends Service {
/**
* The service name
*/
public String SERVICE_NAME = "URLManager";
/**
* Matches any status in a list() operation
*/
public int STATUS_ANY = -1;
/**
* Current status is unknown
*/
public int STATUS_UNKNOWN = 0;
/**
* The URL can be fetched corretcly
*/
public int STATUS_OK = 1;
/**
* The URL has permanent fatal errors
*/
public int STATUS_UNREACHABLE = 2;
/**
* A possibly transient problem prevented the system to fetch this URL
*/
public int STATUS_TEMPORARY_UNAVAILABLE = 4;
/**
* The content of this URL is corrupted or unparseable
*/
public int STATUS_CONTENT_ERROR = 8;
/**
* This URL is not currently available for use
*/
public int STATUS_BAD = STATUS_UNREACHABLE | STATUS_TEMPORARY_UNAVAILABLE | STATUS_CONTENT_ERROR;
/**
* Registers a new URL record
*
* @param url the url to register
*/
public void register( String url );
/**
* Registers a new URL record. If the url is already registered in
* the system, updates the status of this URL info record
*
* @param url the url to register
* @param status the status of this url
*/
public void register( String url, int status );
/**
* Registers a new URL record. If the url is already registered in
* the system, updates both the status and the message of this URL
* info record
*
* @param url the url to register
* @param status the status of this url
* @param message a descriptive message of the status
*/
public void register( String url, int status, String message );
/**
* Register or replace an URL record. All records are keyed to
* the imutable URL of URLInfo.
*
* @param info the info record to store
*/
public void register( URLInfo info );
/**
* Unregister an URL from the repository
*
* @param url the url to remove
*/
public void unregister( String url );
/**
* Get the information record stored in the database about
* an URL.
*
* @param url the url whose record is sought
* @return the description record found in the repository or null.
*/
public URLInfo getInfo( String url );
/**
* Test whether the URL is currently believed to be OK by this
* repository.
*
* @param url the url to be tested
* @return false is the url is known by this repository and has
* a status indicating an error, true otherwise.
*/
public boolean isOK( String url );
/**
* List of the current known URLs in the repository
*
* @return a List of URL strings known to this repository
*/
public List list();
/**
* List of the current known URLs in the repository which have
* the given status.
*
* @param status the status to be retrieved. May be
* {@link URLManagerService#STATUS_ANY} to indicate any status
* @return a List of URL strings known to this repository with this status
*/
public List list( int status );
/**
* Return the proxy's port for a protocol.
*
* @param protocol The protocol that the proxy supports, e.g. 'http'
* @return The port of the proxy (1-65535), or -1 if no port was specified (= use default)
*/
public int getProxyPort( String protocol );
/**
* Return the proxy's hostname for a protocol.
*
* @param protocol The protocol that the proxy supports, e.g. 'http'
* @return The hostname of the proxy, or <code>null</code> if no proxy is specified for this protocol
*/
public String getProxyHost( String protocol );
}