Package org.jboss.resteasy.test.providers.multipart

Source Code of org.jboss.resteasy.test.providers.multipart.InputPartDefaultContentTypeEncodingOverwriteTest$MyService

package org.jboss.resteasy.test.providers.multipart;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;

import junit.framework.Assert;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.jboss.resteasy.annotations.interception.ServerInterceptor;
import org.jboss.resteasy.core.ResourceMethod;
import org.jboss.resteasy.core.ServerResponse;
import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.jboss.resteasy.plugins.providers.multipart.MultipartInput;
import org.jboss.resteasy.spi.Failure;
import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
import org.jboss.resteasy.test.BaseResourceTest;
import org.jboss.resteasy.test.TestPortProvider;
import org.junit.Before;
import org.junit.Test;

/**
* @author Attila Kiraly
*/
public class InputPartDefaultContentTypeEncodingOverwriteTest extends
    BaseResourceTest {
  protected static final String TEXT_PLAIN_WITH_CHARSET_UTF_8 = "text/plain; charset=UTF-8";

  @Path("/mime")
  public static class MyService {

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.TEXT_PLAIN)
    public String sendDefaultContentType(MultipartInput input) {
      return input.getParts().get(0).getMediaType().toString();
    }
  }

  @Provider
  @ServerInterceptor
  public static class ContentTypeSetterPreProcessorInterceptor implements
      PreProcessInterceptor {

    public ServerResponse preProcess(HttpRequest request,
        ResourceMethod method) throws Failure, WebApplicationException {
      request.setAttribute(InputPart.DEFAULT_CONTENT_TYPE_PROPERTY,
          TEXT_PLAIN_WITH_CHARSET_UTF_8);
      return null;
    }

  }

  @Before
  public void setUp() throws Exception {
    dispatcher.getRegistry().addPerRequestResource(MyService.class);
    dispatcher.getProviderFactory().registerProvider(
        ContentTypeSetterPreProcessorInterceptor.class, false);
  }

  private static final String TEST_URI = TestPortProvider.generateURL("");

  @Test
  public void testContentType() throws Exception {
    String message = "--boo\r\n"
        + "Content-Disposition: form-data; name=\"foo\"\r\n"
        + "Content-Transfer-Encoding: 8bit\r\n\r\n" + "bar\r\n"
        + "--boo--\r\n";
    HttpClient httpClient = new HttpClient();
    PostMethod postMethod = new PostMethod(TEST_URI + "/mime");
    postMethod.setRequestEntity(new ByteArrayRequestEntity(message
        .getBytes("utf-8"), "multipart/form-data; boundary=boo"));
    httpClient.executeMethod(postMethod);
    String response = postMethod.getResponseBodyAsString();
    Assert.assertEquals("Status code is wrong.", 20, postMethod
        .getStatusCode() / 10);
    Assert.assertEquals("Response text is wrong", MediaType
        .valueOf(TEXT_PLAIN_WITH_CHARSET_UTF_8), MediaType
        .valueOf(response));
  }
}
TOP

Related Classes of org.jboss.resteasy.test.providers.multipart.InputPartDefaultContentTypeEncodingOverwriteTest$MyService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.