Package org.talend.services.demos.client

Source Code of org.talend.services.demos.client.LibraryTester

package org.talend.services.demos.client;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

import javax.xml.ws.BindingProvider;

import org.springframework.beans.factory.InitializingBean;
import org.talend.esb.mep.requestcallback.feature.RequestCallbackFeature;
import org.talend.services.demos.common.Utils;
import org.talend.services.demos.library._1_0.Library;
import org.talend.services.demos.library._1_0.SeekBookError;
import org.talend.types.demos.library.common._1.ListOfBooks;
import org.talend.types.demos.library.common._1.SearchFor;
import org.talend.types.demos.library.common._1.SearchInBasementFor;

/**
* The Class LibraryTester.
*/
public class LibraryTester implements InitializingBean {

    /** The Library proxy for HTTP calls will be injected either by spring or by a direct call to the setter  */
    Library libraryHttp;

    /** The Library proxy for JMS calls will be injected either by spring or by a direct call to the setter  */
    Library libraryJms;

    public Library getLibraryHttp() {
        return libraryHttp;
    }

    public void afterPropertiesSet() throws Exception {
        System.out.println("Library Client initialized.");
        Thread.sleep(5000);
        testRequestResponsePositive();
        testOnewayPositive();
        testRequestCallbackPositive();
    }


    public void setLibraryHttp(Library library) {
        this.libraryHttp = library;
    }

    public Library getLibraryJms() {
        return libraryJms;
    }

    public void setLibraryJms(Library libraryJms) {
        this.libraryJms = libraryJms;
    }

    /**
     * Test request response positive.
     *
     * @throws SeekBookError the seek book error
     */
    public void testRequestResponsePositive() throws SeekBookError {
        // Test the positive case where author(s) are found and we retrieve
        // a list of books
        System.out.println("***************************************************************");
        System.out.println("*** Request-Response operation ********************************");
        System.out.println("***************************************************************");
        System.out.println("\nSending request for authors named Icebear");
        SearchFor request = new SearchFor();
        request.getAuthorLastName().add("Icebear");
        ListOfBooks response = libraryHttp.seekBook(request);
        System.out.println("\nResponse received:");
        Utils.showBooks(response);


        if (response.getBook().size() != 1) {
            System.out.println("An error occured: number of books found is not equal to 1");
        }

        if (!"Icebear".equals(response.getBook().get(0).getAuthor().get(0).getLastName())) {
            System.out.println("An error occured: the author of the found book is not Icebear");
        }
    }

    /**
     * Test request response business fault.
     *
     * @throws SeekBookError the seek book error
     */
    @SuppressWarnings("unused")
    public void testRequestResponseBusinessFault() throws SeekBookError {

        // Test for an unknown Customer name and expect the NoSuchCustomerException
        System.out.println("***************************************************************");
        System.out.println("*** Request-Response operation with Business Fault ************");
        System.out.println("***************************************************************");
        try {
            SearchFor request = new SearchFor();
            System.out.println("\nSending request for authors named Grizzlybear");
            request.getAuthorLastName().add("Grizzlybear");
            ListOfBooks response = libraryHttp.seekBook(request);

            System.out.println("FAIL: We should get a SeekBookError here");

        } catch (SeekBookError e) {
            if (e.getFaultInfo() == null) {
                System.out.println("FaultInfo must not be null");
            }
            if ("No book available from author Grizzlybear".equals(
                    e.getFaultInfo().getException().get(0).getExceptionText())) {
                System.out.println("Unexpected error message received");
            }



            System.out.println("\nSeekBookError exception was received as expected:\n");

            Utils.showSeekBookError(e);

        }
    }

    /**
     * Test oneway positive.
     *
     * @throws SeekBookError the seek book error
     */
    public void testOnewayPositive() throws SeekBookError {

        // The implementation of updateCustomer is set to sleep for some seconds.
        // Still this method should return instantly as the method is declared
        // as a one way method in the WSDL

        System.out.println("***************************************************************");
        System.out.println("*** Oneway operation ******************************************");
        System.out.println("***************************************************************");

        String isbnNumber = "111-22222";
        Date birthDate = (new GregorianCalendar(101, Calendar.MARCH, 5)).getTime();
        String zip = "12345";
        Date borrowed = new Date();

        System.out.println("Sending createLending request with parameters:");
        Utils.showLendingRequest(isbnNumber, birthDate, zip, borrowed);

        libraryJms.createLending(isbnNumber, birthDate, zip, borrowed);
    }

    /**
     * Test request callback positive.
     *
     * @throws SeekBookError the seek book error
     */
    public void testRequestCallbackPositive() throws SeekBookError {
        // Test the positive case where author(s) are found and we retrieve
        // a list of books
        System.out.println("***************************************************************");
        System.out.println("*** Request-Callback operation ********************************");
        System.out.println("***************************************************************");
        System.out.println("\nSending request(callback) for authors named Stripycat");
        SearchInBasementFor request = new SearchInBasementFor();
        request.getAuthorLastName().add("Stripycat");
        Map<String, Object> rctx = ((BindingProvider) libraryJms).getRequestContext();
        Map<String, Object> correlationInfo = new HashMap<String, Object>();
        rctx.put(RequestCallbackFeature.CALL_INFO_PROPERTY_NAME, correlationInfo);
        libraryJms.seekBookInBasement(request);
        String correlationId = (String) correlationInfo.get(
                RequestCallbackFeature.CALL_ID_NAME);
        System.out.println("\nRequest sent.");
        System.out.println("Call ID is " + correlationId);
        try {
            boolean moreToCome = LibraryConsumerImpl.waitForResponse() instanceof ListOfBooks;
            System.out.println("\nProcessing of first callback response confirmed.\n");
            if (moreToCome) {
                LibraryConsumerImpl.waitForResponse();
                System.out.println("\nProcessing of second callback response confirmed.\n");
            }
        } catch (InterruptedException e) {
            throw new RuntimeException("Request-callback test interrupted: ", e);
        }
    }

    /**
     * Test library.
     *
     * @throws SeekBookError the seek book error
     */
    public void testHttp() throws SeekBookError {

        // Positive TestCase for Request-Response operation
        testRequestResponsePositive();

        // Negative TestCase for Request-Response operation (with Business Fault)
        // testRequestResponseBusinessFault();

        System.out.println("***************************************************************");
        System.out.println("*** All calls were successful *********************************");
        System.out.println("***************************************************************");

    }

    /**
     * Test library.
     *
     * @throws SeekBookError the seek book error
     */
    public void testJms() throws SeekBookError {

        // Positive TestCase for Oneway operation
        //testOnewayPositive();

        // Positive TestCase for Request-Callback operation
        testRequestCallbackPositive();

        System.out.println("***************************************************************");
        System.out.println("*** All calls were successful *********************************");
        System.out.println("***************************************************************");

    }

}
TOP

Related Classes of org.talend.services.demos.client.LibraryTester

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.