1
2
3
4
5
6
7
8
9
10
11 package org.mule.tck.testmodels.fruit;
12
13 import java.util.ArrayList;
14 import java.util.Collections;
15 import java.util.HashMap;
16 import java.util.Iterator;
17 import java.util.List;
18 import java.util.Map;
19
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22
23 public class FruitBowl
24 {
25
26 private static final Log logger = LogFactory.getLog(FruitBowl.class);
27
28 private final Map bowl = Collections.synchronizedMap(new HashMap());
29
30 public FruitBowl()
31 {
32 super();
33 }
34
35 public FruitBowl(Fruit fruit[])
36 {
37 for (int i = 0; i < fruit.length; i++)
38 {
39 bowl.put(fruit[i].getClass(), fruit[i]);
40 }
41 }
42
43 public FruitBowl(Apple apple, Banana banana)
44 {
45 bowl.put(Apple.class, apple);
46 bowl.put(Banana.class, banana);
47 }
48
49 public boolean hasApple()
50 {
51 return bowl.get(Apple.class) != null;
52 }
53
54 public boolean hasBanana()
55 {
56 return bowl.get(Banana.class) != null;
57 }
58
59 public Fruit[] addAppleAndBanana(Apple apple, Banana banana)
60 {
61 bowl.put(Apple.class, apple);
62 bowl.put(Banana.class, banana);
63 return new Fruit[]{apple, banana};
64 }
65
66 public Fruit[] addBananaAndApple(Banana banana, Apple apple)
67 {
68 bowl.put(Apple.class, apple);
69 bowl.put(Banana.class, banana);
70 return new Fruit[]{banana, apple};
71
72 }
73
74 public List getFruit()
75 {
76 return new ArrayList(bowl.values());
77 }
78
79 public Object consumeFruit(FruitLover fruitlover)
80 {
81 logger.debug("Got a fruit lover who says: " + fruitlover.speak());
82 for (Iterator iter = bowl.values().iterator(); iter.hasNext();)
83 {
84 ((Fruit) iter.next()).bite();
85 }
86 return fruitlover;
87 }
88
89 public void setFruit(Fruit[] fruit)
90 {
91 for (int i = 0; i < fruit.length; i++)
92 {
93 bowl.put(fruit[i].getClass(), fruit[i]);
94 }
95 }
96
97 public void setFruit(List fruit)
98 {
99 this.setFruit((Fruit[]) fruit.toArray(new Fruit[fruit.size()]));
100 }
101
102 public Apple getApple()
103 {
104 return (Apple) bowl.get(Apple.class);
105 }
106
107 public void setApple(Apple apple)
108 {
109 bowl.put(Apple.class, apple);
110 }
111
112 public Banana getBanana()
113 {
114 return (Banana) bowl.get(Banana.class);
115 }
116
117 public void setBanana(Banana banana)
118 {
119 bowl.put(Banana.class, banana);
120 }
121
122 }