public KeyValuePair getUnique(KeyMatcher keyMatcher) throws NonUniqueException { KeyValuePairCollection possiblyNonUniquePairs = getAll(keyMatcher); if (possiblyNonUniquePairs.size() == 0) { return null; } if (possiblyNonUniquePairs.size() > 1) { throw new NonUniqueException("Multiple matching KeyValuePairs found for key <" + keyMatcher + ">."); } return possiblyNonUniquePairs.iterator().next(); }
@Override public Enumeration<String> getHeaderNames() { return Collections.enumeration(m_headers.keys()); }
@Override public String[] getParameterValues(String name) { List<String> paramValues = new ArrayList<String>(m_formParameters.values(KeyMatcher.ignoringCase(name))); String[] paramValuesArray = paramValues.toArray(new String[]{}); return paramValuesArray; }
@SuppressWarnings("unchecked") protected void initHeaders(HttpServletRequest request) { m_headers = new OrderedKeyValuePairCollection(); Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName = (String) headerNames.nextElement(); Enumeration<String> headerValues = request.getHeaders(headerName); while (headerValues.hasMoreElements()) { KeyValuePair pair = new KeyValuePair(headerName, headerValues.nextElement()); m_headers.add(pair); } } }
@Override public String getHeader(String name) { if (!m_headers.containsKey(KeyMatcher.ignoringCase(name))) { return null; } return m_headers.getUnique(KeyMatcher.ignoringCase(name)).getValue(); }
if (m_wssMimeType != null && !"".equals(m_wssMimeType)) { KeyValuePair newProxyRequestContentTypeHeader = new KeyValuePair(HttpHeaderAttribute.HEADER_NAME_CONTENTTYPE, m_wssMimeType); m_headers.updateUnique(CONTENTTYPE_HEADER_KEYMATCHER, newProxyRequestContentTypeHeader); } else { m_headers.delete(CONTENTTYPE_HEADER_KEYMATCHER);
@Override public boolean containsKey(KeyMatcher key) { return getAll(key).size() > 0; }
@Override public String getParameter(String name) { return m_formParameters.getUnique(KeyMatcher.ignoringCase(name)).getValue(); }
private KeyValuePairCollection parseFormParametersFromQueryString(String queryString) { KeyValuePairCollection formParameters = new OrderedKeyValuePairCollection(); Pattern kvpPattern = Pattern.compile("[^?\\&\\s]+"); Matcher kvpMatcher = kvpPattern.matcher(queryString); while (kvpMatcher.find()) { String kvpChunk = kvpMatcher.group(); String key; String value = ""; int indexOfEqualsSign = kvpChunk.indexOf('='); if (indexOfEqualsSign == -1) { key = kvpChunk; } else { key = kvpChunk.substring(0, indexOfEqualsSign); value = kvpChunk.substring(indexOfEqualsSign + 1); } try { key = URLDecoder.decode(key, "utf-8"); value = URLDecoder.decode(value, "utf-8"); } catch (UnsupportedEncodingException e) { throw new IllegalArgumentException("Could not url-decode servicerequest parameters", e); } KeyValuePair keyValuePair = new KeyValuePair(key, value); formParameters.add(keyValuePair); } return formParameters; }
public KeyValuePairCollection getAll(KeyMatcher keyMatcher) { KeyValuePairCollection pairsPerKey = new OrderedKeyValuePairCollection(); for (KeyValuePair kvp : m_pairs) { if (keyMatcher.matches(kvp.getKey())) { pairsPerKey.add(kvp); } } return pairsPerKey; }
@Override public Map getParameterMap() { List<String> paramKeys = new ArrayList<String>(m_formParameters.keys()); Map<String, String[]> resultMap = new HashMap<String, String[]>(paramKeys.size()); for (String paramkey : paramKeys) { resultMap.put(paramkey, getParameterValues(paramkey)); } return resultMap; }
@Override public Enumeration<String> getHeaders(String name) { return Collections.enumeration(m_headers.values(KeyMatcher.ignoringCase(name))); }
@Override public Enumeration getParameterNames() { return new IteratorEnumeration(m_formParameters.keys().iterator()); }