Author: michiel
Date: 2010-04-27 14:35:09 +0200 (Tue, 27 Apr 2010)
New Revision: 42050
Modified:
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/DataTypeTag.java
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/FieldInfoTag.java
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
Log:
MMB-1955
Modified:
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/DataTypeTag.java
===================================================================
---
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/DataTypeTag.java
2010-04-27 08:50:22 UTC (rev 42049)
+++
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/DataTypeTag.java
2010-04-27 12:35:09 UTC (rev 42050)
@@ -25,6 +25,7 @@
import javax.xml.parsers.DocumentBuilder;
import javax.servlet.jsp.*;
+import javax.servlet.http.*;
import java.util.*;
import org.mmbase.util.logging.Logger;
import org.mmbase.util.logging.Logging;
@@ -39,7 +40,6 @@
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;
@@ -56,15 +56,26 @@
field = getAttribute(f, true);
}
- protected DataTypeCollector getCollector() {
- DataTypeCollector collector = (DataTypeCollector)
pageContext.getAttribute(KEY, SCOPE);
+
+
+
+ /**
+ * @since MMBase-1.9.4
+ */
+ public static DataTypeCollector getCollector(PageContext pageContext) {
+ HttpSession session = ((HttpServletRequest)
pageContext.getRequest()).getSession(false);
+ int scope = session == null ? PageContext.REQUEST_SCOPE :
PageContext.SESSION_SCOPE;
+ DataTypeCollector collector = (DataTypeCollector)
pageContext.getAttribute(KEY, scope);
if (collector == null) {
collector = new DataTypeCollector(new Object());
- pageContext.setAttribute(KEY, collector, SCOPE);
+ pageContext.setAttribute(KEY, collector, scope);
}
return collector;
}
+ protected DataTypeCollector getCollector() {
+ return getCollector(pageContext);
+ }
/**
*
**/
Modified:
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/FieldInfoTag.java
===================================================================
---
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/FieldInfoTag.java
2010-04-27 08:50:22 UTC (rev 42049)
+++
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/FieldInfoTag.java
2010-04-27 12:35:09 UTC (rev 42050)
@@ -95,8 +95,21 @@
private static final int TYPE_IGNORE = 1000;
+ /**
+ * @since MMBase-1.9.4
+ */
+ public static enum DataTypeOrigin {
+ UNDETERMINED,
+ FIELD,
+ SYSTEM,
+ DATATYPETAG,
+ SPECIFIED
+ }
+
private String sessionName = "cloud_mmbase";
+ private DataTypeOrigin origin = DataTypeOrigin.UNDETERMINED;
+
public String getSessionName() {
return sessionName;
}
@@ -189,25 +202,35 @@
*/
public DataType getDataType() throws JspTagException {
if (dataType != Attribute.NULL) {
- if (specifiedDataType != null) throw new RuntimeException();
+ if (specifiedDataType != null) {
+ throw new RuntimeException();
+ }
String name = dataType.getString(this);
DataType dt = null;
- DataTypeCollector collector = (DataTypeCollector)
pageContext.getAttribute(DataTypeTag.KEY, DataTypeTag.SCOPE);
+ DataTypeCollector collector =
DataTypeTag.getCollector(pageContext);
if (collector != null) {
dt = collector.getDataType(name);
}
if (dt == null) {
+ origin = DataTypeOrigin.SYSTEM;
dt = DataTypes.getDataType(name);
+ } else {
+ origin = DataTypeOrigin.DATATYPETAG;
}
if (dt == null) {
- throw new JspTagException("No datatype '" + name + "'");
+ throw new JspTagException("No datatype '" + name + "' from " +
origin + " " + collector);
}
return dt;
} else {
+ origin = DataTypeOrigin.SPECIFIED;
return specifiedDataType;
}
}
+ public DataTypeOrigin getOrigin() {
+ return origin;
+ }
+
/**
* Answer the type handler for the given type.
* The type handler is responsible for showing the html
@@ -355,6 +378,7 @@
if (dataType != null) {
field = new DataTypeField(field, dataType);
} else {
+ origin = DataTypeOrigin.FIELD;
dataType = field.getDataType();
}
}
@@ -518,7 +542,6 @@
break;
}
-
helper.useEscaper(false); // fieldinfo typicaly produces xhtml
helper.setValue(show);
if (getId() != null) {
Modified:
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
===================================================================
---
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
2010-04-27 08:50:22 UTC (rev 42049)
+++
mmbase/branches/MMBase-1_9/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/AbstractTypeHandler.java
2010-04-27 12:35:09 UTC (rev 42050)
@@ -181,6 +181,10 @@
buf.append(" mm_nm_");
buf.append(field.getNodeManager().getName());
}
+ FieldInfoTag.DataTypeOrigin o = tag.getOrigin();
+ if (o != FieldInfoTag.DataTypeOrigin.FIELD) {
+ buf.append(" mm_dto_").append(o.toString().toLowerCase());
+ }
if (node != null) {
buf.append(" mm_n_");
buf.append(node.getNumber());
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs