1 /* 2 * Conditions Of Use 3 * 4 * This software was developed by employees of the National Institute of 5 * Standards and Technology (NIST), an agency of the Federal Government. 6 * Pursuant to title 15 Untied States Code Section 105, works of NIST 7 * employees are not subject to copyright protection in the United States 8 * and are considered to be in the public domain. As a result, a formal 9 * license is not needed to use the software. 10 * 11 * This software is provided by NIST as a service and is expressly 12 * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 13 * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 14 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 15 * AND DATA ACCURACY. NIST does not warrant or make any representations 16 * regarding the use of the software or the results thereof, including but 17 * not limited to the correctness, accuracy, reliability or usefulness of 18 * the software. 19 * 20 * Permission to use this software is contingent upon your acceptance 21 * of the terms of this agreement 22 * 23 * . 24 * 25 */ 26 package gov.nist.javax.sip.header; 27 import gov.nist.core.*; 28 import gov.nist.javax.sip.header.ims.*; 29 30 import java.util.Hashtable; 31 32 /** 33 * A mapping class that returns the SIPHeader for a given header name. 34 * Add new classes to this map if you are implementing new header types if 35 * you want some of the introspection based methods to work. 36 * @version 1.2 $Revision: 1.11 $ $Date: 2009/07/17 18:57:32 $ 37 * @since 1.1 38 */ 39 public class NameMap implements SIPHeaderNames, PackageNames { 40 static Hashtable nameMap; 41 static { 42 initializeNameMap(); 43 } 44 45 protected static void putNameMap(String headerName, String className) { 46 nameMap.put( 47 headerName.toLowerCase(), 48 className); 49 } 50 51 public static Class getClassFromName(String headerName) { 52 String className = (String) nameMap.get(headerName.toLowerCase()); 53 if (className == null) 54 return null; 55 else { 56 try { 57 return Class.forName(className); 58 } catch (ClassNotFoundException ex) { 59 return null; 60 } 61 } 62 } 63 64 /** add an extension header to this map. 65 *@param headerName is the extension header name. 66 *@param className is the fully qualified class name that implements 67 * the header (does not have to belong to the nist-sip package). 68 * Use this if you want to use the introspection-based methods. 69 */ 70 71 public static void addExtensionHeader( 72 String headerName, 73 String className) { 74 nameMap.put(headerName.toLowerCase(), className); 75 } 76 77 private static void initializeNameMap() { 78 nameMap = new Hashtable(); 79 putNameMap(MinExpires.NAME, MinExpires.class.getName()); // 1 80 81 putNameMap(ErrorInfo.NAME, ErrorInfo.class.getName()); // 2 82 83 putNameMap(MimeVersion.NAME, MimeVersion.class.getName()); // 3 84 85 putNameMap(InReplyTo.NAME, InReplyTo.class.getName()); // 4 86 87 putNameMap(Allow.NAME, Allow.class.getName()); // 5 88 89 putNameMap(ContentLanguage.NAME, ContentLanguage.class.getName()); // 6 90 91 putNameMap(CALL_INFO, CallInfo.class.getName()); //7 92 93 putNameMap(CSEQ, CSeq.class.getName()); //8 94 95 putNameMap(ALERT_INFO, AlertInfo.class.getName()); //9 96 97 putNameMap(ACCEPT_ENCODING, AcceptEncoding.class.getName()); //10 98 99 putNameMap(ACCEPT, Accept.class.getName()); //11 100 101 putNameMap(ACCEPT_LANGUAGE, AcceptLanguage.class.getName()); //12 102 103 putNameMap(RECORD_ROUTE, RecordRoute.class.getName()); //13 104 105 putNameMap(TIMESTAMP, TimeStamp.class.getName()); //14 106 107 putNameMap(TO, To.class.getName()); //15 108 109 putNameMap(VIA, Via.class.getName()); //16 110 111 putNameMap(FROM, From.class.getName()); //17 112 113 putNameMap(CALL_ID, CallID.class.getName()); //18 114 115 putNameMap(AUTHORIZATION, Authorization.class.getName()); //19 116 117 putNameMap(PROXY_AUTHENTICATE, ProxyAuthenticate.class.getName()); //20 118 119 putNameMap(SERVER, Server.class.getName()); //21 120 121 putNameMap(UNSUPPORTED, Unsupported.class.getName()); //22 122 123 putNameMap(RETRY_AFTER, RetryAfter.class.getName()); //23 124 125 putNameMap(CONTENT_TYPE, ContentType.class.getName()); //24 126 127 putNameMap(CONTENT_ENCODING, ContentEncoding.class.getName()); //25 128 129 putNameMap(CONTENT_LENGTH, ContentLength.class.getName()); //26 130 131 putNameMap(ROUTE, Route.class.getName()); //27 132 133 putNameMap(CONTACT, Contact.class.getName()); //28 134 135 putNameMap(WWW_AUTHENTICATE, WWWAuthenticate.class.getName()); //29 136 137 putNameMap(MAX_FORWARDS, MaxForwards.class.getName()); //30 138 139 putNameMap(ORGANIZATION, Organization.class.getName()); //31 140 141 putNameMap(PROXY_AUTHORIZATION, ProxyAuthorization.class.getName()); //32 142 143 putNameMap(PROXY_REQUIRE, ProxyRequire.class.getName()); //33 144 145 putNameMap(REQUIRE, Require.class.getName()); //34 146 147 putNameMap(CONTENT_DISPOSITION, ContentDisposition.class.getName()); //35 148 149 putNameMap(SUBJECT, Subject.class.getName()); //36 150 151 putNameMap(USER_AGENT, UserAgent.class.getName()); //37 152 153 putNameMap(WARNING, Warning.class.getName()); //38 154 155 putNameMap(PRIORITY, Priority.class.getName()); //39 156 157 putNameMap(DATE, SIPDateHeader.class.getName()); //40 158 159 putNameMap(EXPIRES, Expires.class.getName()); //41 160 161 putNameMap(SUPPORTED, Supported.class.getName()); //42 162 163 putNameMap(REPLY_TO, ReplyTo.class.getName()); // 43 164 165 putNameMap(SUBSCRIPTION_STATE, SubscriptionState.class.getName()); //44 166 167 putNameMap(EVENT, Event.class.getName()); //45 168 169 putNameMap(ALLOW_EVENTS, AllowEvents.class.getName()); //46 170 171 172 // pmusgrave - extensions 173 putNameMap(REFERRED_BY, "ReferredBy"); 174 putNameMap(SESSION_EXPIRES, "SessionExpires"); 175 putNameMap(MIN_SE, "MinSE"); 176 putNameMap(REPLACES, "Replaces"); 177 // jean deruelle 178 putNameMap(JOIN, "Join"); 179 180 181 // IMS Specific headers. 182 183 putNameMap(PAccessNetworkInfoHeader.NAME, PAccessNetworkInfo.class.getName()); 184 185 putNameMap(PAssertedIdentityHeader.NAME, PAssertedIdentity.class.getName()); 186 187 putNameMap(PAssociatedURIHeader.NAME, PAssociatedURI.class.getName()); 188 189 putNameMap(PCalledPartyIDHeader.NAME, PCalledPartyID.class.getName()); 190 191 putNameMap(PChargingFunctionAddressesHeader.NAME, PChargingFunctionAddresses.class.getName()); 192 193 putNameMap(PChargingVectorHeader.NAME,PChargingVector.class.getName()); 194 195 putNameMap(PMediaAuthorizationHeader.NAME,PMediaAuthorization.class.getName()); 196 197 putNameMap(Path.NAME, Path.class.getName()); 198 199 putNameMap(PPreferredIdentity.NAME, PPreferredIdentity.class.getName()); 200 201 putNameMap(Privacy.NAME,Privacy.class.getName()); 202 203 putNameMap(ServiceRoute.NAME, ServiceRoute.class.getName()); 204 205 putNameMap(PVisitedNetworkID.NAME, PVisitedNetworkID.class.getName()); 206 207 208 209 } 210 } 211