001 /** 002 * 003 * Copyright 2004 Protique Ltd 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 **/ 018 package org.codehaus.activesoap; 019 020 import org.codehaus.activesoap.handler.QNameHandler; 021 022 import javax.xml.namespace.QName; 023 024 /** 025 * Provides a registry of handlers indexed by specific {@link QName} 026 * instances as well as providing a default handler which is used for processing 027 * SOAP body elements (or REST root elements) if no QName could be matched. 028 * 029 * @version $Revision: 1.6 $ 030 */ 031 public interface HandlerRegistry { 032 033 /** 034 * Returns the handler bound to the given {@link QName} 035 * or null if no handler is bound to this name 036 * 037 * @param name the name of the element to lookup the handler for 038 * @return the handler bound to the name or null if none is bound 039 */ 040 Handler getHandler(QName name); 041 042 /** 043 * Adds a new handler for the given namespace URI 044 * 045 * @param namepaceURI 046 * @param handler 047 */ 048 void addHandler(String namepaceURI, Handler handler); 049 050 051 /** 052 * Adds a new handle to a number of different namespace URIs (typically to handle 053 * multiple version URIs for the same handler) 054 * 055 * @param namespaceURIs 056 * @param handler 057 */ 058 void addHandler(String[] namespaceURIs, Handler handler); 059 060 /** 061 * Removes a handler from a number of different namespace URIs (typically to handle 062 * multiple version URIs for the same handler) 063 * 064 * @param namespaceURIs 065 * @param handler 066 */ 067 void removeHandler(String[] namespaceURIs, Handler handler); 068 069 /** 070 * Adds a new handler for the given {@link QName} 071 * 072 * @param name 073 * @param handler 074 */ 075 void addHandler(QName name, Handler handler); 076 077 /** 078 * Removes the handler associated with the given {@link QName} 079 * 080 * @param name 081 * @return 082 */ 083 Handler removeHandler(QName name); 084 085 /** 086 * Removes the handler associated with the given namespace URI 087 * 088 * @param namepaceURI 089 */ 090 Handler removeHandler(String namepaceURI); 091 092 /** 093 * Removes the handler associated with the given namespace URI 094 * 095 * @param namepaceURI 096 */ 097 Handler removeHandler(String namepaceURI, Handler handler); 098 099 /** 100 * Returns the handler that should be used to process the body elements 101 * which by default will be a {@link QNameHandler} which delegates to the 102 * handler for the current {@link QName} otherwise using the handler returned 103 * by {@link #getDefaultHandler()} 104 */ 105 Handler getBodyHandler(); 106 107 /** 108 * Sets the handler used to process body elements 109 * 110 * @param bodyHandler the new handler used to process body elements 111 */ 112 void setBodyHandler(Handler bodyHandler); 113 114 /** 115 * Returns the default handler which is used when processing 116 * body elements which have no {@link QName} matching handler. 117 */ 118 Handler getDefaultHandler(); 119 120 /** 121 * Sets the default handler used to process body elements 122 * if no handlers are found for a given {@link QName} 123 */ 124 void setDefaultHandler(Handler defaultHandler); 125 }