1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header; 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.util.HashMap; 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.lang.reflect.Field; 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.lang.reflect.Modifier; 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/** 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author yanick.belanger 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic abstract class SIPHeaderNamesCache 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang{ 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang private static final HashMap lowercaseMap = new HashMap(); 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang static { 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang Field[] fields = SIPHeaderNames.class.getFields(); 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang for (int i = 0; i < fields.length; i++) { 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang Field field = fields[i]; 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (field.getType().equals(String.class) && Modifier.isStatic(field.getModifiers())) { 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String value = (String) field.get(null); 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String lowerCase = value.toLowerCase(); 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang lowercaseMap.put(value, lowerCase); 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang lowercaseMap.put(lowerCase, lowerCase); 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (IllegalAccessException e) { 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public static String toLowerCase(String headerName) { 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String lowerCase = (String) lowercaseMap.get(headerName); 32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (lowerCase == null) { 33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return headerName.toLowerCase(); 34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang else { 36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return lowerCase; 37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 40