From 91a39a22895de153ac26b0c2a0ec24a569827020 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Thu, 14 Jun 2007 01:21:18 +0000 Subject: [PATCH] Added SWS client --- samples/airline/client/readme.txt | 9 +- samples/airline/client/spring-ws/build.xml | 62 +++++++++++ samples/airline/client/spring-ws/readme.txt | 11 ++ .../client/spring-ws/src/log4j.properties | 5 + .../airline/client/sws/AirlineClient.java | 105 ++++++++++++++++++ .../airline/client/sws/applicationContext.xml | 13 +++ 6 files changed, 201 insertions(+), 4 deletions(-) create mode 100644 samples/airline/client/spring-ws/build.xml create mode 100644 samples/airline/client/spring-ws/readme.txt create mode 100644 samples/airline/client/spring-ws/src/log4j.properties create mode 100644 samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/AirlineClient.java create mode 100644 samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/applicationContext.xml diff --git a/samples/airline/client/readme.txt b/samples/airline/client/readme.txt index f8037cbc..8287fccb 100644 --- a/samples/airline/client/readme.txt +++ b/samples/airline/client/readme.txt @@ -2,7 +2,8 @@ SPRING WEB SERVICES Client table of contents --------------------------------------------------- -* axis1 - A client for the airline service written in Java using JAX-RPC (Axis 1). -* cs - A client for the airline service written in C#. -* jax-ws - A client for the airline service written in Java using JAX-WS. -* saaj - Two clients that are written in Java and use SAAJ. +* axis1 - A client for the airline service written in Java using JAX-RPC (Axis 1). +* cs - A client for the airline service written in C#. +* jax-ws - A client for the airline service written in Java using JAX-WS. +* saaj - Two clients that are written in Java and use SAAJ. +* spring-ws - A client for the airline service written in Java using Spring-WS using XMLBeans marshalling. diff --git a/samples/airline/client/spring-ws/build.xml b/samples/airline/client/spring-ws/build.xml new file mode 100644 index 00000000..f0c3d797 --- /dev/null +++ b/samples/airline/client/spring-ws/build.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/airline/client/spring-ws/readme.txt b/samples/airline/client/spring-ws/readme.txt new file mode 100644 index 00000000..bdc6c832 --- /dev/null +++ b/samples/airline/client/spring-ws/readme.txt @@ -0,0 +1,11 @@ +SPRING WEB SERVICES + +This directory contains a Java client for the Airline Web Service that uses +the Spring-WS WebServiceTemplate in combination with XMLBeans marshalling. +The client can be run from the provided ant file, by calling "ant run". + +SAJA Client Sample table of contents +--------------------------------------------------- +* src - The source files for the client +* build.xml - Ant build file with a 'build' and a 'run' target + diff --git a/samples/airline/client/spring-ws/src/log4j.properties b/samples/airline/client/spring-ws/src/log4j.properties new file mode 100644 index 00000000..f50b4194 --- /dev/null +++ b/samples/airline/client/spring-ws/src/log4j.properties @@ -0,0 +1,5 @@ +log4j.rootLogger=WARN, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n \ No newline at end of file diff --git a/samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/AirlineClient.java b/samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/AirlineClient.java new file mode 100644 index 00000000..ad9cf37e --- /dev/null +++ b/samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/AirlineClient.java @@ -0,0 +1,105 @@ +/* + * Copyright 2007 the original author or authors. + * + * Licensed 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.springframework.ws.samples.airline.client.sws; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.springWs.samples.airline.schemas.BookFlightRequestDocument; +import org.springframework.springWs.samples.airline.schemas.BookFlightResponseDocument; +import org.springframework.springWs.samples.airline.schemas.Flight; +import org.springframework.springWs.samples.airline.schemas.GetFlightsRequestDocument; +import org.springframework.springWs.samples.airline.schemas.GetFlightsResponseDocument; +import org.springframework.springWs.samples.airline.schemas.Name; +import org.springframework.springWs.samples.airline.schemas.Ticket; +import org.springframework.ws.client.core.support.WebServiceGatewaySupport; + +public class AirlineClient extends WebServiceGatewaySupport { + + public void getFlights() { + GetFlightsRequestDocument getFlightsRequestDocument = GetFlightsRequestDocument.Factory.newInstance(); + GetFlightsRequestDocument.GetFlightsRequest getFlightsRequest = + getFlightsRequestDocument.addNewGetFlightsRequest(); + getFlightsRequest.setFrom("AMS"); + getFlightsRequest.setTo("VCE"); + Calendar departureDate = Calendar.getInstance(); + departureDate.clear(); + departureDate.set(2006, Calendar.JANUARY, 31); + getFlightsRequest.setDepartureDate(departureDate); + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + System.out.println("Requesting flights on " + dateFormat.format(departureDate.getTime())); + GetFlightsResponseDocument getFlightsResponseDocument = + (GetFlightsResponseDocument) getWebServiceTemplate().marshalSendAndReceive(getFlightsRequestDocument); + GetFlightsResponseDocument.GetFlightsResponse response = getFlightsResponseDocument.getGetFlightsResponse(); + System.out.println("Got " + response.sizeOfFlightArray() + " results"); + if (response.sizeOfFlightArray() > 0) { + // Book the first flight using John Doe as a frequent flyer + BookFlightRequestDocument bookFlightRequestDocument = BookFlightRequestDocument.Factory.newInstance(); + BookFlightRequestDocument.BookFlightRequest bookFlightRequest = + bookFlightRequestDocument.addNewBookFlightRequest(); + bookFlightRequest.setFlightNumber(response.getFlightArray(0).getNumber()); + bookFlightRequest.setDepartureTime(response.getFlightArray(0).getDepartureTime()); + BookFlightRequestDocument.BookFlightRequest.Passengers passengers = bookFlightRequest.addNewPassengers(); + passengers.addUsername("john"); + + BookFlightResponseDocument bookFlightResponseDocument = (BookFlightResponseDocument) getWebServiceTemplate() + .marshalSendAndReceive(bookFlightRequestDocument); + Ticket ticket = bookFlightResponseDocument.getBookFlightResponse(); + writeTicket(ticket); + } + } + + private static void writeTicket(Ticket ticket) { + System.out.println("Ticket " + ticket.getId()); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + System.out.println("Ticket issue date:\t" + dateFormat.format(ticket.getIssueDate().getTime())); + for (int i = 0; i < ticket.getPassengers().sizeOfPassengerArray(); i++) { + writeName(ticket.getPassengers().getPassengerArray(i)); + + } + writeFlight(ticket.getFlight()); + } + + private static void writeName(Name name) { + System.out.println("Passenger Name:"); + System.out.println(name.getFirst() + " " + name.getLast()); + System.out.println("------------"); + } + + private static void writeFlight(Flight flight) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + System.out.println(dateFormat.format(flight.getDepartureTime().getTime())); + System.out.println(flight.getNumber() + "\t" + flight.getServiceClass()); + System.out.println("------------"); + System.out.println("Depart:\t" + flight.getFrom().getCode() + "-" + flight.getFrom().getName() + "\t" + + dateFormat.format(flight.getDepartureTime().getTime())); + System.out.println("\t" + flight.getFrom().getCity()); + System.out.println("Arrive:\t" + flight.getTo().getCode() + "-" + flight.getTo().getName() + "\t" + + dateFormat.format(flight.getArrivalTime().getTime())); + System.out.println("\t" + flight.getTo().getCity()); + } + + public static void main(String[] args) { + ApplicationContext applicationContext = + new ClassPathXmlApplicationContext("applicationContext.xml", AirlineClient.class); + AirlineClient airlineClient = (AirlineClient) applicationContext.getBean("airlineClient", AirlineClient.class); + airlineClient.getFlights(); + } +} diff --git a/samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/applicationContext.xml b/samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/applicationContext.xml new file mode 100644 index 00000000..f33d9437 --- /dev/null +++ b/samples/airline/client/spring-ws/src/org/springframework/ws/samples/airline/client/sws/applicationContext.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file