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

Modified Files:
      Tag: MMBase-1_8
        FieldInfoTag.java FieldReferrerTag.java 
Log Message:
ported some stuff from head, to make 'datatype' attribute work a bit better


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib


Index: FieldInfoTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/FieldInfoTag.java,v
retrieving revision 1.97.2.7
retrieving revision 1.97.2.8
diff -u -b -r1.97.2.7 -r1.97.2.8
--- FieldInfoTag.java   19 Aug 2008 09:38:07 -0000      1.97.2.7
+++ FieldInfoTag.java   19 Aug 2008 12:34:12 -0000      1.97.2.8
@@ -43,7 +43,7 @@
  * @author Michiel Meeuwissen
  * @author Jaco de Groot
  * @author Gerard van de Looi
- * @version $Id: FieldInfoTag.java,v 1.97.2.7 2008/08/19 09:38:07 michiel Exp $
+ * @version $Id: FieldInfoTag.java,v 1.97.2.8 2008/08/19 12:34:12 michiel Exp $
  */
 public class FieldInfoTag extends FieldReferrerTag implements Writer {
     private static Logger log;
@@ -269,20 +269,32 @@
         findWriter(false); // just to call haveBody;
 
         Node          node = null;
-        final DataType dt = getDataType();
-        if (dt == null) {
-            fieldProvider = findFieldProvider();
-        } else {
+        Field field;
+        DataType dataType = getDataType();
+        fieldProvider =
+            "".equals(parentFieldId.getValue(this)) // field="" means 
explicitely don't use a field provider, so is not the same as omitting the 
attribue altogether
+            ? null : findFieldProvider(dataType == null);
+        if (fieldProvider == null) {
+            if (dataType == null) throw new JspTagException("No field provider 
found (" + parentFieldId + ") nor datatype specified");
+            final DataType dt = dataType;
             fieldProvider = new FieldProvider() {
                     private final Field f = new DataTypeField(getCloudVar(), 
dt);
                     public Field getFieldVar() { return f; }
                     public String getId() { return null; }
-                    public Node getNodeVar() { return null; }
+                    public Node getNodeVar() throws JspTagException { return 
FieldInfoTag.this.getNode(); }
 
                 };
-        }
-        Field field      = fieldProvider.getFieldVar();
+            field = fieldProvider.getFieldVar();
+        } else {
+            field = fieldProvider.getFieldVar();
         if (field == null) throw new JspTagException("No field found in " + 
fieldProvider);
+            if (dataType != null) {
+                field = new DataTypeField(field, dataType);
+            } else {
+                dataType = field.getDataType();
+            }
+        }
+
         String fieldName = field.getName();
 
         {


Index: FieldReferrerTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/FieldReferrerTag.java,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -b -r1.9 -r1.9.2.1
--- FieldReferrerTag.java       20 Jul 2005 14:57:55 -0000      1.9
+++ FieldReferrerTag.java       19 Aug 2008 12:34:12 -0000      1.9.2.1
@@ -23,12 +23,12 @@
  *
  * @author Michiel Meeuwissen
  * @see    FieldInfoTag
- * @version $Id: FieldReferrerTag.java,v 1.9 2005/07/20 14:57:55 michiel Exp $ 
+ * @version $Id: FieldReferrerTag.java,v 1.9.2.1 2008/08/19 12:34:12 michiel 
Exp $
  */
 
 public abstract class FieldReferrerTag extends NodeReferrerTag {       
 
-    private Attribute parentFieldId = Attribute.NULL;
+    protected Attribute parentFieldId = Attribute.NULL;
 
     public void setField(String field) throws JspTagException {
         parentFieldId = getAttribute(field);
@@ -39,14 +39,19 @@
     * @return the FieldProvider if found else an exception.
     *
     */ 
-    public FieldProvider findFieldProvider() throws JspTagException {        
-        FieldProvider fp =  (FieldProvider) findParentTag(FieldProvider.class, 
(String) parentFieldId.getValue(this));
+    public FieldProvider findFieldProvider(boolean ex) throws JspTagException {
+        FieldProvider fp =  (FieldProvider) findParentTag(FieldProvider.class, 
(String) parentFieldId.getValue(this), ex);
         if (fp instanceof Writer) {
             ((Writer) fp).haveBody();
         }
         return fp;
     }
 
+    public FieldProvider findFieldProvider() throws JspTagException {
+        return findFieldProvider(true);
+    }
+
+
 
     protected Field getField() throws JspTagException {
         return findFieldProvider().getFieldVar();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to