Hi Andereas
What about the
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc.......
references everywhere? Seems to be your local home directory
Jann
> New Revision: 653799
>
> URL:
http://svn.apache.org/viewvc?rev=653799&view=rev
> Log:
> Adding capability to handle multi-value attributes with
test case.
>
> Added:
>
lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/l
enya/ac/impl/RuleEvaluatorTest.java
> Modified:
>
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/Expressions.g
>
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsLexer.java
>
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsParser.java
>
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/expressions__.g
>
> Modified:
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/Expressions.g
> URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_s
hibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expression
s.g?rev=653799&r1=653798&r2=653799&view=diff
>
============================================================
==================
> ---
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/Expressions.g (original)
> +++
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/Expressions.g Tue May 6 08:11:12 2008
>  -3,12 +3,12 
> header {
> package org.apache.lenya.ac.impl.antlr;
> import java.util.HashMap;
> -import org.apache.lenya.ac.impl.ErrorHandler;
> +import org.apache.lenya.ac.ErrorHandler;
> }
>
> lexer::header {
> package org.apache.lenya.ac.impl.antlr;
> -import org.apache.lenya.ac.impl.ErrorHandler;
> +import org.apache.lenya.ac.ErrorHandler;
> }
>
> members {
>  -65,17 +65,31 
> ;
>
> comparison returns [boolean value]
> - : a=atom EQUALS b=atom {$value =
$a.value.equals($b.value);}
> + : a=atom EQUALS b=atom {
> + if ($a.value instanceof String &&
$b.value instanceof String) {
> + $value = $a.value.equals($b.value);
> + }
> + else if ($a.value instanceof String
&& $b.value.getClass().isArray()) {
> + $value =
java.util.Arrays.asList((String[])
$b.value).contains($a.value);
> + }
> + else if ($a.value.getClass().isArray()
&& $b.value instanceof String) {
> + $value =
java.util.Arrays.asList((String[])
$a.value).contains($b.value);
> + }
> + else {
> + throw new
FailedPredicateException(input, $a.text + " == " +
$b.text,
> + "Incompatible arguments for
comparison: " + $a.value + ", " + $b.value);
> + }
> + }
> | LEFTPAR e=orExpression RIGHTPAR {$value =
$e.value;}
> ;
>
> -atom returns [String value]
> +atom returns [Object value]
> : quotedString {$value = $quotedString.value;}
> | ID
> {
> - String s = (String) memory.get($ID.text);
> - if ( s != null ) {
> - $value = s;
> + Object v = memory.get($ID.text);
> + if ( v != null ) {
> + $value = v;
> }
> else {
> $value = "undefined";
>
> Modified:
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsLexer.java
> URL: http://svn.apache.org/viewvc/lenya/branches/branch
_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Ex
pressionsLexer.java?rev=653799&r1=653798&r2=653799&a
mp;view=diff
>
============================================================
==================
> ---
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsLexer.java (original)
> +++
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsLexer.java Tue May 6 08:11:12
2008
>  -1,4 +1,4 
> -// $ANTLR 3.0
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g
2007-06-19 15:30:41
> +// $ANTLR 3.0.1
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g
2008-05-06 16:50:47
>
> package org.apache.lenya.ac.impl.antlr;
> import org.apache.lenya.ac.ErrorHandler;
>  -37,17 +37,17 
> public ExpressionsLexer(CharStream input) {
> super(input);
> }
> - public String getGrammarFileName() { return
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot;; }
> + public String getGrammarFileName() { return
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot;; }
>
> // $ANTLR start LITERAL
> public final void mLITERAL() throws
RecognitionException {
> try {
> int _type = LITERAL;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:92:10:
( '"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
'"' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:92:10:
'"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
'"'
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:106:8:
( '"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
'"' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:106:10:
'"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
'"'
> {
> match('"');
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:92:14:
( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:106:14:
( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
> loop1:
> do {
> int alt1=2;
>  -60,7 +60,7 
>
> switch (alt1) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:
> {
> if ( input.LA(1)=='
'||input.LA(1)=='.'||(input.LA(1)>='A' &&
input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a'
&& input.LA(1)<='z') ) {
> input.consume();
>  -96,8 +96,8 
> public final void mID() throws
RecognitionException {
> try {
> int _type = ID;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:93:5:
( ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' |
'0' .. '9' )* )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:93:5:
( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0'
.. '9' )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:107:3:
( ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' |
'0' .. '9' )* )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:107:5:
( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0'
.. '9' )*
> {
> if ( (input.LA(1)>='A' &&
input.LA(1)<='Z')||(input.LA(1)>='a' &&
input.LA(1)<='z') ) {
> input.consume();
>  -109,7 +109,7 
> recover(mse); throw mse;
> }
>
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:93:25:
( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:107:25:
( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )*
> loop2:
> do {
> int alt2=2;
>  -122,7 +122,7 
>
> switch (alt2) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:
> {
> if ( (input.LA(1)>='0' &&
input.LA(1)<='9')||(input.LA(1)>='A' &&
input.LA(1)<='Z')||(input.LA(1)>='a' &&
input.LA(1)<='z') ) {
> input.consume();
>  -157,8 +157,8 
> public final void mEQUALS() throws
RecognitionException {
> try {
> int _type = EQUALS;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:94:9:
( '==' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:94:9:
'=='
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:108:7:
( '==' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:108:9:
'=='
> {
> match("==");
>
>  -176,8 +176,8 
> public final void mQUOT() throws
RecognitionException {
> try {
> int _type = QUOT;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:95:7:
( '"' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:95:7:
'"'
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:109:5:
( '"' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:109:7:
'"'
> {
> match('"');
>
>  -194,8 +194,8 
> public final void mOR() throws
RecognitionException {
> try {
> int _type = OR;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:96:5:
( '||' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:96:5:
'||'
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:110:3:
( '||' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:110:5:
'||'
> {
> match("||");
>
>  -213,8 +213,8 
> public final void mAND() throws
RecognitionException {
> try {
> int _type = AND;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:97:6:
( '&&' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:97:6:
'&&'
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:111:4:
( '&&' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:111:6:
'&&'
> {
> match("&&");
>
>  -232,8 +232,8 
> public final void mLEFTPAR() throws
RecognitionException {
> try {
> int _type = LEFTPAR;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:98:10:
( '(' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:98:10:
'('
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:112:8:
( '(' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:112:10:
'('
> {
> match('(');
>
>  -250,8 +250,8 
> public final void mRIGHTPAR() throws
RecognitionException {
> try {
> int _type = RIGHTPAR;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:99:11:
( ')' )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:99:11:
')'
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:113:9:
( ')' )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:113:11:
')'
> {
> match(')');
>
>  -268,10 +268,10 
> public final void mWS() throws
RecognitionException {
> try {
> int _type = WS;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:100:5:
( ( ' ' | '\t' )+ )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:100:5:
( ' ' | '\t' )+
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:114:3:
( ( ' ' | '\t' )+ )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:114:5:
( ' ' | '\t' )+
> {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:100:5:
( ' ' | '\t' )+
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:114:5:
( ' ' | '\t' )+
> int cnt3=0;
> loop3:
> do {
>  -285,7 +285,7 
>
> switch (alt3) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:
> {
> if (
input.LA(1)=='t'||input.LA(1)==' ' ) {
> input.consume();
>  -322,7 +322,7 
> // $ANTLR end WS
>
> public void mTokens() throws RecognitionException
{
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:10:
( LITERAL | ID | EQUALS | QUOT | OR | AND | LEFTPAR |
RIGHTPAR | WS )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:8: (
LITERAL | ID | EQUALS | QUOT | OR | AND | LEFTPAR | RIGHTPAR
| WS )
> int alt4=9;
> switch ( input.LA(1) ) {
> case '"':
>  -432,63 +432,63 
>
> switch (alt4) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:10:
LITERAL
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:10:
LITERAL
> {
> mLITERAL();
>
> }
> break;
> case 2 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:18:
ID
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:18:
ID
> {
> mID();
>
> }
> break;
> case 3 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:21:
EQUALS
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:21:
EQUALS
> {
> mEQUALS();
>
> }
> break;
> case 4 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:28:
QUOT
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:28:
QUOT
> {
> mQUOT();
>
> }
> break;
> case 5 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:33:
OR
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:33:
OR
> {
> mOR();
>
> }
> break;
> case 6 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:36:
AND
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:36:
AND
> {
> mAND();
>
> }
> break;
> case 7 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:40:
LEFTPAR
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:40:
LEFTPAR
> {
> mLEFTPAR();
>
> }
> break;
> case 8 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:48:
RIGHTPAR
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:48:
RIGHTPAR
> {
> mRIGHTPAR();
>
> }
> break;
> case 9 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:57:
WS
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:1:57:
WS
> {
> mWS();
>
>
> Modified:
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsParser.java
> URL: http://svn.apache.org/viewvc/lenya/branches/branc
h_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/E
xpressionsParser.java?rev=653799&r1=653798&r2=653799
&view=diff
>
============================================================
==================
> ---
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsParser.java (original)
> +++
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/ExpressionsParser.java Tue May 6
08:11:12 2008
>  -1,8 +1,7 
> -// $ANTLR 3.0
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g
2007-06-19 15:30:40
> +// $ANTLR 3.0.1
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g
2008-05-06 16:50:45
>
> package org.apache.lenya.ac.impl.antlr;
> import java.util.HashMap;
> -
> import org.apache.lenya.ac.ErrorHandler;
>
>
>  -32,7 +31,7 
>
>
> public String[] getTokenNames() { return
tokenNames; }
> - public String getGrammarFileName() { return
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot;; }
> + public String getGrammarFileName() { return
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot;; }
>
>
> /** Map variable name to object holding value */
>  -62,7 +61,7 
>
>
> // $ANTLR start prog
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:53:1:
prog returns [boolean value] : e= orExpression ;
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:53:1:
prog returns [boolean value] : e= orExpression ;
> public final boolean prog() throws
RecognitionException {
> boolean value = false;
>
>  -70,8 +69,8 
>
>
> try {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:54:7:
(e= orExpression )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:54:7:
e= orExpression
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:54:5:
(e= orExpression )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:54:7:
e= orExpression
> {
>
pushFollow(FOLLOW_orExpression_in_prog50);
> e=orExpression();
>  -94,7 +93,7 
>
>
> // $ANTLR start orExpression
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:57:1:
orExpression returns [boolean value] : e= andExpression ( OR
e= andExpression )* ;
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:57:1:
orExpression returns [boolean value] : e= andExpression ( OR
e= andExpression )* ;
> public final boolean orExpression() throws
RecognitionException {
> boolean value = false;
>
>  -102,15 +101,15 
>
>
> try {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:58:9:
(e= andExpression ( OR e= andExpression )* )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:58:9:
e= andExpression ( OR e= andExpression )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:58:5:
(e= andExpression ( OR e= andExpression )* )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:58:9:
e= andExpression ( OR e= andExpression )*
> {
>
pushFollow(FOLLOW_andExpression_in_orExpression77);
> e=andExpression();
> _fsp--;
>
> value = e;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:59:5:
( OR e= andExpression )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:59:5: (
OR e= andExpression )*
> loop1:
> do {
> int alt1=2;
>  -123,7 +122,7 
>
> switch (alt1) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:59:7:
OR e= andExpression
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:59:7:
OR e= andExpression
> {
>
match(input,OR,FOLLOW_OR_in_orExpression87);
>
pushFollow(FOLLOW_andExpression_in_orExpression91);
>  -156,7 +155,7 
>
>
> // $ANTLR start andExpression
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:62:1:
andExpression returns [boolean value] : e= comparison ( AND
e= comparison )* ;
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:62:1:
andExpression returns [boolean value] : e= comparison ( AND
e= comparison )* ;
> public final boolean andExpression() throws
RecognitionException {
> boolean value = false;
>
>  -164,15 +163,15 
>
>
> try {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:63:9:
(e= comparison ( AND e= comparison )* )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:63:9:
e= comparison ( AND e= comparison )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:63:5:
(e= comparison ( AND e= comparison )* )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:63:9:
e= comparison ( AND e= comparison )*
> {
>
pushFollow(FOLLOW_comparison_in_andExpression125);
> e=comparison();
> _fsp--;
>
> value = e;
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:64:5:
( AND e= comparison )*
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:64:5: (
AND e= comparison )*
> loop2:
> do {
> int alt2=2;
>  -185,7 +184,7 
>
> switch (alt2) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:64:7:
AND e= comparison
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:64:7:
AND e= comparison
> {
>
match(input,AND,FOLLOW_AND_in_andExpression135);
>
pushFollow(FOLLOW_comparison_in_andExpression139);
>  -218,19 +217,19 
>
>
> // $ANTLR start comparison
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:67:1:
comparison returns [boolean value] : (a= atom EQUALS b= atom
| LEFTPAR e= orExpression RIGHTPAR );
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:67:1:
comparison returns [boolean value] : (a= atom EQUALS b= atom
| LEFTPAR e= orExpression RIGHTPAR );
> public final boolean comparison() throws
RecognitionException {
> boolean value = false;
>
> - String a = null;
> + atom_return a = null;
>
> - String b = null;
> + atom_return b = null;
>
> boolean e = false;
>
>
> try {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:68:9:
(a= atom EQUALS b= atom | LEFTPAR e= orExpression RIGHTPAR
)
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:68:5:
(a= atom EQUALS b= atom | LEFTPAR e= orExpression RIGHTPAR
)
> int alt3=2;
> int LA3_0 = input.LA(1);
>
>  -248,7 +247,7 
> }
> switch (alt3) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:68:9:
a= atom EQUALS b= atom
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:68:9:
a= atom EQUALS b= atom
> {
>
pushFollow(FOLLOW_atom_in_comparison173);
> a=atom();
>  -259,12 +258,26 
> b=atom();
> _fsp--;
>
> - value = a.equals(b);
> +
> + if (a.value instanceof
String && b.value instanceof String) {
> + value =
a.value.equals(b.value);
> + }
> + else if (a.value
instanceof String && b.value.getClass().isArray())
{
> + value =
java.util.Arrays.asList((String[])
b.value).contains(a.value);
> + }
> + else if
(a.value.getClass().isArray() && b.value instanceof
String) {
> + value =
java.util.Arrays.asList((String[])
a.value).contains(b.value);
> + }
> + else {
> + throw new
FailedPredicateException(input,
input.toString(a.start,a.stop) + " == " +
input.toString(b.start,b.stop),
> +
"Incompatible arguments for comparison: " +
a.value + ", " + b.value);
> + }
> +
>
> }
> break;
> case 2 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:69:9:
LEFTPAR e= orExpression RIGHTPAR
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:83:9:
LEFTPAR e= orExpression RIGHTPAR
> {
>
match(input,LEFTPAR,FOLLOW_LEFTPAR_in_comparison191);
>
pushFollow(FOLLOW_orExpression_in_comparison195);
>  -289,18 +302,22 
> }
> // $ANTLR end comparison
>
> + public static class atom_return extends
ParserRuleReturnScope {
> + public Object value;
> + };
>
> // $ANTLR start atom
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:72:1:
atom returns [String value] : ( quotedString | ID );
> - public final String atom() throws
RecognitionException {
> - String value = null;
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:86:1:
atom returns [Object value] : ( quotedString | ID );
> + public final atom_return atom() throws
RecognitionException {
> + atom_return retval = new atom_return();
> + retval.start = input.LT(1);
>
> Token ID2=null;
> String quotedString1 = null;
>
>
> try {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:73:9:
( quotedString | ID )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:87:5: (
quotedString | ID )
> int alt4=2;
> int LA4_0 = input.LA(1);
>
>  -312,34 +329,34 
> }
> else {
> NoViableAltException nvae =
> - new
NoViableAltException("72:1: atom returns [String value]
: ( quotedString | ID );", 4, 0, input);
> + new
NoViableAltException("86:1: atom returns [Object value]
: ( quotedString | ID );", 4, 0, input);
>
> throw nvae;
> }
> switch (alt4) {
> case 1 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:73:9:
quotedString
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:87:9:
quotedString
> {
>
pushFollow(FOLLOW_quotedString_in_atom222);
> quotedString1=quotedString();
> _fsp--;
>
> - value = quotedString1;
> + retval.value = quotedString1;
>
> }
> break;
> case 2 :
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:74:9:
ID
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:88:9:
ID
> {
> ID2=(Token)input.LT(1);
>
match(input,ID,FOLLOW_ID_in_atom234);
>
> - String s = (String)
memory.get(ID2.getText());
> - if ( s != null ) {
> - value = s;
> + Object v =
memory.get(ID2.getText());
> + if ( v != null ) {
> + retval.value = v;
> }
> else {
> - value =
"undefined";
> + retval.value =
"undefined";
> throw new
FailedPredicateException(input, ID2.getText(),
>
"Undefined variable "" + ID2.getText() +
""");
> }
>  -349,6 +366,8 
> break;
>
> }
> + retval.stop = input.LT(-1);
> +
> }
> catch (RecognitionException re) {
> reportError(re);
>  -356,21 +375,21 
> }
> finally {
> }
> - return value;
> + return retval;
> }
> // $ANTLR end atom
>
>
> // $ANTLR start quotedString
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:88:1:
quotedString returns [String value] : LITERAL ;
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:102:1:
quotedString returns [String value] : LITERAL ;
> public final String quotedString() throws
RecognitionException {
> String value = null;
>
> Token LITERAL3=null;
>
> try {
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:89:9:
( LITERAL )
> - //
src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:89:9:
LITERAL
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:103:7:
( LITERAL )
> + //
/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/s
rc/java/org/apache/lenya/ac/impl/antlr/Expressions.g:103:9:
LITERAL
> {
> LITERAL3=(Token)input.LT(1);
>
match(input,LITERAL,FOLLOW_LITERAL_in_quotedString267);
>
> Modified:
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/expressions__.g
> URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x
_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/expressi
ons__.g?rev=653799&r1=653798&r2=653799&view=diff
>
============================================================
==================
> ---
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/expressions__.g (original)
> +++
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/l
enya/ac/impl/antlr/expressions__.g Tue May 6 08:11:12 2008
>  -13,24 +13,24 
> }
> header {
> package org.apache.lenya.ac.impl.antlr;
> -import org.apache.lenya.ac.impl.ErrorHandler;
> +import org.apache.lenya.ac.ErrorHandler;
> }
>
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 92
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 106
> LITERAL: '"' ('a'..'z'|'A'..'Z'|'_'|' '|'.')*
'"';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 93
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 107
> ID: ('a'..'z'|'A'..'Z')
('a'..'z'|'A'..'Z'|'0'..'9')*;
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 94
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 108
> EQUALS: '==';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 95
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 109
> QUOT: '"';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 96
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 110
> OR: '||';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 97
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 111
> AND: '&&';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 98
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 112
> LEFTPAR: '(';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 99
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 113
> RIGHTPAR: ')';
> -// $ANTLR src
"src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&
quot; 100
> +// $ANTLR src
"/Users/nobby/apache/lenya/branches/branch_1_2_x_shibbo
leth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g&q
uot; 114
> WS: (' '|'t')+ {skip();} ;
>
> Added:
lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/l
enya/ac/impl/RuleEvaluatorTest.java
> URL: http://svn.apache.org/v
iewvc/lenya/branches/branch_1_2_x_shibboleth/src/test/org/ap
ache/lenya/ac/impl/RuleEvaluatorTest.java?rev=653799&vie
w=auto
>
============================================================
==================
> ---
lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/l
enya/ac/impl/RuleEvaluatorTest.java (added)
> +++
lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/l
enya/ac/impl/RuleEvaluatorTest.java Tue May 6 08:11:12
2008
>  -0,0 +1,55 
> +/*
> + * Licensed to the Apache Software Foundation (ASF)
under one or more
> + * contributor license agreements. See the NOTICE
file distributed with
> + * this work for additional information regarding
copyright ownership.
> + * The ASF licenses this file to You 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.
> + *
> + */
> +
> +/* $Id: GroupManagerTest.java 473841 2006-11-12
00:46:38Z gregor $ */
> +package org.apache.lenya.ac.impl;
> +
> +import junit.framework.TestCase;
> +
> +import
org.apache.avalon.framework.logger.ConsoleLogger;
> +import org.apache.lenya.ac.AttributeDefinition;
> +import
org.apache.lenya.ac.AttributeDefinitionRegistry;
> +import org.apache.lenya.ac.AttributeRuleEvaluator;
> +import org.apache.lenya.ac.file.FileUser;
> +import org.apache.lenya.ac.impl.antlr.AntlrEvaluator;
> +
> +public class RuleEvaluatorTest extends TestCase {
> +
> + protected static final String ATTR_NAME =
"attr";
> +
> + public void testRuleEvaluation() throws Exception
{
> +
> + AttributeDefinition def = new
AttributeDefinition() {
> + public String[] getAttributeNames() {
> + String[] names = ;
> + return names;
> + }
> + };
> + AttributeDefinitionRegistry.register(def);
> +
> + AttributeRuleEvaluator evaluator = new
AntlrEvaluator(new ConsoleLogger());
> +
> + FileUser user = new FileUser();
> + String[] values = { "foo",
"bar" };
> + user.setAttributeValues(ATTR_NAME, values);
> +
> + assertTrue(evaluator.isComplied(user,
ATTR_NAME + " == "bar""));
> + assertFalse(evaluator.isComplied(user,
ATTR_NAME + " == "baz""));
> + }
> +
> +}
>
>
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: commits-unsubscribe lenya.apache.org
> For additional commands, e-mail: commits-help lenya.apache.org
>
--
Jann Forrer
Informatikdienste
Universität Zürich
Winterthurerstr. 190
CH-8057 Zürich
oooO mail: jann.forrer id.uzh.ch
( ) phone: +41 44 63 56772
( fax: +41 44 63 54505
_) http://www.id.unizh.ch
------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribe lenya.apache.org
For additional commands, e-mail: dev-help lenya.apache.org
|