Skip to content

Commit

Permalink
Fixes #1256
Browse files Browse the repository at this point in the history
  • Loading branch information
jfarcand committed Aug 29, 2013
1 parent d343e59 commit 1ac3b77
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1754,18 +1754,25 @@ public Map<String, AtmosphereHandlerWrapper> getAtmosphereHandlers() {
protected Map<String, String> configureQueryStringAsRequest(AtmosphereRequest request) {
Map<String, String> headers = new HashMap<String, String>();

Enumeration<String> e = request.getParameterNames();
String s;
while (e.hasMoreElements()) {
s = e.nextElement();
if (s.equalsIgnoreCase("Content-Type")) {
// Use the one set by the user first.
if (request.getContentType() == null ||
!request.getContentType().equalsIgnoreCase(request.getParameter(s))) {
request.contentType(request.getParameter(s));
try {
String qs = request.getQueryString();
if (qs != null && !qs.isEmpty()) {
String[] params = qs.split("&");
String[] s;
for (String p : params) {
s = p.split("=");
if (s[0].equalsIgnoreCase("Content-Type")) {
// Use the one set by the user first.
if (request.getContentType() == null ||
!request.getContentType().equalsIgnoreCase(s.length > 1 ? s[1] : "")) {
request.contentType(s.length > 1 ? s[1] : "");
}
}
headers.put(s[0], s.length > 1 ? s[1] : "");
}
}
headers.put(s, request.getParameter(s));
} catch (Exception ex) {
logger.error("Unable to parse query string", "");
}
logger.trace("Query String translated to headers {}", headers);
return headers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,18 @@ public String getPathTranslated() {
*/
@Override
public String getQueryString() {
return b.queryString != "" ? b.queryString : isNotNoOps() ? b.request.getQueryString() : "";
return b.queryString != "" ? b.queryString : isNotNoOps() ? b.request.getQueryString() : toQs();
}

private String toQs(){
StringBuilder q = new StringBuilder();
for (Map.Entry<String, String[]> e: b.queryStrings.entrySet()) {
for (String k : e.getValue()) {
q.append(e.getKey()).append("=").append(k).append("&");
}
}
q.deleteCharAt(q.length()-1);
return q.toString();
}

/**
Expand Down

0 comments on commit 1ac3b77

Please sign in to comment.