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