//
 // The code in the next two methods is based on the code in HttpUtils.java
 // from
 // javax.servlet.http. HttpUtils is deprecated - so I updated the methods to
 // be a bit smarter
 // and use Map instead of Hashtable
 //
 public static Map parseQueryString(final String s) {
   String[] valArray = null;
   if (s == null) {
     throw new IllegalArgumentException();
   }
   Map<String, String[]> rtn = new HashMap<String, String[]>();
   StringBuffer sb = new StringBuffer();
   String key;
   for (StringTokenizer st = new StringTokenizer(s, "&");
       st.hasMoreTokens();
       rtn.put(key, valArray)) { // $NON-NLS-1$
     String pair = st.nextToken();
     int pos = pair.indexOf('=');
     if (pos == -1) {
       throw new IllegalArgumentException();
     }
     key = HttpUtil.parseName(pair.substring(0, pos), sb);
     String val = HttpUtil.parseName(pair.substring(pos + 1, pair.length()), sb);
     if (rtn.containsKey(key)) {
       String[] oldVals = rtn.get(key);
       valArray = new String[oldVals.length + 1];
       System.arraycopy(oldVals, 0, valArray, 0, oldVals.length);
       valArray[oldVals.length] = val;
     } else {
       valArray = new String[1];
       valArray[0] = val;
     }
   }
   return rtn;
 }