Jersey - String not mapped to Json while using ObjectMappers function writeValueAsString succeeds

100 views Asked by At

I have the following function :

    protected final ResponseBuilderImpl RESPONSE_BUILDER_IMPL = new ResponseBuilderImpl(); // This is taken from jersey-core-1.11.jar



    protected Response buildAcceptedResponse(Object entity) {
        return buildResponse(entity, Response.Status.ACCEPTED);
    }



    protected Response buildResponse(Object entity, Response.Status status) {
    return RESPONSE_BUILDER_IMPL.status(status).entity(entity).build();
    }

I've tested several cases and noticed that only String is not working, and can't figure out why. I'm using postman, sending some GET requests

 switch (whatToTest){
        case 1: //working 
            log.info("testing case of Interger!! ");
            int x = 11;
            return buildAcceptedResponse(x);
        case 2: // getting as a response Unexpected 'e'
            String t = "testing string";
            log.info("testing case of String  !!");
            return buildAcceptedResponse(t);
        case 3: //working
            log.info("testing case of Boolean !! ");
            boolean y = true;
            return buildAcceptedResponse(y);
        case 4: //not working
            log.info("testing case of Object !! ");
            Object yy = "test object";
            return buildAcceptedResponse(yy);
        case 5: //working
            log.info("testing case of Object from type int !! ");
            Object yyy = 1565746;
            return buildAcceptedResponse(yyy);
        case 6: //working
            log.info("testing case of class with strings and ints!! ");
            TestClass e = new TestClass(4,new Integer(7),"test1", false);
            return buildAcceptedResponse(e);

         /// Adding - when using this case - it works fine
        case 7:
            log.info("mapping to object");
            ObjectMapper om = new ObjectMapper();
            Object res = null;
            String te = "test test";
            try {
                res  = om.writeValueAsString(te);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return buildAcceptedResponse(res);

I thought that I might have a problem with primitive types, but int and boolean are returning as they should. Also, a class containing a String inside - is also good.Can someone advise why only Strings are not working ?

Adding - My function uses :

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("test/test")
    public Response getTest(String someParam);
    // Response is sr311-api\0.11\jsr311-api-0.11-sources.jar
0

There are 0 answers