HttpRequestHandlerRegistry.java revision 069490a5ca2fd1988d29daf45d892f47ad665115
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java $ 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * $Revision: 630662 $ 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * $Date: 2008-02-24 11:40:51 -0800 (Sun, 24 Feb 2008) $ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ==================================================================== 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Licensed to the Apache Software Foundation (ASF) under one 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or more contributor license agreements. See the NOTICE file 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * distributed with this work for additional information 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * regarding copyright ownership. The ASF licenses this file 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to you under the Apache License, Version 2.0 (the 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * "License"); you may not use this file except in compliance 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * with the License. You may obtain a copy of the License at 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * software distributed under the License is distributed on an 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * KIND, either express or implied. See the License for the 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specific language governing permissions and limitations 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * under the License. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ==================================================================== 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * This software consists of voluntary contributions made by many 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * individuals on behalf of the Apache Software Foundation. For more 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * information on the Apache Software Foundation, please see 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <http://www.apache.org/>. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.apache.http.protocol; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import java.util.Map; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Maintains a map of HTTP request handlers keyed by a request URI pattern. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * {@link HttpRequestHandler} instances can be looked up by request URI 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * using the {@link HttpRequestHandlerResolver} interface.<br/> 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Patterns may have three formats: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <ul> 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <li><code>*</code></li> 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <li><code>*<uri></code></li> 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <li><code><uri>*</code></li> 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </ul> 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @version $Revision: 630662 $ 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class HttpRequestHandlerRegistry implements HttpRequestHandlerResolver { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private final UriPatternMatcher matcher; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public HttpRequestHandlerRegistry() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) matcher = new UriPatternMatcher(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void register(final String pattern, final HttpRequestHandler handler) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) matcher.register(pattern, handler); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void unregister(final String pattern) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) matcher.unregister(pattern); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setHandlers(final Map map) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) matcher.setHandlers(map); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public HttpRequestHandler lookup(final String requestURI) { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (HttpRequestHandler) matcher.lookup(requestURI); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @deprecated 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected boolean matchUriRequestPattern(final String pattern, final String requestUri) { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return matcher.matchUriRequestPattern(pattern, requestUri); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)