You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2004/08/31 11:16:28 UTC

cvs commit: jakarta-commons/jelly/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util ReplaceTag.java

dion        2004/08/31 02:16:28

  Modified:    jelly/jelly-tags/util project.xml
               jelly/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util
                        suite.jelly
               jelly/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util
                        ReplaceTag.java
  Log:
  Apply JELLY-77 with a slightly different project.xml change
  
  Revision  Changes    Path
  1.12      +5 -0      jakarta-commons/jelly/jelly-tags/util/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/util/project.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- project.xml	12 Aug 2004 03:40:32 -0000	1.11
  +++ project.xml	31 Aug 2004 09:16:28 -0000	1.12
  @@ -45,6 +45,11 @@
         <version>SNAPSHOT</version>
       </dependency>
     
  +    <dependency>
  +      <id>commons-lang</id>
  +      <version>1.0</version>
  +    </dependency>
  +
       <!-- END for compilation -->
   
       <!-- START for test -->
  
  
  
  1.5       +27 -15    jakarta-commons/jelly/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/suite.jelly
  
  Index: suite.jelly
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/suite.jelly,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- suite.jelly	1 Mar 2004 12:47:53 -0000	1.4
  +++ suite.jelly	31 Aug 2004 09:16:28 -0000	1.5
  @@ -1,19 +1,19 @@
   <?xml version="1.0"?>
  -<!--
  -  Copyright 2002-2004 The Apache Software Foundation
  -
  -  Licensed under the Apache License, Version 2.0 (the "License");
  -  you may not use this file except in compliance with the License.
  -  You may obtain a copy of the License at
  -
  -      http://www.apache.org/licenses/LICENSE-2.0
  -
  -  Unless required by applicable law or agreed to in writing, software
  -  distributed under the License is distributed on an "AS IS" BASIS,
  -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  -  See the License for the specific language governing permissions and
  -  limitations under the License.
  --->
  +<!--
  +  Copyright 2002-2004 The Apache Software Foundation
  +
  +  Licensed under the Apache License, Version 2.0 (the "License");
  +  you may not use this file except in compliance with the License.
  +  You may obtain a copy of the License at
  +
  +      http://www.apache.org/licenses/LICENSE-2.0
  +
  +  Unless required by applicable law or agreed to in writing, software
  +  distributed under the License is distributed on an "AS IS" BASIS,
  +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  +  See the License for the specific language governing permissions and
  +  limitations under the License.
  +-->
   <test:suite 
       xmlns:j="jelly:core" 
       xmlns:util="jelly:util" 
  @@ -113,6 +113,18 @@
         Should have replaced a slash with a back slash from a variable
         and placed the result into a variable
       </test:assertEquals>
  +
  +    <util:replace oldChar="ABC" newChar="123" value="CBABC" var="testString4" />
  +    <test:assertEquals expected="CB1BC" actual="${testString4}">
  +      Should have only substituted the 1 for the A, since the
  +      old/newChar attributes were used.
  +    </test:assertEquals>
  +
  +    <util:replace old="brown" new="black" value="The quick brown fox" var="testString6" />
  +    <test:assertEquals expected="The quick black fox" actual="${testString6}">
  +        Should have substituted the string "black" for "brown"
  +    </test:assertEquals>
  +
     </test:case>
   
     <test:case name="testProperties">
  
  
  
  1.6       +62 -10    jakarta-commons/jelly/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/ReplaceTag.java
  
  Index: ReplaceTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/ReplaceTag.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ReplaceTag.java	25 Feb 2004 01:31:53 -0000	1.5
  +++ ReplaceTag.java	31 Aug 2004 09:16:28 -0000	1.6
  @@ -24,11 +24,13 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   
  +import org.apache.commons.lang.StringUtils;
  +
   import org.xml.sax.SAXException;
   
   /**
  - * A tag that replaces occurrences of a character in its body (or value)
  - * and places the result into the context
  + * A tag that replaces occurrences of a character or string in its body or
  + * (or value) and places the result into the context
    * 
    * @author dion
    */
  @@ -47,18 +49,33 @@
       
       /** the new character that will replace the old */
       private String newChar;
  +
  +    /** the old string to be replace */
  +    private String oldString;
  +
  +    /** the new string that will replace the old */
  +    private String newString;
       
       // Tag interface
       //------------------------------------------------------------------------- 
       public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
           // check required properties
  -        if (oldChar == null) {
  -            throw new MissingAttributeException("oldChar must be provided");
  +        if (oldChar != null) {
  +            oldString = oldChar.substring(0,1);
  +        }
  +
  +        if (newChar != null) {
  +            newString = newChar.substring(0,1);
           }
  -        if (newChar == null) {
  -            throw new MissingAttributeException("newChar must be provided");
  +
  +        if (oldString == null) {
  +            throw new MissingAttributeException("oldChar or oldString must be provided");
           }
  -        
  +
  +        if (newString == null) {
  +            throw new MissingAttributeException("newChar or newString must be provided");
  +        }
  +
           // get either the value or the body of the tag
           Object answer = null;
           if ( value != null ) {
  @@ -69,8 +86,7 @@
           
           // set the result in the context, or output it
           if (answer != null) {
  -            String stringAnswer = answer.toString().replace(oldChar.charAt(0),
  -                newChar.charAt(0));
  +            String stringAnswer = StringUtils.replace(answer.toString(), oldString, newString);
               if ( var != null ) {
                   context.setVariable(var, stringAnswer);
               } else {
  @@ -104,6 +120,24 @@
       }
   
       /**
  +     * Returns the newString that will be replaced.
  +     * @return String
  +     */
  +    public String getNew()
  +    {
  +        return newString;
  +    }
  +
  +    /**
  +     * Returns the oldString that will be replaced.
  +     * @return String
  +     */
  +    public String getOld()
  +    {
  +        return oldString;
  +    }
  +
  +    /**
        * Returns the value.
        * @return Expression
        */
  @@ -140,6 +174,24 @@
       }
   
       /**
  +     * Sets the newString.
  +     * @param newString The newString to set
  +     */
  +    public void setNew(String newString)
  +    {
  +        this.newString = newString;
  +    }
  +
  +    /**
  +     * Sets the oldString.
  +     * @param oldString The oldString to set
  +     */
  +    public void setOld(String oldString)
  +    {
  +        this.oldString = oldString;
  +    }
  +
  +    /**
        * Sets the value.
        * @param value The value to set
        */
  @@ -157,4 +209,4 @@
           this.var = var;
       }
   
  -}
  \ No newline at end of file
  +}
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org