Package client

Source Code of client.CustomerServiceClient

/**
* Copyright (C) 2010 Talend Inc. - www.talend.com
*/
package client;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Properties;

import javax.ws.rs.core.Response;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;

import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.ResponseExceptionMapper;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
import org.example.customers.Customer;
import org.example.customers.CustomerService;
import org.example.customers.CustomerServiceService;
import org.example.customers.CustomerType;
import org.example.customers.NoSuchCustomerException;

public class CustomerServiceClient {

    private static final String PORT_PROPERTY = "http.port";
    private static final int DEFAULT_PORT_VALUE = 8080;

    private static final String HTTP_PORT;
    static {
        Properties props = new Properties();
        try {
            props.load(CustomerServiceClient.class.getResourceAsStream("/client.properties"));
        } catch (Exception ex) {
            throw new RuntimeException("client.properties resource is not available");
        }
        HTTP_PORT = props.getProperty(PORT_PROPERTY);
    }

    int port;

    public CustomerServiceClient() {
        port = getPort();
    }

    public void useCustomerServiceSoap(String args[]) throws Exception {
        final String address = "http://localhost:" + port + "/services/jaxws";
        System.out.println("Using SOAP CustomerService");
       
        Service service = Service.create(CustomerServiceService.SERVICE);
        service.addPort(CustomerServiceService.CustomerServicePort, SOAPBinding.SOAP11HTTP_BINDING, address);

        CustomerService customerService = service.getPort(CustomerService.class);
               
        Customer customer = createCustomer("Barry");
        customerService.updateCustomer(customer);
        customer = customerService.getCustomerByName("Barry");
        printCustomerDetails(customer);
        try {
            customerService.getCustomerByName("Smith");
            throw new RuntimeException("Exception is expected");
        } catch (NoSuchCustomerException ex) {
            System.out.println("NoSuchCustomerException : Smith");
        }
    }

    public void useCustomerServiceRest(String args[]) throws Exception {
        JAXBElementProvider provider = new JAXBElementProvider();
        provider.setUnmarshallAsJaxbElement(true);
        provider.setMarshallAsJaxbElement(true);

        List<Object> providers = new ArrayList<Object>();
        providers.add(provider);
        providers.add(new ResponseExceptionMapper<NoSuchCustomerException>() {

            @Override
            public NoSuchCustomerException fromResponse(Response r) {
                return new NoSuchCustomerException();
            }

        });

        CustomerService customerService = JAXRSClientFactory
            .createFromModel("http://localhost:" + port + "/services/jaxrs", CustomerService.class,
                             "classpath:/data/model/CustomerService-jaxrs.xml", providers, null);

        System.out.println("Using RESTful CustomerService");

        Customer customer = createCustomer("Smith");
        customerService.updateCustomer(customer);

        customer = customerService.getCustomerByName("Smith");
        printCustomerDetails(customer);

        customer = customerService.getCustomerByName("Barry");
        if (customer != null) {
            throw new RuntimeException("Barry should not be found");
        }
        System.out.println("Status : " + WebClient.client(customerService).getResponse().getStatus());

        try {
            customerService.getCustomerByName("John");
            throw new RuntimeException("Exception is expected");
        } catch (NoSuchCustomerException ex) {
            System.out.println("NoSuchCustomerException : John");
        }
    }

    private void printCustomerDetails(Customer customer) {
        System.out.print("Name : " + customer.getName());
        System.out.print(", orders : " + customer.getNumOrders());
        System.out.print(", shares : " + customer.getShares());
        System.out.println();
    }

    private Customer createCustomer(String name) {
        Customer cust = new Customer();
        cust.setName(name);
        cust.getAddress().add("Pine Street 200");
        Date bDate = new GregorianCalendar(2009, 01, 01).getTime();
        cust.setBirthDate(bDate);
        cust.setNumOrders(1);
        cust.setRevenue(10000);
        cust.setShares(new BigDecimal(1.5));
        cust.setType(CustomerType.BUSINESS);
        return cust;
    }

    private static int getPort() {
        try {
            return Integer.valueOf(HTTP_PORT);
        } catch (NumberFormatException ex) {
            // ignore
        }
        return DEFAULT_PORT_VALUE;
    }

    public static void main(String args[]) throws Exception {
        CustomerServiceClient client = new CustomerServiceClient();
        client.useCustomerServiceSoap(args);
        client.useCustomerServiceRest(args);
        System.exit(0);
    }
}
TOP

Related Classes of client.CustomerServiceClient

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.