View Javadoc

1   /*
2    * Copyright 2000-2001,2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.apache.jetspeed.services.urlmanager;
18  
19  import org.apache.turbine.services.Service;
20  import java.util.List;
21  
22  /***
23   * <p>This service provides a central repository for storing URL
24   * informations</p>
25   * <strong>It should be extended to also provide access to their contents</strong>
26   *
27   * @author <a href="mailto:raphael@apache.org">Raphaël Luta</a>
28   * @version $Id: URLManagerService.java,v 1.6 2004/02/23 03:30:47 jford Exp $
29   */
30  public interface URLManagerService extends Service {
31  
32      /***
33       * The service name
34       */
35      public String SERVICE_NAME = "URLManager";
36  
37      /***
38       * Matches any status in a list() operation
39       */
40      public int STATUS_ANY = -1;
41  
42      /***
43       * Current status is unknown
44       */
45      public int STATUS_UNKNOWN = 0;
46  
47      /***
48       * The URL can be fetched corretcly
49       */
50      public int STATUS_OK = 1;
51  
52      /***
53       * The URL has permanent fatal errors
54       */
55      public int STATUS_UNREACHABLE = 2;
56  
57      /***
58       * A possibly transient problem prevented the system to fetch this URL
59       */
60      public int STATUS_TEMPORARY_UNAVAILABLE = 4;
61  
62      /***
63       * The content of this URL is corrupted or unparseable
64       */
65      public int STATUS_CONTENT_ERROR = 8;
66      
67      /***
68       * This URL is not currently available for use
69       */
70      public int STATUS_BAD = STATUS_UNREACHABLE | STATUS_TEMPORARY_UNAVAILABLE | STATUS_CONTENT_ERROR;
71  
72      /***
73       * Registers a new URL record
74       * 
75       * @param url the url to register
76       */
77      public void register( String url );
78  
79      /***
80       * Registers a new URL record. If the url is already registered in 
81       * the system, updates the status of this URL info record
82       * 
83       * @param url the url to register
84       * @param status the status of this url
85       */
86      public void register( String url, int status );
87  
88      /***
89       * Registers a new URL record. If the url is already registered in 
90       * the system, updates both the status and the message of this URL 
91       * info record
92       * 
93       * @param url the url to register
94       * @param status the status of this url
95       * @param message a descriptive message of the status
96       */
97      public void register( String url, int status, String message );
98  
99      /***
100      * Register or replace an URL record. All records are keyed to
101      * the imutable URL of URLInfo.
102      * 
103      * @param info the info record to store
104      */
105     public void register( URLInfo info );
106 
107     /***
108      * Unregister an URL from the repository
109      * 
110      * @param url the url to remove
111      */
112     public void unregister( String url );
113 
114     /***
115      * Get the information record stored in the database about
116      * an URL.
117      * 
118      * @param url the url whose record is sought
119      * @return the description record found in the repository or null.
120      */
121     public URLInfo getInfo( String url );
122     
123     /***
124      * Test whether the URL is currently believed to be OK by this 
125      * repository.
126      * 
127      * @param url the url to be tested
128      * @return false is the url is known by this repository and has
129      * a status indicating an error, true otherwise.
130      */
131     public boolean isOK( String url );
132     
133     /***
134      * List of the current known URLs in the repository
135      *
136      * @return a List of URL strings known to this repository
137      */
138     public List list();
139         
140     /***
141      * List of the current known URLs in the repository which have 
142      * the given status.
143      *
144      * @param status the status to be retrieved. May be 
145      * {@link URLManagerService#STATUS_ANY} to indicate any status
146      * @return a List of URL strings known to this repository with this status
147      */
148     public List list( int status );
149 
150     /***
151      * Return the proxy's port for a protocol.
152      *
153      * @param protocol The protocol that the proxy supports, e.g. 'http'
154      * @return The port of the proxy (1-65535), or -1 if no port was specified (= use default)
155      */
156     public int getProxyPort( String protocol );
157 
158     /***
159      * Return the proxy's hostname for a protocol.
160      *
161      * @param protocol The protocol that the proxy supports, e.g. 'http'
162      * @return The hostname of the proxy, or <code>null</code> if no proxy is specified for this protocol
163      */
164     public String getProxyHost( String protocol );
165 
166 }