Update of 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/containers
In directory james.mmbase.org:/tmp/cvs-serv10979

Modified Files:
        ListNodesContainerTag.java 
Log Message:
 MMB-1764


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/containers
See also: http://www.mmbase.org/jira/browse/MMB-1764


Index: ListNodesContainerTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/containers/ListNodesContainerTag.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- ListNodesContainerTag.java  30 Dec 2008 17:48:08 -0000      1.29
+++ ListNodesContainerTag.java  5 Jan 2009 13:57:52 -0000       1.30
@@ -27,7 +27,7 @@
  *
  * @author Michiel Meeuwissen
  * @since  MMBase-1.7
- * @version $Id: ListNodesContainerTag.java,v 1.29 2008/12/30 17:48:08 michiel 
Exp $
+ * @version $Id: ListNodesContainerTag.java,v 1.30 2009/01/05 13:57:52 michiel 
Exp $
  */
 public class ListNodesContainerTag extends NodeReferrerTag implements 
NodeQueryContainer {
 
@@ -112,33 +112,43 @@
         return query.getCloud();
     }
 
+    /**
+     * @TODO following code must be put in org.mmbase.bridge.util.Queries or
+     * org.mmbase.util.Casting or so.
+     * @since MMBase-1.9.1
+     */
+    private NodeQuery toNodeQuery(Object o) throws JspTagException {
+        if (o == null) return null;
+        if (o instanceof NodeQuery) {
+            return (NodeQuery) o;
+        } else if (o instanceof SearchQuery) {
+            SearchQuery q = (SearchQuery) o;
+            if (q.getSteps().size() != 1) throw new IllegalStateException("The 
object " + q + " has not precisely one step and can therefore not be converted 
to a NodeQuery");
+            NodeQuery query = 
getCloudVar().getNodeManager(q.getSteps().get(0).getTableName()).createQuery();
+            query.setConstraint(Queries.copyConstraint(q.getConstraint(), 
q.getSteps().get(0), query, query.getNodeStep()));
+            query.setOffset(q.getOffset());
+            query.setMaxNumber(q.getMaxNumber());
+            query.setDistinct(q.isDistinct());
+            return query;
+        } else {
+            // will give CCE.
+            return (NodeQuery) o;
+        }
+    }
+
     public int doStartTag() throws JspException {
         initTag();
         prevQuery= pageContext.getAttribute(QueryContainer.KEY, 
QueryContainer.SCOPE);
         String cloneId = clone.getString(this);
         if (! "".equals(cloneId)) {
-            query = (NodeQuery) 
getContextProvider().getContextContainer().getObject(cloneId);
+            query = 
toNodeQuery(getContextProvider().getContextContainer().getObject(cloneId));
             if (query == null) {
                 throw new JspTagException("No query found with id '" + cloneId 
+ "' in " + getContextProvider().getContextContainer());
             }
             query = (NodeQuery) query.clone();
         } else if (getReferid() != null) {
             Object o = 
getContextProvider().getContextContainer().getObject(getReferid());
-
-            // TODO following code must be put in 
org.mmbase.bridge.util.Queries or
-            // org.mmbase.util.Casting or so.
-            if (o instanceof NodeQuery) {
-                query = (NodeQuery) o;
-            } else if (o instanceof SearchQuery) {
-                SearchQuery q = (SearchQuery) o;
-                if (q.getSteps().size() != 1) throw new 
IllegalStateException("The object " + q + " has not precisely one step and can 
therefore not be converted to a NodeQuery");
-                query = 
getCloudVar().getNodeManager(q.getSteps().get(0).getTableName()).createQuery();
-                query.setConstraint(Queries.copyConstraint(q.getConstraint(), 
q.getSteps().get(0), query, query.getNodeStep()));
-                query.setOffset(q.getOffset());
-                query.setMaxNumber(q.getMaxNumber());
-                query.setDistinct(q.isDistinct());
-
-            }
+            query = toNodeQuery(o);
 
             if (query == null) {
                 throw new JspTagException("No query found in referred id " + 
getReferid());
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to