• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/scheme/SchemeRegistry.java $
3  * $Revision: 648356 $
4  * $Date: 2008-04-15 10:57:53 -0700 (Tue, 15 Apr 2008) $
5  *
6  * ====================================================================
7  * Licensed to the Apache Software Foundation (ASF) under one
8  * or more contributor license agreements.  See the NOTICE file
9  * distributed with this work for additional information
10  * regarding copyright ownership.  The ASF licenses this file
11  * to you under the Apache License, Version 2.0 (the
12  * "License"); you may not use this file except in compliance
13  * with the License.  You may obtain a copy of the License at
14  *
15  *   http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing,
18  * software distributed under the License is distributed on an
19  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20  * KIND, either express or implied.  See the License for the
21  * specific language governing permissions and limitations
22  * under the License.
23  * ====================================================================
24  *
25  * This software consists of voluntary contributions made by many
26  * individuals on behalf of the Apache Software Foundation.  For more
27  * information on the Apache Software Foundation, please see
28  * <http://www.apache.org/>.
29  *
30  */
31 package org.apache.http.conn.scheme;
32 
33 import java.util.ArrayList;
34 import java.util.LinkedHashMap;
35 import java.util.List;
36 import java.util.Map;
37 
38 import org.apache.http.HttpHost;
39 
40 /**
41  * A set of supported protocol {@link Scheme schemes}.
42  * Schemes are identified by lowercase names.
43  *
44  * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
45  *
46  *
47  * <!-- empty lines to avoid svn diff problems -->
48  * @version   $Revision: 648356 $ $Date: 2008-04-15 10:57:53 -0700 (Tue, 15 Apr 2008) $
49  *
50  * @since 4.0
51  *
52  * @deprecated Please use {@link java.net.URL#openConnection} instead.
53  *     Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a>
54  *     for further details.
55  */
56 @Deprecated
57 public final class SchemeRegistry {
58 
59     /** The available schemes in this registry. */
60     private final Map<String,Scheme> registeredSchemes;
61 
62 
63     /**
64      * Creates a new, empty scheme registry.
65      */
SchemeRegistry()66     public SchemeRegistry() {
67         super();
68         registeredSchemes = new LinkedHashMap<String,Scheme>();
69     }
70 
71 
72     /**
73      * Obtains a scheme by name.
74      *
75      * @param name      the name of the scheme to look up (in lowercase)
76      *
77      * @return  the scheme, never <code>null</code>
78      *
79      * @throws IllegalStateException
80      *          if the scheme with the given name is not registered
81      */
getScheme(String name)82     public synchronized final Scheme getScheme(String name) {
83         Scheme found = get(name);
84         if (found == null) {
85             throw new IllegalStateException
86                 ("Scheme '"+name+"' not registered.");
87         }
88         return found;
89     }
90 
91 
92     /**
93      * Obtains the scheme for a host.
94      * Convenience method for <code>getScheme(host.getSchemeName())</pre>
95      *
96      * @param host      the host for which to obtain the scheme
97      *
98      * @return  the scheme for the given host, never <code>null</code>
99      *
100      * @throws IllegalStateException
101      *          if a scheme with the respective name is not registered
102      */
getScheme(HttpHost host)103     public synchronized final Scheme getScheme(HttpHost host) {
104         if (host == null) {
105             throw new IllegalArgumentException("Host must not be null.");
106         }
107         return getScheme(host.getSchemeName());
108     }
109 
110 
111     /**
112      * Obtains a scheme by name, if registered.
113      *
114      * @param name      the name of the scheme to look up (in lowercase)
115      *
116      * @return  the scheme, or
117      *          <code>null</code> if there is none by this name
118      */
get(String name)119     public synchronized final Scheme get(String name) {
120         if (name == null)
121             throw new IllegalArgumentException("Name must not be null.");
122 
123         // leave it to the caller to use the correct name - all lowercase
124         //name = name.toLowerCase();
125         Scheme found = registeredSchemes.get(name);
126         return found;
127     }
128 
129 
130     /**
131      * Registers a scheme.
132      * The scheme can later be retrieved by its name
133      * using {@link #getScheme(String) getScheme} or {@link #get get}.
134      *
135      * @param sch       the scheme to register
136      *
137      * @return  the scheme previously registered with that name, or
138      *          <code>null</code> if none was registered
139      */
register(Scheme sch)140     public synchronized final Scheme register(Scheme sch) {
141         if (sch == null)
142             throw new IllegalArgumentException("Scheme must not be null.");
143 
144         Scheme old = registeredSchemes.put(sch.getName(), sch);
145         return old;
146     }
147 
148 
149     /**
150      * Unregisters a scheme.
151      *
152      * @param name      the name of the scheme to unregister (in lowercase)
153      *
154      * @return  the unregistered scheme, or
155      *          <code>null</code> if there was none
156      */
unregister(String name)157     public synchronized final Scheme unregister(String name) {
158         if (name == null)
159             throw new IllegalArgumentException("Name must not be null.");
160 
161         // leave it to the caller to use the correct name - all lowercase
162         //name = name.toLowerCase();
163         Scheme gone = registeredSchemes.remove(name);
164         return gone;
165     }
166 
167 
168     /**
169      * Obtains the names of the registered schemes in their default order.
170      *
171      * @return  List containing registered scheme names.
172      */
getSchemeNames()173     public synchronized final List<String> getSchemeNames() {
174         return new ArrayList<String>(registeredSchemes.keySet());
175     }
176 
177     /**
178      * Populates the internal collection of registered {@link Scheme protocol schemes}
179      * with the content of the map passed as a parameter.
180      *
181      * @param map protocol schemes
182      */
setItems(final Map<String, Scheme> map)183     public synchronized void setItems(final Map<String, Scheme> map) {
184         if (map == null) {
185             return;
186         }
187         registeredSchemes.clear();
188         registeredSchemes.putAll(map);
189     }
190 
191 } // class SchemeRegistry
192 
193