From 780d80ed153210c4a3b3eb4ffdc10de30ba07b6b Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Sun, 11 Nov 2007 15:00:37 +0000 Subject: [PATCH] Illustrating multiple schemas in airline sample. --- samples/airline/client/axis1/build.xml | 7 +- .../airline/client/saaj/GetFlights.java | 2 +- .../client/saaj/GetFrequentFlyerMileage.java | 2 +- samples/airline/client/spring-ws/build.xml | 4 +- .../airline/client/sws/AirlineClient.java | 14 ++-- samples/airline/pom.xml | 6 +- .../ws/AirlineWebServiceConstants.java | 2 +- .../ws/GetFrequentFlyerMileageEndpoint.java | 3 +- .../ws/MarshallingAirlineEndpoint.java | 13 +-- .../airline/ws/XPathAirlineEndpoint.java | 35 ++++---- .../airline/src/main/webapp/WEB-INF/web.xml | 14 ++-- .../src/main/webapp/WEB-INF/ws-servlet.xml | 15 ++-- samples/airline/src/main/webapp/airline.wsdl | 82 ------------------- samples/airline/src/main/webapp/index.jsp | 3 + samples/airline/src/main/webapp/messages.xsd | 51 ++++++++++++ .../{WEB-INF/xsd/airline.xsd => types.xsd} | 50 +---------- 16 files changed, 122 insertions(+), 181 deletions(-) delete mode 100644 samples/airline/src/main/webapp/airline.wsdl create mode 100644 samples/airline/src/main/webapp/index.jsp create mode 100644 samples/airline/src/main/webapp/messages.xsd rename samples/airline/src/main/webapp/{WEB-INF/xsd/airline.xsd => types.xsd} (59%) diff --git a/samples/airline/client/axis1/build.xml b/samples/airline/client/axis1/build.xml index c601a24b..d15ce4ea 100644 --- a/samples/airline/client/axis1/build.xml +++ b/samples/airline/client/axis1/build.xml @@ -1,7 +1,7 @@ + xmlns:artifact="urn:maven-artifact-ant"> @@ -33,7 +33,10 @@ output="${gen.dir}" url="${wsdl}"> + - + @@ -52,7 +52,7 @@ + failonerror="true"> 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 index ad9cf37e..047e8c1c 100644 --- 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 @@ -21,13 +21,13 @@ 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.springWs.samples.airline.schemas.messages.BookFlightRequestDocument; +import org.springframework.springWs.samples.airline.schemas.messages.BookFlightResponseDocument; +import org.springframework.springWs.samples.airline.schemas.messages.GetFlightsRequestDocument; +import org.springframework.springWs.samples.airline.schemas.messages.GetFlightsResponseDocument; +import org.springframework.springWs.samples.airline.schemas.types.Flight; +import org.springframework.springWs.samples.airline.schemas.types.Name; +import org.springframework.springWs.samples.airline.schemas.types.Ticket; import org.springframework.ws.client.core.support.WebServiceGatewaySupport; public class AirlineClient extends WebServiceGatewaySupport { diff --git a/samples/airline/pom.xml b/samples/airline/pom.xml index 2de9b9e5..2b701c7e 100644 --- a/samples/airline/pom.xml +++ b/samples/airline/pom.xml @@ -1,5 +1,5 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> spring-ws-samples org.springframework.ws @@ -79,7 +79,7 @@ org.springframework.ws.samples.airline.schema - src/main/webapp/WEB-INF/xsd + src/main/webapp/ @@ -90,7 +90,7 @@ + classpathref="maven.runtime.classpath" dir="target/classes" fork="true"/> diff --git a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/AirlineWebServiceConstants.java b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/AirlineWebServiceConstants.java index 48590162..b951c9bf 100644 --- a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/AirlineWebServiceConstants.java +++ b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/AirlineWebServiceConstants.java @@ -25,7 +25,7 @@ public interface AirlineWebServiceConstants { String GET_FREQUENT_FLYER_MILEAGE_RESPONSE = "GetFrequentFlyerMileageResponse"; - String NAMESPACE = "http://www.springframework.org/spring-ws/samples/airline/schemas"; + String MESSAGES_NAMESPACE = "http://www.springframework.org/spring-ws/samples/airline/schemas/messages"; String GET_FREQUENT_FLYER_MILEAGE_REQUEST = "GetFrequentFlyerMileageRequest"; } diff --git a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/GetFrequentFlyerMileageEndpoint.java b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/GetFrequentFlyerMileageEndpoint.java index 64b9bf38..cc04b55a 100644 --- a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/GetFrequentFlyerMileageEndpoint.java +++ b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/GetFrequentFlyerMileageEndpoint.java @@ -18,6 +18,7 @@ package org.springframework.ws.samples.airline.ws; import org.springframework.ws.samples.airline.service.AirlineService; import org.springframework.ws.server.endpoint.AbstractDomPayloadEndpoint; + import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -37,7 +38,7 @@ public class GetFrequentFlyerMileageEndpoint extends AbstractDomPayloadEndpoint protected Element invokeInternal(Element ignored, Document responseDocument) throws Exception { int mileage = airlineService.getFrequentFlyerMileage(); - Element response = responseDocument.createElementNS(NAMESPACE, GET_FREQUENT_FLYER_MILEAGE_RESPONSE); + Element response = responseDocument.createElementNS(MESSAGES_NAMESPACE, GET_FREQUENT_FLYER_MILEAGE_RESPONSE); response.setTextContent(Integer.toString(mileage)); return response; } diff --git a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/MarshallingAirlineEndpoint.java b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/MarshallingAirlineEndpoint.java index 25e150c2..36887c41 100644 --- a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/MarshallingAirlineEndpoint.java +++ b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/MarshallingAirlineEndpoint.java @@ -23,10 +23,6 @@ import javax.xml.bind.JAXBElement; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.XMLGregorianCalendar; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.joda.time.DateTime; -import org.joda.time.LocalDate; import org.springframework.util.Assert; import org.springframework.ws.samples.airline.domain.FrequentFlyer; import org.springframework.ws.samples.airline.domain.Passenger; @@ -46,6 +42,11 @@ import org.springframework.ws.samples.airline.service.NoSuchFrequentFlyerExcepti import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.joda.time.DateTime; +import org.joda.time.LocalDate; + /** * Endpoint that handles the Airline Web Service messages using JAXB2 marshalling. *

@@ -73,7 +74,7 @@ public class MarshallingAirlineEndpoint implements AirlineWebServiceConstants { * * @param request the JAXB2 representation of a <GetFlightsRequest> */ - @PayloadRoot(localPart = GET_FLIGHTS_REQUEST, namespace = NAMESPACE) + @PayloadRoot(localPart = GET_FLIGHTS_REQUEST, namespace = MESSAGES_NAMESPACE) public GetFlightsResponse getFlights(GetFlightsRequest request) throws DatatypeConfigurationException { if (logger.isDebugEnabled()) { logger.debug("Received GetFlightsRequest '" + request.getFrom() + "' to '" + request.getTo() + "' on " + @@ -107,7 +108,7 @@ public class MarshallingAirlineEndpoint implements AirlineWebServiceConstants { * @param request the JAXB2 representation of a <BookFlightRequest> * @return the JAXB2 representation of a <BookFlightResponse> */ - @PayloadRoot(localPart = BOOK_FLIGHT_REQUEST, namespace = NAMESPACE) + @PayloadRoot(localPart = BOOK_FLIGHT_REQUEST, namespace = MESSAGES_NAMESPACE) public JAXBElement bookFlight(BookFlightRequest request) throws NoSeatAvailableException, DatatypeConfigurationException, NoSuchFlightException, NoSuchFrequentFlyerException { if (logger.isDebugEnabled()) { diff --git a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/XPathAirlineEndpoint.java b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/XPathAirlineEndpoint.java index 4f892b50..ea525303 100644 --- a/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/XPathAirlineEndpoint.java +++ b/samples/airline/src/main/java/org/springframework/ws/samples/airline/ws/XPathAirlineEndpoint.java @@ -23,10 +23,6 @@ import javax.xml.bind.JAXBException; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.transform.Source; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.joda.time.DateTime; -import org.joda.time.LocalDate; import org.springframework.oxm.Marshaller; import org.springframework.oxm.support.MarshallingSource; import org.springframework.util.Assert; @@ -46,6 +42,11 @@ import org.springframework.ws.samples.airline.service.NoSuchFrequentFlyerExcepti import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.XPathParam; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.joda.time.DateTime; +import org.joda.time.LocalDate; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -85,11 +86,11 @@ public class XPathAirlineEndpoint implements AirlineWebServiceConstants { * @param departureDateString the string representation of the departure date * @param serviceClassString the string representation of the service class */ - @PayloadRoot(localPart = GET_FLIGHTS_REQUEST, namespace = NAMESPACE) - public Source getFlights(@XPathParam("//tns:from")String from, - @XPathParam("//tns:to")String to, - @XPathParam("//tns:departureDate")String departureDateString, - @XPathParam("//tns:serviceClass")String serviceClassString) + @PayloadRoot(localPart = GET_FLIGHTS_REQUEST, namespace = MESSAGES_NAMESPACE) + public Source getFlights(@XPathParam("//messages:from")String from, + @XPathParam("//messages:to")String to, + @XPathParam("//messages:departureDate")String departureDateString, + @XPathParam("//messages:serviceClass")String serviceClassString) throws DatatypeConfigurationException { if (logger.isDebugEnabled()) { logger.debug("Received GetFlightsRequest '" + from + "' to '" + to + "' on " + departureDateString); @@ -116,11 +117,11 @@ public class XPathAirlineEndpoint implements AirlineWebServiceConstants { * @param passengerNodes the passenger nodes * @param frequentFlyerNodes the frequent flyer nodes */ - @PayloadRoot(localPart = BOOK_FLIGHT_REQUEST, namespace = NAMESPACE) - public Source bookFlight(@XPathParam("//tns:flightNumber")String flightNumber, - @XPathParam("//tns:departureTime")String departureTimeString, - @XPathParam("//tns:passengers/tns:passenger")NodeList passengerNodes, - @XPathParam("//tns:passengers/tns:username")NodeList frequentFlyerNodes) throws + @PayloadRoot(localPart = BOOK_FLIGHT_REQUEST, namespace = MESSAGES_NAMESPACE) + public Source bookFlight(@XPathParam("//messages:flightNumber")String flightNumber, + @XPathParam("//messages:departureTime")String departureTimeString, + @XPathParam("//messages:passengers/messages:passenger")NodeList passengerNodes, + @XPathParam("//messages:passengers/messages:username")NodeList frequentFlyerNodes) throws NoSeatAvailableException, NoSuchFlightException, NoSuchFrequentFlyerException, DatatypeConfigurationException, JAXBException { if (logger.isDebugEnabled()) { @@ -145,8 +146,10 @@ public class XPathAirlineEndpoint implements AirlineWebServiceConstants { continue; } Element passengerElement = (Element) passengerNodes.item(i); - Element firstNameElement = (Element) passengerElement.getElementsByTagNameNS(NAMESPACE, "first").item(0); - Element lastNameElement = (Element) passengerElement.getElementsByTagNameNS(NAMESPACE, "last").item(0); + Element firstNameElement = + (Element) passengerElement.getElementsByTagNameNS(MESSAGES_NAMESPACE, "first").item(0); + Element lastNameElement = + (Element) passengerElement.getElementsByTagNameNS(MESSAGES_NAMESPACE, "last").item(0); Passenger passenger = new Passenger(firstNameElement.getTextContent(), lastNameElement.getTextContent()); passengers.add(passenger); } diff --git a/samples/airline/src/main/webapp/WEB-INF/web.xml b/samples/airline/src/main/webapp/WEB-INF/web.xml index f3090845..96f560ba 100644 --- a/samples/airline/src/main/webapp/WEB-INF/web.xml +++ b/samples/airline/src/main/webapp/WEB-INF/web.xml @@ -1,9 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" + version="2.4"> Spring-WS Airline Sample contextConfigLocation @@ -34,13 +34,17 @@ mvc - / + /flights + + + mvc + /flights/* xsd text/xml - index.html + index.jsp \ No newline at end of file diff --git a/samples/airline/src/main/webapp/WEB-INF/ws-servlet.xml b/samples/airline/src/main/webapp/WEB-INF/ws-servlet.xml index 6e812f97..122b0e7a 100644 --- a/samples/airline/src/main/webapp/WEB-INF/ws-servlet.xml +++ b/samples/airline/src/main/webapp/WEB-INF/ws-servlet.xml @@ -1,6 +1,6 @@ @@ -29,7 +29,7 @@ --> + class="org.springframework.ws.samples.airline.ws.GetFrequentFlyerMileageEndpoint"> This endpoint handles get frequent flyer mileage requests. @@ -61,7 +61,7 @@ - + @@ -77,7 +77,7 @@ - + getFrequentFlyerMileageEndpoint @@ -115,7 +115,7 @@ - http://www.springframework.org/spring-ws/samples/airline/schemas + http://www.springframework.org/spring-ws/samples/airline/schemas/messages @@ -170,11 +170,12 @@ - + + + value="http://www.springframework.org/spring-ws/samples/airline/definitions"/> diff --git a/samples/airline/src/main/webapp/airline.wsdl b/samples/airline/src/main/webapp/airline.wsdl deleted file mode 100644 index 25dc1d43..00000000 --- a/samples/airline/src/main/webapp/airline.wsdl +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/airline/src/main/webapp/index.jsp b/samples/airline/src/main/webapp/index.jsp new file mode 100644 index 00000000..18044935 --- /dev/null +++ b/samples/airline/src/main/webapp/index.jsp @@ -0,0 +1,3 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + \ No newline at end of file diff --git a/samples/airline/src/main/webapp/messages.xsd b/samples/airline/src/main/webapp/messages.xsd new file mode 100644 index 00000000..9d888b08 --- /dev/null +++ b/samples/airline/src/main/webapp/messages.xsd @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/airline/src/main/webapp/WEB-INF/xsd/airline.xsd b/samples/airline/src/main/webapp/types.xsd similarity index 59% rename from samples/airline/src/main/webapp/WEB-INF/xsd/airline.xsd rename to samples/airline/src/main/webapp/types.xsd index 5f27b82d..d51193f5 100644 --- a/samples/airline/src/main/webapp/WEB-INF/xsd/airline.xsd +++ b/samples/airline/src/main/webapp/types.xsd @@ -1,52 +1,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -114,5 +71,4 @@ - - \ No newline at end of file +