Author: chris.laprun(a)jboss.com
Date: 2007-01-19 01:29:40 -0500 (Fri, 19 Jan 2007)
New Revision: 6045
Modified:
trunk/common/src/main/org/jboss/portal/common/util/Tools.java
trunk/common/src/main/org/jboss/portal/test/common/StringTestCase.java
trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/PortletUtils.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/MarkupPortlet.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/RenderRequestProcessor.java
Log:
- JBPORTAL-1041: Re-activated fragment processing. Replace only namespaces in markup. This
should be enough and doesn't require html parsing.
- Tools.replaceBoundedString does all the work and allows to replace occurences of Strings
bounded by a prefix and suffix by a replacement String.
- Added suffix to namespace generation so that it can be detected and replaced in fragment
processing.
- Updated test cases.
Modified: trunk/common/src/main/org/jboss/portal/common/util/Tools.java
===================================================================
--- trunk/common/src/main/org/jboss/portal/common/util/Tools.java 2007-01-18 23:55:48 UTC
(rev 6044)
+++ trunk/common/src/main/org/jboss/portal/common/util/Tools.java 2007-01-19 06:29:40 UTC
(rev 6045)
@@ -998,4 +998,37 @@
return o1.equals(o2);
}
}
+
+ public static String replaceBoundedString(String initial, String prefix, String
suffix, String replacement)
+ {
+ if (initial == null || initial.length() == 0)
+ {
+ return initial;
+ }
+
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(prefix,
"prefix", "Tools.replaceBoundedString");
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(suffix,
"suffix", "Tools.replaceBoundedString");
+ ParameterValidation.throwIllegalArgExceptionIfNull(replacement,
"replacement");
+
+ StringBuffer tmp = new StringBuffer(initial);
+ int prefixIndex = tmp.indexOf(prefix);
+ int suffixLength = suffix.length();
+ int prefixLength = prefix.length();
+
+ while (prefixIndex != -1)
+ {
+ int suffixIndex = tmp.indexOf(suffix, prefixIndex);
+
+ if (suffixIndex != -1)
+ {
+ tmp.delete(prefixIndex, suffixIndex + suffixLength);
+ tmp.insert(prefixIndex, replacement);
+ }
+
+ prefixIndex = tmp.indexOf(prefix, prefixIndex + prefixLength);
+ }
+
+ return tmp.toString();
+
+ }
}
\ No newline at end of file
Modified: trunk/common/src/main/org/jboss/portal/test/common/StringTestCase.java
===================================================================
--- trunk/common/src/main/org/jboss/portal/test/common/StringTestCase.java 2007-01-18
23:55:48 UTC (rev 6044)
+++ trunk/common/src/main/org/jboss/portal/test/common/StringTestCase.java 2007-01-19
06:29:40 UTC (rev 6045)
@@ -46,4 +46,13 @@
assertEquals("_defg_defg_", Tools.replace("_abc_abc_",
"abc", "defg"));
}
+ public void testReplaceBoundedString()
+ {
+ assertEquals("", Tools.replaceBoundedString("",
"PREFIX", "SUFFIX", "REPLACEMENT"));
+ assertEquals("REPLACEMENT",
Tools.replaceBoundedString("PREFIXSUFFIX", "PREFIX",
"SUFFIX", "REPLACEMENT"));
+ assertEquals("aaaaREPLACEMENTccccc",
Tools.replaceBoundedString("aaaaPREFIXbbbbbSUFFIXccccc", "PREFIX",
"SUFFIX", "REPLACEMENT"));
+ assertEquals("aaaPREFIXbbbbSUFF",
Tools.replaceBoundedString("aaaPREFIXbbbbSUFF", "PREFIX",
"SUFFIX", "REPLACEMENT"));
+ assertEquals("aRcccReeeR",
Tools.replaceBoundedString("aPbbScccPdSeeePS", "P", "S",
"R"));
+ }
+
}
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/PortletUtils.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/PortletUtils.java 2007-01-18
23:55:48 UTC (rev 6044)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/PortletUtils.java 2007-01-19
06:29:40 UTC (rev 6045)
@@ -37,7 +37,8 @@
*/
public class PortletUtils
{
- private static final String PREFIX = "jbp";
+ public static final String PREFIX = "jbpns";
+ public static final String SUFFIX = "snjbp";
public static void checkRenderParameterMap(Map map)
{
@@ -169,7 +170,7 @@
{
StringBuffer tmp = new StringBuffer(PREFIX.length() + windowId.length() * 2);
tmp.append(PREFIX);
- for (int i = 0;i < windowId.length();i++)
+ for (int i = 0; i < windowId.length(); i++)
{
char c = windowId.charAt(i);
if (Character.isLetterOrDigit(c))
@@ -183,6 +184,7 @@
tmp.append(Character.forDigit((((int)c) & 0X0F), 16));
}
}
+ tmp.append(SUFFIX);
return tmp.toString();
}
}
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/MarkupPortlet.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/MarkupPortlet.java 2007-01-18
23:55:48 UTC (rev 6044)
+++ trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/MarkupPortlet.java 2007-01-19
06:29:40 UTC (rev 6045)
@@ -106,7 +106,8 @@
StringBuffer sb = new StringBuffer(256);
sb.append("<form method='post' action='")
.append(response.createActionURL())
- .append("'
id='portfolioManager'><table><tr><td>Stock
symbol</td><td><input name='").append(SYMBOL)
+ .append("' id='").append(response.getNamespace())
+ .append("portfolioManager'><table><tr><td>Stock
symbol</td><td><input name='").append(SYMBOL)
.append("'/></td></tr><tr><td><input
type='submit'
value='Submit'></td></tr></table></form>");
writer.write(sb.toString());
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2007-01-18
23:55:48 UTC (rev 6044)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2007-01-19
06:29:40 UTC (rev 6045)
@@ -112,12 +112,8 @@
MarkupResponse response = markupService.getMarkup(getMarkup);
- // commented out because fails with fragment processing de-activation
-// checkMarkupResponse(response, "<form method='post'
action='wsrp_rewrite?wsrp-urlType=blockingAction&wsrp" +
-// "-interactionState=JBPNS_/wsrp_rewrite'
id='wsrp_rewrite_portfolioManager'><table><tr><td>Stock
symbol</t" +
-// "d><td><input
name='symbol'/></td></tr><tr><td><input
type='submit'
value='Submit'></td></tr></table></form>");
checkMarkupResponse(response, "<form method='post'
action='wsrp_rewrite?wsrp-urlType=blockingAction&wsrp" +
- "-interactionState=JBPNS_/wsrp_rewrite'
id='portfolioManager'><table><tr><td>Stock symbol</t"
+
+ "-interactionState=JBPNS_/wsrp_rewrite'
id='wsrp_rewrite_portfolioManager'><table><tr><td>Stock
symbol</t" +
"d><td><input
name='symbol'/></td></tr><tr><td><input
type='submit'
value='Submit'></td></tr></table></form>");
}
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/RenderRequestProcessor.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/RenderRequestProcessor.java 2007-01-18
23:55:48 UTC (rev 6044)
+++
trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/RenderRequestProcessor.java 2007-01-19
06:29:40 UTC (rev 6045)
@@ -23,7 +23,9 @@
package org.jboss.portal.wsrp.producer;
+import org.jboss.portal.common.util.Tools;
import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.impl.jsr168.PortletUtils;
import org.jboss.portal.portlet.info.CacheInfo;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.RenderInvocation;
@@ -36,6 +38,7 @@
import org.jboss.portal.portlet.state.AccessMode;
import org.jboss.portal.server.util.HTTPStreamInfo;
import org.jboss.portal.wsrp.WSRPConstants;
+import org.jboss.portal.wsrp.WSRPRewritingConstants;
import org.jboss.portal.wsrp.WSRPTypeFactory;
import org.jboss.portal.wsrp.WSRPUtils;
import org.jboss.portal.wsrp.core.GetMarkup;
@@ -132,7 +135,7 @@
switch (fragment.getType())
{
case FragmentResponse.TYPE_CHARS:
- markupString = fragment.getChars().toString();
+ markupString = processFragmentString(fragment.getChars().toString());
break;
case FragmentResponse.TYPE_BYTES:
markupBinary = fragment.getBytes().toByteArray(); // fix-me: might need to
convert to Base64?
@@ -170,4 +173,17 @@
return new MarkupResponse(markupContext, null, null);
}
+
+ /**
+ * Process String returned from RenderResult to add rewriting token if necessary,
replacing namespaces by the WSRP
+ * rewrite token. fix-me: need to check for producer rewriting
+ *
+ * @param renderString the String to be processed for rewriting marking
+ * @return a String processed to add rewriting tokens as necessary
+ */
+ private String processFragmentString(String renderString)
+ {
+ return Tools.replaceBoundedString(renderString, PortletUtils.PREFIX,
PortletUtils.SUFFIX,
+ WSRPRewritingConstants.WSRP_REWRITE_TOKEN);
+ }
}