Package org.apache.wink.jaxrs.test

Source Code of org.apache.wink.jaxrs.test.JAXBCollectionTest

/*******************************************************************************
* 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.jaxrs.test;

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

import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;

import junit.framework.TestCase;

import org.apache.wink.client.ClientConfig;
import org.apache.wink.client.ClientResponse;
import org.apache.wink.client.EntityType;
import org.apache.wink.client.Resource;
import org.apache.wink.client.RestClient;
import org.apache.wink.jaxrs.test.jaxb.book.Author;
import org.apache.wink.jaxrs.test.jaxb.book.Book;
import org.apache.wink.jaxrs.test.jaxb.person.Person;
import org.apache.wink.test.integration.ServerEnvironmentInfo;

public class JAXBCollectionTest extends TestCase {

    private static String BASE_URI =
                                       ServerEnvironmentInfo.getBaseURI() + "/optionalproviders/jaxbresource";
    protected RestClient  client;

    static {
        if (ServerEnvironmentInfo.isRestFilterUsed()) {
            BASE_URI = ServerEnvironmentInfo.getBaseURI() + "/jaxbresource";
        }
    }

    public void setUp() throws Exception {
        ClientConfig config = new ClientConfig();
        client = new RestClient(config);
    }

    public void testXMLRootWithObjectFactoryList() throws Exception {
        List<Book> source = getBookSource();
        Resource resource = client.resource(BASE_URI + "/booklist");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<List<Book>>(source) {
                });
        List<Book> responseEntity = response.getEntity(new EntityType<List<Book>>() {
        });

        verifyResponse(responseEntity, Book.class);
    }
   
    public void testXMLRootWithObjectFactoryArray() throws Exception {
        Book[] source = getBookSource().toArray(new Book[]{});
        Resource resource = client.resource(BASE_URI + "/bookarray");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<Book[]>(source) {
                });
        Book[] responseEntity = response.getEntity(new EntityType<Book[]>() {
        });

        verifyResponse(responseEntity, Book.class);
    }
   
    public void testXMLRootWithObjectFactoryListResponse() throws Exception {
        List<Book> source = getBookSource();
        Resource resource = client.resource(BASE_URI + "/booklistresponse");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<List<Book>>(source) {
                });
        List<Book> responseEntity = response.getEntity(new EntityType<List<Book>>() {
        });

        verifyResponse(responseEntity, Book.class);
    }
   
    public void testXMLRootWithObjectFactoryJAXBElement() throws Exception {
        List<Book> source = getBookSource();
        Resource resource = client.resource(BASE_URI + "/booklistjaxbelement");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<List<Book>>(source) {
                });
        List<Book> responseEntity = response.getEntity(new EntityType<List<Book>>() {
        });

        verifyResponse(responseEntity, Book.class);
    }
   
    public void testXMLRootNoObjectFactoryList() throws Exception {
        List<Person> source = getPersonSource();
        Resource resource = client.resource(BASE_URI + "/personlist");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<List<Person>>(source) {
                });
        List<Person> responseEntity = response.getEntity(new EntityType<List<Person>>() {
        });

        verifyResponse(responseEntity, Person.class);
    }
   
    public void testXMLRootNoObjectFactoryArray() throws Exception {
        Person[] source = getPersonSource().toArray(new Person[]{});
        Resource resource = client.resource(BASE_URI + "/personarray");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<Person[]>(source) {
                });
        Person[] responseEntity = response.getEntity(new EntityType<Person[]>() {
        });

        verifyResponse(responseEntity, Person.class);
    }
   
    public void testXMLRootNoObjectFactoryListResponse() throws Exception {
        List<Person> source = getPersonSource();
        Resource resource = client.resource(BASE_URI + "/personlistresponse");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<List<Person>>(source) {
                });
        List<Person> responseEntity = response.getEntity(new EntityType<List<Person>>() {
        });

        verifyResponse(responseEntity, Person.class);
    }
   
    public void testXMLRootNoObjectFactoryJAXBElement() throws Exception {
        List<Person> source = getPersonSource();
        Resource resource = client.resource(BASE_URI + "/personlistjaxbelement");
        ClientResponse response =
            resource.accept(MediaType.APPLICATION_XML).contentType(MediaType.APPLICATION_XML)
                .post(new GenericEntity<List<Person>>(source) {
                });
        List<Person> responseEntity = response.getEntity(new EntityType<List<Person>>() {
        });

        verifyResponse(responseEntity, Person.class);
    }
   
    private List<Book> getBookSource() {
        List<Book> source = new ArrayList<Book>();
        Book book = new Book();
        Author author = new Author();
        author.setFirstName("Eddie");
        author.setLastName("Vedder");
        book.setAuthor(author);
        book.setTitle("Vitalogy");
        source.add(book);
        book = new Book();
        author = new Author();
        author.setFirstName("Stone");
        author.setLastName("Gossard");
        book.setAuthor(author);
        book.setTitle("Ten");
        source.add(book);
        return source;
    }
   
    @SuppressWarnings("unchecked")
    private <T> void verifyResponse(Object response, Class<T> type) {
        List<?> expected = null;
        List<Object> actual = null;
        if(type == Book.class) {
            expected = getBookSource();
            actual = new ArrayList();
        } else {
            expected = getPersonSource();
            actual = new ArrayList();
        }
        if(response.getClass().isArray()) {
            for(int i = 0; i < ((T[])response).length; ++i)
                actual.add(((T[])response)[i]);
        else
            actual = (List)response;
        for(Object o : expected) {
            if(type == Book.class) {
                Book b = (Book)o;
                Author author = b.getAuthor();
                author.setFirstName("echo " + author.getFirstName());
                author.setLastName("echo " + author.getLastName());
                b.setTitle("echo " + b.getTitle());
            } else {
                Person person = (Person)o;
                person.setName("echo " + person.getName());
                person.setDesc("echo " + person.getDesc());
            }
        }
        assertEquals(expected, actual);
    }
   
    private List<Person> getPersonSource() {
        List<Person> people = new ArrayList<Person>();
        Person person = new Person();
        person.setName("Eddie Vedder");
        person.setDesc("Author of Vitalogy");
        people.add(person);
        person = new Person();
        person.setName("Stone Gossard");
        person.setDesc("Author of Ten");
        people.add(person);
        return people;
    }
}
TOP

Related Classes of org.apache.wink.jaxrs.test.JAXBCollectionTest

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.