/** Migrated Jersey 1.x {@code com.sun.jersey.impl.PathSegmentsHttpRequestTest}. */
  @Test
  public void testGetPathSegmentsGeneral() {
    final UriInfo ui = createContext("/p1;x=1;y=1/p2;x=2;y=2/p3;x=3;y=3", "GET");

    List<PathSegment> segments = ui.getPathSegments();
    assertEquals(3, segments.size());

    final Iterator<PathSegment> psi = segments.iterator();
    PathSegment segment;

    segment = psi.next();
    assertEquals("p1", segment.getPath());
    MultivaluedMap<String, String> m = segment.getMatrixParameters();
    assertEquals("1", m.getFirst("x"));
    assertEquals("1", m.getFirst("y"));

    segment = psi.next();
    assertEquals("p2", segment.getPath());
    m = segment.getMatrixParameters();
    assertEquals("2", m.getFirst("x"));
    assertEquals("2", m.getFirst("y"));

    segment = psi.next();
    assertEquals("p3", segment.getPath());
    m = segment.getMatrixParameters();
    assertEquals("3", m.getFirst("x"));
    assertEquals("3", m.getFirst("y"));
  }
  public static List<ServiceParameter> addMatrixParams(
      List<ServiceParameter> parameters, UriInfo ui, PathSegment ps) throws Exception {

    MultivaluedMap<String, String> params = ps.getMatrixParameters();

    if (params != null) {
      Query query = Query.fromQueryParams(params);
      if (query != null) {
        parameters = addParameter(parameters, query);
      }
    }

    return parameters;
  }
 @GET
 @Produces("text/plain")
 @Path("decoded/segment/matrix/{params}")
 public String getDecodedSegmentMatrixParam(@PathParam("params") PathSegment segment) {
   MultivaluedMap<String, String> map = segment.getMatrixParameters();
   Iterator<String> it = map.keySet().iterator();
   System.out.println("getDecodedSegmentMatrixParam(): decoded matrix params: ");
   StringBuilder builder = new StringBuilder();
   while (it.hasNext()) {
     String key = it.next();
     System.out.println("  " + key + "->" + map.getFirst(key));
     builder.append(map.getFirst(key));
   }
   return builder.toString();
 }
Exemple #4
0
    @Produces(MediaType.TEXT_PLAIN)
    @GET
    @Path("/matrix/{id}")
    public String matrixparamtest(@PathParam("id") PathSegment id) {
      StringBuffer sb = new StringBuffer();
      sb.append("matrix=");

      sb.append("/" + id.getPath());
      MultivaluedMap<String, String> matrix = id.getMatrixParameters();
      Set<String> keys = matrix.keySet();
      for (Object key : keys) {
        sb.append(";" + key.toString() + "=" + matrix.getFirst(key.toString()));
      }
      return sb.toString();
    }
  /** Migrated Jersey 1.x {@code com.sun.jersey.impl.PathSegmentsHttpRequestTest}. */
  @Test
  public void testGetPathSegmentsMultipleMatrix() {
    final UriInfo ui = createContext("/p;x=1;x=2;x=3", "GET");
    List<PathSegment> segments = ui.getPathSegments();
    assertEquals(1, segments.size());

    final Iterator<PathSegment> psi = segments.iterator();
    PathSegment segment;

    segment = psi.next();
    MultivaluedMap<String, String> m = segment.getMatrixParameters();
    List<String> values = m.get("x");
    for (int i = 0; i < m.size(); i++) {
      assertEquals(Integer.valueOf(i + 1).toString(), values.get(i));
    }
  }
 @GET
 @Produces("text/plain")
 public String get(
     @MatrixParam("firstname") String firstname,
     @MatrixParam("lastname") String lastname,
     @Context UriInfo uriInfo) {
   final List<PathSegment> pathSegents = uriInfo.getPathSegments();
   final PathSegment lastPathSegm = pathSegents.get(0);
   final MultivaluedMap<String, String> mp = lastPathSegm.getMatrixParameters();
   if (mp.isEmpty()) {
     final ResponseBuilder rb = Response.status(Status.NOT_FOUND);
     rb.entity("matrix parameters are empty");
     throw new WebApplicationException(rb.build());
   }
   return firstname + " " + lastname;
 }
  /** Migrated Jersey 1.x {@code com.sun.jersey.impl.PathSegmentsHttpRequestTest}. */
  @Test
  public void testGetPathSegmentsMultipleSlash() {
    final UriInfo ui = createContext("/p//p//p//", "GET");
    List<PathSegment> segments = ui.getPathSegments();
    assertEquals(7, segments.size());

    final Iterator<PathSegment> psi = segments.iterator();
    PathSegment segment;

    segment = psi.next();
    assertEquals("p", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());

    segment = psi.next();
    assertEquals("", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());

    segment = psi.next();
    assertEquals("p", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());

    segment = psi.next();
    assertEquals("", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());

    segment = psi.next();
    assertEquals("p", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());

    segment = psi.next();
    assertEquals("", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());

    segment = psi.next();
    assertEquals("", segment.getPath());
    assertEquals(0, segment.getMatrixParameters().size());
  }
 public static PathSegmentImpl decode(PathSegment segment) {
   PathSegmentImpl clone = new PathSegmentImpl();
   clone.path = UriEncoder.decodeString(segment.getPath());
   clone.matrixParams = UriEncoder.decodeMultivaluedMap(segment.getMatrixParameters(), true);
   return clone;
 }