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]