Author: reto
Date: Sat Jun 19 21:01:44 2010
New Revision: 956296
URL: http://svn.apache.org/viewvc?rev=956296&view=rev
Log:
Added test and fix handling of uri-templates with non-trailing variable sections
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/URITemplate.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/TestPlainPathParam.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/URITemplate.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/URITemplate.java?rev=956296&r1=956295&r2=956296&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/URITemplate.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/util/URITemplate.java
Sat Jun 19 21:01:44 2010
@@ -69,19 +69,16 @@ public class URITemplate implements Comp
public URITemplate(String rawTemplateString) {
try {
- rawTemplateString =
TemplateEncoder.encode(rawTemplateString, "UTF-8");
+ this.templateString =
TemplateEncoder.encode(rawTemplateString, "UTF-8");
} catch (UriException ex) {
throw new RuntimeException(ex);
}
- if ((rawTemplateString.length() > 0) &&
(rawTemplateString.charAt(0) == '/')) {
- this.templateString = rawTemplateString.substring(1);
- } else {
- this.templateString = rawTemplateString;
- }
StringReader stringReader = new StringReader(templateString);
boolean readingVariableName = false;
StringWriter sectionWriter = new StringWriter();
+
try {
+ boolean ommitNextCharIfSlash = true;
for (int ch = stringReader.read(); ch != -1; ch =
stringReader
.read()) {
@@ -109,7 +106,12 @@ public class URITemplate implements Comp
capturingGroups++;
sectionWriter = new
StringWriter();
readingVariableName = false;
+ ommitNextCharIfSlash = true;
} else {
+ if (ommitNextCharIfSlash) {
+ ommitNextCharIfSlash =
false;
+ if (ch == '/') continue;
+ }
sectionWriter.write(ch);
}
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/TestPlainPathParam.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/TestPlainPathParam.java?rev=956296&r1=956295&r2=956296&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/TestPlainPathParam.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/TestPlainPathParam.java
Sat Jun 19 21:01:44 2010
@@ -42,7 +42,7 @@ public class TestPlainPathParam {
private static String handlePathParamValue1;
private static String handlePathParamValue2;
- @Path("/prefix/{value1}")
+ @Path("/prefix/{value1}/fix")
public static class MyResource {
@GET
@@ -63,7 +63,7 @@ public class TestPlainPathParam {
RequestURI requestURI =
EasyMock.createNiceMock(RequestURI.class);
String value1 = "foo";
String value2 = "bar";
-
expect(requestURI.getPath()).andReturn("/prefix/"+value1+"/"+value2).anyTimes();
+
expect(requestURI.getPath()).andReturn("/prefix/"+value1+"/fix/"+value2).anyTimes();
expect(requestMock.getRequestURI()).andReturn(requestURI).anyTimes();
replay(requestMock);
replay(requestURI);
@@ -83,7 +83,7 @@ public class TestPlainPathParam {
RequestURI requestURI =
EasyMock.createNiceMock(RequestURI.class);
String value1 = "f#o";
String value2 = "b/a/r";
-
expect(requestURI.getPath()).andReturn("/prefix/"+URLEncoder.encode(value1,"utf-8")+"/"+URLEncoder.encode(value2,
"utf-8")).anyTimes();
+
expect(requestURI.getPath()).andReturn("/prefix/"+URLEncoder.encode(value1,"utf-8")+"/fix/"+URLEncoder.encode(value2,
"utf-8")).anyTimes();
expect(requestMock.getRequestURI()).andReturn(requestURI).anyTimes();
replay(requestMock);
replay(requestURI);