You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/06/18 16:06:50 UTC
svn commit: r956007 - in
/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src:
main/java/org/apache/clerezza/triaxrs/parameterinjectors/
test/java/org/apache/clerezza/triaxrs/blackbox/
Author: reto
Date: Fri Jun 18 14:06:50 2010
New Revision: 956007
URL: http://svn.apache.org/viewvc?rev=956007&view=rev
Log:
CLEREZZA-240: decoding PathParams
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/parameterinjectors/PathParameterInjector.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/parameterinjectors/PathParameterInjector.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/parameterinjectors/PathParameterInjector.java?rev=956007&r1=956006&r2=956007&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/parameterinjectors/PathParameterInjector.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/parameterinjectors/PathParameterInjector.java Fri Jun 18 14:06:50 2010
@@ -29,6 +29,7 @@ import javax.ws.rs.ext.Providers;
import org.apache.clerezza.triaxrs.WebRequest;
import org.apache.clerezza.triaxrs.util.PathSegmentImpl;
+import org.apache.clerezza.triaxrs.util.uri.UriComponent;
/**
*
@@ -41,25 +42,38 @@ public class PathParameterInjector imple
Providers providers, Type parameterType, PathParam annotation,
final boolean encodingDisabled, String defaultValue)
throws UnsupportedFieldType {
-
+
//TODO should allow multiple path-segments with same name
String value = pathParam.get(annotation.value());
List<String> stringValues = new ArrayList<String>();
- if(value == null || value.equals("") && defaultValue != null){
+ if (value == null || value.equals("") && defaultValue != null) {
value = defaultValue;
}
+
stringValues.add(value);
return (T) ConversionUtil.convert(stringValues, parameterType,
new ConversionUtil.Convertor<PathSegment>() {
- @Override
- public PathSegment convert(String string) {
- if (string == null) return null;
- return PathSegmentImpl.parse(string, encodingDisabled);
- }
-
- });
+ @Override
+ public PathSegment convert(String string) {
+ if (string == null) {
+ return null;
+
+ }
+ return PathSegmentImpl.parse(string, encodingDisabled);
+ }
+ },
+ new ConversionUtil.Convertor<String>() {
+
+ @Override
+ public String convert(String string) {
+ if (encodingDisabled) {
+ return string;
+ } else {
+ return UriComponent.decode(string, UriComponent.Type.PATH_SEGMENT);
+ }
+ }
+ });
}
-
}
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=956007&r1=956006&r2=956007&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 Fri Jun 18 14:06:50 2010
@@ -18,6 +18,7 @@
*/
package org.apache.clerezza.triaxrs.blackbox;
+import java.net.URLEncoder;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertEquals;
@@ -53,10 +54,9 @@ public class TestPlainPathParam {
}
@Test
- public void testQueryParam() throws Exception {
+ public void testPathParam() throws Exception {
JaxRsHandler handler = HandlerCreator.getHandler(MyResource.class);
-
Request requestMock = EasyMock.createNiceMock(Request.class);
Response responseMock = EasyMock.createNiceMock(Response.class);
expect(requestMock.getMethod()).andReturn(Method.GET).anyTimes();
@@ -71,6 +71,26 @@ public class TestPlainPathParam {
handler.handle(requestMock, responseMock);
assertEquals(value1, handlePathParamValue1);
assertEquals(value2, handlePathParamValue2);
+ }
+
+ @Test
+ public void testPathParamDecoding() throws Exception {
+
+ JaxRsHandler handler = HandlerCreator.getHandler(MyResource.class);
+ Request requestMock = EasyMock.createNiceMock(Request.class);
+ Response responseMock = EasyMock.createNiceMock(Response.class);
+ expect(requestMock.getMethod()).andReturn(Method.GET).anyTimes();
+ 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(requestMock.getRequestURI()).andReturn(requestURI).anyTimes();
+ replay(requestMock);
+ replay(requestURI);
+ replay(responseMock);
+ handler.handle(requestMock, responseMock);
+ assertEquals(value1, handlePathParamValue1);
+ assertEquals(value2, handlePathParamValue2);
}
}