You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by do...@apache.org on 2004/11/17 16:10:38 UTC
svn commit: rev 76140 - in incubator/beehive/trunk/netui/src: pageflow/org/apache/beehive/netui/pageflow tags-html/org/apache/beehive/netui/tags/html
Author: dolander
Date: Wed Nov 17 07:10:37 2004
New Revision: 76140
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/IdMapper.java
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
Log:
Bug fix in the Form. There was an NPE if a form didn't contain any fields that have IDs.
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/IdMapper.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/IdMapper.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/IdMapper.java Wed Nov 17 07:10:37 2004
@@ -6,12 +6,20 @@
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
+/**
+ * This class creates and process and ID to Expression map. The map is used to store the mapping between
+ * the ID/Name elements in a form and the expression referencing the object the form element value maps to when
+ * the form is posted. The basic reason for this mapping, is that expression may contain invalid characters for
+ * and NMTOKEN attribute. In XHTML and HTML the id
+ */
public class IdMapper
{
- private StringBuilder _idString;
+ // This is the character
private static final String SPLIT = "\0";
private static final String CHARSET = "ISO-8859-1";
+ private StringBuilder _idString;
+
/**
* Web.xml initialization parameter for attribute transparency
*/
@@ -30,16 +38,18 @@
return _transparent.booleanValue();
}
- public static HashMap getExpressionMap(String expressions) {
+ public static HashMap getExpressionMap(String expressions)
+ {
assert(expressions != null) : "Parameter 'expressions' must not be null";
try {
- String ex = new String(Base64.decode(expressions.getBytes(CHARSET)),CHARSET);
+ String ex = new String(Base64.decode(expressions.getBytes(CHARSET)), CHARSET);
String[] expr = ex.split(SPLIT);
assert((expr.length % 2) == 0) : "Verify that there is an even number of values failed";
HashMap map = new HashMap(expr.length * 2 + 3);
- for (int i=1;i<expr.length;i+=2) {
- map.put(expr[i-1],expr[i]);
+ for (int i = 1; i < expr.length; i += 2) {
+ map.put(expr[i - 1], expr[i]);
+ System.err.println("Expand key '" + expr[i-1] + "' value '" + expr[i] + "'");
}
return map;
}
@@ -66,7 +76,8 @@
return id;
}
- public String getExpressions() {
+ public String getExpressions()
+ {
String nameExpressions = _idString.toString();
try {
byte[] bytes = nameExpressions.getBytes(CHARSET);
Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java (original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java Wed Nov 17 07:10:37 2004
@@ -34,7 +34,6 @@
import org.apache.struts.config.FormBeanConfig;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.taglib.html.Constants;
-import org.apache.xmlbeans.impl.util.Base64;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
@@ -44,7 +43,6 @@
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import java.util.*;
-import java.io.UnsupportedEncodingException;
/**
* This tag represents an input form, associated with a bean whose
@@ -737,7 +735,7 @@
String token =
(String) session.getAttribute(Globals.TRANSACTION_TOKEN_KEY);
if (token != null) {
- writeHiddenParam(Constants.TOKEN_KEY, token, writer, request);
+ writeHiddenParam(Constants.TOKEN_KEY, token, writer, request,true);
}
}
@@ -751,12 +749,12 @@
String[] paramValArray = (String[]) paramValue;
for (int i = 0; i < paramValArray.length; i++) {
String paramName = URLRewriterService.rewriteName(servletContext, request, paramKey.toString());
- writeHiddenParam(paramName, paramValArray[i], writer, request);
+ writeHiddenParam(paramName, paramValArray[i], writer, request,true);
}
}
else {
String paramName = URLRewriterService.rewriteName(servletContext, request, paramKey.toString());
- writeHiddenParam(paramName, paramValue.toString(), writer, request);
+ writeHiddenParam(paramName, paramValue.toString(), writer, request,true);
}
}
}
@@ -765,7 +763,7 @@
if (extraHiddenParams != null) {
for (Iterator i = extraHiddenParams.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
- writeHiddenParam((String) entry.getKey(), (String) entry.getValue(), writer, request);
+ writeHiddenParam((String) entry.getKey(), (String) entry.getValue(), writer, request,true);
}
}
@@ -779,9 +777,10 @@
ImplicitObjectUtil.unloadActionForm(pageContext);
// output the hidden fields for id transparency if this is turned on
- if (IdMapper.isIdTransparency(servletContext)) {
+ if (IdMapper.isIdTransparency(servletContext) && _idMapper != null) {
String encoded = _idMapper.getExpressions();
- writeHiddenParam(ProcessPopulate.IDMAP_PARAMETER_NAME, encoded, writer, request);
+ writeHiddenParam(ProcessPopulate.IDMAP_PARAMETER_NAME, encoded, writer, request,false);
+ writer.append("\n");
}
// Render a tag representing the end of our current form
@@ -818,10 +817,11 @@
* @param req THe servlet request
*/
private void writeHiddenParam(String paramName, String paramValue, AbstractRenderAppender results,
- ServletRequest req)
+ ServletRequest req,boolean newLine)
{
// put each hidden on a new line
- results.append("\n");
+ if (newLine)
+ results.append("\n");
// create the state
_hiddenState.clear();