You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2008/11/20 02:10:16 UTC

svn commit: r719147 [1/2] - in /lenya/sandbox/access_control_redesign/src: java/org/apache/lenya/ac/ modules-core/ac/config/ modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ modules-core/ac/java/src/org/apache/lenya/ac/file/ modules-core/ac/jav...

Author: andreas
Date: Wed Nov 19 17:10:15 2008
New Revision: 719147

URL: http://svn.apache.org/viewvc?rev=719147&view=rev
Log:
Next steps in access control redesign.

Added:
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItem.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java
Modified:
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java
    lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions__.g
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java
    lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java
    lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java
    lenya/sandbox/access_control_redesign/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java
    lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java
    lenya/sandbox/access_control_redesign/src/webapp/lenya/config/sitemap/pipelines.xmap

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java Wed Nov 19 17:10:15 2008
@@ -31,18 +31,14 @@
 
     private static final long serialVersionUID = 1L;
     private String userId;
-    private String managerId;
 
     /**
      * @param userId The ID of the user.
-     * @param accrMgrId The ID of the accreditable manager.
      * @see Item#getId()
      */
-    public AbstractUserReference(String userId, String accrMgrId) {
+    public AbstractUserReference(String userId) {
         Assert.notNull("user ID", userId);
-        Assert.notNull("accreditable manager ID", accrMgrId);
         this.userId = userId;
-        this.managerId = accrMgrId;
     }
 
     /**
@@ -96,9 +92,4 @@
         return matchingGroups;
     }
     
-    public boolean belongsToAccreditableManager(String accrMgrId) {
-        Assert.notNull("accreditable manager ID", accrMgrId);
-        return accrMgrId.equals(this.managerId);
-    }
-
 }

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java Wed Nov 19 17:10:15 2008
@@ -20,6 +20,7 @@
 
 import org.apache.avalon.framework.component.Component;
 import org.apache.cocoon.environment.Request;
+import org.apache.lenya.ac.attr.AttributeSet;
 
 /**
  * An authenticator.
@@ -41,4 +42,25 @@
      */
     boolean authenticate(AccreditableManager accreditableManager, Request request)
         throws AccessControlException;
+
+    /**
+     * The login URI for a certain request.
+     * @param request The request.
+     * @return A string.
+     */
+    String getLoginUri(Request request);
+
+    /**
+     * The target URI, i.e. the URI to redirect to after a successful
+     * authentication.
+     * @param request The request containing the authentication data.
+     * @return A string.
+     */
+    String getTargetUri(Request request);
+
+    /**
+     * @return The set of attributes to be expected when a user has been
+     *         authenticated by this authenticator.
+     */
+    AttributeSet getAttributeSet();
 }

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java Wed Nov 19 17:10:15 2008
@@ -20,15 +20,13 @@
 
 package org.apache.lenya.ac;
 
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.logger.LogEnabled;
 
 
 /**
  * An item can be initialized from a configuration.
  */
-public interface Item extends LogEnabled {
+public interface Item {
     
     /**
      * Returns the ID.
@@ -60,16 +58,4 @@
      */
     void setDescription(String description);
     
-    /**
-     * Configures this item.
-     * @param configuration The configuration.
-     * @throws ConfigurationException when something went wrong.
-     */
-    void configure(Configuration configuration) throws ConfigurationException;
-    
-    /**
-     * @return The item manager this item belongs to.
-     */
-    ItemManager getItemManager();
-
 }

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java Wed Nov 19 17:10:15 2008
@@ -20,7 +20,7 @@
 /**
  * A user which is managed by the Lenya CMS itself, i.e. it belongs to a {@link UserManager}.
  */
-public interface ManagedUser extends User, Accreditable {
+public interface ManagedUser extends User, Accreditable, Groupable {
 
     /**
      * Delete this user.
@@ -43,6 +43,12 @@
     void setPassword(String plainTextPassword);
 
     /**
+     * Checks support for changing password
+     * @return true if password change is supported
+     */
+    public abstract boolean canChangePassword();
+ 
+    /**
      * Saves this user.
      * @throws AccessControlException if the user could not be saved.
      */

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java Wed Nov 19 17:10:15 2008
@@ -17,17 +17,23 @@
  */
 package org.apache.lenya.ac;
 
+import org.apache.lenya.util.Assert;
+
 /**
  * A reference to a managed user.
  */
 public class ManagedUserReference extends AbstractUserReference {
+    
+    private String managerId;
 
     /**
      * @param userId The user ID.
      * @param managerId The ID of the accreditable manager the user belongs to.
      */
     public ManagedUserReference(String userId, String managerId) {
-        super(userId, managerId);
+        super(userId);
+        Assert.notNull("manager ID", managerId);
+        this.managerId = managerId;
     }
     
     private static final long serialVersionUID = 1L;
@@ -44,4 +50,9 @@
         }
     }
 
+    public boolean belongsToAccreditableManager(String accrMgrId) {
+        Assert.notNull("accreditable manager ID", accrMgrId);
+        return accrMgrId.equals(this.managerId);
+    }
+
 }

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java Wed Nov 19 17:10:15 2008
@@ -24,7 +24,7 @@
  * A user.
  * @version $Id$
  */
-public interface User extends Accreditable, Item, Groupable, AttributeOwner {
+public interface User extends Item, AttributeOwner {
     
     /**
      * Get the email address
@@ -41,18 +41,6 @@
     void setEmail(String email);
     
     /**
-     * Sets the password.
-     * @param plainTextPassword The plain text password.
-     */
-    void setPassword(String plainTextPassword);
-   
-    /**
-     * Checks support for changing password
-     * @return true if password change is supported
-     */
-    public abstract boolean canChangePassword();
- 
-    /**
      * Returns the user's preferred locale for the Lenya
      * CMS menus and CMS screens.
      * 
@@ -96,32 +84,4 @@
      */
     void setDefaultDocumentLocale(String documentLocale); 
     
-    /**
-     * Save the user
-     *
-     * @throws AccessControlException if the save failed
-     */
-    void save() throws AccessControlException;
-    
-    /**
-     * Delete a user
-     *
-     * @throws AccessControlException if the delete failed
-     */
-    void delete() throws AccessControlException;
-    
-    /**
-     * Authenticate a user. This is done by encrypting
-     * the given password and comparing this to the
-     * encryptedPassword.
-     *
-     * @param password to authenticate with
-     * @return true if the given password matches the password for this user
-     */
-    boolean authenticate(String password);
-    
-    /**
-     * @return The accreditable manager this accreditable belongs to.
-     */
-    AccreditableManager getAccreditableManager();
 }

Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java Wed Nov 19 17:10:15 2008
@@ -61,7 +61,7 @@
      * @return the requested user or null if there is
      * no user with the given user id
      */
-    User getUser(String userId);
+    ManagedUser getUser(String userId);
     
     /**
      * @param userId A user ID.

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml Wed Nov 19 17:10:15 2008
@@ -22,6 +22,8 @@
   <id>org.apache.lenya.modules.ac</id>
   <export package="org.apache.lenya.ac.file"/>
   <export package="org.apache.lenya.ac.impl"/>
+  <export package="org.apache.lenya.ac.attr"/>
+  <export package="org.apache.lenya.ac.attr.impl"/>
   <depends module="org.apache.lenya.modules.cache"/>
   <depends module="org.apache.lenya.modules.linking"/>
   <package>org.apache.lenya.modules</package>

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java Wed Nov 19 17:10:15 2008
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2008-11-19 22:26:32
+// $ANTLR 3.0.1 /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2008-11-19 23:56:23
 
 package org.apache.lenya.ac.attr.antlr;
 import org.apache.lenya.ac.attr.ErrorHandler;
@@ -37,17 +37,17 @@
     public ExpressionsLexer(CharStream input) {
         super(input);
     }
-    public String getGrammarFileName() { return "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g"; }
+    public String getGrammarFileName() { return "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g"; }
 
     // $ANTLR start LITERAL
     public final void mLITERAL() throws RecognitionException {
         try {
             int _type = LITERAL;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:106:8: ( '\"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )* '\"' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:106:10: '\"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )* '\"'
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:106:8: ( '\"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )* '\"' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:106:10: '\"' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )* '\"'
             {
             match('\"'); 
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:106:14: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:106:14: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | ' ' | '.' )*
             loop1:
             do {
                 int alt1=2;
@@ -60,7 +60,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:
+            	    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:107:3: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:107:5: ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:107:3: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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;
             }
 
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:107:25: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:107:25: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )*
             loop2:
             do {
                 int alt2=2;
@@ -122,7 +122,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:
+            	    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:108:7: ( '==' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:108:9: '=='
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:108:7: ( '==' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:108:9: '=='
             {
             match("=="); 
 
@@ -176,8 +176,8 @@
     public final void mQUOT() throws RecognitionException {
         try {
             int _type = QUOT;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:109:5: ( '\"' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:109:7: '\"'
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:109:5: ( '\"' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:109:7: '\"'
             {
             match('\"'); 
 
@@ -194,8 +194,8 @@
     public final void mOR() throws RecognitionException {
         try {
             int _type = OR;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:110:3: ( '||' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:110:5: '||'
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:110:3: ( '||' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:110:5: '||'
             {
             match("||"); 
 
@@ -213,8 +213,8 @@
     public final void mAND() throws RecognitionException {
         try {
             int _type = AND;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:111:4: ( '&&' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:111:6: '&&'
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:111:4: ( '&&' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:111:6: '&&'
             {
             match("&&"); 
 
@@ -232,8 +232,8 @@
     public final void mLEFTPAR() throws RecognitionException {
         try {
             int _type = LEFTPAR;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:112:8: ( '(' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:112:10: '('
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:112:8: ( '(' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:112:10: '('
             {
             match('('); 
 
@@ -250,8 +250,8 @@
     public final void mRIGHTPAR() throws RecognitionException {
         try {
             int _type = RIGHTPAR;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:113:9: ( ')' )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:113:11: ')'
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:113:9: ( ')' )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:113:11: ')'
             {
             match(')'); 
 
@@ -268,10 +268,10 @@
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:114:3: ( ( ' ' | '\\t' )+ )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:114:5: ( ' ' | '\\t' )+
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:114:3: ( ( ' ' | '\\t' )+ )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:114:5: ( ' ' | '\\t' )+
             {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:114:5: ( ' ' | '\\t' )+
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:114:5: ( ' ' | '\\t' )+
             int cnt3=0;
             loop3:
             do {
@@ -285,7 +285,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:
+            	    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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 {
-        // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:8: ( LITERAL | ID | EQUALS | QUOT | OR | AND | LEFTPAR | RIGHTPAR | WS )
+        // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:10: LITERAL
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:10: LITERAL
                 {
                 mLITERAL(); 
 
                 }
                 break;
             case 2 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:18: ID
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:18: ID
                 {
                 mID(); 
 
                 }
                 break;
             case 3 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:21: EQUALS
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:21: EQUALS
                 {
                 mEQUALS(); 
 
                 }
                 break;
             case 4 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:28: QUOT
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:28: QUOT
                 {
                 mQUOT(); 
 
                 }
                 break;
             case 5 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:33: OR
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:33: OR
                 {
                 mOR(); 
 
                 }
                 break;
             case 6 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:36: AND
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:36: AND
                 {
                 mAND(); 
 
                 }
                 break;
             case 7 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:40: LEFTPAR
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:40: LEFTPAR
                 {
                 mLEFTPAR(); 
 
                 }
                 break;
             case 8 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:48: RIGHTPAR
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:48: RIGHTPAR
                 {
                 mRIGHTPAR(); 
 
                 }
                 break;
             case 9 :
-                // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:57: WS
+                // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:1:57: WS
                 {
                 mWS(); 
 

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java Wed Nov 19 17:10:15 2008
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2008-11-19 22:26:30
+// $ANTLR 3.0.1 /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2008-11-19 23:56:22
 
 package org.apache.lenya.ac.attr.antlr;
 import java.util.HashMap;
@@ -31,7 +31,7 @@
         
 
     public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g"; }
+    public String getGrammarFileName() { return "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g"; }
 
 
     /** Map variable name to object holding value */
@@ -61,7 +61,7 @@
 
 
     // $ANTLR start prog
-    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:53:1: prog returns [boolean value] : e= orExpression ;
+    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:53:1: prog returns [boolean value] : e= orExpression ;
     public final boolean prog() throws RecognitionException {
         boolean value = false;
 
@@ -69,8 +69,8 @@
 
 
         try {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:54:5: (e= orExpression )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:54:7: e= orExpression
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:54:5: (e= orExpression )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:54:7: e= orExpression
             {
             pushFollow(FOLLOW_orExpression_in_prog50);
             e=orExpression();
@@ -93,7 +93,7 @@
 
 
     // $ANTLR start orExpression
-    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:57:1: orExpression returns [boolean value] : e= andExpression ( OR e= andExpression )* ;
+    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:57:1: orExpression returns [boolean value] : e= andExpression ( OR e= andExpression )* ;
     public final boolean orExpression() throws RecognitionException {
         boolean value = false;
 
@@ -101,15 +101,15 @@
 
 
         try {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:58:5: (e= andExpression ( OR e= andExpression )* )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:58:9: e= andExpression ( OR e= andExpression )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:58:5: (e= andExpression ( OR e= andExpression )* )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:58:9: e= andExpression ( OR e= andExpression )*
             {
             pushFollow(FOLLOW_andExpression_in_orExpression77);
             e=andExpression();
             _fsp--;
 
             value = e; 
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:59:5: ( OR e= andExpression )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:59:5: ( OR e= andExpression )*
             loop1:
             do {
                 int alt1=2;
@@ -122,7 +122,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:59:7: OR e= andExpression
+            	    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:59:7: OR e= andExpression
             	    {
             	    match(input,OR,FOLLOW_OR_in_orExpression87); 
             	    pushFollow(FOLLOW_andExpression_in_orExpression91);
@@ -155,7 +155,7 @@
 
 
     // $ANTLR start andExpression
-    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:62:1: andExpression returns [boolean value] : e= comparison ( AND e= comparison )* ;
+    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:62:1: andExpression returns [boolean value] : e= comparison ( AND e= comparison )* ;
     public final boolean andExpression() throws RecognitionException {
         boolean value = false;
 
@@ -163,15 +163,15 @@
 
 
         try {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:63:5: (e= comparison ( AND e= comparison )* )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:63:9: e= comparison ( AND e= comparison )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:63:5: (e= comparison ( AND e= comparison )* )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:63:9: e= comparison ( AND e= comparison )*
             {
             pushFollow(FOLLOW_comparison_in_andExpression125);
             e=comparison();
             _fsp--;
 
             value = e;
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:64:5: ( AND e= comparison )*
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:64:5: ( AND e= comparison )*
             loop2:
             do {
                 int alt2=2;
@@ -184,7 +184,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:64:7: AND e= comparison
+            	    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:64:7: AND e= comparison
             	    {
             	    match(input,AND,FOLLOW_AND_in_andExpression135); 
             	    pushFollow(FOLLOW_comparison_in_andExpression139);
@@ -217,7 +217,7 @@
 
 
     // $ANTLR start comparison
-    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:67:1: comparison returns [boolean value] : (a= atom EQUALS b= atom | LEFTPAR e= orExpression RIGHTPAR );
+    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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;
 
@@ -229,7 +229,7 @@
 
 
         try {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:68:5: (a= atom EQUALS b= atom | LEFTPAR e= orExpression RIGHTPAR )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:68:5: (a= atom EQUALS b= atom | LEFTPAR e= orExpression RIGHTPAR )
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -247,7 +247,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:68:9: a= atom EQUALS b= atom
+                    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:68:9: a= atom EQUALS b= atom
                     {
                     pushFollow(FOLLOW_atom_in_comparison173);
                     a=atom();
@@ -277,7 +277,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:83:9: LEFTPAR e= orExpression RIGHTPAR
+                    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:83:9: LEFTPAR e= orExpression RIGHTPAR
                     {
                     match(input,LEFTPAR,FOLLOW_LEFTPAR_in_comparison191); 
                     pushFollow(FOLLOW_orExpression_in_comparison195);
@@ -307,7 +307,7 @@
     };
 
     // $ANTLR start atom
-    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:86:1: atom returns [Object value] : ( quotedString | ID );
+    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/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);
@@ -317,7 +317,7 @@
 
 
         try {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:87:5: ( quotedString | ID )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:87:5: ( quotedString | ID )
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -335,7 +335,7 @@
             }
             switch (alt4) {
                 case 1 :
-                    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:87:9: quotedString
+                    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:87:9: quotedString
                     {
                     pushFollow(FOLLOW_quotedString_in_atom222);
                     quotedString1=quotedString();
@@ -346,7 +346,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:88:9: ID
+                    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:88:9: ID
                     {
                     ID2=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_atom234); 
@@ -381,15 +381,15 @@
 
 
     // $ANTLR start quotedString
-    // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:102:1: quotedString returns [String value] : LITERAL ;
+    // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:102:1: quotedString returns [String value] : LITERAL ;
     public final String quotedString() throws RecognitionException {
         String value = null;
 
         Token LITERAL3=null;
 
         try {
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:103:7: ( LITERAL )
-            // /Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:103:9: LITERAL
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:103:7: ( LITERAL )
+            // /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g:103:9: LITERAL
             {
             LITERAL3=(Token)input.LT(1);
             match(input,LITERAL,FOLLOW_LITERAL_in_quotedString267); 

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions__.g
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions__.g?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions__.g (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions__.g Wed Nov 19 17:10:15 2008
@@ -16,21 +16,21 @@
 import org.apache.lenya.ac.attr.ErrorHandler;
 }
 
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 106
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 106
 LITERAL: '"' ('a'..'z'|'A'..'Z'|'_'|' '|'.')* '"';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 107
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 107
 ID: ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9')*;
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 108
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 108
 EQUALS: '==';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 109
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 109
 QUOT: '"';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 110
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 110
 OR: '||';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 111
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 111
 AND: '&&';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 112
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 112
 LEFTPAR: '(';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 113
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 113
 RIGHTPAR: ')';
-// $ANTLR src "/Users/nobby/apache/lenya/pure-https/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 114
+// $ANTLR src "/Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g" 114
 WS: (' '|'\t')+ {skip();} ;

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java Wed Nov 19 17:10:15 2008
@@ -28,8 +28,6 @@
 import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.Item;
 import org.apache.lenya.ac.ItemManager;
 import org.apache.lenya.ac.impl.AbstractGroup;
 import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -37,7 +35,7 @@
 /**
  * File-based group implementation.
  */
-public class FileGroup extends AbstractGroup implements Item {
+public class FileGroup extends AbstractGroup implements FileItem {
 
     /**
      * @see org.apache.lenya.ac.Group#delete()
@@ -129,7 +127,7 @@
         return this.configurationDirectory;
     }
 
-    protected void setConfigurationDirectory(File _configurationDirectory) {
+    public void setConfigurationDirectory(File _configurationDirectory) {
         assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
         this.configurationDirectory = _configurationDirectory;
     }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java Wed Nov 19 17:10:15 2008
@@ -41,7 +41,7 @@
 /**
  * IP range that is stored in a file.
  */
-public class FileIPRange extends AbstractIPRange implements Serializable {
+public class FileIPRange extends AbstractIPRange implements Serializable, FileItem {
 
     /**
 	 * 

Added: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItem.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItem.java?rev=719147&view=auto
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItem.java (added)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItem.java Wed Nov 19 17:10:15 2008
@@ -0,0 +1,46 @@
+/*
+ * 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: Item.java 473841 2006-11-12 00:46:38Z gregor $  */
+package org.apache.lenya.ac.file;
+
+import java.io.File;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.lenya.ac.Item;
+
+/**
+ * An item which is stored in a file.
+ */
+public interface FileItem extends Item {
+
+    /**
+     * Sets the configuration directory of this item.
+     * @param configurationDirectory The configuration directory.
+     */
+    void setConfigurationDirectory(File configurationDirectory);
+
+    /**
+     * Configures this item.
+     * @param configuration The configuration.
+     * @throws ConfigurationException when something went wrong.
+     */
+    void configure(Configuration configuration) throws ConfigurationException;
+    
+}

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java Wed Nov 19 17:10:15 2008
@@ -152,7 +152,7 @@
 
         String fileName = file.getName();
         String id = fileName.substring(0, fileName.length() - getSuffix().length());
-        Item item = (Item) this.items.get(id);
+        FileItem item = (FileItem) this.items.get(id);
 
         String klass = ItemConfiguration.getItemClass(config);
         if (item == null) {
@@ -160,7 +160,7 @@
                 Class[] paramTypes = { ItemManager.class, Logger.class };
                 Constructor ctor = Class.forName(klass).getConstructor(paramTypes);
                 Object[] params = { this, getLogger() };
-                item = (Item) ctor.newInstance(params);
+                item = (FileItem) ctor.newInstance(params);
             } catch (Exception e) {
                 String errorMsg = "Exception when trying to instanciate: " + klass
                         + " with exception: " + e.fillInStackTrace();

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java Wed Nov 19 17:10:15 2008
@@ -26,7 +26,6 @@
 import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Item;
 import org.apache.lenya.ac.ItemManager;
 import org.apache.lenya.ac.impl.AbstractRole;
 import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -35,7 +34,7 @@
  * File-based role implementation.
  * @version $Id$
  */
-public class FileRole extends AbstractRole implements Item {
+public class FileRole extends AbstractRole implements FileItem {
 
     protected static final String ATTR_ASSIGNABLE = "assignable";
 
@@ -112,7 +111,7 @@
         return this.configurationDirectory;
     }
 
-    protected void setConfigurationDirectory(File file) {
+    public void setConfigurationDirectory(File file) {
         this.configurationDirectory = file;
     }
 

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java Wed Nov 19 17:10:15 2008
@@ -29,7 +29,6 @@
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.Group;
 import org.apache.lenya.ac.GroupManager;
-import org.apache.lenya.ac.Item;
 import org.apache.lenya.ac.ItemManager;
 import org.apache.lenya.ac.ManagedUser;
 import org.apache.lenya.ac.impl.AbstractUser;
@@ -39,7 +38,7 @@
  * File-based user implementation.
  * @version $Id$
  */
-public class FileUser extends AbstractUser implements Item, Serializable, ManagedUser {
+public class FileUser extends AbstractUser implements FileItem, Serializable, ManagedUser {
 
     /**
      * 
@@ -216,7 +215,7 @@
         return this.configurationDirectory;
     }
 
-    protected void setConfigurationDirectory(File _configurationDirectory) {
+    public void setConfigurationDirectory(File _configurationDirectory) {
         assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
         this.configurationDirectory = _configurationDirectory;
     }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java Wed Nov 19 17:10:15 2008
@@ -29,6 +29,7 @@
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.Item;
+import org.apache.lenya.ac.ManagedUser;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.ac.UserType;
@@ -118,8 +119,8 @@
      * @param userId user id of requested user
      * @return the requested user or null if there is no user with the given user id
      */
-    public User getUser(String userId) {
-        return (User) getItem(userId);
+    public ManagedUser getUser(String userId) {
+        return (ManagedUser) getItem(userId);
     }
 
     /**

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java Wed Nov 19 17:10:15 2008
@@ -121,7 +121,7 @@
         return this.configurationDirectory;
     }
 
-    protected void setConfigurationDirectory(File _configurationDirectory) {
+    public void setConfigurationDirectory(File _configurationDirectory) {
         this.configurationDirectory = _configurationDirectory;
     }
 

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java Wed Nov 19 17:10:15 2008
@@ -26,6 +26,7 @@
 import org.apache.lenya.ac.ManagedUserReference;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.ac.UserReference;
+import org.apache.lenya.ac.attr.AttributeSet;
 
 /**
  * The anonymous authenticator authenticates to an anonymous user with no
@@ -78,4 +79,19 @@
         }
         return authenticated;
     }
+
+    public AttributeSet getAttributeSet() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getLoginUri(Request request) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getTargetUri(Request request) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java Wed Nov 19 17:10:15 2008
@@ -163,7 +163,7 @@
         Accreditable accreditable = null;
 
         if (elementName.equals(USER_ELEMENT)) {
-            accreditable = getAccreditableManager().getUserManager().getUser(id);
+            accreditable = (Accreditable) getAccreditableManager().getUserManager().getUser(id);
         } else if (elementName.equals(GROUP_ELEMENT)) {
             accreditable = getAccreditableManager().getGroupManager().getGroup(id);
         } else if (elementName.equals(WORLD_ELEMENT)) {

Added: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java?rev=719147&view=auto
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java (added)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java Wed Nov 19 17:10:15 2008
@@ -0,0 +1,113 @@
+/*
+ * 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.
+ *
+ */
+package org.apache.lenya.ac.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.User;
+
+/**
+ * Class for users which are not stored in the CMS, but in an external directory
+ * like LDAP or a Shibboleth identity provider.
+ */
+public class TransientUser implements User {
+
+    /**
+     * @param id The user ID.
+     */
+    public TransientUser(String id) {
+        this.id = id;
+    }
+
+    private String id;
+    
+    public String getId() {
+        return this.id;
+    }
+
+    private Map attributes = new HashMap();
+
+    public String[] getAttributeValues(String name) throws AccessControlException {
+        return (String[]) this.attributes.get(name);
+    }
+
+    public String[] getAttributeNames() {
+        Set names = this.attributes.keySet();
+        return (String[]) names.toArray(new String[names.size()]);
+    }
+
+    /**
+     * Sets an attribute.
+     * @param name The name.
+     * @param values The values.
+     * @throws AccessControlException if the attribute name is not supported.
+     */
+    public void setAttributeValues(String name, String[] values) throws AccessControlException {
+        this.attributes.put(name, values);
+    }
+
+    protected boolean hasAttributes() {
+        return !this.attributes.isEmpty();
+    }
+    
+    private String email;
+    private String description;
+    private String name;
+
+    public String getEmail() {
+        return this.email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getDescription() {
+        return this.description;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDefaultDocumentLocale() {
+        return "en";
+    }
+
+    public String getDefaultMenuLocale() {
+        return "en";
+    }
+
+    public void setDefaultDocumentLocale(String documentLocale) {
+    }
+
+    public void setDefaultMenuLocale(String menuLocale) {
+    }
+
+}

Added: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java?rev=719147&view=auto
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java (added)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java Wed Nov 19 17:10:15 2008
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ *
+ */
+package org.apache.lenya.ac.impl;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.lenya.ac.AbstractUserReference;
+import org.apache.lenya.ac.Accreditable;
+import org.apache.lenya.ac.AccreditableManager;
+import org.apache.lenya.ac.User;
+
+/**
+ * A reference to a transient user.
+ */
+public class TransientUserReference extends AbstractUserReference {
+    
+    private static final long serialVersionUID = 1L;
+    
+    private TransientUser user;
+    
+    /**
+     * @param user The user.
+     */
+    public TransientUserReference(TransientUser user) {
+        super(user.getId());
+        this.user = user;
+    }
+
+    public Accreditable[] getAccreditables(AccreditableManager accrMgr) {
+        Set accrs = new HashSet();
+        accrs.addAll(getMatchingGroups(accrMgr, this.user));
+        return (Accreditable[]) accrs.toArray(new Accreditable[accrs.size()]);
+    }
+
+    public User getUser(AccreditableManager accrMgr) {
+        return this.user;
+    }
+
+    public boolean belongsToAccreditableManager(String accrMgrId) {
+        return true;
+    }
+
+}

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java Wed Nov 19 17:10:15 2008
@@ -24,10 +24,13 @@
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.Authenticator;
 import org.apache.lenya.ac.Identity;
+import org.apache.lenya.ac.ManagedUser;
 import org.apache.lenya.ac.ManagedUserReference;
-import org.apache.lenya.ac.User;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.ac.UserReference;
+import org.apache.lenya.ac.attr.AttributeSet;
+import org.apache.lenya.ac.attr.impl.AttributeSetImpl;
+import org.apache.lenya.util.ServletHelper;
 
 /**
  * User authenticator.
@@ -100,7 +103,7 @@
             String password, Identity identity) throws AccessControlException {
 
         UserManager userManager = accreditableManager.getUserManager();
-        User user = userManager.getUser(username);
+        ManagedUser user = (ManagedUser) userManager.getUser(username);
         if (getLogger().isDebugEnabled()) {
             getLogger().debug("Authenticating user: [" + user + "]");
         }
@@ -132,4 +135,17 @@
         return authenticated;
     }
 
+    public AttributeSet getAttributeSet() {
+        return new AttributeSetImpl();
+    }
+
+    public String getLoginUri(Request request) {
+        String webappUrl = ServletHelper.getWebappURI(request);
+        return webappUrl + "?lenya.module=openid&lenya.action=login";
+    }
+
+    public String getTargetUri(Request request) {
+        return ServletHelper.getWebappURI(request);
+    }
+
 }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java Wed Nov 19 17:10:15 2008
@@ -47,6 +47,7 @@
 import org.apache.lenya.ac.User;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.ac.UserReference;
+import org.apache.lenya.ac.impl.DefaultAccessController;
 import org.apache.lenya.cms.ac.PolicyUtil;
 import org.apache.lenya.util.ServletHelper;
 
@@ -61,14 +62,17 @@
  * <li><strong><code>user-id</code></strong> - the ID of the currently logged-in user</li>
  * <li><strong><code>user-name</code></strong> - the full name of the currently logged-in user</li>
  * <li><strong><code>user-name:{user-id}</code></strong> - the full name of a specific user</li>
- * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user</li>
+ * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user
+ * </li>
  * <li><strong><code>user-email:{user-id}</code></strong> - the e-mail address of a specific user</li>
  * <li><strong><code>ip-address</code></strong> - the IP address of the client machine</li>
- * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current identity</li>
+ * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current
+ * identity</li>
  * <li><strong><code>user-manager</code></strong> - the user manager object</li>
  * <li><strong><code>group-manager</code></strong> - the group manager object</li>
  * <li><strong><code>iprange-manager</code></strong> - the IP range manager object</li>
  * <li><strong><code>role-manager</code></strong> - the role manager object</li>
+ * <li><strong><code>login-uri</code></strong> - the URI for the redirect to the login screen</li>
  * </ul>
  * 
  */
@@ -114,12 +118,16 @@
      * Returns if the current page is SSL protected (true|false).
      */
     public static final String SSL = "ssl";
+    /**
+     * The URI for the redirect to the login screen.
+     */
+    public static final String LOGIN_URI = "login-uri";
 
     /**
      * The names of the AccessControlModule parameters.
      */
     static final String[] PARAMETER_NAMES = { IP_ADDRESS, USER_ID, USER_NAME, USER_EMAIL, ROLE_IDS,
-            USER_MANAGER, GROUP_MANAGER, ROLE_MANAGER, IP_RANGE_MANAGER, SSL };
+            USER_MANAGER, GROUP_MANAGER, ROLE_MANAGER, IP_RANGE_MANAGER, SSL, LOGIN_URI };
 
     /**
      * 
@@ -140,11 +148,9 @@
             throw new ConfigurationException("The attribute [" + name + "] is not supported!");
         }
 
-        Identity identity = null;
-        
-        if (session != null) {
-            identity = (Identity) session.getAttribute(Identity.class.getName());
-        }
+        Identity identity = session != null ? (Identity) session.getAttribute(Identity.class
+                .getName()) : null;
+
         User user = getUser(request, parameters, identity);
 
         if (user != null) {
@@ -187,40 +193,31 @@
         if (name.equals(USER_MANAGER) || name.equals(GROUP_MANAGER) || name.equals(ROLE_MANAGER)
                 || name.equals(IP_RANGE_MANAGER)) {
             value = getItemManager(request, name);
-        }
-        
-        if (name.equals(SSL)) {
-            ServiceSelector selector = null;
-            AccessControllerResolver acResolver = null;
-            AccessController accessController = null;
-            try {
-                selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                        + "Selector");
-                acResolver
-                    = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-    
-                String url = ServletHelper.getWebappURI(request);
-                accessController = acResolver.resolveAccessController(url);
-                AccreditableManager accreditableManager = accessController.getAccreditableManager();
-                PolicyManager policyManager = accessController.getPolicyManager();
-    
-                Policy policy = policyManager.getPolicy(accreditableManager, url);
-                value = Boolean.toString(policy.isSSLProtected());
-            }
-            catch (Exception e) {
-                throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-            }
-            finally {
-                if (selector != null) {
-                    if (acResolver != null) {
-                        if (accessController != null) {
-                            acResolver.release(accessController);
-                        }
-                        selector.release(acResolver);
+        } else if (name.equals(LOGIN_URI)) {
+            ValueExtractor extractor = new ValueExtractor() {
+                protected String extractValue(DefaultAccessController accessController,
+                        Request request) {
+                    return accessController.getAuthenticator().getLoginUri(request);
+                }
+            };
+            value = extractValue(request, extractor);
+        } else if (name.equals(SSL)) {
+            ValueExtractor extractor = new ValueExtractor() {
+                protected String extractValue(DefaultAccessController accessController,
+                        Request request) {
+                    String url = ServletHelper.getWebappURI(request);
+                    AccreditableManager accreditableManager = accessController
+                            .getAccreditableManager();
+                    PolicyManager policyManager = accessController.getPolicyManager();
+                    try {
+                        Policy policy = policyManager.getPolicy(accreditableManager, url);
+                        return Boolean.toString(policy.isSSLProtected());
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
                     }
-                    this.manager.release(selector);
                 }
-            }
+            };
+            value = extractValue(request, extractor);
         }
 
         return value;
@@ -342,4 +339,44 @@
         this.manager = _manager;
     }
 
+    /**
+     * Class to obtain a property of the access controller without duplicating the lookup/release
+     * boilerplate code.
+     */
+    protected static abstract class ValueExtractor {
+        protected abstract String extractValue(DefaultAccessController accessController,
+                Request request);
+    }
+
+    protected String extractValue(Request request, ValueExtractor extractor)
+            throws ConfigurationException {
+        DefaultAccessController accessController = null;
+        ServiceSelector selector = null;
+        AccessControllerResolver resolver = null;
+
+        try {
+            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+                    + "Selector");
+            resolver = (AccessControllerResolver) selector
+                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
+
+            String url = ServletHelper.getWebappURI(request);
+            accessController = (DefaultAccessController) resolver.resolveAccessController(url);
+
+            return extractor.extractValue(accessController, request);
+
+        } catch (Exception e) {
+            throw new ConfigurationException("Could not determine login URI: ", e);
+        } finally {
+            if (selector != null) {
+                if (resolver != null) {
+                    if (accessController != null) {
+                        resolver.release(accessController);
+                    }
+                    selector.release(resolver);
+                }
+                this.manager.release(selector);
+            }
+        }
+    }
 }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java Wed Nov 19 17:10:15 2008
@@ -225,7 +225,7 @@
         FileUserManager _manager = getUserManager();
         assertNotNull(_manager);
 
-        User lenya = _manager.getUser("lenya");
+        FileUser lenya = (FileUser) _manager.getUser("lenya");
         assertNotNull(lenya);
         assertTrue(lenya.authenticate("levi"));
     }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java Wed Nov 19 17:10:15 2008
@@ -74,7 +74,7 @@
         FileRole adminRole = new FileRole(getAccreditableManager().getRoleManager(), getLogger(),
                 adminRoleId);
 
-        User user = new FileUser(getAccreditableManager().getUserManager(), getLogger(), userName,
+        FileUser user = new FileUser(getAccreditableManager().getUserManager(), getLogger(), userName,
                 "Alice in Wonderland", "alice@test.com", "secret");
 
         editorRole.save();

Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java Wed Nov 19 17:10:15 2008
@@ -17,7 +17,7 @@
  */
 package org.apache.lenya.cms.ac.usecases;
 
-import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.ManagedUser;
 
 
 /**
@@ -28,7 +28,7 @@
     protected static final String NEW_PASSWORD = "newPassword";
     protected static final String CONFIRM_PASSWORD = "confirmPassword";
 
-    protected abstract User getUser();
+    protected abstract ManagedUser getUser();
 
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()

Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java Wed Nov 19 17:10:15 2008
@@ -20,6 +20,7 @@
 import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.ItemUtil;
+import org.apache.lenya.ac.ManagedUser;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.ac.file.FileUser;
@@ -108,7 +109,7 @@
         String email = getParameterAsString(UserProfile.EMAIL);
         String className = getParameterAsString(CLASS_NAME);
 
-        User user;
+        ManagedUser user;
         if (className.equals(LDAPUser.class.getName())) {
             String ldapId = getParameterAsString(LDAP_ID);
             user = new LDAPUser(userManager, getLogger(), userId, email, ldapId, getLogger());

Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java Wed Nov 19 17:10:15 2008
@@ -17,7 +17,7 @@
  */
 package org.apache.lenya.cms.ac.usecases;
 
-import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.ManagedUser;
 
 /**
  * Usecase to change a user's password. The old password is checked.
@@ -29,7 +29,7 @@
     /**
      * @return Always returns the currently logged in user.
      */
-    protected User getUser() {
+    protected ManagedUser getUser() {
         String id = getSession().getIdentity().getUserReference().getId();
         return getUserManager().getUser(id);
     }
@@ -47,7 +47,7 @@
      */
     private void checkOldPassword() {
         String oldPassword = getParameterAsString(OLD_PASSWORD);
-        boolean authenticated = getUser().authenticate(oldPassword);
+        boolean authenticated = ((ManagedUser) getUser()).authenticate(oldPassword);
         if (!authenticated) {
             addErrorMessage("The old password is not correct.");
         }

Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java?rev=719147&r1=719146&r2=719147&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java Wed Nov 19 17:10:15 2008
@@ -17,16 +17,16 @@
  */
 package org.apache.lenya.cms.ac.usecases;
 
-import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.ManagedUser;
 
 /**
  * Usecase to change a user's password.
  */
 public class ChangePasswordAdmin extends AbstractChangePassword {
 
-    private User user;
+    private ManagedUser user;
 
-    protected User getUser() {
+    protected ManagedUser getUser() {
         if (this.user == null) {
             String userId = getParameterAsString(UserProfile.USER_ID);
             this.user = getUserManager().getUser(userId);



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