diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel.search/ivy.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel.search/ivy.xml index e6505eb4..1c16099f 100644 --- a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel.search/ivy.xml +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.hotel.search/ivy.xml @@ -19,8 +19,8 @@ - - + + 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 index f8390d83..225215c2 100644 --- 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 @@ -18,7 +18,7 @@ - + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/ivy.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/ivy.xml index 432ff502..63fa6a09 100644 --- a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/ivy.xml +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/ivy.xml @@ -21,15 +21,15 @@ - - - - + + + + - + - - + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/HotelBookingAgent.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/HotelBookingAgent.java index 56d6131c..6b3ae3d8 100644 --- a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/HotelBookingAgent.java +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/HotelBookingAgent.java @@ -19,17 +19,6 @@ public interface HotelBookingAgent { */ public List findBookings(String username); - /** - * Create a new, transient hotel booking instance for the given user. - * - * @param hotel - * the hotel - * @param userName - * the user name - * @return the new transient booking instance - */ - public HotelBooking createBooking(Hotel hotel, String userName); - /** * Cancel an existing booking. * @@ -38,4 +27,18 @@ public interface HotelBookingAgent { */ public void cancelBooking(Long id); + // flow helpers + + /** + * Create a new, persistent, hotel booking instance for the given user. This method is a flow + * helper, it has no direct relationship to the booking process. + * + * @param hotelId + * the hotel id + * @param userName + * the user name + * @return the new transient booking instance + */ + public HotelBooking createBooking(Long hotelId, String userName); + } diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/impl/JpaHotelBookingAgent.java b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/impl/JpaHotelBookingAgent.java index b2ccb8d9..136658f6 100644 --- a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/impl/JpaHotelBookingAgent.java +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/java/org/springframework/samples/springtravel/hotel/booking/impl/JpaHotelBookingAgent.java @@ -44,12 +44,6 @@ public class JpaHotelBookingAgent implements HotelBookingAgent { } } - @Transactional(readOnly = true) - public HotelBooking createBooking(Hotel hotel, String username) { - User user = findUser(username); - return new HotelBooking(hotel, user); - } - @Transactional public void cancelBooking(Long id) { HotelBooking booking = em.find(HotelBooking.class, id); @@ -58,6 +52,17 @@ public class JpaHotelBookingAgent implements HotelBookingAgent { } } + // flow helper + + @Transactional(readOnly = true) + public HotelBooking createBooking(Long hotelId, String username) { + User user = findUser(username); + Hotel hotel = findHotel(hotelId); + HotelBooking booking = new HotelBooking(hotel, user); + em.persist(booking); + return booking; + } + // helpers private User findUser(String username) { @@ -65,5 +70,11 @@ public class JpaHotelBookingAgent implements HotelBookingAgent { "select u from User u where u.username = :username") .setParameter("username", username).getSingleResult(); } + + private Hotel findHotel(Long hotelId) { + return (Hotel) em.createQuery( + "select h from Hotel h where h.id = :hotelId") + .setParameter("hotelId", hotelId).getSingleResult(); + } } \ No newline at end of file diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/META-INF/spring/flow-context.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/META-INF/spring/flow-context.xml index 6123fd8f..3a849cec 100644 --- a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/META-INF/spring/flow-context.xml +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/META-INF/spring/flow-context.xml @@ -36,8 +36,8 @@ - - + + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/booking.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/booking.xml similarity index 72% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/booking.xml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/booking.xml index 42d69b28..e2343940 100644 --- a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/booking.xml +++ b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/booking.xml @@ -10,8 +10,7 @@ - - + @@ -20,9 +19,7 @@ - - - + diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/enterBookingDetails.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/enterBookingDetails.xhtml similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/enterBookingDetails.xhtml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/enterBookingDetails.xhtml diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/messages.properties b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/messages.properties similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/messages.properties rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/messages.properties diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/reviewBooking.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/reviewBooking.xhtml similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/booking/reviewBooking.xhtml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/booking/reviewBooking.xhtml diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/enterSearchCriteria.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/enterSearchCriteria.xhtml similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/enterSearchCriteria.xhtml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/enterSearchCriteria.xhtml diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/reviewHotel.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/reviewHotel.xhtml similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/reviewHotel.xhtml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/reviewHotel.xhtml diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/reviewHotels.xhtml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/reviewHotels.xhtml similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/reviewHotels.xhtml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/reviewHotels.xhtml diff --git a/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/search.xml b/spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/search.xml similarity index 100% rename from spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/controllers/hotel/search/search.xml rename to spring-webflow-samples/spring-travel-platform/org.springframework.samples.springtravel.webapp/src/main/webapp/WEB-INF/hotel/search/search.xml