mrdon 2004/04/01 09:56:47
Modified: src/share/org/apache/struts/config ActionConfigMatcher.java
src/test/org/apache/struts/config
TestActionConfigMatcher.java
Log:
Added support for multiple wildcard replacements, added unit test to
ensure correct behavior
PR: 28105
Revision Changes Path
1.11 +8 -5
jakarta-struts/src/share/org/apache/struts/config/ActionConfigMatcher.java
Index: ActionConfigMatcher.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/config/ActionConfigMatcher.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ActionConfigMatcher.java 23 Mar 2004 06:27:06 -0000 1.10
+++ ActionConfigMatcher.java 1 Apr 2004 17:56:47 -0000 1.11
@@ -196,12 +196,15 @@
Map.Entry entry;
StringBuffer key = new StringBuffer("{0}");
StringBuffer ret = new StringBuffer(val);
+ String keyTmp;
int x;
for (Iterator i = vars.entrySet().iterator(); i.hasNext();) {
entry = (Map.Entry) i.next();
key.setCharAt(1, ((String) entry.getKey()).charAt(0));
- x = ret.toString().indexOf(key.toString());
- if (x > -1) {
+ keyTmp = key.toString();
+
+ // Replace all instances of the placeholder
+ while ((x = ret.toString().indexOf(keyTmp)) > -1) {
ret.replace(x, x + 3, (String) entry.getValue());
}
}
1.8 +16 -4
jakarta-struts/src/test/org/apache/struts/config/TestActionConfigMatcher.java
Index: TestActionConfigMatcher.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/test/org/apache/struts/config/TestActionConfigMatcher.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- TestActionConfigMatcher.java 14 Mar 2004 06:23:48 -0000 1.7
+++ TestActionConfigMatcher.java 1 Apr 2004 17:56:47 -0000 1.8
@@ -152,6 +152,18 @@
}
assertTrue("The forward config 'name' cannot be found", found);
}
+
+ public void testCheckMultipleSubstitutions() {
+ ActionMapping[] mapping = new ActionMapping[1];
+ mapping[0] = new ActionMapping();
+ mapping[0].setPath("/foo*");
+ mapping[0].setName("name,{1}-{1}");
+
+ ActionConfigMatcher matcher = new ActionConfigMatcher(mapping);
+ ActionConfig m = matcher.match("/fooBar");
+
+ assertTrue("Name hasn't been replaced correctly: "+m.getName(),
"name,Bar-Bar".equals(m.getName()));
+ }
private ActionConfig buildActionConfig(String path) {
ActionMapping mapping = new ActionMapping();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]