Update of /var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib
In directory james.mmbase.org:/tmp/cvs-serv9732
Modified Files:
Tag: MMBase-1_8
DataTypeTag.java mmbase-taglib.xml
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: DataTypeTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/DataTypeTag.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- DataTypeTag.java 19 Aug 2008 09:38:07 -0000 1.1.2.1
+++ DataTypeTag.java 19 Aug 2008 10:09:34 -0000 1.1.2.2
@@ -32,21 +32,30 @@
/**
* 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.1.2.1 2008/08/19 09:38:07 michiel Exp $
+ * @version $Id: DataTypeTag.java,v 1.1.2.2 2008/08/19 10:09:34 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);
}
+ public void setNodemanager(String n) throws JspTagException {
+ nodeManager = getAttribute(n);
+ }
+ public void setField(String f) throws JspTagException {
+ field = getAttribute(f);
+ }
+
protected DataTypeCollector getCollector() {
DataTypeCollector collector = (DataTypeCollector)
pageContext.getAttribute(KEY, SCOPE);
if (collector == null) {
@@ -73,9 +82,22 @@
"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.getString(this).equals("")) {
+ 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 {
- StringBuffer buf = new StringBuffer("<datatype base=\"");
- buf.append(base.getString(this)).append("\"
id=\"").append(getId()).append("\" ").append(ATTR).append(">");
+ StringBuffer buf = new StringBuffer("<datatype id=\"");
+ buf.append(getId()).append("\" ").append(ATTR).append(">");
if (body != null) buf.append(body);
buf.append("</datatype>");
try {
@@ -85,7 +107,7 @@
errorHandler, resolver);
Element element = dbuilder.parse(new InputSource(new
StringReader(buf.toString()))).getDocumentElement();
DataTypeCollector collector = getCollector();
- BasicDataType dt = DataTypeReader.readDataType(element,
collector.getDataType(base.getString(this)), collector).dataType;
+ BasicDataType dt = DataTypeReader.readDataType(element,
getBaseDataType(collector), collector).dataType;
if (log.isDebugEnabled()) {
log.debug("Created " + dt);
log.debug("In " + collector.getDataTypes());
Index: mmbase-taglib.xml
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/mmbase-taglib.xml,v
retrieving revision 1.374.2.31
retrieving revision 1.374.2.32
diff -u -b -r1.374.2.31 -r1.374.2.32
--- mmbase-taglib.xml 19 Aug 2008 09:38:07 -0000 1.374.2.31
+++ mmbase-taglib.xml 19 Aug 2008 10:09:34 -0000 1.374.2.32
@@ -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.374.2.31 2008/08/19 09:38:07 michiel Exp $
+version: $Id: mmbase-taglib.xml,v 1.374.2.32 2008/08/19 10:09:34 michiel Exp $
-->
<taglib author="MMBase community">
@@ -8433,7 +8433,7 @@
<tag>
<name>datatype</name>
- <extends>contextreferrer</extends>
+ <extends>cloudtreferrer</extends>
<tagclass>org.mmbase.bridge.jsp.taglib.DataTypeTag</tagclass>
<bodycontent>JSP</bodycontent>
<info>
@@ -8441,12 +8441,20 @@
<since>MMBase-1.8.7</since>
<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>
<!--
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs