You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2014/05/28 16:15:40 UTC
svn commit: r1598019 -
/stanbol/branches/release-0.12/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
Author: rwesten
Date: Wed May 28 14:15:40 2014
New Revision: 1598019
URL: http://svn.apache.org/r1598019
Log:
fix for STANBOL-1350
Modified:
stanbol/branches/release-0.12/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
Modified: stanbol/branches/release-0.12/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java?rev=1598019&r1=1598018&r2=1598019&view=diff
==============================================================================
--- stanbol/branches/release-0.12/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java (original)
+++ stanbol/branches/release-0.12/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java Wed May 28 14:15:40 2014
@@ -19,7 +19,15 @@ package org.apache.stanbol.commons.httpq
import static org.apache.stanbol.commons.httpqueryheaders.Constants.HEARDER_PREFIX;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -55,17 +63,18 @@ public class QueryHeadersFilter implemen
return;
}
OverwriteableHeaderHttpServletRequest wrapped = null;
- Enumeration<String> paramNames = request.getParameterNames();
- while(paramNames.hasMoreElements()) {
- String param = paramNames.nextElement();
+
+ Map<String,List<String>> queryParams = parseQueryParams(httpRequest.getQueryString());
+ for(Entry<String,List<String>> entry : queryParams.entrySet()){
+ String param = entry.getKey();
if(param != null && param.startsWith(HEARDER_PREFIX) && param.length() > HEARDER_PREFIX.length()+1){
String header = param.substring(HEARDER_PREFIX.length());
- String[] values = request.getParameterValues(param);
- if(values != null && values.length > 0){
+ List<String> values = entry.getValue();
+ if(values != null && !values.isEmpty()){
if(wrapped == null ){ //lazzy initialisation
wrapped = new OverwriteableHeaderHttpServletRequest(httpRequest);
}
- wrapped.setHeader(header, values);
+ wrapped.setHeader(header, values.toArray(new String[values.size()]));
}
}
}
@@ -81,5 +90,35 @@ public class QueryHeadersFilter implemen
// Get properties parsed to the Filter
//filterConfig
}
-
+ private static Map<String, List<String>> parseQueryParams(String query){
+ if(query == null){
+ return Collections.emptyMap();
+ }
+ String[] params;
+ try {
+ params = URLDecoder.decode(query, "UTF-8").split("&");
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalStateException(e.getMessage(),e);
+ }
+ Map<String, List<String>> map = new HashMap<String, List<String>>();
+ for (String param : params) {
+ int idx = param.indexOf('=');
+ String name;
+ String value;
+ if(idx < 0 ){
+ name = param;
+ value = null;
+ } else {
+ name = param.substring(0, idx);
+ value = param.substring(idx+1);
+ }
+ List<String> values = map.get(name);
+ if(values == null){
+ values = new ArrayList<String>(4);
+ map.put(name, values);
+ }
+ values.add(value);
+ }
+ return map;
+ }
}