package org.jboss.resteasy.test.providers.plain.resource;

import org.jboss.logging.Logger;
import org.junit.Assert;

import javax.ws.rs.Path;
import javax.ws.rs.POST;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.Encoded;
import javax.ws.rs.core.MultivaluedMap;
import java.nio.charset.Charset;

@Path("/")
public class CharsetResource {

   private static Logger logger = Logger.getLogger(CharsetResource.class);

   @POST
   @Path("produces/string/utf16")
   @Consumes("text/plain")
   @Produces("text/plain;charset=UTF-16")
   public String stringProducesUtf16(String s) {
      logger.info("server default charset: " + Charset.defaultCharset());
      logger.info("s: " + s);
      return s;
   }

   @POST
   @Path("accepts/string/default")
   @Consumes("text/plain")
   public String stringAcceptsDefault(String s) {
      logger.info("s: " + s);
      return s;
   }

   @POST
   @Path("produces/foo/utf16")
   @Consumes("text/plain")
   @Produces("text/plain;charset=UTF-16")
   public CharsetFoo fooProducesUtf16(CharsetFoo foo) {
      logger.info("foo: " + foo.valueOf());
      return foo;
   }

   @POST
   @Path("accepts/foo/default")
   @Consumes("text/plain")
   @Produces("text/plain")
   public CharsetFoo fooAcceptsDefault(CharsetFoo foo) {
      logger.info("foo: " + foo.valueOf());
      return foo;
   }

   @POST
   @Path("accepts/form/default")
   @Produces("application/x-www-form-urlencoded")
   @Consumes("application/x-www-form-urlencoded")
   @Encoded
   public MultivaluedMap<String, String> formAcceptsDefault(MultivaluedMap<String, String> form) {
      Assert.assertTrue("Form doesn't contain the expected key", form.containsKey("title"));
      String s = form.getFirst("title");
      logger.info("s: " + s);
      return form;
   }
}
