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

Modified Files:
        mmbase-taglib.xml DataTypeTag.java 
Log Message:
MMB-1589, made it also possible to base on datatype of a field


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


Index: mmbase-taglib.xml
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/mmbase-taglib.xml,v
retrieving revision 1.436
retrieving revision 1.437
diff -u -b -r1.436 -r1.437
--- mmbase-taglib.xml   19 Aug 2008 09:41:24 -0000      1.436
+++ mmbase-taglib.xml   19 Aug 2008 10:14:35 -0000      1.437
@@ -39,7 +39,7 @@
 Use one or more possiblevalue tags if you want to list all possible values. Use
 one or more examplevalue tags is you want to give some example values.
 
-version: $Id: mmbase-taglib.xml,v 1.436 2008/08/19 09:41:24 michiel Exp $
+version: $Id: mmbase-taglib.xml,v 1.437 2008/08/19 10:14:35 michiel Exp $
 
 -->
 <taglib author="MMBase community">
@@ -8856,7 +8856,7 @@
 
   <tag>
     <name>datatype</name>
-    <extends>contextreferrer</extends>
+    <extends>cloudreferrer</extends>
     <tagclass>org.mmbase.bridge.jsp.taglib.DataTypeTag</tagclass>
     <bodycontent>JSP</bodycontent>
     <info>This tag defines a new datatype with a lifetime of the current 
request. It's body is XML as used in datatypes.xml and builder xml's.</info>
@@ -8864,12 +8864,20 @@
     <see tag="fieldinfo" attribute="datatype" />
     <attribute>
       <name>base</name>
-      <required>true</required>
+      <required>false</required>
     </attribute>
     <attribute>
       <name>id</name>
       <required>true</required>
     </attribute>
+    <attribute>
+      <name>nodemanager</name>
+      <required>false</required>
+    </attribute>
+    <attribute>
+      <name>field</name>
+      <required>false</required>
+    </attribute>
   </tag>
 
   <!--


Index: DataTypeTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/DataTypeTag.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- DataTypeTag.java    19 Aug 2008 09:41:24 -0000      1.2
+++ DataTypeTag.java    19 Aug 2008 10:14:35 -0000      1.3
@@ -32,19 +32,28 @@
 /**
  * This tags produces request scoped new datatypes. (To be used in conjuction 
with mm:fieldinfo datatype='')
  * @author Michiel Meeuwissen
- * @version $Id: DataTypeTag.java,v 1.2 2008/08/19 09:41:24 michiel Exp $
+ * @version $Id: DataTypeTag.java,v 1.3 2008/08/19 10:14:35 michiel Exp $
  * @since MMBase-1.8.7
  */
-public class DataTypeTag extends ContextReferrerTag {
+public class DataTypeTag extends CloudReferrerTag {
     private static final Logger log = 
Logging.getLoggerInstance(DataTypeTag.class);
 
     public static final String KEY = "org.mmbase.taglib.datatypecollector";
     public static final int SCOPE = PageContext.REQUEST_SCOPE;
 
     private Attribute base = Attribute.NULL;
+    private Attribute nodeManager = Attribute.NULL;
+    private Attribute field = Attribute.NULL;
 
     public void setBase(String b) throws JspTagException {
-        base = getAttribute(b);
+        base = getAttribute(b, true);
+    }
+
+    public void setNodemanager(String n) throws JspTagException {
+        nodeManager = getAttribute(n, true);
+    }
+    public void setField(String f) throws JspTagException {
+        field = getAttribute(f, true);
     }
 
     protected DataTypeCollector getCollector() {
@@ -73,6 +82,19 @@
         "xmlns=\"" + DataTypeReader.NAMESPACE_DATATYPES + "\" " +
         "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; " +
         "xsi:schemaLocation=\"" + DataTypeReader.NAMESPACE_DATATYPES + " " + 
DataTypeReader.NAMESPACE_DATATYPES + ".xsd\"";
+
+    protected BasicDataType getBaseDataType(DataTypeCollector collector) 
throws JspTagException {
+        if (base == Attribute.NULL) {
+            String nm = nodeManager.getString(this);
+            if ("".equals(nm)) throw new JspTagException("Should specify 
either 'base' or 'nodemanager' attribute");
+            String fn = field.getString(this);
+            if ("".equals(fn)) throw new JspTagException("Attribute 'field' is 
required when using 'nodemanager' attribute");
+            return (BasicDataType) 
getCloudVar().getNodeManager(nm).getField(fn).getDataType();
+        } else {
+            return collector.getDataType(base.getString(this));
+        }
+    }
+
     public int doEndTag() throws JspTagException {
         StringBuilder buf = new StringBuilder("<datatype base=\"");
         buf.append(base.getString(this)).append("\" 
id=\"").append(getId()).append("\" ").append(ATTR).append(">");
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to