1package gov.nist.javax.sip.header;
2
3import java.util.HashMap;
4import java.lang.reflect.Field;
5import java.lang.reflect.Modifier;
6
7/**
8 * @author yanick.belanger
9 */
10public abstract class SIPHeaderNamesCache
11{
12    private static final HashMap lowercaseMap = new HashMap();
13
14    static {
15        Field[] fields = SIPHeaderNames.class.getFields();
16        for (int i = 0; i < fields.length; i++) {
17            Field field = fields[i];
18            if (field.getType().equals(String.class) && Modifier.isStatic(field.getModifiers())) {
19                try {
20                    String value = (String) field.get(null);
21                    String lowerCase = value.toLowerCase();
22                    lowercaseMap.put(value, lowerCase);
23                    lowercaseMap.put(lowerCase, lowerCase);
24                } catch (IllegalAccessException e) {
25                }
26            }
27        }
28    }
29
30    public static String toLowerCase(String headerName) {
31        String lowerCase = (String) lowercaseMap.get(headerName);
32        if (lowerCase == null) {
33            return headerName.toLowerCase();
34        }
35        else {
36            return lowerCase;
37        }
38    }
39}
40