Author: veithen Date: Sat Jun 25 11:24:03 2011 New Revision: 1139523 URL: http://svn.apache.org/viewvc?rev=1139523&view=rev Log: AXIS2-5078: Merged r1139448 to the 1.6 branch.
Modified: axis/axis2/java/core/branches/1_6/ (props changed) axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java axis/axis2/java/core/branches/1_6/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java Propchange: axis/axis2/java/core/branches/1_6/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Jun 25 11:24:03 2011 @@ -1 +1 @@ -/axis/axis2/java/core/trunk:1070439,1072077,1072271,1072499,1072510,1078242,1081563,1081587,1081590,1082316,1082322,1082600,1082702,1082726,1082738,1083180,1083192,1083379,1083381,1083425,1083433,1083446,1084753,1085514,1087073,1088239,1088248-1088249,1088251,1088268,1091178,1091191,1099385,1099389,1100628,1101037,1103013,1103606,1103760,1128580,1128584,1128618,1128645,1130590,1131425,1134438,1134616,1136156,1136159,1137153,1137159,1138144,1138203 +/axis/axis2/java/core/trunk:1070439,1072077,1072271,1072499,1072510,1078242,1081563,1081587,1081590,1082316,1082322,1082600,1082702,1082726,1082738,1083180,1083192,1083379,1083381,1083425,1083433,1083446,1084753,1085514,1087073,1088239,1088248-1088249,1088251,1088268,1091178,1091191,1099385,1099389,1100628,1101037,1103013,1103606,1103760,1128580,1128584,1128618,1128645,1130590,1131425,1134438,1134616,1136156,1136159,1137153,1137159,1138144,1138203,1139448 Modified: axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java?rev=1139523&r1=1139522&r2=1139523&view=diff ============================================================================== --- axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java (original) +++ axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java Sat Jun 25 11:24:03 2011 @@ -32,7 +32,7 @@ public class QueryStringParser { * The position of the current parameter. */ private int paramBegin; - private int paramEnd; + private int paramEnd = -1; private int paramNameEnd; private String paramName; private String paramValue; @@ -55,17 +55,21 @@ public class QueryStringParser { */ public boolean next() { int len = queryString.length(); - if (paramEnd == len) { - return false; + while (true) { + if (paramEnd == len) { + return false; + } + paramBegin = paramEnd == -1 ? 0 : paramEnd+1; + int idx = queryString.indexOf('&', paramBegin); + paramEnd = idx == -1 ? len : idx; + if (paramEnd > paramBegin) { + idx = queryString.indexOf('=', paramBegin); + paramNameEnd = idx == -1 || idx > paramEnd ? paramEnd : idx; + paramName = null; + paramValue = null; + return true; + } } - paramBegin = paramEnd == 0 ? 0 : paramEnd+1; - int idx = queryString.indexOf('&', paramBegin); - paramEnd = idx == -1 ? len : idx; - idx = queryString.indexOf('=', paramBegin); - paramNameEnd = idx == -1 || idx > paramEnd ? paramEnd : idx; - paramName = null; - paramValue = null; - return true; } /** Modified: axis/axis2/java/core/branches/1_6/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/1_6/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java?rev=1139523&r1=1139522&r2=1139523&view=diff ============================================================================== --- axis/axis2/java/core/branches/1_6/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java (original) +++ axis/axis2/java/core/branches/1_6/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java Sat Jun 25 11:24:03 2011 @@ -78,4 +78,13 @@ public class QueryStringParserTest exten assertEquals("20% down", p.getValue()); assertFalse(p.next()); } + + // Regression test for AXIS2-5078 + public void testEmptyParameter() { + QueryStringParser p = new QueryStringParser("&name=value"); + assertTrue(p.next()); + assertEquals("name", p.getName()); + assertEquals("value", p.getValue()); + assertFalse(p.next()); + } }