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;
      }
}
