package org.jboss.resteasy.test.core.encoding.resource; import org.jboss.logging.Logger; import javax.ws.rs.Consumes; import javax.ws.rs.Encoded; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.MatrixParam; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.PathSegment; import java.util.Iterator; @Path("/") public class ParameterEncodingResource { private static Logger logger = Logger.getLogger(ParameterEncodingResource.class); @GET @Produces("text/plain") @Path("encoded/pathparam/{pathParam}") public String getEncodedPathParam(@Encoded @PathParam("pathParam") String pathParam) { logger.info("getEncodedPathParam(): encoded: " + pathParam); return pathParam; } @GET @Produces("text/plain") @Path("decoded/pathparam/{pathParam}") public String getDecodedPathParam(@PathParam("pathParam") String pathParam) { logger.info("getDecodedPathParam(): decoded: " + pathParam); return pathParam; } @GET @Produces("text/plain") @Path("encoded/matrix") public String getEncodedMatrixParam(@Encoded @MatrixParam("m") String matrixParam) { logger.info("getEncodedMatrixParam(): encoded: " + matrixParam); return matrixParam; } @GET @Produces("text/plain") @Path("decoded/matrix") public String getDecodedMatrixParam(@MatrixParam("m") String matrixParam) { logger.info("getDecodedMatrixParam(): decoded: " + matrixParam); return matrixParam; } @GET @Produces("text/plain") @Path("encoded/query") public String getEncodedQueryParam(@Encoded @QueryParam("m") String queryParam) { logger.info("getEncodedQueryParam(): encoded: " + queryParam); return queryParam; } @GET @Produces("text/plain") @Path("decoded/query") public String getDecodedQueryParam(@QueryParam("m") String queryParam) { logger.info("getDecodedQueryParam(): decoded: " + queryParam); return queryParam; } @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces("text/plain") @Path("encoded/form") public String getEncodedFormParam(@Encoded @FormParam("f") String formParam) { logger.info("getEncodedFormParamPost(): encoded: " + formParam); return formParam; } @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces("text/plain") @Path("decoded/form") public String getDecodedFormParam(@FormParam("f") String formParam) { logger.info("getDecodedFormParamPost(): decoded: " + formParam); return formParam; } @GET @Produces("text/plain") @Path("encoded/segment/{pathParam}") public String getEncodedSegmentPathParam(@Encoded @PathParam("pathParam") PathSegment segment) { logger.info("getEncodedSegmentPathParam(): encoded segment: " + segment.getPath()); return segment.getPath(); } @GET @Produces("text/plain") @Path("decoded/segment/{pathParam}") public String getDecodedSegmentPathParam(@PathParam("pathParam") PathSegment segment) { logger.info("getDecodedSegmentPathParam(): decoded segment: " + segment.getPath()); return segment.getPath(); } @GET @Produces("text/plain") @Path("encoded/segment/matrix/{params}") public String getEncodedSegmentMatrixParam(@Encoded @PathParam("params") PathSegment segment) { MultivaluedMap<String, String> map = segment.getMatrixParameters(); Iterator<String> it = map.keySet().iterator(); logger.info("getEncodedSegmentMatrixParam(): encoded matrix params: "); StringBuilder builder = new StringBuilder(); while (it.hasNext()) { String key = it.next(); logger.info(" " + key + "->" + map.getFirst(key)); builder.append(map.getFirst(key)); } return builder.toString(); } @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(); logger.info("getDecodedSegmentMatrixParam(): decoded matrix params: "); StringBuilder builder = new StringBuilder(); while (it.hasNext()) { String key = it.next(); logger.info(" " + key + "->" + map.getFirst(key)); builder.append(map.getFirst(key)); } return builder.toString(); } }