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