Author: michiel
Date: 2009-05-12 21:34:19 +0200 (Tue, 12 May 2009)
New Revision: 35117

Modified:
   
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/AbstractNodeListTag.java
   
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/ListRelationsTag.java
Log:
  MMB-1819

Modified: 
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/AbstractNodeListTag.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/AbstractNodeListTag.java
  2009-05-12 19:33:52 UTC (rev 35116)
+++ 
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/AbstractNodeListTag.java
  2009-05-12 19:34:19 UTC (rev 35117)
@@ -220,8 +220,17 @@
         listHelper.doStartTagHelper();
 
         if (getReferid() != null) {
-            Object o =  getObject(getReferid());
-            if (o instanceof Collection) {
+            Object o =  
org.mmbase.util.Casting.unWrap(getObject(getReferid()));
+            if (o instanceof NodeList) {
+                // ok
+            } else if (o instanceof BridgeList) {
+                BridgeList<?> bl = (BridgeList<?>) o;
+                NodeList nl = new CollectionNodeList(bl, getCloudVar());
+                for (Map.Entry<Object, Object> entry : 
bl.getProperties().entrySet()) {
+                    nl.setProperty(entry.getKey(), entry.getValue());
+                }
+                o = nl;
+            } else if (o instanceof Collection) {
                 o  = new CollectionNodeList((Collection) o, getCloudVar());
             } else {
                 throw new JspTagException("Context variable " + getReferid() + 
" is not a NodeList (or some other Collection of Nodes), but " + (o == null ? 
"NULL" : "a " + o.getClass()));

Modified: 
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/ListRelationsTag.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/ListRelationsTag.java
     2009-05-12 19:33:52 UTC (rev 35116)
+++ 
mmbase/trunk/applications/taglib/src/org/mmbase/bridge/jsp/taglib/ListRelationsTag.java
     2009-05-12 19:34:19 UTC (rev 35117)
@@ -33,11 +33,12 @@
 
     private NodeManager nm;
     private Node     relatedFromNode;
+    private static final String RELATED_FROM = "relatedFromNode";
 
 
     Node getRelatedfromNode() {
         BridgeList<Node> returnList = getReturnList();
-        return returnList == null ? null : (Node) 
returnList.getProperty("relatedFromNode");
+        return returnList == null ? null : (Node) 
returnList.getProperty(RELATED_FROM);
     }
 
 
@@ -78,7 +79,10 @@
     public int doStartTag() throws JspTagException{
         int superresult =  doStartTagHelper(); // the super-tag handles the 
use of referid...
         if (superresult != NOT_HANDLED) {
-            relatedFromNode = (Node)      
listHelper.getReturnList().getProperty("relatedFromNode");
+            relatedFromNode = (Node)      
listHelper.getReturnList().getProperty(RELATED_FROM);
+            if (relatedFromNode == null) {
+                throw new IllegalStateException("No 'relatedFromProperty' 
found in list " + listHelper.getReturnList().getClass() + " " + 
listHelper.getReturnList());
+            }
             return superresult;
         }
 
@@ -111,8 +115,11 @@
         Queries.sortUniquely(query);
 
         NodesAndTrim result = getNodesAndTrim(query);
-        result.nodeList.setProperty("relatedFromNode", relatedFromNode); // 
used to be used by mm:relatednode but not any more.
+        assert relatedFromNode != null;
+        result.nodeList.setProperty(RELATED_FROM, relatedFromNode); // used to 
be used by mm:relatednode but not any more.
+        assert result.nodeList.getProperty(RELATED_FROM) != null;
 
+
         return setReturnValues(result.nodeList, result.needsTrim);
     }
 

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to