Package org.apache.wink.providers.jackson.internal

Source Code of org.apache.wink.providers.jackson.internal.JacksonPOJOTest$Person

/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*   http://www.apache.org/licenses/LICENSE-2.0
*  Unless required by applicable law or agreed to in writing,
*  software distributed under the License is distributed on an
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
*  KIND, either express or implied.  See the License for the
*  specific language governing permissions and limitations
*  under the License.
*******************************************************************************/

package org.apache.wink.providers.jackson.internal;

import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import org.apache.wink.providers.json.JSONUtils;
import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
import org.apache.wink.test.mock.MockRequestConstructor;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

public class JacksonPOJOTest extends MockServletInvocationTest {

    @Override
    protected Class<?>[] getClasses() {
        return new Class<?>[] {POJOResource.class};
    }

    @Override
    protected Object[] getSingletons() {
        JacksonJsonProvider jacksonProvider = new JacksonJsonProvider();
        return new Object[] {jacksonProvider};
    }

    @Path("/jackson/pojo")
    public static class POJOResource {

        @GET
        @Produces("application/json")
        @Path("person")
        public Person getPerson() {
            Person p = new Person();
            p.setFirst("first");
            p.setLast("last");
            return p;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("person")
        public Person postPerson(Person p) {
            return p;
        }

        @GET
        @Produces("application/json")
        @Path("string")
        public List<String> getCollection() {
            List<String> list = new ArrayList<String>();
            list.add("string1");
            list.add("");
            list.add("string3");
            return list;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("string")
        public List<String> postCollection(List<String> list) {
            return list;
        }

        @GET
        @Produces("application/json")
        @Path("personcollect")
        public List<Person> getPersonCollection() {
            List<Person> people = new ArrayList<Person>();
            Person p = new Person();
            p.setFirst("first1");
            p.setLast("last1");
            people.add(p);
            p = new Person();
            p.setFirst("first2");
            p.setLast("last2");
            people.add(p);
            p = new Person();
            p.setFirst("first3");
            p.setLast("last3");
            people.add(p);
            return people;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("personcollect")
        public List<Person> postPeopleCollection(List<Person> people) {
            return people;
        }

        @GET
        @Produces("application/json")
        @Path("stringarray")
        public String[] getArray() {
            String[] list = new String[4];
            list[0] = "string1";
            list[1] = "";
            list[2] = null;
            list[3] = "string4";
            return list;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("stringarray")
        public String[] postArray(String[] list) {
            return list;
        }

        @GET
        @Produces("application/json")
        @Path("personarray")
        public Person[] getPeopleArray() {
            Person[] people = new Person[3];
            Person p = new Person();
            p.setFirst("first1");
            p.setLast("last1");
            people[0] = p;
            p = new Person();
            p.setFirst("first2");
            p.setLast("last2");
            people[1] = p;
            p = new Person();
            p.setFirst("first3");
            p.setLast("last3");
            people[2] = p;
            return people;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("personarray")
        public Person[] postPeopleArray(Person[] people) {
            return people;
        }

        @GET
        @Produces("application/json")
        @Path("collectionofcollection")
        public List<List<Person>> getCollectionofCollection() {
            List<List<Person>> peopleCollection = new ArrayList<List<Person>>();

            List<Person> people = new ArrayList<Person>();
            Person p = new Person();
            p.setFirst("first1");
            p.setLast("last1");
            people.add(p);
            p = new Person();
            p.setFirst("first2");
            p.setLast("last2");
            people.add(p);
            p = new Person();
            p.setFirst("first3");
            p.setLast("last3");
            people.add(p);
            peopleCollection.add(people);

            people = new ArrayList<Person>();
            p = new Person();
            p.setFirst("first4");
            p.setLast("last4");
            people.add(p);
            people.add(null);
            p = new Person();
            p.setFirst("first6");
            p.setLast("last6");
            people.add(p);
            peopleCollection.add(people);

            return peopleCollection;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("collectionofcollection")
        public List<List<Person>> postCollectionofCollection(List<List<Person>> peopleCollection) {
            return peopleCollection;
        }

        @GET
        @Produces("application/json")
        @Path("collectionofarray")
        public List<Person[]> getCollectionofArray() {
            List<Person[]> peopleCollection = new ArrayList<Person[]>();

            List<Person> people = new ArrayList<Person>();
            Person p = new Person();
            p.setFirst("first1");
            p.setLast("last1");
            people.add(p);
            p = new Person();
            p.setFirst("first2");
            p.setLast("last2");
            people.add(p);
            p = new Person();
            p.setFirst("first3");
            p.setLast("last3");
            people.add(p);
            peopleCollection.add(people.toArray(new Person[] {}));

            people = new ArrayList<Person>();
            p = new Person();
            p.setFirst("first4");
            p.setLast("last4");
            people.add(p);
            people.add(null);
            p = new Person();
            p.setFirst("first6");
            p.setLast("last6");
            people.add(p);
            peopleCollection.add(people.toArray(new Person[] {}));

            return peopleCollection;
        }

        @POST
        @Produces("application/json")
        @Consumes("application/json")
        @Path("collectionofarray")
        public List<Person[]> postCollectionofArray(List<Person[]> peopleCollection) {
            return peopleCollection;
        }
    }

    public static class Person {
        String first;
        String last;

        public String getFirst() {
            return first;
        }

        public void setFirst(String first) {
            this.first = first;
        }

        public String getLast() {
            return last;
        }

        public void setLast(String last) {
            this.last = last;
        }

        public boolean equals(Object o) {
            if (!(o instanceof Person))
                return false;
            Person other = (Person)o;
            return this.first.equals(other.first) && this.last.equals(other.last);
        }
    }

    public void testGETPerson() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("GET",
                                                        "/jackson/pojo/person",
                                                        "application/json");
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils.equals(new JSONObject("{\"first\":\"first\", \"last\":\"last\"}"),
                                    new JSONObject(response.getContentAsString())));
    }

    public void testPOSTPerson() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("POST",
                                                        "/jackson/pojo/person",
                                                        "application/json");
        request.setContentType("application/json");
        request.setContent("{\"first\":\"first\", \"last\":\"last\"}".getBytes());
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils.equals(new JSONObject("{\"first\":\"first\", \"last\":\"last\"}"),
                                    new JSONObject(response.getContentAsString())));
    }

    public void testGETCollection() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("GET",
                                                        "/jackson/pojo/string",
                                                        "application/json");
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils.equals(new JSONArray("[\"string1\", \"\", \"string3\"]"),
                                    new JSONArray(response.getContentAsString())));
    }

    public void testPOSTCollection() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("POST",
                                                        "/jackson/pojo/string",
                                                        "application/json");
        request.setContentType("application/json");
        request.setContent("[\"string1\", \"\", \"string3\"]".getBytes());
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils.equals(new JSONArray("[\"string1\", \"\", \"string3\"]"),
                                    new JSONArray(response.getContentAsString())));
    }

    public void testGETCollectionWithObject() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("GET",
                                                        "/jackson/pojo/personcollect",
                                                        "application/json");
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils
            .equals(new JSONArray(
                                  "[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                                      + "{\"first\":\"first3\",\"last\":\"last3\"}]"),
                    new JSONArray(response.getContentAsString())));
    }

    public void testPOSTCollectionWithObject() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("POST",
                                                        "/jackson/pojo/personcollect",
                                                        "application/json");
        request.setContentType("application/json");
        request
            .setContent(("[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                + "{\"first\":\"first3\",\"last\":\"last3\"}]").getBytes());
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils
            .equals(new JSONArray(
                                  "[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                                      + "{\"first\":\"first3\",\"last\":\"last3\"}]"),
                    new JSONArray(response.getContentAsString())));
    }

    public void testGETCollectionWithCollection() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("GET",
                                                        "/jackson/pojo/collectionofcollection",
                                                        "application/json");
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils
            .equals(new JSONArray(
                                  "[[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                                      + "{\"first\":\"first3\",\"last\":\"last3\"}],"
                                      + "[{\"first\":\"first4\",\"last\":\"last4\"},"
                                      + "null,"
                                      + "{\"first\":\"first6\",\"last\":\"last6\"}]]"),
                    new JSONArray(response.getContentAsString())));
    }

    public void testPOSTCollectionWithCollection() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("POST",
                                                        "/jackson/pojo/collectionofcollection",
                                                        "application/json");
        request.setContentType("application/json");
        request
            .setContent(("[[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                + "{\"first\":\"first3\",\"last\":\"last3\"}],"
                + "[{\"first\":\"first4\",\"last\":\"last4\"},"
                + "null,"
                + "{\"first\":\"first6\",\"last\":\"last6\"}]]").getBytes());
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils
            .equals(new JSONArray(
                                  "[[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                                      + "{\"first\":\"first3\",\"last\":\"last3\"}],"
                                      + "[{\"first\":\"first4\",\"last\":\"last4\"},"
                                      + "null,"
                                      + "{\"first\":\"first6\",\"last\":\"last6\"}]]"),
                    new JSONArray(response.getContentAsString())));
    }

    public void testGETCollectionWithArray() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("GET",
                                                        "/jackson/pojo/collectionofarray",
                                                        "application/json");
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils
            .equals(new JSONArray(
                                  "[[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                                      + "{\"first\":\"first3\",\"last\":\"last3\"}],"
                                      + "[{\"first\":\"first4\",\"last\":\"last4\"},"
                                      + "null,"
                                      + "{\"first\":\"first6\",\"last\":\"last6\"}]]"),
                    new JSONArray(response.getContentAsString())));
    }

    public void testPOSTCollectionWithArray() throws Exception {
        MockHttpServletRequest request =
            MockRequestConstructor.constructMockRequest("POST",
                                                        "/jackson/pojo/collectionofarray",
                                                        "application/json");
        request.setContentType("application/json");
        request
            .setContent(("[[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                + "{\"first\":\"first3\",\"last\":\"last3\"}],"
                + "[{\"first\":\"first4\",\"last\":\"last4\"},"
                + "null,"
                + "{\"first\":\"first6\",\"last\":\"last6\"}]]").getBytes());
        MockHttpServletResponse response = invoke(request);
        assertEquals(200, response.getStatus());
        assertTrue(JSONUtils
            .equals(new JSONArray(
                                  "[[{\"first\":\"first1\",\"last\":\"last1\"}," + "{\"first\":\"first2\",\"last\":\"last2\"},"
                                      + "{\"first\":\"first3\",\"last\":\"last3\"}],"
                                      + "[{\"first\":\"first4\",\"last\":\"last4\"},"
                                      + "null,"
                                      + "{\"first\":\"first6\",\"last\":\"last6\"}]]"),
                    new JSONArray(response.getContentAsString())));
    }
}
TOP

Related Classes of org.apache.wink.providers.jackson.internal.JacksonPOJOTest$Person

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.