diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java index a59fbd43..2f0b5b49 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,16 +20,18 @@ import java.util.List; /** * @author Marius Bogoevici + * @author Tom McCuch */ public class Delivery { private static final String SEPARATOR = "-----------------------"; - private List deliveredDrinks; private int orderNumber; + // Default constructor required by Jackson Java JSON-processor + public Delivery() {} public Delivery(List deliveredDrinks) { assert(deliveredDrinks.size() > 0); @@ -42,10 +44,18 @@ public class Delivery { return orderNumber; } + public void setOrderNumber(int orderNumber) { + this.orderNumber = orderNumber; + } + public List getDeliveredDrinks() { return deliveredDrinks; } + public void setDeliveredDrinks(List deliveredDrinks) { + this.deliveredDrinks = deliveredDrinks; + } + @Override public String toString() { StringBuffer buffer = new StringBuffer(SEPARATOR + "\n"); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java index 504a8658..aa336199 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package org.springframework.integration.samples.cafe; /** * @author Marius Bogoevici + * @author Tom McCuch */ public class Drink { @@ -30,10 +31,13 @@ public class Drink { private int orderNumber; - public Drink(int orderNumber, DrinkType drinkType, boolean hot, int shots) { + // Default constructor required by Jackson Java JSON-processor + public Drink() {} + + public Drink(int orderNumber, DrinkType drinkType, boolean iced, int shots) { this.orderNumber = orderNumber; this.drinkType = drinkType; - this.iced = hot; + this.iced = iced; this.shots = shots; } @@ -42,6 +46,34 @@ public class Drink { return orderNumber; } + public void setOrderNumber(int orderNumber) { + this.orderNumber = orderNumber; + } + + public boolean isIced() { + return this.iced; + } + + public void setIced(boolean iced) { + this.iced = iced; + } + + public DrinkType getDrinkType() { + return this.drinkType; + } + + public void setDrinkType(DrinkType drinkType) { + this.drinkType = drinkType; + } + + public int getShots() { + return this.shots; + } + + public void setShots(int shots) { + this.shots = shots; + } + @Override public String toString() { return (iced?"Iced":"Hot") + " " + drinkType.toString() + ", " + shots + " shots."; diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java index 7e438db4..4944ca4c 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java index 6b6f68d6..448d7186 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java @@ -22,6 +22,7 @@ import java.util.List; /** * @author Mark Fisher * @author Marius Bogoevici + * @author Tom McCuch */ public class Order { @@ -29,20 +30,30 @@ public class Order { private int number; + // Default constructor required by Jackson Java JSON-processor + public Order() {} + public Order(int number) { this.number = number; } public void addItem(DrinkType drinkType, int shots, boolean iced) { - this.orderItems.add(new OrderItem(this, drinkType, shots, iced)); + this.orderItems.add(new OrderItem(this.number, drinkType, shots, iced)); } public int getNumber() { return number; } + public void setNumber(int number) { + this.number = number; + } + public List getItems() { return this.orderItems; } + public void setItems(List orderItems) { + this.orderItems = orderItems; + } } diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java index 0215ff4c..d256bd81 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.springframework.integration.samples.cafe; /** * @author Mark Fisher * @author Marius Bogoevici + * @author Tom McCuch */ public class OrderItem { @@ -28,34 +29,51 @@ public class OrderItem { private boolean iced = false; - private final Order order; + private int orderNumber; + // Default constructor required by Jackson Java JSON-processor + public OrderItem() {} - public OrderItem(Order order, DrinkType type, int shots, boolean iced) { - this.order = order; + public OrderItem(int orderNumber, DrinkType type, int shots, boolean iced) { + this.orderNumber = orderNumber; this.type = type; this.shots = shots; this.iced = iced; } - - public Order getOrder() { - return this.order; + public int getOrderNumber() { + return this.orderNumber; } + public void setOrderNumber(int orderNumber) { + this.orderNumber = orderNumber; + } + public boolean isIced() { return this.iced; } - public int getShots() { + public void setIced(boolean iced) { + this.iced = iced; + } + + public int getShots() { return shots; } - public DrinkType getDrinkType() { + public void setShots(int shots) { + this.shots = shots; + } + + public DrinkType getDrinkType() { return this.type; } - public String toString() { + public void setDrinkType(DrinkType type) { + this.type = type; + } + + public String toString() { return ((this.iced) ? "iced " : "hot ") + this.shots + " shot " + this.type; } diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java index 3ceac0e3..ece88941 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java @@ -27,7 +27,9 @@ import org.springframework.stereotype.Component; /** * @author Mark Fisher * @author Marius Bogoevici + * @author Tom McCuch */ + @Component public class Barista { private static Logger logger = Logger.getLogger(Barista.class); @@ -54,8 +56,8 @@ public class Barista { Thread.sleep(this.hotDrinkDelay); logger.info(Thread.currentThread().getName() + " prepared hot drink #" + hotDrinkCounter.incrementAndGet() + " for order #" - + orderItem.getOrder().getNumber() + ": " + orderItem); - return new Drink(orderItem.getOrder().getNumber(), orderItem.getDrinkType(), orderItem.isIced(), + + orderItem.getOrderNumber() + ": " + orderItem); + return new Drink(orderItem.getOrderNumber(), orderItem.getDrinkType(), orderItem.isIced(), orderItem.getShots()); } catch (InterruptedException e) { Thread.currentThread().interrupt(); @@ -69,8 +71,8 @@ public class Barista { Thread.sleep(this.coldDrinkDelay); logger.info(Thread.currentThread().getName() + " prepared cold drink #" + coldDrinkCounter.incrementAndGet() + " for order #" - + orderItem.getOrder().getNumber() + ": " + orderItem); - return new Drink(orderItem.getOrder().getNumber(), orderItem.getDrinkType(), orderItem.isIced(), + + orderItem.getOrderNumber() + ": " + orderItem); + return new Drink(orderItem.getOrderNumber(), orderItem.getDrinkType(), orderItem.isIced(), orderItem.getShots()); } catch (InterruptedException e) { Thread.currentThread().interrupt(); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java index 4db79f81..c4d117f0 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,9 @@ import org.springframework.integration.samples.cafe.OrderItem; /** * @author Mark Fisher * @author Marius Bogoevici + * @author Tom McCuch */ + public class Barista { private static Logger logger = Logger.getLogger(Barista.class); private long hotDrinkDelay = 5000; @@ -50,8 +52,8 @@ public class Barista { Thread.sleep(this.hotDrinkDelay); logger.info(Thread.currentThread().getName() + " prepared hot drink #" + hotDrinkCounter.incrementAndGet() + " for order #" - + orderItem.getOrder().getNumber() + ": " + orderItem); - return new Drink(orderItem.getOrder().getNumber(), orderItem.getDrinkType(), orderItem.isIced(), + + orderItem.getOrderNumber() + ": " + orderItem); + return new Drink(orderItem.getOrderNumber(), orderItem.getDrinkType(), orderItem.isIced(), orderItem.getShots()); } catch (InterruptedException e) { Thread.currentThread().interrupt(); @@ -64,8 +66,8 @@ public class Barista { Thread.sleep(this.coldDrinkDelay); logger.info(Thread.currentThread().getName() + " prepared cold drink #" + coldDrinkCounter.incrementAndGet() + " for order #" - + orderItem.getOrder().getNumber() + ": " + orderItem); - return new Drink(orderItem.getOrder().getNumber(), orderItem.getDrinkType(), orderItem.isIced(), + + orderItem.getOrderNumber() + ": " + orderItem); + return new Drink(orderItem.getOrderNumber(), orderItem.getDrinkType(), orderItem.isIced(), orderItem.getShots()); } catch (InterruptedException e) { Thread.currentThread().interrupt(); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java new file mode 100644 index 00000000..23c110c6 --- /dev/null +++ b/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java @@ -0,0 +1,60 @@ +/* + * Copyright 2002-2011 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.integration.samples.cafe.xml; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.samples.cafe.Cafe; +import org.springframework.integration.samples.cafe.DrinkType; +import org.springframework.integration.samples.cafe.Order; + +/** + * Provides the 'main' method for running the Cafe Demo application + * using AMQP. Before running, be sure to have a RabbitMQ broker + * started on localhost:5672 configured with the default + * guest | guest client credentials on the / vHost. When an order is + * placed, the Cafe will send that order to the "orders" channel. + *

+ * The relevant components are defined within the configuration files: + * ("cafeDemo-amqp-xml.xml", "cafeDemo-amqp-baristaCold-xml.xml, and + * "cafeDemo-amqp-baristaHot-xml.xml). + *

+ * If deploying in SpringSource dmServer, the relevant ApplicationContext + * configuration is in the META-INF/spring directory instead. + * + * @author Tom McCuch + */ +public class CafeDemoAppAmqp { + + public static void main(String[] args) { + AbstractApplicationContext context = + new ClassPathXmlApplicationContext( + new String[] {"/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml", + "/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml", + "/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml"}, + CafeDemoAppAmqp.class); + + Cafe cafe = (Cafe) context.getBean("cafe"); + for (int i = 1; i <= 100; i++) { + Order order = new Order(i); + order.addItem(DrinkType.LATTE, 2, false); + order.addItem(DrinkType.MOCHA, 3, true); + cafe.placeOrder(order); + } + context.close(); + } +} diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml b/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml index d840e9b7..b5472278 100644 --- a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml +++ b/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml @@ -22,9 +22,8 @@ - - - + diff --git a/applications/cafe/src/test/resources/log4j.xml b/applications/cafe/src/test/resources/log4j.xml index 678b69b3..bbcbcf15 100644 --- a/applications/cafe/src/test/resources/log4j.xml +++ b/applications/cafe/src/test/resources/log4j.xml @@ -6,7 +6,7 @@ - + @@ -15,6 +15,14 @@ + + + + + + + +