/** * Copyright (C) 2009-2012 the original author or authors. * See the notice.md file distributed with this work for additional * information regarding copyright ownership. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.fusesource.restygwt.client.basic; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import org.fusesource.restygwt.client.Method; import org.fusesource.restygwt.client.MethodCallback; import org.fusesource.restygwt.client.Resource; import org.fusesource.restygwt.client.RestService; import org.fusesource.restygwt.client.RestServiceProxy; import com.google.gwt.core.client.GWT; import com.google.gwt.junit.client.GWTTestCase; /** * * * @author mkristian * */ public class PathParamTestGwt extends GWTTestCase { private TestRestService service; @Override public String getModuleName() { return "org.fusesource.restygwt.EchoTestGwt"; } static interface TestRestService extends RestService { @Path("/get") void get(MethodCallback<Echo> callback); @Path("/get/{id}") void get(@PathParam(value = "id") int i, MethodCallback<Echo> callback); @Path("/get/{id}") void get(@PathParam(value = "id") Integer i, MethodCallback<Echo> callback); @Path("/get/{id}") void get(@PathParam(value = "id") String i, MethodCallback<Echo> callback); @GET @Path("/get/{id : \\d+}") void getRegex(@PathParam(value = "id") Integer i, MethodCallback<Echo> callback); @GET @Path("/get/{id : \\d+}/things/{thing: \\d+}") void getRegexMultiParams(@PathParam(value = "id") Integer i, @PathParam(value = "thing") Integer t, MethodCallback<Echo> callback); @GET @Path("{url}") void absolute(@PathParam(value = "url") String u, MethodCallback<Echo> callback); } private MethodCallback<Echo> echoMethodCallback( final String path ){ return new MethodCallback<Echo>() { @Override public void onSuccess(Method method, Echo response) { assertEquals(response.path, path); finishTest(); } @Override public void onFailure(Method method, Throwable exception) { fail(); } }; } @Override protected void gwtSetUp() throws Exception { super.gwtSetUp(); service = GWT.create(TestRestService.class); Resource resource = new Resource(GWT.getModuleBaseURL() + "echo"); ((RestServiceProxy) service).setResource(resource); } public void testGet() { service.get(echoMethodCallback("/get")); delayTestFinish(10000); } public void testGetWithInteger() { service.get(new Integer(2), echoMethodCallback("/get/2")); delayTestFinish(10000); } public void testGetWithNull() { service.get((String) null, echoMethodCallback("/get/null")); delayTestFinish(10000); } public void testGetWithStringContainingSlashes() { service.get("a\\b/c&", echoMethodCallback("/get/a\\b/c&") ); delayTestFinish(10000); } public void testGetWithStringContainingSpaces() { service.get("a b c", echoMethodCallback("/get/a b c") ); delayTestFinish(10000); } public void testGetWithInt() { service.get(123, echoMethodCallback("/get/123")); delayTestFinish(10000); } public void testGetWithIntRegex() { service.getRegex(123, echoMethodCallback("/get/123")); delayTestFinish(10000); } public void testGetWithIntsRegex() { service.getRegexMultiParams(123, 456, echoMethodCallback("/get/123/things/456")); delayTestFinish(10000); } /** * Ensure that path parameters that are absolute URLs are URL encoded. */ public void testAbsolute() { String absoluteUrl = "http://host:port/echo/somewhere"; service.absolute(absoluteUrl, echoMethodCallback("/" + absoluteUrl) ); delayTestFinish(10000); } }