Author: michiel
Date: 2010-03-29 14:05:24 +0200 (Mon, 29 Mar 2010)
New Revision: 41655

Modified:
   
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
Log:
  MMB-1945

Modified: 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
    2010-03-29 12:04:29 UTC (rev 41654)
+++ 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
    2010-03-29 12:05:24 UTC (rev 41655)
@@ -131,15 +131,46 @@
         return buf;
     }
 
+
     /**
+     * @since MMBase-1.9.3
+     */
+    protected String getClassName(Class<?> c) {
+        String name = c.getName();
+        name = name.substring(c.getPackage().getName().length() + 1);
+        if (name.endsWith("DataType")) {
+            name = name.substring(0, name.length() - "DataType".length());
+        }
+        return name;
+    }
+
+    /**
      * @since MMBase-1.8
      */
     protected String getClasses(Node node, Field field) throws JspTagException 
{
         StringBuilder buf = new StringBuilder("mm_validate ");
         DataType dt = field.getDataType();
         for (String styleClass : dt.getStyleClasses()) {
-            buf.append(styleClass).append(' ');
+            buf.append(styleClass);
         }
+        {
+            Class<?> sup = dt.getClass();
+            while(DataType.class.isAssignableFrom(sup)) {
+                if (sup.equals(org.mmbase.datatypes.BasicDataType.class)) {
+                    break;
+                }
+                buf.append(" mm_dtclass_");
+                buf.append(getClassName(sup));
+                sup = sup.getSuperclass();
+            }
+            for (Class<?> c : dt.getClass().getInterfaces()) {
+                if (DataType.class.isAssignableFrom(c)) {
+                    buf.append(" mm_dtclass_");
+                    buf.append(getClassName(c));
+                }
+            }
+            buf.append(' ');
+        }
         if (field instanceof org.mmbase.bridge.util.DataTypeField) {
             buf.append("mm_dt_");
             buf.append(field.getDataType().getName());

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to