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

Modified Files:
        FieldInfoTag.java 
Log Message:
change so that if you use the datatype attribute, it still uses the current 
node to store and retreive values. If you don't want that, use field=''


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.107
retrieving revision 1.108
diff -u -b -r1.107 -r1.108
--- FieldInfoTag.java   3 Apr 2008 16:29:27 -0000       1.107
+++ FieldInfoTag.java   25 Jul 2008 09:36:38 -0000      1.108
@@ -43,7 +43,7 @@
  * @author Michiel Meeuwissen
  * @author Jaco de Groot
  * @author Gerard van de Looi
- * @version $Id: FieldInfoTag.java,v 1.107 2008/04/03 16:29:27 michiel Exp $
+ * @version $Id: FieldInfoTag.java,v 1.108 2008/07/25 09:36:38 michiel Exp $
  */
 public class FieldInfoTag extends FieldReferrerTag implements Writer {
     private static Logger log;
@@ -163,19 +163,19 @@
      * @since MMBase-1.8
      */
     public void setDatatype(String d) throws JspTagException {
-        dataType = getAttribute(d);
+        dataType = getAttribute(d, true);
     }
     /**
      * @since MMBase-1.8
      */
     public DataType getDataType() throws JspTagException {
-        String dataTypeName = dataType.getString(this);
-        if (dataTypeName.length() == 0) {
+        if (dataType != Attribute.NULL) {
+            DataType dt =  DataTypes.getDataType(dataType.getString(this));
+            if (dt == null) throw new JspTagException("No datatype '" + 
dataType + "'");
+            return dt;
+        } else {
             return null;
         }
-        DataType dt =  DataTypes.getDataType(dataTypeName);
-        if (dt == null) throw new JspTagException("No datatype '" + 
dataTypeName + "'");
-        return dt;
     }
 
     /**
@@ -183,7 +183,7 @@
      * The type handler is responsible for showing the html
      */
     protected TypeHandler getTypeHandler(Field field) {
-        DataType<Object> dataType = field.getDataType();
+        DataType<?> dataType = field.getDataType();
         Class<? extends DataType> dataTypeClass = dataType.getClass();
         Class<? extends TypeHandler> handler = handlers.get(dataTypeClass);
         log.debug("Looking for typehandler for " + dataTypeClass);
@@ -195,7 +195,7 @@
         }
 
         if (handler == null) {
-            log.warn("Could not find typehandler for type " + 
field.getDataType() + " of " + field.getNodeManager().getName() + "." + 
field.getName() + " using default for type.");
+            log.warn("Could not find typehandler for type " + dataType + " of 
" + field.getNodeManager().getName() + "." + field.getName() + " using default 
for type.");
             String t = Fields.getTypeDescription(field.getType());
             if (t != null) {
                 DataType dt = DataTypes.getDataType(t);
@@ -259,14 +259,15 @@
 
     private FieldProvider fieldProvider;
 
-    public int doStartTag() throws JspTagException{
+    public int doStartTag() throws JspTagException {
         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)) ? null : 
findFieldProvider(dataType != null);
+        if (fieldProvider == null) {
+            final DataType dt = dataType;
             fieldProvider = new FieldProvider() {
                     private final Field f = new DataTypeField(getCloudVar(), 
dt);
                     public Field getFieldVar() { return f; }
@@ -274,9 +275,13 @@
                     public Node getNodeVar() { return null; }
 
                 };
-        }
-        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);
+        }
+
         String fieldName = field.getName();
 
         {
@@ -431,10 +436,10 @@
             show = field.getDescription(locale);
             break;
         case TYPE_DATATYPE:
-            show = field.getDataType().getName();
+            show = dataType.getName();
             break;
         case TYPE_DATATYPEDESCRIPTION:
-            show = field.getDataType().getLocalizedDescription().get(locale);
+            show = dataType.getLocalizedDescription().get(locale);
             break;
         default:
             log.debug("Unknown info type " + infoType);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to