001: /*
002: * Copyright (c) 2000, Jacob Smullyan.
003: *
004: * This is part of SkunkDAV, a WebDAV client. See http://skunkdav.sourceforge.net/
005: * for the latest version.
006: *
007: * SkunkDAV is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License as published
009: * by the Free Software Foundation; either version 2, or (at your option)
010: * any later version.
011: *
012: * SkunkDAV is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with SkunkDAV; see the file COPYING. If not, write to the Free
019: * Software Foundation, 59 Temple Place - Suite 330, Boston, MA
020: * 02111-1307, USA.
021: */
022:
023: package org.skunk.dav.client;
024:
025: import java.util.*;
026:
027: /**
028: * a HashMap subclass in which keys, if they are strings,
029: * are coerced into uppercase.
030: */
031: public class HeaderMap extends HashMap {
032:
033: public HeaderMap() {
034: super ();
035: }
036:
037: public Object put(Object key, Object value) {
038: //disallow nulls as keys or values, to save bother
039: if (key == null || value == null)
040: return null;
041: return super .put(getUpperCaseObject(key), value);
042: }
043:
044: public Object get(Object key) {
045: return super .get(getUpperCaseObject(key));
046: }
047:
048: private Object getUpperCaseObject(Object o) {
049: if (o instanceof String) {
050: return ((String) o).toUpperCase().trim();
051: }
052: return o;
053: }
054:
055: public boolean containsKey(Object key) {
056: return super .containsKey(getUpperCaseObject(key));
057: }
058:
059: public Object remove(Object key) {
060: return super .remove(getUpperCaseObject(key));
061: }
062:
063: public String toString() {
064: StringBuffer sb = new StringBuffer();
065: Set daSet = keySet();
066: for (Iterator it = daSet.iterator(); it.hasNext();) {
067: Object key = it.next();
068: sb.append(key);
069: sb.append(": ");
070: sb.append(get(key));
071: sb.append(DAVConstants.CRLF);
072: }
073: return sb.toString();
074: }
075:
076: public String getHeader(String headerKey) {
077: if (containsKey(headerKey))
078: return get(headerKey).toString();
079: return null;
080: }
081:
082: //convenience function
083: public static String getHeader(String headerKey, Map headerMap) {
084: if (headerMap instanceof HeaderMap)
085: return ((HeaderMap) headerMap).getHeader(headerKey);
086: return null;
087: }
088: }
089:
090: /* $Log: HeaderMap.java,v $
091: /* Revision 1.7 2000/12/19 22:06:15 smulloni
092: /* adding documentation.
093: /*
094: /* Revision 1.6 2000/12/03 23:53:25 smulloni
095: /* added license and copyright preamble to java files.
096: /*
097: /* Revision 1.5 2000/11/09 23:34:52 smullyan
098: /* log added to every Java file, with the help of python. Lock stealing
099: /* implemented, and treatment of locks made more robust.
100: /* */
|