package org.jboss.resteasy.test.resource.path.resource;

import org.junit.Assert;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.PathSegment;

@Path("/")
public class MultipleMatrixSegmentsResource {
   private static final String ERROR_MESSAGE = "Wrong request data";

   @GET
   @Path("/{parent:.*}/children/{child:.*}")
   public String get(@PathParam("parent") PathSegment parent, @PathParam("child") PathSegment child) {
      Assert.assertEquals(ERROR_MESSAGE, "bill", parent.getMatrixParameters().getFirst("name"));
      Assert.assertEquals(ERROR_MESSAGE, "111", parent.getMatrixParameters().getFirst("ssn"));
      Assert.assertEquals(ERROR_MESSAGE, "skippy", child.getMatrixParameters().getFirst("name"));
      Assert.assertEquals(ERROR_MESSAGE, "3344", child.getMatrixParameters().getFirst("ssn"));
      return "content";
   }

   @GET
   @Path("/stuff/{segments:.*}/first")
   public String getFirst(@PathParam("segments") PathSegment[] segments) {
      Assert.assertNotNull(ERROR_MESSAGE, segments);
      Assert.assertEquals(ERROR_MESSAGE, segments.length, 2);
      Assert.assertEquals(ERROR_MESSAGE, segments[0].getMatrixParameters().getFirst("name"), "first");
      Assert.assertEquals(ERROR_MESSAGE, segments[1].getMatrixParameters().getFirst("name"), "second");
      return "stuff";
   }
}
