lenya-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Hartmann <andr...@apache.org>
Subject Re: svn commit: r653799 - in /lenya/branches/branch_1_2_x_shibboleth/src: java/org/apache/lenya/ac/impl/antlr/ test/org/apache/lenya/ac/impl/
Date Fri, 09 May 2008 14:58:21 GMT
Hi Jann,

Jann Forrer schrieb:
> Hi Andereas
> 
> What about the
> /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src.......
> references everywhere? Seems to be your local home directory ;-)

thanks for spotting! Now the Java files are generated during the build 
process, so the paths should correspond to your local directory structure.

-- Andreas


> 
> 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/lenya/ac/impl/RuleEvaluatorTest.java
>> Modified:
>>     lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g
>>     lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/ExpressionsLexer.java
>>     lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/ExpressionsParser.java
>>     lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/expressions__.g
>>
>> Modified: lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/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/Expressions.g?rev=653799&r1=653798&r2=653799&view=diff
>> ==============================================================================
>> --- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g
(original)
>> +++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/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/lenya/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/ExpressionsLexer.java?rev=653799&r1=653798&r2=653799&view=diff
>> ==============================================================================
>> --- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/ExpressionsLexer.java
(original)
>> +++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/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/src/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";
}
>> +    public String getGrammarFileName() { return "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g";
}
>>  
>>      // $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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:108:7:
( '==' )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:109:5:
( '\"' )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:110:3:
( '||' )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:111:4:
( '&&' )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:112:8:
( '(' )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:113:9:
( ')' )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:114:3:
( ( ' ' | '\\t' )+ )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/lenya/ac/impl/antlr/ExpressionsParser.java
>> URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/ExpressionsParser.java?rev=653799&r1=653798&r2=653799&view=diff
>> ==============================================================================
>> --- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/ExpressionsParser.java
(original)
>> +++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/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/src/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";
}
>> +    public String getGrammarFileName() { return "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g";
}
>>  
>>  
>>      /** 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/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:54:5:
(e= orExpression )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/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
);
>>      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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/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/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g:103:7:
( LITERAL )
>> +            // /Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/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/lenya/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/expressions__.g?rev=653799&r1=653798&r2=653799&view=diff
>> ==============================================================================
>> --- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/expressions__.g
(original)
>> +++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/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" 92
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
106
>>  LITERAL: '"' ('a'..'z'|'A'..'Z'|'_'|' '|'.')* '"';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 93
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
107
>>  ID: ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9')*;
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 94
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
108
>>  EQUALS: '==';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 95
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
109
>>  QUOT: '"';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 96
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
110
>>  OR: '||';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 97
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
111
>>  AND: '&&';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 98
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
112
>>  LEFTPAR: '(';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 99
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
113
>>  RIGHTPAR: ')';
>> -// $ANTLR src "src/java/org/apache/lenya/ac/impl/antlr/Expressions.g" 100
>> +// $ANTLR src "/Users/nobby/apache/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/antlr/Expressions.g"
114
>>  WS: (' '|'\t')+ {skip();} ;
>>
>> Added: lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java
>> URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java?rev=653799&view=auto
>> ==============================================================================
>> --- lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java
(added)
>> +++ lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/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 = { ATTR_NAME };
>> +                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
>>
> 
> 


-- 
Andreas Hartmann, CTO
BeCompany GmbH
http://www.becompany.ch
Tel.: +41 (0) 43 818 57 01


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Mime
View raw message