Author: musachy
Date: Wed Aug 12 16:37:46 2009
New Revision: 803589

URL: http://svn.apache.org/viewvc?rev=803589&view=rev
Log:
WW-3158 XSLT cannot render a collection that contains a null value.

thanks to Steve Wolke for the patch

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java?rev=803589&r1=803588&r2=803589&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java
 Wed Aug 12 16:37:46 2009
@@ -229,7 +229,7 @@
      * @param parent
      * @param propertyName
      */
-    public Node adaptNullValue(BeanAdapter parent, String propertyName) {
+    public Node adaptNullValue(AdapterNode parent, String propertyName) {
         return new StringAdapter(this, parent, propertyName, "null");
     }
 

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java?rev=803589&r1=803588&r2=803589&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
 Wed Aug 12 16:37:46 2009
@@ -48,7 +48,12 @@
         List<Node> children = new ArrayList<Node>(values.size());
 
         for (Object value : values) {
-            Node childAdapter = getAdapterFactory().adaptNode(this, "item", 
value);
+            Node childAdapter;
+            if (value == null) {
+                childAdapter = getAdapterFactory().adaptNullValue(this, 
"item");
+            } else {
+                childAdapter = getAdapterFactory().adaptNode(this, "item", 
value);
+            }
             if (childAdapter != null)
                 children.add(childAdapter);
 

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java?rev=803589&r1=803588&r2=803589&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java
 Wed Aug 12 16:37:46 2009
@@ -248,6 +248,7 @@
         public List getBooks() {
             List list = new ArrayList();
             list.add(new Book("WebWork in Action", "Patrick and Jason"));
+            list.add(null);
             list.add(new Book("XWork not in Action", "Superman"));
             return list;
         }


Reply via email to