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