ParametersInterceptor - isAccepted / acceptedParamNames won't work with a comma seperated list of param names

2009-02-09 Thread Torsten Krah
I wonder if someone faced this behavior before, wheter this is known or 
wanted.
XWork ParametersInterceptor Code:

protected boolean isAccepted(String paramName) {
if (!this.acceptedParams.isEmpty()) {
for (Pattern pattern : acceptedParams) {
Matcher matcher = pattern.matcher(paramName);
if (!matcher.matches()) {
return false;
}
}
}
return acceptedPattern.matcher(paramName).matches();
}

Taking a param list like id, anotherid which are both accepted and 
configured in my interceptor stack.
But using the Code above, none of them will ever be accepted, because the 
pattern list is traversed and matched against the actual parameter.

first run: id matches id - OK
second run: anotherid does not match id - FALSE

Although the Pattern list does contain a pattern which may result in a true 
match, false will be returned if there are more than 2 patterns in the list 
(order doesnt matter).

My parameter is not set.
Is this indented behavior? Or something wrong here?

thx

Torsten

PS: Using struts 2.0.11.x, XWork 2.0.5

-- 
Bitte senden Sie mir keine Word- oder PowerPoint-Anhänge.
Siehe http://www.gnu.org/philosophy/no-word-attachments.de.html

Really, I'm not out to destroy Microsoft. That will just be a 
completely unintentional side effect.
-- Linus Torvalds


smime.p7s
Description: S/MIME cryptographic signature


Re: ParametersInterceptor - isAccepted / acceptedParamNames won't work with a comma seperated list of param names

2009-02-09 Thread Musachy Barroso
Yes, that was broken and was fixed in 2.1 to:

protected boolean isAccepted(String paramName) {
if (!this.acceptParams.isEmpty()) {
for (Pattern pattern : acceptParams) {
Matcher matcher = pattern.matcher(paramName);
if (matcher.matches()) {
return true;
}
}
}
return acceptedPattern.matcher(paramName).matches();
}

as a workaround, you can use a regex that matches all the values:

(id|anotherid)

musachy

On Mon, Feb 9, 2009 at 11:04 AM, Torsten Krah
tk...@fachschaft.imn.htwk-leipzig.de wrote:
 I wonder if someone faced this behavior before, wheter this is known or
 wanted.
 XWork ParametersInterceptor Code:

protected boolean isAccepted(String paramName) {
if (!this.acceptedParams.isEmpty()) {
for (Pattern pattern : acceptedParams) {
Matcher matcher = pattern.matcher(paramName);
if (!matcher.matches()) {
return false;
}
}
}
return acceptedPattern.matcher(paramName).matches();
}

 Taking a param list like id, anotherid which are both accepted and
 configured in my interceptor stack.
 But using the Code above, none of them will ever be accepted, because the
 pattern list is traversed and matched against the actual parameter.

 first run: id matches id - OK
 second run: anotherid does not match id - FALSE

 Although the Pattern list does contain a pattern which may result in a true
 match, false will be returned if there are more than 2 patterns in the list
 (order doesnt matter).

 My parameter is not set.
 Is this indented behavior? Or something wrong here?

 thx

 Torsten

 PS: Using struts 2.0.11.x, XWork 2.0.5

 --
 Bitte senden Sie mir keine Word- oder PowerPoint-Anhänge.
 Siehe http://www.gnu.org/philosophy/no-word-attachments.de.html

 Really, I'm not out to destroy Microsoft. That will just be a
 completely unintentional side effect.
-- Linus Torvalds




-- 
Hey you! Would you help me to carry the stone? Pink Floyd

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org