From 29f0ffdf74c932181e884b76688894f891c94dc7 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Sat, 24 May 2008 06:29:44 +0000 Subject: [PATCH] platform version of spring travel - under development --- .../samples/booking/HotelsController.java | 1 - .../webapp/WEB-INF/hotels/bookingsTable.jsp | 6 +- .../.classpath | 10 + .../.project | 29 +++ .../.settings/org.eclipse.jdt.core.prefs | 7 + ...clipse.jst.common.project.facet.core.prefs | 3 + ....eclipse.wst.common.project.facet.core.xml | 6 + .../.springBeans | 13 ++ .../build.xml | 10 + .../ivy.xml | 42 ++++ .../samples/springtravel/hotel/Booking.java | 204 ++++++++++++++++++ .../springtravel/hotel/BookingAgent.java | 57 +++++ .../samples/springtravel/hotel/Hotel.java | 107 +++++++++ .../springtravel/hotel/JpaBookingAgent.java | 95 ++++++++ .../springtravel/hotel/SearchCriteria.java | 70 ++++++ .../samples/springtravel/hotel/User.java | 1 + .../hotel/booking/booking-flow.xml | 33 +++ .../hotel/booking/enterBookingDetails.xhtml | 136 ++++++++++++ .../hotel/booking/messages.properties | 2 + .../hotel/booking/reviewBooking.xhtml | 76 +++++++ .../hotel/search/enterSearchCriteria.xhtml | 91 ++++++++ .../hotel/search/reviewHotel.xhtml | 56 +++++ .../hotel/search/reviewHotels.xhtml | 51 +++++ .../springtravel/hotel/search/search-flow.xml | 61 ++++++ .../src/main/resources/META-INF/MANIFEST.MF | 14 ++ .../src/main/resources/META-INF/import.sql | 27 +++ .../main/resources/META-INF/persistence.xml | 18 ++ .../META-INF/spring/module-context.xml | 49 +++++ .../META-INF/spring/osgi-context.xml | 13 ++ .../src/main/resources/log4j.xml | 52 +++++ .../.classpath | 10 + .../.project | 29 +++ .../.settings/org.eclipse.jdt.core.prefs | 7 + ...clipse.jst.common.project.facet.core.prefs | 3 + ....eclipse.wst.common.project.facet.core.xml | 6 + .../.springBeans | 15 ++ .../build.xml | 10 + .../ivy.xml | 27 +++ .../src/main/resources/META-INF/MANIFEST.MF | 8 + .../META-INF/spring/module-context.xml | 15 ++ .../META-INF/spring/osgi-context.xml | 13 ++ .../spring-travel-par/.project | 23 ++ ....eclipse.wst.common.project.facet.core.xml | 5 + .../org.eclipse.wst.validation.prefs | 54 +++++ ...org.springframework.ide.eclipse.core.prefs | 49 +++++ .../spring-travel-par/.springBeans | 13 ++ .../spring-travel-par/META-INF/MANIFEST.MF | 5 + .../spring-travel-par/build.xml | 13 ++ .../spring-travel-par/par.xml | 7 + 49 files changed, 1648 insertions(+), 4 deletions(-) create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.classpath create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.project create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jdt.core.prefs create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jst.common.project.facet.core.prefs create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.springBeans create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/build.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/ivy.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Booking.java create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/BookingAgent.java create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Hotel.java create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/JpaBookingAgent.java create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/SearchCriteria.java create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/User.java create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/booking-flow.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/enterBookingDetails.xhtml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/messages.properties create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/reviewBooking.xhtml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/enterSearchCriteria.xhtml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotel.xhtml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotels.xhtml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/search-flow.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/MANIFEST.MF create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/import.sql create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/persistence.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/module-context.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/osgi-context.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/log4j.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.classpath create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.project create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jdt.core.prefs create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jst.common.project.facet.core.prefs create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.springBeans create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/build.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/ivy.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/MANIFEST.MF create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/module-context.xml create mode 100644 spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/osgi-context.xml create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/.project create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.validation.prefs create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.springframework.ide.eclipse.core.prefs create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/.springBeans create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/META-INF/MANIFEST.MF create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/build.xml create mode 100644 spring-webflow-samples/spring-travel-platform/spring-travel-par/par.xml diff --git a/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java b/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java index ff5e5956..09ef1005 100644 --- a/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java +++ b/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java @@ -21,7 +21,6 @@ public class HotelsController { } @RequestMapping(method = RequestMethod.GET) - @ModelAttribute("bookings") public List index(SearchCriteria searchCriteria, Principal currentUser) { if (currentUser != null) { return bookingService.findBookings(currentUser.getName()); diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/bookingsTable.jsp b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/bookingsTable.jsp index a4c6eff9..7e013d7a 100644 --- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/bookingsTable.jsp +++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/bookingsTable.jsp @@ -5,13 +5,13 @@

Current Hotel Bookings

- + No bookings found - + @@ -25,7 +25,7 @@ - + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.classpath b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.classpath new file mode 100644 index 00000000..6a9295f3 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.project b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.project new file mode 100644 index 00000000..54f34192 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.project @@ -0,0 +1,29 @@ + + + org.springframework.samples.springtravel.hotel + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.springframework.ide.eclipse.core.springbuilder + + + + + + org.springframework.ide.eclipse.core.springnature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jdt.core.prefs b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..cdc8c2a3 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +#Wed Apr 30 14:04:29 BST 2008 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jst.common.project.facet.core.prefs b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jst.common.project.facet.core.prefs new file mode 100644 index 00000000..13fc2d20 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.jst.common.project.facet.core.prefs @@ -0,0 +1,3 @@ +#Wed May 07 10:35:56 BST 2008 +classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 +eclipse.preferences.version=1 diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.wst.common.project.facet.core.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..c525c05d --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.springBeans b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.springBeans new file mode 100644 index 00000000..6fc59d94 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/.springBeans @@ -0,0 +1,13 @@ + + + 1 + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/build.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/build.xml new file mode 100644 index 00000000..1fdc0b8f --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/build.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/ivy.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/ivy.xml new file mode 100644 index 00000000..1f44a7a4 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/ivy.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Booking.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Booking.java new file mode 100644 index 00000000..33b20ff3 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Booking.java @@ -0,0 +1,204 @@ +package org.springframework.samples.springtravel.hotel; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; + +import javax.persistence.Basic; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.springframework.binding.message.MessageBuilder; +import org.springframework.binding.message.MessageContext; + +/** + * A Hotel Booking made by a User. + */ +@Entity +public class Booking implements Serializable { + private Long id; + + private User user; + + private Hotel hotel; + + private Date checkinDate; + + private Date checkoutDate; + + private String creditCard; + + private String creditCardName; + + private int creditCardExpiryMonth; + + private int creditCardExpiryYear; + + private boolean smoking; + + private int beds; + + public Booking() { + Calendar calendar = Calendar.getInstance(); + setCheckinDate(calendar.getTime()); + calendar.add(Calendar.DAY_OF_MONTH, 1); + setCheckoutDate(calendar.getTime()); + } + + public Booking(Hotel hotel, User user) { + this(); + this.hotel = hotel; + this.user = user; + } + + @Transient + public BigDecimal getTotal() { + return hotel.getPrice().multiply(new BigDecimal(getNights())); + } + + @Transient + public int getNights() { + if (checkinDate == null || checkoutDate == null) { + return 0; + } else { + return (int) (checkoutDate.getTime() - checkinDate.getTime()) + / 1000 / 60 / 60 / 24; + } + } + + @Id + @GeneratedValue(strategy = GenerationType.TABLE) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Basic + @Temporal(TemporalType.DATE) + public Date getCheckinDate() { + return checkinDate; + } + + public void setCheckinDate(Date datetime) { + this.checkinDate = datetime; + } + + @ManyToOne + public Hotel getHotel() { + return hotel; + } + + public void setHotel(Hotel hotel) { + this.hotel = hotel; + } + + @ManyToOne + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + @Basic + @Temporal(TemporalType.DATE) + public Date getCheckoutDate() { + return checkoutDate; + } + + public void setCheckoutDate(Date checkoutDate) { + this.checkoutDate = checkoutDate; + } + + public String getCreditCard() { + return creditCard; + } + + public void setCreditCard(String creditCard) { + this.creditCard = creditCard; + } + + @Transient + public String getDescription() { + DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); + return hotel == null ? null : hotel.getName() + ", " + + df.format(getCheckinDate()) + " to " + + df.format(getCheckoutDate()); + } + + public boolean isSmoking() { + return smoking; + } + + public void setSmoking(boolean smoking) { + this.smoking = smoking; + } + + public int getBeds() { + return beds; + } + + public void setBeds(int beds) { + this.beds = beds; + } + + public String getCreditCardName() { + return creditCardName; + } + + public void setCreditCardName(String creditCardName) { + this.creditCardName = creditCardName; + } + + public int getCreditCardExpiryMonth() { + return creditCardExpiryMonth; + } + + public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { + this.creditCardExpiryMonth = creditCardExpiryMonth; + } + + public int getCreditCardExpiryYear() { + return creditCardExpiryYear; + } + + public void setCreditCardExpiryYear(int creditCardExpiryYear) { + this.creditCardExpiryYear = creditCardExpiryYear; + } + + public void validateEnterBookingDetails(MessageContext context) { + if (checkinDate.before(today())) { + context.addMessage(new MessageBuilder().error().source( + "checkinDate").code("booking.checkinDate.beforeToday") + .build()); + } else if (checkoutDate.before(checkinDate)) { + context.addMessage(new MessageBuilder().error().source( + "checkoutDate").code( + "booking.checkoutDate.beforeCheckinDate").build()); + } + } + + private Date today() { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_MONTH, -1); + return calendar.getTime(); + } + + @Override + public String toString() { + return "Booking(" + user + "," + hotel + ")"; + } + +} diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/BookingAgent.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/BookingAgent.java new file mode 100644 index 00000000..de53e67a --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/BookingAgent.java @@ -0,0 +1,57 @@ +package org.springframework.samples.springtravel.hotel; + +import java.util.List; + +/** + * A service interface for retrieving hotels and bookings from a backing + * repository. Also supports the ability to cancel a booking. + */ +public interface BookingAgent { + + /** + * Find bookings made by the given user + * + * @param username + * the user's name + * @return their bookings + */ + public List findBookings(String username); + + /** + * Find hotels available for booking by some criteria. + * + * @param criteria + * the search criteria + * @return a list of hotels meeting the criteria + */ + public List findHotels(SearchCriteria criteria); + + /** + * Find hotels by their identifier. + * + * @param id + * the hotel id + * @return the hotel + */ + public Hotel findHotelById(Long id); + + /** + * Create a new, transient hotel booking instance for the given user. + * + * @param hotelId + * the hotelId + * @param userName + * the user name + * @return the new transient booking instance + */ + public Booking createBooking(Long hotelId, String userName); + + /** + * Cancel an existing booking. + * + * @param id + * the booking id + */ + public void cancelBooking(Long id); + +} diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Hotel.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Hotel.java new file mode 100644 index 00000000..a06ca1eb --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/Hotel.java @@ -0,0 +1,107 @@ +package org.springframework.samples.springtravel.hotel; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +/** + * A hotel where users may book stays. + */ +@Entity +public class Hotel implements Serializable { + private Long id; + + private String name; + + private String address; + + private String city; + + private String state; + + private String zip; + + private String country; + + private BigDecimal price; + + @Id + @GeneratedValue + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getZip() { + return zip; + } + + public void setZip(String zip) { + this.zip = zip; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + @Column(precision = 6, scale = 2) + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public Booking createBooking(User user) { + return new Booking(this, user); + } + + @Override + public String toString() { + return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; + } +} diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/JpaBookingAgent.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/JpaBookingAgent.java new file mode 100644 index 00000000..1684f728 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/JpaBookingAgent.java @@ -0,0 +1,95 @@ +package org.springframework.samples.springtravel.hotel; + +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +/** + * A JPA-based implementation of the Booking Service. Delegates to a JPA entity + * manager to issue data access calls against the backing repository. The + * EntityManager reference is provided by the managing container (Spring) + * automatically. + */ +@Service("bookingService") +@Repository +public class JpaBookingAgent implements BookingAgent { + + private EntityManager em; + + @PersistenceContext + public void setEntityManager(EntityManager em) { + this.em = em; + } + + @Transactional(readOnly = true) + @SuppressWarnings("unchecked") + public List findBookings(String username) { + if (username != null) { + return em + .createQuery( + "select b from Booking b where b.user.username = :username order by b.checkinDate") + .setParameter("username", username).getResultList(); + } else { + return null; + } + } + + @Transactional(readOnly = true) + @SuppressWarnings("unchecked") + public List findHotels(SearchCriteria criteria) { + String pattern = getSearchPattern(criteria); + return em.createQuery( + "select h from Hotel h where lower(h.name) like " + pattern + + " or lower(h.city) like " + pattern + + " or lower(h.zip) like " + pattern + + " or lower(h.address) like " + pattern) + .setMaxResults(criteria.getPageSize()).setFirstResult( + criteria.getPage() * criteria.getPageSize()) + .getResultList(); + } + + @Transactional(readOnly = true) + public Hotel findHotelById(Long id) { + return em.find(Hotel.class, id); + } + + @Transactional(readOnly = true) + public Booking createBooking(Long hotelId, String username) { + Hotel hotel = em.find(Hotel.class, hotelId); + User user = findUser(username); + return new Booking(hotel, user); + } + + @Transactional + public void cancelBooking(Long id) { + Booking booking = em.find(Booking.class, id); + if (booking != null) { + em.remove(booking); + } + } + + // helpers + + private String getSearchPattern(SearchCriteria criteria) { + if (StringUtils.hasText(criteria.getSearchString())) { + return "'%" + + criteria.getSearchString().toLowerCase() + .replace('*', '%') + "%'"; + } else { + return "'%'"; + } + } + + private User findUser(String username) { + return (User) em.createQuery( + "select u from User u where u.username = :username") + .setParameter("username", username).getSingleResult(); + } + +} \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/SearchCriteria.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/SearchCriteria.java new file mode 100644 index 00000000..2b2d6570 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/SearchCriteria.java @@ -0,0 +1,70 @@ +package org.springframework.samples.springtravel.hotel; + +import java.io.Serializable; + +/** + * A backing bean for the main hotel search form. Encapsulates the criteria + * needed to perform a hotel search. + * + * It is expected a future milestone of Spring Web Flow 2.0 will allow + * flow-scoped beans like this one to hold references to transient services that + * are restored automatically when the flow is resumed on subsequent requests. + * This would allow this SearchCriteria object to delegate to the + * {@link BookingAgent} directly, for example, eliminating the need for the + * actions in {@link MainActions}. + */ +public class SearchCriteria implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * The user-provided search criteria for finding Hotels. + */ + private String searchString; + + /** + * The maximum page size of the Hotel result list + */ + private int pageSize; + + /** + * The current page of the Hotel result list. + */ + private int page; + + public String getSearchString() { + return searchString; + } + + public void setSearchString(String searchString) { + this.searchString = searchString; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public void nextPage() { + page++; + } + + public void previousPage() { + page--; + } + + public void resetPage() { + page = 0; + } +} \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/User.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/User.java new file mode 100644 index 00000000..818c6015 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/User.java @@ -0,0 +1 @@ +package org.springframework.samples.springtravel.hotel; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * A user who can book hotels. */ @Entity @Table(name = "Customer") public class User implements Serializable { private static final long serialVersionUID = -3652559447682574722L; private String username; private String password; private String name; public User() { } public User(String username, String password, String name) { this.username = username; this.password = password; this.name = name; } @Id public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User(" + username + ")"; } } \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/booking-flow.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/booking-flow.xml new file mode 100644 index 00000000..b77b7094 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/booking-flow.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/enterBookingDetails.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/enterBookingDetails.xhtml new file mode 100644 index 00000000..2e3ebfda --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/enterBookingDetails.xhtml @@ -0,0 +1,136 @@ + + + + + +
+

Book Hotel

+ +
+ +
+
+ +
+
+
Name:
+
#{booking.hotel.name}
+
+
+
Address:
+
#{booking.hotel.address}
+
+
+
City, State:
+
#{booking.hotel.city}, #{booking.hotel.state}
+
+
+
Zip:
+
#{booking.hotel.zip}
+
+
+
Country:
+
#{booking.hotel.country}
+
+
+
Nightly rate:
+
+ + + +
+
+
+
+ Check In Date: +
+
+ + + + + +
+
+
+
+ Check Out Date: +
+
+ + + + + +
+
+
+
+ Room Preference: +
+
+ + + +
+
+
+
+ Smoking Preference: +
+
+ + + +
+
+
+
+ Credit Card #: +
+
+ + + +
+
+
+
+ Credit Card Name: +
+
+ + + +
+
+
+
+ Expiration Date: +
+
+ + + + + + +
+
+
+ +   + + +
+
+
+
+ +
+
\ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/messages.properties b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/messages.properties new file mode 100644 index 00000000..cbae4eb3 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/messages.properties @@ -0,0 +1,2 @@ +booking.checkinDate.beforeToday=The Check In Date must be a future date +booking.checkoutDate.beforeCheckinDate=The Check Out Date must be later than the Check In Date diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/reviewBooking.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/reviewBooking.xhtml new file mode 100644 index 00000000..c224fcd6 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/booking/reviewBooking.xhtml @@ -0,0 +1,76 @@ + + + + + +
+

Confirm Hotel Booking

+
+ +
+ +
+
+
Name:
+
#{booking.hotel.name}
+
+
+
Address:
+
#{booking.hotel.address}
+
+
+
City, State:
+
#{booking.hotel.city}, #{booking.hotel.state}
+
+
+
Zip:
+
#{booking.hotel.zip}
+
+
+
Country:
+
#{booking.hotel.country}
+
+
+
Total payment:
+
+ + + +
+
+
+
Check In Date:
+
+ + + +
+
+
+
Check Out Date:
+
+ + + +
+
+
+
Credit Card #:
+
#{booking.creditCard}
+
+
+   +   + +
+
+
+
+ +
+
\ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/enterSearchCriteria.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/enterSearchCriteria.xhtml new file mode 100644 index 00000000..daf31531 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/enterSearchCriteria.xhtml @@ -0,0 +1,91 @@ + + + + + + +
+ + + +

Search Hotels

+ +
+
+
+ Search String: +
+
+ + + +
+
+
+
+ Maximum results: +
+
+ + + +
+
+
+ +
+
+
+
+
+ + +
+ +

Current Hotel Bookings

+ + + + Name + #{booking.hotel.name} + + + Address + #{booking.hotel.address} + + + City, State + #{booking.hotel.city}, #{booking.hotel.state} + + + Check in date + + + + + + Check out date + + + + + + Confirmation number + #{booking.id} + + + Action + + + +
+
+
+ +
+
\ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotel.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotel.xhtml new file mode 100644 index 00000000..1511f6c0 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotel.xhtml @@ -0,0 +1,56 @@ + + + + + +
+

View Hotel

+ +
+
+
Name:
+
#{hotel.name}
+
+
+
Address:
+
#{hotel.address}
+
+
+
City:
+
#{hotel.city}
+
+
+
State:
+
#{hotel.state}
+
+
+
Zip:
+
#{hotel.zip}
+
+
+
Country:
+
#{hotel.country}
+
+
+
Nightly rate:
+
+ + + +
+
+
+   + +
+
+
+
+ +
+
\ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotels.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotels.xhtml new file mode 100644 index 00000000..c6544b73 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/reviewHotels.xhtml @@ -0,0 +1,51 @@ + + + + + + +
+

Hotel Results

+

+ +

+ +
+ + + + Name + #{h.name} + + + Address + #{h.address} + + + City, State + #{h.city}, #{h.state}, #{h.country} + + + Zip + #{h.zip} + + + Action + + + +
+ + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/search-flow.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/search-flow.xml new file mode 100644 index 00000000..191d9d92 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/java/org/springframework/samples/springtravel/hotel/search/search-flow.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/MANIFEST.MF b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..fbad9048 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Spring Travel Hotels Module +Bundle-SymbolicName: org.springframework.samples.springtravel.hotel +Bundle-Vendor: SpringSource +Import-Package: javax.sql +Export-Package: org.springframework.samples.springtravel.hotel +Import-Bundle: org.springframework.faces;version="[2.0.1.RELEASE, 3.0)", + org.springframework.binding;version="[2.0.1.RELEASE, 3.0)", + org.springframework.webflow;version="[2.0.1.RELEASE, 3.0)", + com.springsource.org.jboss.el;version="2.0.0.GA" + com.springsource.org.apache.log4j;version="1.2.15" +Import-Library: org.hibernate.ejb;version="3.3.1.ga", + org.springframework.spring;version="[2.5.4, 3.0)" \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/import.sql b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/import.sql new file mode 100644 index 00000000..9a7ed4a9 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/import.sql @@ -0,0 +1,27 @@ +insert into Customer (username, name) values ('keith', 'Keith') +insert into Customer (username, name) values ('erwin', 'Erwin') +insert into Customer (username, name) values ('jeremy', 'Jeremy') +insert into Customer (username, name) values ('scott', 'Scott') +insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 199, 'Westin Diplomat', '3555 S. Ocean Drive', 'Hollywood', 'FL', '33019', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 60, 'Jameson Inn', '890 Palm Bay Rd NE', 'Palm Bay', 'FL', '32905', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 199, 'Chilworth Manor', 'The Cottage, Southampton Business Park', 'Southampton', 'Hants', 'SO16 7JF', 'UK') +insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (7, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain') +insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel') +insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan') +insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland') +insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia') +insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada') +insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA') +insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia') +insert into Hotel (id, price, name, address, city, state, zip, country) values (22, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain') +insert into Hotel (id, price, name, address, city, state, zip, country) values (23, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA') \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/persistence.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..30981407 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,18 @@ + + + + org.hibernate.ejb.HibernatePersistence + org.springframework.samples.springtravel.hotel.User + org.springframework.samples.springtravel.hotel.Booking + org.springframework.samples.springtravel.hotel.Hotel + + + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/module-context.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/module-context.xml new file mode 100644 index 00000000..1bf775f2 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/module-context.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/osgi-context.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/osgi-context.xml new file mode 100644 index 00000000..d9d9d405 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/META-INF/spring/osgi-context.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/log4j.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/log4j.xml new file mode 100644 index 00000000..4c3ff1c0 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel/src/main/resources/log4j.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.classpath b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.classpath new file mode 100644 index 00000000..6a9295f3 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.project b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.project new file mode 100644 index 00000000..329638b6 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.project @@ -0,0 +1,29 @@ + + + org.springframework.samples.springtravel.resource + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.springframework.ide.eclipse.core.springbuilder + + + + + + org.springframework.ide.eclipse.core.springnature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jdt.core.prefs b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..cdc8c2a3 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +#Wed Apr 30 14:04:29 BST 2008 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jst.common.project.facet.core.prefs b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jst.common.project.facet.core.prefs new file mode 100644 index 00000000..13fc2d20 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.jst.common.project.facet.core.prefs @@ -0,0 +1,3 @@ +#Wed May 07 10:35:56 BST 2008 +classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 +eclipse.preferences.version=1 diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.wst.common.project.facet.core.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..c525c05d --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.springBeans b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.springBeans new file mode 100644 index 00000000..08c8ccea --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/.springBeans @@ -0,0 +1,15 @@ + + + 1 + + + + + + + src/main/resources/META-INF/spring/module-context.xml + src/main/resources/META-INF/spring/osgi-context.xml + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/build.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/build.xml new file mode 100644 index 00000000..1c06e6c4 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/build.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/ivy.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/ivy.xml new file mode 100644 index 00000000..a1cab67d --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/ivy.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/MANIFEST.MF b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..a33eec27 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Spring Travel Shared Resources Module +Bundle-SymbolicName: org.springframework.samples.springtravel.resource +Bundle-Vendor: SpringSource +Import-Package: javax.sql +Import-Bundle: com.springsource.org.hsqldb;version="[1.8.0, 2.0.0)" +Import-Library: org.springframework.spring;version="[2.5.4, 3.0)" \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/module-context.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/module-context.xml new file mode 100644 index 00000000..a68e72ef --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/module-context.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/osgi-context.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/osgi-context.xml new file mode 100644 index 00000000..a85da8b0 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.resource/src/main/resources/META-INF/spring/osgi-context.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/.project b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.project new file mode 100644 index 00000000..d6fa89f8 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.project @@ -0,0 +1,23 @@ + + + springtravel-par + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.springframework.ide.eclipse.core.springbuilder + + + + + + org.springframework.ide.eclipse.core.springnature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.common.project.facet.core.xml b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..df2c698e --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.validation.prefs b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 00000000..f8d7c790 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,54 @@ +#Wed Apr 30 17:12:26 BST 2008 +DELEGATES_PREFERENCE=delegateValidatorList +USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator; +USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator; +USER_PREFERENCE=overrideGlobalPreferencesfalse +eclipse.preferences.version=1 +filters/org.eclipse.wst.wsdl.validation.wsdl/build=true +filters/org.eclipse.wst.wsdl.validation.wsdl/delegate=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator +filters/org.eclipse.wst.wsdl.validation.wsdl/groups/0/rules/0/case=false +filters/org.eclipse.wst.wsdl.validation.wsdl/groups/0/rules/0/pattern=wsdl +filters/org.eclipse.wst.wsdl.validation.wsdl/groups/0/rules/0/type=fileext +filters/org.eclipse.wst.wsdl.validation.wsdl/groups/0/type=include +filters/org.eclipse.wst.wsdl.validation.wsdl/manual=true +filters/org.eclipse.wst.wsdl.validation.wsdl/version=2 +filters/org.eclipse.wst.xml.core.xml/build=true +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/0/pattern=org.eclipse.jst.jsp.core.tldsource +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/0/type=contentType +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/1/pattern=org.eclipse.wst.xml.core.xslsource +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/1/type=contentType +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/2/pattern=org.eclipse.core.runtime.xml +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/2/type=contentType +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/3/pattern=org.eclipse.wst.xml.core.xmlsource +filters/org.eclipse.wst.xml.core.xml/groups/0/rules/3/type=contentType +filters/org.eclipse.wst.xml.core.xml/groups/0/type=include +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/0/case=true +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/0/fileType=1 +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/0/pattern=.classpath +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/0/type=file +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/1/case=true +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/1/fileType=1 +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/1/pattern=.project +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/1/type=file +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/2/pattern=org.eclipse.jst.j2ee.ejb.EJBNature +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/2/type=projectNature +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/3/case=true +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/3/fileType=2 +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/3/pattern=.settings +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/3/type=file +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/4/pattern=org.eclipse.jst.j2ee.EARNature +filters/org.eclipse.wst.xml.core.xml/groups/1/rules/4/type=projectNature +filters/org.eclipse.wst.xml.core.xml/groups/1/type=exclude +filters/org.eclipse.wst.xml.core.xml/manual=true +filters/org.eclipse.wst.xml.core.xml/version=3 +filters/org.eclipse.wst.xsd.core.xsd/build=true +filters/org.eclipse.wst.xsd.core.xsd/delegate=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator +filters/org.eclipse.wst.xsd.core.xsd/groups/0/rules/0/case=false +filters/org.eclipse.wst.xsd.core.xsd/groups/0/rules/0/pattern=xsd +filters/org.eclipse.wst.xsd.core.xsd/groups/0/rules/0/type=fileext +filters/org.eclipse.wst.xsd.core.xsd/groups/0/type=include +filters/org.eclipse.wst.xsd.core.xsd/manual=true +filters/org.eclipse.wst.xsd.core.xsd/version=2 +override=false +suspend=false +vf.version=2 diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.springframework.ide.eclipse.core.prefs b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.springframework.ide.eclipse.core.prefs new file mode 100644 index 00000000..10a332f1 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.settings/org.springframework.ide.eclipse.core.prefs @@ -0,0 +1,49 @@ +#Wed Apr 30 17:12:26 BST 2008 +eclipse.preferences.version=1 +org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true +org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=false +org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true +org.springframework.ide.eclipse.core.enable.project.preferences=false +org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=true +org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true +org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/.springBeans b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.springBeans new file mode 100644 index 00000000..95c01b92 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/.springBeans @@ -0,0 +1,13 @@ + + + 1 + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/META-INF/MANIFEST.MF b/spring-webflow-samples/spring-travel-platform/spring-travel-par/META-INF/MANIFEST.MF new file mode 100644 index 00000000..8f209442 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Application-SymbolicName: org.springframework.samples.springtravel-faces +Application-Version: 1.0.0 +Application-Name: Hotel Booking Faces Sample + diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/build.xml b/spring-webflow-samples/spring-travel-platform/spring-travel-par/build.xml new file mode 100644 index 00000000..c4a503a5 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/build.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/spring-webflow-samples/spring-travel-platform/spring-travel-par/par.xml b/spring-webflow-samples/spring-travel-platform/spring-travel-par/par.xml new file mode 100644 index 00000000..df224c27 --- /dev/null +++ b/spring-webflow-samples/spring-travel-platform/spring-travel-par/par.xml @@ -0,0 +1,7 @@ + + + + + + +
${booking.hotel.name} ${booking.hotel.address}