Author: rwesten
Date: Wed May 28 14:32:48 2014
New Revision: 1598026
URL: http://svn.apache.org/r1598026
Log:
merged fixes for STANBOL-1349 and STANBOL-1350 to trunk
Modified:
stanbol/trunk/ (props changed)
stanbol/trunk/commons/ (props changed)
stanbol/trunk/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/GenericEnhancerUiResource.java
Propchange: stanbol/trunk/
------------------------------------------------------------------------------
Merged /stanbol/branches/release-0.12:r1598019
Propchange: stanbol/trunk/commons/
------------------------------------------------------------------------------
Merged /stanbol/branches/release-0.12/commons:r1598019
Modified:
stanbol/trunk/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java?rev=1598026&r1=1598025&r2=1598026&view=diff
==============================================================================
---
stanbol/trunk/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
(original)
+++
stanbol/trunk/commons/httpqueryheaders/src/main/java/org/apache/stanbol/commons/httpqueryheaders/impl/QueryHeadersFilter.java
Wed May 28 14:32:48 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;
+ }
}
Modified:
stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/GenericEnhancerUiResource.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/GenericEnhancerUiResource.java?rev=1598026&r1=1598025&r2=1598026&view=diff
==============================================================================
---
stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/GenericEnhancerUiResource.java
(original)
+++
stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/GenericEnhancerUiResource.java
Wed May 28 14:32:48 2014
@@ -129,6 +129,19 @@ public class GenericEnhancerUiResource e
@Context HttpHeaders headers) throws
EnhancementException,
IOException {
log.info("enhance from From: " + content);
+ if(content == null){ //(STANBOL-1349) parsing content using
+ // 'application/x-www-form-urlencoded' is not (officially)
supported.
+ // ... unofficial it can be done by adding the content as value to
the
+ // content parameter
+ throw new WebApplicationException(
+ Response.status(Response.Status.UNSUPPORTED_MEDIA_TYPE)
+ .entity("Parsing Content as
'application/x-www-form-urlencoded' is not supported!"
+ + "Please directly POST the content and set the
'Content-Type' "
+ + "header to the media type of the parsed content.
'application/"
+ + "octet-stream' SHOULD BE used if the media type of the
parsed "
+ + "content is not known.\n")
+ .build());
+ }
ContentItem ci = ciFactory.createContentItem(new
StringSource(content));
if(!buildAjaxview){ //rewrite to a normal EnhancementRequest
return enhanceFromData(ci, false, null, false, null, false, null,
headers);