You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by dj...@apache.org on 2007/06/19 02:44:00 UTC

svn commit: r548538 - in /geronimo/xbean/trunk/xbean-spring/src: main/java/org/apache/xbean/spring/generator/ test/java/org/apache/xbean/spring/context/ test/java/org/apache/xbean/spring/example/ test/resources/org/apache/xbean/spring/context/

Author: djencks
Date: Mon Jun 18 17:43:59 2007
New Revision: 548538

URL: http://svn.apache.org/viewvc?view=rev&rev=548538
Log:
XBEAN-89 allow all kinds of collections, not just lists

Modified:
    geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java
    geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/context/RestaurantUsingSpringTest.java
    geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/example/RestaurantService.java
    geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-normal.xml
    geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-spring-extended.xml
    geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-mixed.xml
    geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-root.xml
    geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-simple.xml
    geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean.xml

Modified: geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java Mon Jun 18 17:43:59 2007
@@ -61,7 +61,7 @@
     private final String defaultNamespace;
     private final File[] srcDirs;
     private final String[] excludedClasses;
-    private Type listType;
+    private Type collectionType;
 
     public QdoxMappingLoader(String defaultNamespace, File[] srcDirs, String[] excludedClasses) {
         this.defaultNamespace = defaultNamespace;
@@ -97,7 +97,7 @@
             }
         }
 
-        listType = builder.getClassByName("java.util.List").asType();
+        collectionType = builder.getClassByName("java.util.Collection").asType();
         Set namespaces = loadNamespaces(builder);
         return namespaces;
     }
@@ -497,7 +497,7 @@
         try {
             if (type.isArray()) {
                 return org.apache.xbean.spring.generator.Type.newArrayType(type.getValue(), type.getDimensions());
-            } else if (type.isA(listType)) {
+            } else if (type.isA(collectionType)) {
                 if (nestedType == null) nestedType = "java.lang.Object";
                 return org.apache.xbean.spring.generator.Type.newCollectionType(type.getValue(),
                         org.apache.xbean.spring.generator.Type.newSimpleType(nestedType));

Modified: geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/context/RestaurantUsingSpringTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/context/RestaurantUsingSpringTest.java?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/context/RestaurantUsingSpringTest.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/context/RestaurantUsingSpringTest.java Mon Jun 18 17:43:59 2007
@@ -16,14 +16,15 @@
  */
 package org.apache.xbean.spring.context;
 
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.apache.xbean.spring.example.PizzaService;
-import org.apache.xbean.spring.example.RestaurantService;
-
 import java.util.List;
+import java.util.Set;
 
 import javax.xml.namespace.QName;
 
+import org.apache.xbean.spring.example.PizzaService;
+import org.apache.xbean.spring.example.RestaurantService;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+
 /**
  * @author James Strachan
  * @version $Id$
@@ -36,7 +37,7 @@
 
         QName service = restaurant.getServiceName();
         assertEquals(new QName("http://acme.com", "xyz"), service);
-        
+
         // dinners (1-many using list)
         List dinners = restaurant.getDinnerMenu();
         assertNotNull("dinners is null!", dinners);
@@ -46,12 +47,28 @@
         assertEquals("topping", "Ham", pizza.getTopping());
         assertEquals("cheese", "Mozzarella", pizza.getCheese());
         assertEquals("size", 15, pizza.getSize());
-        
-         pizza = (PizzaService) dinners.get(1);
+
+        pizza = (PizzaService) dinners.get(1);
         assertEquals("topping", "Eggs", pizza.getTopping());
         assertEquals("cheese", "Mozzarella", pizza.getCheese());
         assertEquals("size", 16, pizza.getSize());
 
+        // dinners (1-many using Set)
+        Set<PizzaService> snacks = restaurant.getSnackMenu();
+        assertNotNull("dinners is null!", snacks);
+        assertEquals("dinners size: " + snacks, 2, snacks.size());
+        for (PizzaService snack : snacks) {
+            String topping = snack.getTopping();
+            if ("Tofu".equals(topping)) {
+                assertEquals("cheese", "Parmesan", snack.getCheese());
+                assertEquals("size", 6, snack.getSize());
+            } else if ("Prosciutto".equals(topping)) {
+                assertEquals("cheese", "Blue", snack.getCheese());
+                assertEquals("size", 8, snack.getSize());
+            } else {
+                fail("wrong topping: " + snack);
+            }
+        }
         // lunches (1-many using array)
         PizzaService[] lunches = restaurant.getLunchMenu();
         assertNotNull("lunches is null!", lunches);
@@ -61,7 +78,6 @@
         assertEquals("topping", "Chicken", pizza.getTopping());
         assertEquals("cheese", "Brie", pizza.getCheese());
         assertEquals("size", 17, pizza.getSize());
-
 
         // favourite (1-1)
         pizza = restaurant.getFavourite();

Modified: geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/example/RestaurantService.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/example/RestaurantService.java?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/example/RestaurantService.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/example/RestaurantService.java Mon Jun 18 17:43:59 2007
@@ -20,6 +20,7 @@
 
 import java.net.URI;
 import java.util.List;
+import java.util.Set;
 
 /**
  * An owner POJO used for testing out nested properties
@@ -36,6 +37,7 @@
     private PizzaService favourite;
     private List dinnerMenu;
     private PizzaService[] lunchMenu;
+    private Set<PizzaService> snackMenu;
     private QName serviceName;
     private URI uri;
 
@@ -56,6 +58,14 @@
 
     public void setLunchMenu(PizzaService[] lunchMenu) {
         this.lunchMenu = lunchMenu;
+    }
+
+    public Set<PizzaService> getSnackMenu() {
+        return snackMenu;
+    }
+
+    public void setSnackMenu(Set<PizzaService> snackMenu) {
+        this.snackMenu = snackMenu;
     }
 
     public PizzaService getFavourite() {

Modified: geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-normal.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-normal.xml?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-normal.xml (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-normal.xml Mon Jun 18 17:43:59 2007
@@ -51,6 +51,20 @@
         </bean>
       </list>
     </property>
+    <property name="snackMenu">
+      <set>
+        <bean class="org.apache.xbean.spring.example.PizzaService">
+          <property name="topping" value="Tofu" />
+          <property name="cheese" value="Parmesan" />
+          <property name="size" value="6" />
+        </bean>
+        <bean class="org.apache.xbean.spring.example.PizzaService">
+          <property name="topping" value="Prosciutto" />
+          <property name="cheese" value="Blue" />
+          <property name="size" value="8" />
+        </bean>
+      </set>
+    </property>
     <property name="lunchMenu">
       <list>
         <bean class="org.apache.xbean.spring.example.PizzaService">

Modified: geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-spring-extended.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-spring-extended.xml?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-spring-extended.xml (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-spring-extended.xml Mon Jun 18 17:43:59 2007
@@ -45,6 +45,20 @@
         </bean>
       </list>
     </property>
+    <property name="snackMenu">
+      <set>
+        <bean class="org.apache.xbean.spring.example.PizzaService">
+          <property name="topping" value="Tofu" />
+          <property name="cheese" value="Parmesan" />
+          <property name="size" value="6" />
+        </bean>
+        <bean class="org.apache.xbean.spring.example.PizzaService">
+          <property name="topping" value="Prosciutto" />
+          <property name="cheese" value="Blue" />
+          <property name="size" value="8" />
+        </bean>
+      </set>
+    </property>
     <property name="lunchMenu">
       <list>
         <bean class="org.apache.xbean.spring.example.PizzaService">

Modified: geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-mixed.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-mixed.xml?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-mixed.xml (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-mixed.xml Mon Jun 18 17:43:59 2007
@@ -31,6 +31,11 @@
       </bean>
     </dinnerMenu>
 
+    <snackMenu>
+      <pizza myTopping="Tofu" cheese="Parmesan" size="6"/>
+      <pizza myTopping="Prosciutto" cheese="Blue" size="8"/>
+    </snackMenu>
+
     <lunchMenu>
       <bean xmlns="" class="org.apache.xbean.spring.example.PizzaService">
         <property name="topping" value="Chicken"/>

Modified: geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-root.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-root.xml?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-root.xml (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-root.xml Mon Jun 18 17:43:59 2007
@@ -24,6 +24,11 @@
       <pizza myTopping="Eggs" cheese="Mozzarella" size="16"/>
     </dinnerMenu>
 
+    <snackMenu>
+      <pizza myTopping="Tofu" cheese="Parmesan" size="6"/>
+      <pizza myTopping="Prosciutto" cheese="Blue" size="8"/>
+    </snackMenu>
+
     <lunchMenu>
       <pizza myTopping="Chicken" cheese="Brie" size="17"/>
     </lunchMenu>

Modified: geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-simple.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-simple.xml?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-simple.xml (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean-simple.xml Mon Jun 18 17:43:59 2007
@@ -26,6 +26,11 @@
       <pizza myTopping="Eggs" cheese="Mozzarella" size="16"/>
     </dinnerMenu>
 
+    <snackMenu>
+      <pizza myTopping="Tofu" cheese="Parmesan" size="6"/>
+      <pizza myTopping="Prosciutto" cheese="Blue" size="8"/>
+    </snackMenu>
+
     <lunchMenu>
       <pizza myTopping="Chicken" cheese="Brie" size="17"/>
     </lunchMenu>

Modified: geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean.xml?view=diff&rev=548538&r1=548537&r2=548538
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean.xml (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/resources/org/apache/xbean/spring/context/restaurant-xbean.xml Mon Jun 18 17:43:59 2007
@@ -18,11 +18,11 @@
 
 -->
 <!-- START SNIPPET: xml -->
-<beans xmlns="http://xbean.apache.org/schemas/pizza" 
+<beans xmlns="http://xbean.apache.org/schemas/pizza" 
        xmlns:foo="http://acme.com">
 
-  <restaurant id="restaurant" 
-              serviceName="foo:xyz" 
+  <restaurant id="restaurant" 
+              serviceName="foo:xyz" 
               uri="http://cheese.com">
     <dinnerMenu>
       <pizza myTopping="Ham" cheese="Mozzarella" size="15"/>
@@ -32,6 +32,11 @@
     <lunchMenu>
       <pizza myTopping="Chicken" cheese="Brie" size="17"/>
     </lunchMenu>
+
+    <snackMenu>
+      <pizza myTopping="Tofu" cheese="Parmesan" size="6"/>
+      <pizza myTopping="Prosciutto" cheese="Blue" size="8"/>
+    </snackMenu>
 
     <favourite>
       <pizza myTopping="Salami" cheese="Edam" size="17"/>