It seems that oro is used at only a single place in the whole velocity
tree: org.apache.velocity.app.event.implement.EscapeReference.

Once we drop JDK 1.3 compatibility, we could simply apply the
following patch and remove oro from our runtime dependencies (not from
the tool dependencies, there are some in anakia, but these probaby
could be removed in a similar way).

        Best regards
                Henning



--- cut ---
Index: src/java/org/apache/velocity/app/event/implement/EscapeReference.java
===================================================================
--- src/java/org/apache/velocity/app/event/implement/EscapeReference.java       
(revision 329578)
+++ src/java/org/apache/velocity/app/event/implement/EscapeReference.java       
(working copy)
@@ -16,8 +16,10 @@
  * limitations under the License.
  */
 
-import org.apache.oro.text.perl.MalformedPerl5PatternException;
-import org.apache.oro.text.perl.Perl5Util;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
 import org.apache.velocity.app.event.ReferenceInsertionEventHandler;
 import org.apache.velocity.app.event.RuntimeServicesAware;
 import org.apache.velocity.runtime.RuntimeServices;
@@ -43,9 +45,7 @@
  * </PRE>
  * <!-- note: ignore empty HTML comment above - breaks up star slash avoiding 
javadoc end -->
  *
- * Regular expressions should follow the "Perl5" format used by the ORO 
regular expression
- * library.  More info is at 
- * <a 
href="http://jakarta.apache.org/oro/api/org/apache/oro/text/perl/package-summary.html";>http://jakarta.apache.org/oro/api/org/apache/oro/text/perl/package-summary.html</a>.
+ * Regular expressions should follow the "regex5" format used by the 
java.util.regex package
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Will Glass-Husain </a>
  * @version $Id$
@@ -53,8 +53,6 @@
 public abstract class EscapeReference implements 
ReferenceInsertionEventHandler,RuntimeServicesAware {
 
    
-    private Perl5Util perl = new Perl5Util();    
-
     private RuntimeServices rs;
    
     private String matchRegExp = null;
@@ -92,16 +90,25 @@
         {
             return escape(value);
         }
-            
-        else if (perl.match(matchRegExp,reference))
+
+        try
         {
-            return escape(value);
+            Pattern p = Pattern.compile(matchRegExp);
+            Matcher m = p.matcher(reference);
+
+            if (m.find())
+            {
+                return escape(value);
+            }
         }
-        
-        else
+        catch (PatternSyntaxException pse)
         {
-            return value;
+            rs.getLog().error("Invalid regular expression '" + matchRegExp
+                    + "'.  No escaping will be performed.");
+            matchRegExp = null;
         }
+
+        return value;
     }
 
     /**
@@ -115,9 +122,19 @@
          * Get the regular expression pattern.
          */
         matchRegExp = rs.getConfiguration().getString(getMatchAttribute());
-        if ((matchRegExp != null) && (matchRegExp.trim().length() == 0))
+
+        if (matchRegExp != null)
         {
-            matchRegExp = null;
+            matchRegExp = matchRegExp.trim();
+            if (matchRegExp.startsWith("/") && matchRegExp.endsWith("/"))
+            {
+                matchRegExp = matchRegExp.substring(1, matchRegExp.length() - 
1);
+            }
+
+            if (matchRegExp.length() == 0)
+            {
+                matchRegExp = null;
+            }
         }
         
         /**
@@ -125,18 +142,17 @@
          */
         if (matchRegExp != null) 
         {
-            try 
+            try
             {
-                perl.match(matchRegExp,"");
-            } 
-            catch (MalformedPerl5PatternException E) 
+                Pattern.compile(matchRegExp);
+            }
+            catch (PatternSyntaxException pse)
             {
                 rs.getLog().error("Invalid regular expression '" + matchRegExp
-                                  + "'.  No escaping will be performed.");
+                        + "'.  No escaping will be performed.");
                 matchRegExp = null;
             }
         }
-        
     }
 
     /**

--- cut ---
-- 
Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
[EMAIL PROTECTED]        +49 9131 50 654 0   http://www.intermeta.de/

RedHat Certified Engineer -- Jakarta Turbine Development  -- hero for hire
   Linux, Java, perl, Solaris -- Consulting, Training, Development

                      4 - 8 - 15 - 16 - 23 - 42

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to