Author: hlship
Date: Wed Nov 30 19:38:19 2005
New Revision: 350132

URL: http://svn.apache.org/viewcvs?rev=350132&view=rev
Log:
TAPESTRY-778: ORO Perl5Matcher and Perl5Compiler are used in thread-unsafe 
manner

Modified:
    
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/Pattern.java
    
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/ValidatorFactoryImpl.java
    
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/RegexpMatcher.java
    jakarta/tapestry/trunk/status.xml

Modified: 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/Pattern.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/Pattern.java?rev=350132&r1=350131&r2=350132&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/Pattern.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/Pattern.java
 Wed Nov 30 19:38:19 2005
@@ -34,9 +34,9 @@
  */
 public class Pattern extends BaseValidator
 {
-    // TODO: Possible thread safety issue if the validator
-    // is shared across threads, because the matcher
-    // will be too.
+    // It is expectd that each Pattern instance will be used by a single 
component instance,
+    // and therefore be restricted to a single thread.
+    
     private RegexpMatcher _matcher = new RegexpMatcher();
 
     private String _pattern;

Modified: 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/ValidatorFactoryImpl.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/ValidatorFactoryImpl.java?rev=350132&r1=350131&r2=350132&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/ValidatorFactoryImpl.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/validator/ValidatorFactoryImpl.java
 Wed Nov 30 19:38:19 2005
@@ -38,8 +38,6 @@
 {
     private static final String PATTERN = 
"^\\s*(\\$?\\w+)\\s*(=\\s*(((?!,|\\[).)*))?";
 
-    private RegexpMatcher _matcher = new RegexpMatcher();
-
     /**
      * Injected map of validator names to ValidatorContribution.
      */
@@ -56,6 +54,8 @@
         List result = new ArrayList();
         String chopped = specification;
 
+        RegexpMatcher matcher = new RegexpMatcher();
+
         while (true)
         {
             if (chopped.length() == 0)
@@ -70,7 +70,7 @@
                 chopped = chopped.substring(1);
             }
 
-            RegexpMatch[] matches = _matcher.getMatches(PATTERN, chopped);
+            RegexpMatch[] matches = matcher.getMatches(PATTERN, chopped);
 
             if (matches.length != 1)
                 throw new ApplicationRuntimeException(ValidatorMessages

Modified: 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/RegexpMatcher.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/RegexpMatcher.java?rev=350132&r1=350131&r2=350132&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/RegexpMatcher.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/RegexpMatcher.java
 Wed Nov 30 19:38:19 2005
@@ -54,7 +54,7 @@
 
         try
         {
-            return _patternCompiler.compile(pattern, 
Perl5Compiler.SINGLELINE_MASK);
+            return _patternCompiler.compile(pattern, 
Perl5Compiler.SINGLELINE_MASK | Perl5Compiler.READ_ONLY_MASK);
         }
         catch (MalformedPatternException ex)
         {

Modified: jakarta/tapestry/trunk/status.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=350132&r1=350131&r2=350132&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Wed Nov 30 19:38:19 2005
@@ -70,6 +70,7 @@
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-701">NPE creating a 
link from pageValidate() when there are client-persistent properties with page 
scope</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-607">Output encoding 
problem with some versions of Tomcat 5</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-776">URLs for portlet 
links and forms are null</action>
+      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-778" due-to="Jeff 
Lubetkin">ORO Perl5Matcher and Perl5Compiler are used in thread-unsafe 
manner</action>
     </release>
     <release version="4.0-beta-13" date="Nov 12 2005">
       <action type="update" dev="HLS">Switch to HiveMind 1.1 (final)</action>



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

Reply via email to