You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by mr...@apache.org on 2004/04/01 19:56:47 UTC

cvs commit: jakarta-struts/src/test/org/apache/struts/config TestActionConfigMatcher.java

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: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org