Author: julien(a)jboss.com
Date: 2007-02-14 09:15:02 -0500 (Wed, 14 Feb 2007)
New Revision: 6269
Removed:
trunk/common/src/main/org/jboss/portal/common/ant/
Modified:
trunk/core-samples/src/main/org/jboss/portal/core/portlet/test/CharsetPortlet.java
Log:
make the Charset portlet work by skipping non displayable unicode letters
Modified:
trunk/core-samples/src/main/org/jboss/portal/core/portlet/test/CharsetPortlet.java
===================================================================
---
trunk/core-samples/src/main/org/jboss/portal/core/portlet/test/CharsetPortlet.java 2007-02-14
13:39:58 UTC (rev 6268)
+++
trunk/core-samples/src/main/org/jboss/portal/core/portlet/test/CharsetPortlet.java 2007-02-14
14:15:02 UTC (rev 6269)
@@ -50,11 +50,10 @@
public void processAction(ActionRequest req, ActionResponse resp) throws
PortletException, PortletSecurityException, IOException
{
- //
String fromString = req.getParameter("from");
String toString = req.getParameter("to");
- int from = 0;
- int to = 0;
+ int from;
+ int to;
try
{
from = Integer.parseInt(fromString);
@@ -62,33 +61,35 @@
}
catch (NumberFormatException ignore)
{
- //
+ from = 65;
+ to = 256;
}
+ resp.setRenderParameter("from", "" + from);
+ resp.setRenderParameter("to", "" + to);
//
- StringBuffer buffer = new StringBuffer();
- for (int i = from; i < to; i++)
- {
- char c = (char)i;
- buffer.append(c);
- }
-
- //
String text = req.getParameter("text");
- boolean same = buffer.toString().equals(text);
-
- //
- if (!same)
+ if (text != null)
{
- log.error("The input does not match the expected string");
- log.error("Expected string " + buffer);
- log.error("Received string " + text);
+ StringBuffer buffer = new StringBuffer();
+ for (int i = from; i < to; i++)
+ {
+ char c = (char)i;
+ if (useChar(c))
+ {
+ buffer.append(c);
+ }
+ }
+ String expectedText = buffer.toString();
+ boolean same = expectedText.equals(text);
+ if (!same)
+ {
+ log.error("The input does not match the expected string");
+ log.error("Expected string " + expectedText);
+ log.error("Received string " + text);
+ }
+ resp.setRenderParameter("same", "" + same);
}
-
- //
- resp.setRenderParameter("from", "" + from);
- resp.setRenderParameter("to", "" + to);
- resp.setRenderParameter("same", "" + same);
}
protected void doView(RenderRequest req, RenderResponse resp) throws PortletException,
PortletSecurityException, IOException
@@ -143,7 +144,7 @@
//
writer.print(
"<div> Testing range : " +
- "<form action=\"" + resp.createRenderURL() + "\"
method=\"post\"\">" +
+ "<form action=\"" + resp.createActionURL() + "\"
method=\"post\"\">" +
"<input type=\"text\" name=\"from\"
value=\"" + from + "\"/>" +
"<input type=\"text\" name=\"to\"
value=\"" + to + "\"/>" +
"<input type=\"submit\"
value=\"change\"/>" +
@@ -160,15 +161,18 @@
for (int i = from; i < to; i++)
{
char c = (char)i;
- String s = EntityTable.FULL.lookup(c);
- if (s == null)
+ if (useChar(c))
{
- writer.print(c);
+ String s = EntityTable.FULL.lookup(c);
+ if (s == null)
+ {
+ writer.print(c);
+ }
+ else
+ {
+ writer.print("&" + s + ";");
+ }
}
- else
- {
- writer.print("&" + s + ";");
- }
}
writer.println(
"</textarea>" +
@@ -180,4 +184,44 @@
writer.close();
}
+ public static boolean useChar(char c)
+ {
+ switch (Character.getType(c))
+ {
+ case Character.LOWERCASE_LETTER: // Ll
+ case Character.UPPERCASE_LETTER: // Lu
+ case Character.TITLECASE_LETTER: // Lt
+ case Character.MODIFIER_LETTER: // Lm
+ case Character.OTHER_LETTER: // Lo
+ case Character.NON_SPACING_MARK: // Mn
+ case Character.ENCLOSING_MARK: // Me
+ case Character.COMBINING_SPACING_MARK: // Mc
+ case Character.DECIMAL_DIGIT_NUMBER: // Nd
+ case Character.LETTER_NUMBER: // Nl
+ case Character.OTHER_NUMBER: // No
+ case Character.SPACE_SEPARATOR: // Zs
+ case Character.LINE_SEPARATOR: // Zl
+ case Character.PARAGRAPH_SEPARATOR: // Zp
+ case Character.DASH_PUNCTUATION: // Pd
+ case Character.START_PUNCTUATION: // Ps
+ case Character.END_PUNCTUATION: // Pe
+ case Character.CONNECTOR_PUNCTUATION: // Pc
+ case Character.OTHER_PUNCTUATION: // Po
+ case Character.INITIAL_QUOTE_PUNCTUATION: // Pi
+ case Character.FINAL_QUOTE_PUNCTUATION: // Pf
+ case Character.MATH_SYMBOL: // Sm
+ case Character.CURRENCY_SYMBOL: // Sc
+ case Character.MODIFIER_SYMBOL: // Sk
+ case Character.OTHER_SYMBOL: // So
+ return true;
+ default:
+ case Character.UNASSIGNED: // Cn
+ case Character.CONTROL: // Cc
+ case Character.FORMAT: // Cf
+ case Character.PRIVATE_USE: // Co
+ case Character.SURROGATE: // Cs
+ return false;
+ }
+ }
+
}
Show replies by date