package org.jboss.resteasy.test.resource.param;
import javax.ws.rs.GET;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;
import javax.ws.rs.client.ClientBuilder;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
import org.jboss.resteasy.utils.PortProviderUtil;
import org.jboss.resteasy.utils.TestUtil;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
@RunAsClient
public class MatrixPathParamTest
{
@Deployment
public static Archive<?> deploy() throws Exception {
WebArchive war = TestUtil.prepareArchive(MatrixPathParamTest.class.getSimpleName());
return TestUtil.finishContainerPrepare(war, null, TestResourceServer.class, TestSubResourceServer.class);
}
private String generateBaseUrl() {
return PortProviderUtil.generateBaseUrl(MatrixPathParamTest.class.getSimpleName());
}
@Path("/")
static public class TestResourceServer
{
@Path("matrix1")
public TestSubResourceServer getM1(@MatrixParam("m1") String m1)
{
return new TestSubResourceServer(m1);
}
}
static public class TestSubResourceServer
{
protected String m1;
TestSubResourceServer(String m1)
{
this.m1 = m1;
}
@GET
@Path("matrix2")
public String getM2(@MatrixParam("m2") String m2)
{
return m1 + m2;
}
}
@Path("/")
public interface TestInterfaceClient
{
@Path("matrix1")
public TestSubInterfaceClient getM1(@MatrixParam("m1") String m1);
}
public interface TestSubInterfaceClient
{
@GET
@Path("matrix2")
public String getM2(@MatrixParam("m2") String m2);
}
@Test
public void testSingleAcceptHeader() throws Exception
{
ResteasyWebTarget target = (ResteasyWebTarget) ClientBuilder.newClient().target(generateBaseUrl());
TestInterfaceClient proxy = target.proxy(TestInterfaceClient.class);
String result = proxy.getM1("a").getM2("b");
Assert.assertEquals("ab", result);
}
}