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; }