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 2009/02/10 19:25:57 UTC

svn commit: r743042 [1/2] - in /lenya/trunk: org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/cifs/ org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/ org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ org.apache.l...

Author: andreas
Date: Tue Feb 10 18:25:55 2009
New Revision: 743042

URL: http://svn.apache.org/viewvc?rev=743042&view=rev
Log:
Resolving some test dependencies. I patched the sourcerepository to work with resource:// sources so that the test pub can be shipped as a set of resources, I guess this can be removed later.

Added:
    lenya/trunk/org.apache.lenya.core.ac/src/test/
    lenya/trunk/org.apache.lenya.core.ac/src/test/java/
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistryImpl.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/resources/
    lenya/trunk/org.apache.lenya.core.repository/src/main/resources/META-INF/
    lenya/trunk/org.apache.lenya.core.repository/src/main/resources/META-INF/cocoon/
    lenya/trunk/org.apache.lenya.core.repository/src/main/resources/META-INF/cocoon/spring/
    lenya/trunk/org.apache.lenya.core.repository/src/main/resources/META-INF/cocoon/spring/lenya-core-repository-components.xml
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/resources/
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/resources/META-INF/
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/resources/META-INF/cocoon/
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/resources/META-INF/cocoon/spring/
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/resources/META-INF/cocoon/spring/lenya-module-sitetree-components.xml
Removed:
    lenya/trunk/org.apache.lenya.module.lenyadoc/src/main/java/org/apache/lenya/cms/cocoon/source/LenyaDocSourceFactory.java
Modified:
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/cifs/CIFSUser.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroup.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroupManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRange.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRangeManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileItemManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRole.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRoleManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUser.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUserManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccreditableManager.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractIPRange.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/DefaultAccessController.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
    lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-components.xml
    lenya/trunk/org.apache.lenya.core.janitor/pom.xml
    lenya/trunk/org.apache.lenya.core.ldap/src/main/java/org/apache/lenya/ac/ldap/LDAPUser.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
    lenya/trunk/org.apache.lenya.core.templating/src/main/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java
    lenya/trunk/org.apache.lenya.core.usecase/pom.xml
    lenya/trunk/org.apache.lenya.core.usecase/src/test/java/org/apache/lenya/cms/usecase/AbstractUsecaseTest.java
    lenya/trunk/org.apache.lenya.core.workflow/pom.xml
    lenya/trunk/org.apache.lenya.core.workflow/src/main/java/org/apache/lenya/cms/workflow/usecases/Publish.java
    lenya/trunk/org.apache.lenya.core.workflow/src/main/java/org/apache/lenya/cms/workflow/usecases/Reject.java
    lenya/trunk/org.apache.lenya.core.workflow/src/main/java/org/apache/lenya/cms/workflow/usecases/Submit.java
    lenya/trunk/org.apache.lenya.core.workflow/src/test/java/org/apache/lenya/cms/workflow/WorkflowTest.java
    lenya/trunk/org.apache.lenya.module.lenyadoc/pom.xml
    lenya/trunk/org.apache.lenya.module.lucene/pom.xml
    lenya/trunk/org.apache.lenya.module.notification/pom.xml
    lenya/trunk/org.apache.lenya.module.simplesite/pom.xml
    lenya/trunk/org.apache.lenya.module.simplesite/src/main/java/org/apache/lenya/cms/site/simple/DocumentStore.java
    lenya/trunk/org.apache.lenya.module.simplesite/src/test/java/org/apache/lenya/cms/site/simple/SimpleSiteManagerTest.java
    lenya/trunk/org.apache.lenya.module.sitetree/pom.xml
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/RootNode.java
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SaxTreeBuilder.java
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/TreeNodeImpl.java
    lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/TreeSiteManager.java
    lenya/trunk/org.apache.lenya.module.sourcerepository/pom.xml
    lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNode.java
    lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeFactory.java
    lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeRCML.java
    lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceNodeRcmlFactory.java
    lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/java/org/apache/lenya/cms/repository/SourceWrapper.java
    lenya/trunk/org.apache.lenya.module.sourcerepository/src/main/resources/META-INF/cocoon/spring/lenya-module-sourcerepository-components.xml
    lenya/trunk/org.apache.lenya.parent/pom.xml
    lenya/trunk/org.apache.lenya.webapp.welcome/pom.xml

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/cifs/CIFSUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/cifs/CIFSUser.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/cifs/CIFSUser.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/cifs/CIFSUser.java Tue Feb 10 18:25:55 2009
@@ -87,10 +87,10 @@
      */
     protected void initialize() throws ConfigurationException {
         try {
-            readProperties(super.getConfigurationDirectory());
+            readProperties(super.getConfigurationUri());
         } catch (final IOException ioe) {
             throw new ConfigurationException("Reading cifs.properties file in ["
-                    + super.getConfigurationDirectory() + "] failed", ioe);
+                    + super.getConfigurationUri() + "] failed", ioe);
         }
     }
 
@@ -142,9 +142,10 @@
      * @param configurationDirectory The configuration directory.
      * @throws IOException if the properties cannot be found.
      */
-    private void readProperties(File configurationDirectory) throws IOException {
+    private void readProperties(String configurationUri) throws IOException {
+        
         // create and load default properties
-        File propertiesFile = new File(configurationDirectory, "cifs.properties");
+        File propertiesFile = new File(configurationUri + "/cifs.properties");
 
         if (defaultProperties == null) {
             defaultProperties = new Properties();

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManager.java Tue Feb 10 18:25:55 2009
@@ -20,18 +20,13 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.util.NetUtils;
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
-import org.apache.excalibur.source.Source;
+import org.apache.commons.logging.LogFactory;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.GroupManager;
@@ -46,7 +41,8 @@
  */
 public class FileAccreditableManager extends AbstractAccreditableManager {
 
-    private ServiceManager manager;
+    private static final Log logger = LogFactory.getLog(FileAccreditableManager.class);
+    private SourceResolver sourceResolver;
 
     /**
      * Creates a new FileAccessController based on a configuration directory.
@@ -55,20 +51,15 @@
      * @param configurationUri The configuration directory URI.
      * @param _userTypes The supported user types.
      */
-    public FileAccreditableManager(ServiceManager manager, Log logger,
-            String configurationUri, UserType[] _userTypes) {
-        super(logger);
-
-        Validate.notNull(manager, "Service manager");
-        this.manager = manager;
+    public FileAccreditableManager(String configurationUri, UserType[] _userTypes) {
 
         Validate.notNull(configurationUri, "configuration directory");
-        this.configurationDirectoryUri = configurationUri;
+        this.configUri = configurationUri;
 
         this.userTypes = new HashSet(Arrays.asList(_userTypes));
     }
 
-    private File configurationDirectory;
+    private String configUri;
     private Set userTypes;
 
     /**
@@ -82,48 +73,6 @@
         return (UserType[]) this.userTypes.toArray(new UserType[this.userTypes.size()]);
     }
 
-    /**
-     * Returns the configuration directory.
-     * @return The configuration directory.
-     * @throws AccessControlException when something went wrong.
-     */
-    public File getConfigurationDirectory() throws AccessControlException {
-
-        if (this.configurationDirectory == null) {
-
-            if (this.configurationDirectoryUri == null) {
-                throw new AccessControlException("Configuration directory not set!");
-            }
-
-            Source source = null;
-            SourceResolver resolver = null;
-            File directory;
-            try {
-
-                getLogger().debug(
-                        "Configuration directory Path: [" + this.configurationDirectoryUri + "]");
-
-                resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-                source = resolver.resolveURI(this.configurationDirectoryUri);
-
-                getLogger().debug("Configuration directory URI: " + source.getURI());
-                directory = new File(new URI(NetUtils.encodePath(source.getURI())));
-            } catch (Exception e) {
-                throw new AccessControlException(e);
-            } finally {
-                if (resolver != null) {
-                    if (source != null) {
-                        resolver.release(source);
-                    }
-                    getManager().release(resolver);
-                }
-            }
-            this.configurationDirectory = directory;
-        }
-
-        return this.configurationDirectory;
-    }
-
     // provided for backward compatibility
     protected static final String DEFAULT_USER_TYPE_CLASS = FileUser.class.getName();
     protected static final String DEFAULT_USER_TYPE_KEY = "Local User";
@@ -138,31 +87,25 @@
                 DEFAULT_USER_CREATE_USE_CASE);
     }
 
-    private String configurationDirectoryUri;
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    protected ServiceManager getManager() {
-        return this.manager;
-    }
-
     /**
      * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeGroupManager()
      */
     protected GroupManager initializeGroupManager() throws AccessControlException {
-        FileGroupManager _manager = FileGroupManager.instance(this, getConfigurationDirectory(),
-                getLogger());
+        FileGroupManager _manager = FileGroupManager.instance(this, getConfigurationUri(),
+                this.sourceResolver);
         return _manager;
     }
 
+    private String getConfigurationUri() {
+        return this.configUri;
+    }
+
     /**
      * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeIPRangeManager()
      */
     protected IPRangeManager initializeIPRangeManager() throws AccessControlException {
-        FileIPRangeManager _manager = FileIPRangeManager.instance(this,
-                getConfigurationDirectory(), getLogger());
+        FileIPRangeManager _manager = FileIPRangeManager.instance(this, getConfigurationUri(),
+                this.sourceResolver);
         return _manager;
     }
 
@@ -170,8 +113,8 @@
      * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeRoleManager()
      */
     protected RoleManager initializeRoleManager() throws AccessControlException {
-        FileRoleManager _manager = FileRoleManager.instance(this, getConfigurationDirectory(),
-                getLogger());
+        FileRoleManager _manager = FileRoleManager.instance(this, getConfigurationUri(),
+                this.sourceResolver);
         return _manager;
     }
 
@@ -179,30 +122,21 @@
      * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeUserManager()
      */
     protected UserManager initializeUserManager() throws AccessControlException {
-        FileUserManager _manager = FileUserManager.instance(this, getConfigurationDirectory(),
-                getUserTypes(), getLogger());
+        FileUserManager _manager = FileUserManager.instance(this, getConfigurationCollectionUri(),
+                getUserTypes(), this.sourceResolver);
         return _manager;
     }
 
-    public String getConfigurationCollectionUri() {
-        try {
-            return "file://" + getConfigurationDirectory().getCanonicalPath();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+    public String getId() {
+        return this.configUri;
     }
 
-    public String getId() {
-        try {
-        	File configDir = this.getConfigurationDirectory();
-        	assert configDir != null;
-            return configDir.getCanonicalPath();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        catch(AccessControlException e) {
-            throw new RuntimeException(e);
-        }
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public String getConfigurationCollectionUri() {
+        return getConfigurationUri();
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java Tue Feb 10 18:25:55 2009
@@ -24,11 +24,8 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.util.AbstractLogEnabled;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.AccreditableManagerFactory;
 import org.apache.lenya.ac.UserType;
@@ -37,7 +34,9 @@
  * Factory for file-based accreditable managers.
  */
 public class FileAccreditableManagerFactory extends AbstractLogEnabled implements
-        AccreditableManagerFactory, ThreadSafe, Serviceable {
+        AccreditableManagerFactory {
+
+    private SourceResolver sourceResolver;
 
     private Map id2manager = new HashMap();
 
@@ -82,8 +81,8 @@
                     userTypes.add(FileAccreditableManager.getDefaultUserType());
                 }
                 UserType[] types = (UserType[]) userTypes.toArray(new UserType[userTypes.size()]);
-                AccreditableManager mgr = new FileAccreditableManager(this.manager, getLogger(),
-                        configUri, types);
+                FileAccreditableManager mgr = new FileAccreditableManager(configUri, types);
+                mgr.setSourceResolver(this.sourceResolver);
                 this.id2manager.put(configUri, mgr);
                 return mgr;
             }
@@ -93,10 +92,8 @@
         }
     }
 
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroup.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroup.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroup.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroup.java Tue Feb 10 18:25:55 2009
@@ -20,12 +20,9 @@
 
 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.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.ac.AccessControlException;
@@ -38,13 +35,13 @@
  * File-based group implementation.
  */
 public class FileGroup extends AbstractGroup implements Item {
-
+    
     /**
      * @see org.apache.lenya.ac.Group#delete()
      */
     public void delete() throws AccessControlException {
         super.delete();
-        getFile().delete();
+        ((FileItemManager) getItemManager()).delete(getItemUri());
     }
 
     /**
@@ -65,7 +62,7 @@
     public FileGroup(ItemManager itemManager, Log logger, String id) {
         super(itemManager, logger, id);
         FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
+        setConfigurationUri(fileItemManager.getConfigurationUri());
     }
 
     /**
@@ -81,10 +78,8 @@
      * Returns the configuration file.
      * @return A file object.
      */
-    protected File getFile() {
-        File xmlPath = getConfigurationDirectory();
-        File xmlFile = new File(xmlPath, getId() + FileGroupManager.SUFFIX);
-        return xmlFile;
+    protected String getItemUri() {
+        return getConfigurationDirectory() + "/" + getId() + FileGroupManager.SUFFIX;
     }
 
     /**
@@ -92,15 +87,8 @@
      * @throws AccessControlException if the save failed
      */
     public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-        File xmlfile = getFile();
-
-        try {
-            serializer.serializeToFile(xmlfile, config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
+        FileItemManager itemMgr = (FileItemManager) getItemManager();
+        itemMgr.serialize(getItemUri(), createConfiguration());
     }
 
     /**
@@ -119,20 +107,18 @@
         return config;
     }
 
-    private File configurationDirectory;
+    private String configUri;
 
     /**
      * Returns the configuration directory.
      * @return A file object.
      */
-    protected File getConfigurationDirectory() {
-        return this.configurationDirectory;
+    protected String getConfigurationDirectory() {
+        return this.configUri;
     }
 
-    protected void setConfigurationDirectory(File _configurationDirectory) {
-        Validate.notNull(_configurationDirectory, "Configuration directory");
-        Validate.isTrue(_configurationDirectory.isDirectory(),
-        		"Configuration directory must be a directory");
-        this.configurationDirectory = _configurationDirectory;
+    protected void setConfigurationUri(String uri) {
+        Validate.notNull(uri, "Configuration URI");
+        this.configUri = uri;
     }
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroupManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroupManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroupManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileGroupManager.java Tue Feb 10 18:25:55 2009
@@ -20,12 +20,11 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.lang.Validate;
-import org.apache.commons.logging.Log;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.Group;
@@ -43,31 +42,30 @@
      * Ctor.
      * @param mgr The accreditable manager.
      */
-    private FileGroupManager(AccreditableManager mgr) {
-        super(mgr);
+    private FileGroupManager(AccreditableManager mgr, SourceResolver resolver) {
+        super(mgr, resolver);
     }
 
     /**
-     * Return the <code>GroupManager</code> for the given publication. The
-     * <code>GroupManager</code> is a singleton.
+     * Return the <code>GroupManager</code> for the given publication. The <code>GroupManager</code>
+     * is a singleton.
      * @param mgr The accreditable manager.
      * @param configurationDirectory for which the GroupManager is requested
      * @param logger The logger.
      * @return a <code>GroupManager</code>
      * @throws AccessControlException if no GroupManager could be instanciated
      */
-    public static FileGroupManager instance(AccreditableManager mgr, File configurationDirectory,
-            Log logger) throws AccessControlException {
-        Validate.notNull(configurationDirectory);
-
-        if (!instances.containsKey(configurationDirectory)) {
-            FileGroupManager manager = new FileGroupManager(mgr);
-            manager.setLogger(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
+    public static FileGroupManager instance(AccreditableManager mgr, String configUri,
+            SourceResolver resolver) throws AccessControlException {
+        Validate.notNull(configUri);
+
+        if (!instances.containsKey(configUri)) {
+            FileGroupManager manager = new FileGroupManager(mgr, resolver);
+            manager.configure(configUri);
+            instances.put(configUri, manager);
         }
 
-        return (FileGroupManager) instances.get(configurationDirectory);
+        return (FileGroupManager) instances.get(configUri);
     }
 
     /**
@@ -107,8 +105,7 @@
      * Get the group with the given group name.
      * 
      * @param groupId the id of the requested group
-     * @return a <code>Group</code> or null if there is no group with the
-     *         given name
+     * @return a <code>Group</code> or null if there is no group with the given name
      */
     public Group getGroup(String groupId) {
         return (Group) getItem(groupId);

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRange.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRange.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRange.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRange.java Tue Feb 10 18:25:55 2009
@@ -20,7 +20,6 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
 import java.io.Serializable;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -95,7 +94,7 @@
     public FileIPRange(ItemManager itemManager, Log logger, String id) {
         super(itemManager, logger, id);
         FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
+        setConfigurationUri(fileItemManager.getConfigurationUri());
     }
 
     /**
@@ -103,23 +102,15 @@
      */
     public void save() throws AccessControlException {
         DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-
-        try {
-            serializer.serializeToFile(getFile(), config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
+        ((FileItemManager) getItemManager()).serialize(getItemUri(), createConfiguration());
     }
 
     /**
      * Returns the configuration file.
      * @return A file object.
      */
-    protected File getFile() {
-        File xmlPath = getConfigurationDirectory();
-        File xmlFile = new File(xmlPath, getId() + FileIPRangeManager.SUFFIX);
-        return xmlFile;
+    protected String getItemUri() {
+        return getConfigurationUri() + "/" + getId() + FileIPRangeManager.SUFFIX;
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRangeManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRangeManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRangeManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileIPRangeManager.java Tue Feb 10 18:25:55 2009
@@ -20,12 +20,10 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.lang.Validate;
-import org.apache.commons.logging.Log;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.IPRange;
@@ -40,9 +38,10 @@
     /**
      * Ctor.
      * @param mgr The accreditable manager.
+     * @param resolver 
      */
-    private FileIPRangeManager(AccreditableManager mgr) {
-        super(mgr);
+    private FileIPRangeManager(AccreditableManager mgr, SourceResolver resolver) {
+        super(mgr, resolver);
     }
 
     protected static final String SUFFIX = ".ipml";
@@ -60,27 +59,20 @@
      * Return an instance of FileIPRangeManager
      * @param mgr The accreditable manager.
      * @param configurationDirectory a directory
-     * @param logger The logger.
+     * @param sourceResolver
      * @return an <code>IPRangeManager</code> value
      * @exception AccessControlException if an error occurs
      */
-    public static FileIPRangeManager instance(AccreditableManager mgr, File configurationDirectory, Log logger)
+    public static FileIPRangeManager instance(AccreditableManager mgr, String configUri, SourceResolver sourceResolver)
             throws AccessControlException {
 
-        Validate.notNull(configurationDirectory);
-        if (!configurationDirectory.isDirectory()) {
-            throw new AccessControlException("Configuration directory [" + configurationDirectory
-                    + "] does not exist!");
+        if (!instances.containsKey(configUri)) {
+            FileIPRangeManager manager = new FileIPRangeManager(mgr, sourceResolver);
+            manager.configure(configUri);
+            instances.put(configUri, manager);
         }
 
-        if (!instances.containsKey(configurationDirectory)) {
-            FileIPRangeManager manager = new FileIPRangeManager(mgr);
-            manager.setLogger(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
-        }
-
-        return (FileIPRangeManager) instances.get(configurationDirectory);
+        return (FileIPRangeManager) instances.get(configUri);
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileItemManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileItemManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileItemManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileItemManager.java Tue Feb 10 18:25:55 2009
@@ -35,9 +35,16 @@
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
+import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.excalibur.source.ModifiableSource;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.source.TraversableSource;
+import org.apache.excalibur.source.impl.FileSource;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.Group;
@@ -48,42 +55,63 @@
 import org.apache.lenya.ac.impl.ItemConfiguration;
 
 /**
- * Abstract superclass for classes that manage items loaded from configuration
- * files.
+ * Abstract superclass for classes that manage items loaded from configuration files.
  */
 public abstract class FileItemManager extends AbstractLogEnabled implements ItemManager {
 
+    private static final Log logger = LogFactory.getLog(FileItemManager.class);
+
     private Map items = new HashMap();
-    private File configurationDirectory;
+    private String configUri;
     private DirectoryChangeNotifier notifier;
 
     private AccreditableManager accreditableManager;
+    private SourceResolver sourceResolver;
 
     /**
      * Create a new ItemManager.
      * @param accreditableManager The {@link AccreditableManager}.
      */
-    protected FileItemManager(AccreditableManager accreditableManager) {
+    protected FileItemManager(AccreditableManager accreditableManager, SourceResolver resolver) {
         this.accreditableManager = accreditableManager;
+        this.sourceResolver = resolver;
     }
 
+    private boolean canLoadItems = false;
+
     /**
      * Configures the item manager.
-     * @param _configurationDirectory where the items are fetched from
+     * @param configUri where the items are fetched from
      * @throws AccessControlException if the item manager cannot be instantiated
      */
-    public void configure(File _configurationDirectory) throws AccessControlException {
-        Validate.notNull(_configurationDirectory);
+    public void configure(String configUri) throws AccessControlException {
+        Validate.notNull(configUri);
+        this.configUri = configUri;
+
+        Source source = null;
+        try {
+            source = this.sourceResolver.resolveURI(configUri);
+            if (source instanceof TraversableSource) {
+                TraversableSource dirSource = (TraversableSource) source;
+                if (dirSource.isCollection()) {
+                    this.notifier = new DirectoryChangeNotifier(configUri, getFileFilter());
+                    this.notifier.setLogger(getLogger());
+                    loadItems();
+                    this.canLoadItems = true;
+                }
+            }
+        } catch (final Exception e) {
+            throw new AccessControlException(e);
+        } finally {
+            if (source != null) {
+                this.sourceResolver.release(source);
+            }
+        }
 
-        if (!_configurationDirectory.exists() || !_configurationDirectory.isDirectory()) {
-            throw new AccessControlException("The directory ["
-                    + _configurationDirectory.getAbsolutePath() + "] does not exist!");
+        if (!this.canLoadItems) {
+            logger.warn("Could not load configuration from " + configUri);
         }
 
-        this.configurationDirectory = _configurationDirectory;
-        this.notifier = new DirectoryChangeNotifier(_configurationDirectory, getFileFilter());
-        this.notifier.setLogger(getLogger());
-        loadItems();
     }
 
     /**
@@ -92,6 +120,10 @@
      */
     protected void loadItems() throws AccessControlException {
 
+        if (!this.canLoadItems) {
+            return;
+        }
+
         boolean changed;
         try {
             changed = this.notifier.hasChanged();
@@ -183,6 +215,46 @@
     }
 
     /**
+     * Loads an item from a source.
+     * @param source The source.
+     * @return An item.
+     * @throws AccessControlException when something went wrong.
+     */
+    protected Item loadItem(Source source, String fileName) throws AccessControlException {
+        Validate.notNull(source, "source");
+        Configuration config = getItemConfiguration(source);
+
+        String id = fileName.substring(0, fileName.length() - getSuffix().length());
+        Item item = (Item) this.items.get(id);
+
+        String klass = ItemConfiguration.getItemClass(config);
+        if (item == null) {
+            try {
+                Class[] paramTypes = { ItemManager.class, Log.class };
+                Constructor ctor = Class.forName(klass).getConstructor(paramTypes);
+                Object[] params = { this, getLogger() };
+                item = (Item) ctor.newInstance(params);
+            } catch (Exception e) {
+                String errorMsg = "Exception when trying to instanciate: " + klass
+                        + " with exception: " + e.fillInStackTrace();
+
+                // an exception occured when trying to instanciate
+                // a user.
+                getLogger().error(errorMsg);
+                throw new AccessControlException(errorMsg, e);
+            }
+        }
+
+        try {
+            item.configure(config);
+        } catch (ConfigurationException e) {
+            String errorMsg = "Exception when trying to configure: " + klass;
+            throw new AccessControlException(errorMsg, e);
+        }
+        return item;
+    }
+
+    /**
      * Loads teh configuration of an item from a file.
      * @param file The file.
      * @return A configuration.
@@ -207,6 +279,31 @@
         return config;
     }
 
+    /**
+     * Loads teh configuration of an item from a file.
+     * @param file The file.
+     * @return A configuration.
+     * @throws AccessControlException when something went wrong.
+     */
+    protected Configuration getItemConfiguration(Source source) throws AccessControlException {
+        Validate.notNull(source, "source");
+        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+        Configuration config = null;
+
+        try {
+            config = builder.build(source.getInputStream());
+        } catch (Exception e) {
+            String errorMsg = "Exception when reading the configuration from source: "
+                    + source.getURI();
+
+            // an exception occured when trying to read the configuration
+            // from the identity file.
+            getLogger().error(errorMsg);
+            throw new AccessControlException(errorMsg, e);
+        }
+        return config;
+    }
+
     protected void removeItem(File file) {
         // do nothing
     }
@@ -217,10 +314,25 @@
      * @return An item.
      */
     public Item getItem(String id) {
+        Validate.notNull(id, "id");
         try {
             loadItems();
-        } catch (AccessControlException e) {
-            throw new IllegalStateException(e.getMessage());
+            if (!this.items.containsKey(id)) {
+                String fileName = id + getSuffix();
+                String itemUri = getConfigurationUri() + "/" + fileName;
+                Source source = null;
+                try {
+                    source = this.sourceResolver.resolveURI(itemUri);
+                    Item item = loadItem(source, fileName);
+                    update(item);
+                } finally {
+                    if (source != null) {
+                        this.sourceResolver.release(source);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            throw new IllegalArgumentException(e);
         }
         return (Item) this.items.get(id);
     }
@@ -241,8 +353,7 @@
     /**
      * Add an Item to this manager
      * @param item to be added
-     * @throws AccessControlException when the notification threw this
-     *         exception.
+     * @throws AccessControlException when the notification threw this exception.
      */
     public void add(Item item) throws AccessControlException {
         Validate.notNull(item);
@@ -256,8 +367,7 @@
     /**
      * Remove an item from this manager
      * @param item to be removed
-     * @throws AccessControlException when the notification threw this
-     *         exception.
+     * @throws AccessControlException when the notification threw this exception.
      */
     public void remove(Item item) throws AccessControlException {
         this.items.remove(item.getId());
@@ -270,8 +380,7 @@
     /**
      * Update an item.
      * @param newItem The new version of the item.
-     * @throws AccessControlException when the notification threw this
-     *         exception.
+     * @throws AccessControlException when the notification threw this exception.
      */
     public void update(Item newItem) throws AccessControlException {
         this.items.remove(newItem.getId());
@@ -299,8 +408,9 @@
      * Get the directory where the items are located.
      * @return a <code>File</code>
      */
-    public File getConfigurationDirectory() {
-        return this.configurationDirectory;
+    public String getConfigurationUri() {
+        assert this.configUri != null;
+        return this.configUri;
     }
 
     /**
@@ -387,15 +497,23 @@
     /**
      * Helper class to observe a directory for changes.
      */
-    public static class DirectoryChangeNotifier extends AbstractLogEnabled {
+    public class DirectoryChangeNotifier extends AbstractLogEnabled {
 
         /**
          * Ctor.
-         * @param _directory The directory to observe.
+         * @param configUri The directory to observe.
          * @param _filter A filter to specify the file type to observe.
+         * @throws AccessControlException
          */
-        public DirectoryChangeNotifier(File _directory, FileFilter _filter) {
-            this.directory = _directory;
+        public DirectoryChangeNotifier(String configUri, FileFilter _filter)
+                throws AccessControlException {
+            FileSource source;
+            try {
+                source = (FileSource) FileItemManager.this.sourceResolver.resolveURI(configUri);
+            } catch (Exception e) {
+                throw new AccessControlException(e);
+            }
+            this.directory = source.getFile();
             this.filter = _filter;
         }
 
@@ -408,8 +526,8 @@
         private Set changedFiles = new HashSet();
 
         /**
-         * Checks if the directory has changed (a new file was added, a file was
-         * removed, a file has changed).
+         * Checks if the directory has changed (a new file was added, a file was removed, a file has
+         * changed).
          * @return A boolean value.
          * @throws IOException when something went wrong.
          */
@@ -495,4 +613,33 @@
         return this.accreditableManager;
     }
 
+    public void serialize(String itemUri, Configuration config) throws AccessControlException {
+        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
+        ModifiableSource source = null;
+        try {
+            source = (ModifiableSource) this.sourceResolver.resolveURI(itemUri);
+            serializer.serialize(source.getOutputStream(), config);
+        } catch (Exception e) {
+            throw new AccessControlException(e);
+        } finally {
+            if (source != null) {
+                this.sourceResolver.release(source);
+            }
+        }
+    }
+
+    public void delete(String itemUri) throws AccessControlException {
+        ModifiableSource source = null;
+        try {
+            source = (ModifiableSource) this.sourceResolver.resolveURI(itemUri);
+            source.delete();
+        } catch (Exception e) {
+            throw new AccessControlException(e);
+        } finally {
+            if (source != null) {
+                this.sourceResolver.release(source);
+            }
+        }
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRole.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRole.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRole.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRole.java Tue Feb 10 18:25:55 2009
@@ -18,12 +18,9 @@
 
 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.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.Item;
@@ -60,7 +57,7 @@
     public FileRole(ItemManager itemManager, Log logger) {
         super(itemManager, logger);
         FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
+        setConfigurationUri(fileItemManager.getConfigurationUri());
     }
 
     /**
@@ -79,16 +76,8 @@
      * @throws AccessControlException if the save fails
      */
     public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-        File xmlPath = getConfigurationDirectory();
-        File xmlfile = new File(xmlPath, getId() + FileRoleManager.SUFFIX);
-
-        try {
-            serializer.serializeToFile(xmlfile, config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
+        String uri = this.configUri + "/" + getId() + FileRoleManager.SUFFIX;
+        ((FileItemManager) getItemManager()).serialize(uri, createConfiguration());
     }
 
     /**
@@ -101,19 +90,11 @@
         return config;
     }
 
-    private File configurationDirectory;
+    private String configUri;
     private boolean isAssignable;
 
-    /**
-     * Returns the configuration directory.
-     * @return A file object.
-     */
-    public File getConfigurationDirectory() {
-        return this.configurationDirectory;
-    }
-
-    protected void setConfigurationDirectory(File file) {
-        this.configurationDirectory = file;
+    protected void setConfigurationUri(String uri) {
+        this.configUri = uri;
     }
 
     public boolean isAssignable() {

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRoleManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRoleManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRoleManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileRoleManager.java Tue Feb 10 18:25:55 2009
@@ -18,11 +18,10 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.logging.Log;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.Item;
@@ -41,29 +40,30 @@
      * Return the <code>RoleManager</code> for this configuration directory. The
      * <code>RoleManager</code> is a singleton.
      * @param mgr The accreditable manager.
+     * @param sourceResolver
      */
-    protected FileRoleManager(AccreditableManager mgr) {
-        super(mgr);
+    protected FileRoleManager(AccreditableManager mgr, SourceResolver sourceResolver) {
+        super(mgr, sourceResolver);
     }
 
     /**
      * Returns the role manager for this configuration directory.
      * @param mgr The accreditable manager.
-     * @param configurationDirectory The configuration directory.
+     * @param configUri The configuration directory.
      * @param logger The logger.
+     * @param sourceResolver
      * @return A role manager.
      * @throws AccessControlException when something went wrong.
      */
-    public static FileRoleManager instance(AccreditableManager mgr, File configurationDirectory, Log logger)
-            throws AccessControlException {
-        if (!instances.containsKey(configurationDirectory)) {
-            FileRoleManager manager = new FileRoleManager(mgr);
-            manager.setLogger(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
+    public static FileRoleManager instance(AccreditableManager mgr, String configUri,
+            SourceResolver sourceResolver) throws AccessControlException {
+        if (!instances.containsKey(configUri)) {
+            FileRoleManager manager = new FileRoleManager(mgr, sourceResolver);
+            manager.configure(configUri);
+            instances.put(configUri, manager);
         }
 
-        return (FileRoleManager) instances.get(configurationDirectory);
+        return (FileRoleManager) instances.get(configUri);
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUser.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUser.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUser.java Tue Feb 10 18:25:55 2009
@@ -18,16 +18,13 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
 import java.io.Serializable;
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
-import org.apache.commons.logging.Log;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.Group;
 import org.apache.lenya.ac.GroupManager;
@@ -63,7 +60,7 @@
     public FileUser(ItemManager itemManager, Log logger) {
         super(itemManager, logger);
         FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
+        setConfigurationUri(fileItemManager.getConfigurationUri());
     }
 
     /**
@@ -79,7 +76,7 @@
             String email, String password) {
         super(itemManager, logger, id, fullName, email, password);
         FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
+        setConfigurationUri(fileItemManager.getConfigurationUri());
     }
 
     /**
@@ -179,14 +176,7 @@
      * @see org.apache.lenya.ac.User#save()
      */
     public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-
-        try {
-            serializer.serializeToFile(getFile(), config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
+        ((FileItemManager) getItemManager()).serialize(getItemUri(), createConfiguration());
     }
 
     /**
@@ -194,33 +184,30 @@
      */
     public void delete() throws AccessControlException {
         super.delete();
-        getFile().delete();
+        ((FileItemManager) getItemManager()).delete(getItemUri());
     }
 
     /**
      * Returns the configuration file.
      * @return A file object.
      */
-    protected File getFile() {
-        File xmlPath = getConfigurationDirectory();
-        File xmlFile = new File(xmlPath, getId() + FileUserManager.SUFFIX);
-        return xmlFile;
+    protected String getItemUri() {
+        return getConfigurationUri() + "/" + getId() + FileUserManager.SUFFIX;
     }
 
-    private File configurationDirectory;
+    private String configUri;
 
     /**
      * Returns the configuration directory.
      * @return A file object.
      */
-    protected File getConfigurationDirectory() {
-        return this.configurationDirectory;
+    protected String getConfigurationUri() {
+        return this.configUri;
     }
 
-    protected void setConfigurationDirectory(File _configurationDirectory) {
+    protected void setConfigurationUri(String _configurationDirectory) {
         Validate.notNull(_configurationDirectory);
-        Validate.isTrue(_configurationDirectory.isDirectory());
-        this.configurationDirectory = _configurationDirectory;
+        this.configUri = _configurationDirectory;
     }
 
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUserManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUserManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUserManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/file/FileUserManager.java Tue Feb 10 18:25:55 2009
@@ -18,7 +18,6 @@
 
 package org.apache.lenya.ac.file;
 
-import java.io.File;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -27,6 +26,8 @@
 
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.Item;
@@ -40,6 +41,8 @@
  */
 public class FileUserManager extends FileItemManager implements UserManager {
 
+    private static final Log logger = LogFactory.getLog(FileUserManager.class);
+
     private static Map instances = new HashMap();
     private Set userTypes;
 
@@ -50,9 +53,9 @@
      * @param _userTypes The supported user types.
      * @throws AccessControlException if the UserManager could not be instantiated.
      */
-    private FileUserManager(AccreditableManager mgr, UserType[] _userTypes)
+    private FileUserManager(AccreditableManager mgr, UserType[] _userTypes, SourceResolver resolver)
             throws AccessControlException {
-        super(mgr);
+        super(mgr, resolver);
         this.userTypes = new HashSet(Arrays.asList(_userTypes));
     }
 
@@ -66,23 +69,17 @@
      * @return an <code>UserManager</code> value
      * @exception AccessControlException if an error occurs
      */
-    public static FileUserManager instance(AccreditableManager mgr, File configurationDirectory, UserType[] userTypes, Log logger)
-            throws AccessControlException {
-
-        Validate.notNull(configurationDirectory);
-        if (!configurationDirectory.isDirectory()) {
-            throw new AccessControlException("Configuration directory [" + configurationDirectory
-                    + "] does not exist!");
-        }
+    public static FileUserManager instance(AccreditableManager mgr, String configUri,
+            UserType[] userTypes, SourceResolver resolver) throws AccessControlException {
 
-        if (!instances.containsKey(configurationDirectory)) {
-            FileUserManager manager = new FileUserManager(mgr, userTypes);
-            manager.setLogger(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
+        Validate.notNull(configUri);
+        if (!instances.containsKey(configUri)) {
+            FileUserManager manager = new FileUserManager(mgr, userTypes, resolver);
+            manager.configure(configUri);
+            instances.put(configUri, manager);
         }
 
-        return (FileUserManager) instances.get(configurationDirectory);
+        return (FileUserManager) instances.get(configUri);
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java Tue Feb 10 18:25:55 2009
@@ -19,6 +19,7 @@
 package org.apache.lenya.ac.impl;
 
 import org.apache.cocoon.util.AbstractLogEnabled;
+import org.apache.commons.lang.Validate;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccessController;
@@ -48,6 +49,7 @@
      * @see org.apache.lenya.ac.AccessControllerResolver#resolveAccessController(java.lang.String)
      */
     public AccessController resolveAccessController(String webappUrl) throws AccessControlException {
+        Validate.notNull(webappUrl, "webapp URL");
 
         AccessController controller = null;
         Object key = null;
@@ -85,6 +87,8 @@
      */
     protected Object generateCacheKey(String webappUrl, SourceResolver resolver)
             throws AccessControlException {
+        Validate.notNull(webappUrl, "webapp URL");
+        Validate.notNull(resolver, "resolver");
         Object key;
         try {
             key = URLKeyUtil.generateKey(resolver, webappUrl);

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccreditableManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccreditableManager.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccreditableManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccreditableManager.java Tue Feb 10 18:25:55 2009
@@ -26,6 +26,7 @@
 
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccreditableManager;
 import org.apache.lenya.ac.GroupManager;
@@ -42,13 +43,8 @@
     extends AbstractLogEnabled
     implements AccreditableManager, ItemManagerListener {
     
-    /**
-     * @param logger The logger.
-     */
-    public AbstractAccreditableManager(Log logger) {
-        setLogger(logger);
-    }
-
+    private static final Log logger = LogFactory.getLog(AbstractAccreditableManager.class);
+    
     private UserManager userManager = null;
     private GroupManager groupManager = null;
     private IPRangeManager ipRangeManager = null;

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractIPRange.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractIPRange.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractIPRange.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractIPRange.java Tue Feb 10 18:25:55 2009
@@ -20,7 +20,6 @@
 
 package org.apache.lenya.ac.impl;
 
-import java.io.File;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.Arrays;
@@ -111,18 +110,18 @@
         setId(id);
     }
 
-    private File configurationDirectory;
+    private String configurationUri;
 
     /**
      * Returns the configuration directory.
      * @return A file object.
      */
-    public File getConfigurationDirectory() {
-        return this.configurationDirectory;
+    public String getConfigurationUri() {
+        return this.configurationUri;
     }
 
-    protected void setConfigurationDirectory(File _configurationDirectory) {
-        this.configurationDirectory = _configurationDirectory;
+    protected void setConfigurationUri(String _configurationDirectory) {
+        this.configurationUri = _configurationDirectory;
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/DefaultAccessController.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/DefaultAccessController.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/DefaultAccessController.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/DefaultAccessController.java Tue Feb 10 18:25:55 2009
@@ -23,11 +23,12 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.regex.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 
-import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.component.Component;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
@@ -36,12 +37,11 @@
 import org.apache.avalon.framework.parameters.Parameterizable;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
+import org.apache.commons.lang.Validate;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.AccessController;
 import org.apache.lenya.ac.Accreditable;
@@ -57,14 +57,14 @@
 import org.apache.lenya.ac.PolicyManager;
 import org.apache.lenya.ac.Role;
 import org.apache.lenya.util.ServletHelper;
+import org.springframework.context.ApplicationContext;
 
 /**
  * Default access controller implementation.
- * @version $Id: DefaultAccessController.java 563459 2007-08-07 12:00:20Z
- *          nettings $
+ * @version $Id$
  */
 public class DefaultAccessController extends AbstractLogEnabled implements AccessController,
-        Configurable, Serviceable, Disposable, ItemManagerListener {
+        ItemManagerListener, Configurable {
 
     protected static final String AUTHORIZER_ELEMENT = "authorizer";
     protected static final String TYPE_ATTRIBUTE = "type";
@@ -72,9 +72,6 @@
     protected static final String POLICY_MANAGER_ELEMENT = "policy-manager";
 
     private static final String VALID_IP = "([0-9]{1,3}\\.){3}[0-9]{1,3}";
-    private ServiceManager manager;
-    private ServiceSelector authorizerSelector;
-    private ServiceSelector policyManagerSelector;
     private AccreditableManager accreditableManager;
     private PolicyManager policyManager;
     private Map authorizers = new HashMap();
@@ -135,13 +132,15 @@
     }
 
     protected void resolveRoles(Request request) throws AccessControlException {
+        Validate.notNull(request, "request");
         String webappUrl = ServletHelper.getWebappURI(request);
-        Session session = request.getCocoonSession(true);
+        HttpSession session = request.getSession(true);
         Identity identity = (Identity) session.getAttribute(Identity.class.getName());
 
         Role[] roles;
         if (identity.belongsTo(this.accreditableManager)) {
-            roles = this.policyManager.getGrantedRoles(this.accreditableManager, identity, webappUrl);
+            roles = this.policyManager.getGrantedRoles(this.accreditableManager, identity,
+                    webappUrl);
         } else {
             roles = new Role[0];
             getLogger().debug(
@@ -157,10 +156,10 @@
      * @param roles The roles.
      */
     protected void saveRoles(Request request, Role[] roles) {
-         if(getLogger().isDebugEnabled()) {
+        if (getLogger().isDebugEnabled()) {
             StringBuffer rolesBuffer = new StringBuffer();
             for (int i = 0; i < roles.length; i++) {
-               rolesBuffer.append(" ").append(roles[i]);
+                rolesBuffer.append(" ").append(roles[i]);
             }
             getLogger().debug("Adding roles [" + rolesBuffer + " ] to request [" + request + "]");
         }
@@ -168,8 +167,8 @@
     }
 
     /**
-     * Configures or parameterizes a component, depending on the implementation
-     * as Configurable or Parameterizable.
+     * Configures or parameterizes a component, depending on the implementation as Configurable or
+     * Parameterizable.
      * @param component The component.
      * @param configuration The configuration to use.
      * @throws ConfigurationException when an error occurs during configuration.
@@ -188,6 +187,7 @@
 
     /**
      * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     * @deprecated Replace with different configuration mechanism, e.g. commons configuration.
      */
     public void configure(Configuration conf) throws ConfigurationException {
 
@@ -215,17 +215,11 @@
             throws ConfigurationException, ServiceException, ParameterException {
         Configuration config = configuration.getChild(ACCREDITABLE_MANAGER_ELEMENT, false);
         if (config != null) {
-            AccreditableManagerFactory factory = null;
-            try {
-                factory = (AccreditableManagerFactory) this.manager
-                        .lookup(AccreditableManagerFactory.ROLE);
-                this.accreditableManager = factory.getAccreditableManager(config);
-                this.accreditableManager.addItemManagerListener(this);
-            } finally {
-                if (factory != null) {
-                    this.manager.release(factory);
-                }
-            }
+            ApplicationContext context = WebAppContextUtils.getCurrentWebApplicationContext();
+            AccreditableManagerFactory factory = (AccreditableManagerFactory) context
+                    .getBean(AccreditableManagerFactory.ROLE);
+            this.accreditableManager = factory.getAccreditableManager(config);
+            this.accreditableManager.addItemManagerListener(this);
         }
     }
 
@@ -241,8 +235,7 @@
             ConfigurationException, ParameterException {
         Configuration[] authorizerConfigurations = configuration.getChildren(AUTHORIZER_ELEMENT);
         if (authorizerConfigurations.length > 0) {
-            this.authorizerSelector = (ServiceSelector) this.manager.lookup(Authorizer.ROLE
-                    + "Selector");
+            ApplicationContext context = WebAppContextUtils.getCurrentWebApplicationContext();
 
             for (int i = 0; i < authorizerConfigurations.length; i++) {
                 String type = authorizerConfigurations[i].getAttribute(TYPE_ATTRIBUTE);
@@ -250,7 +243,7 @@
                     getLogger().debug("Adding authorizer [" + type + "]");
                 }
 
-                Authorizer authorizer = (Authorizer) this.authorizerSelector.select(type);
+                Authorizer authorizer = (Authorizer) context.getBean(Authorizer.ROLE + "/" + type);
                 this.authorizerKeys.add(type);
                 this.authorizers.put(type, authorizer);
                 configureOrParameterize(authorizer, authorizerConfigurations[i]);
@@ -275,10 +268,9 @@
             if (getLogger().isDebugEnabled()) {
                 getLogger().debug("Adding policy manager type: [" + policyManagerType + "]");
             }
-            this.policyManagerSelector = (ServiceSelector) this.manager.lookup(PolicyManager.ROLE
-                    + "Selector");
-            this.policyManager = (PolicyManager) this.policyManagerSelector
-                    .select(policyManagerType);
+            ApplicationContext context = WebAppContextUtils.getCurrentWebApplicationContext();
+            this.policyManager = (PolicyManager) context.getBean(PolicyManager.ROLE + "/"
+                    + policyManagerType);
             configureOrParameterize(this.policyManager, policyManagerConfiguration);
         }
     }
@@ -288,25 +280,8 @@
      * @throws ServiceException when something went wrong.
      */
     protected void setupAuthenticator() throws ServiceException {
-        this.authenticator = (Authenticator) this.manager.lookup(Authenticator.ROLE);
-    }
-
-    /**
-     * Set the global component manager.
-     * 
-     * @param _manager The global component manager
-     * @throws ServiceException when something went wrong.
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    protected ServiceManager getManager() {
-        return this.manager;
+        this.authenticator = (Authenticator) WebAppContextUtils.getCurrentWebApplicationContext()
+                .getBean(Authenticator.ROLE);
     }
 
     /**
@@ -332,39 +307,6 @@
     }
 
     /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-
-       if (this.accreditableManager != null) {
-            this.accreditableManager.removeItemManagerListener(this);
-        }
-
-        if (this.policyManagerSelector != null) {
-            if (this.policyManager != null) {
-                this.policyManagerSelector.release(this.policyManager);
-            }
-            getManager().release(this.policyManagerSelector);
-        }
-
-        if (this.authorizerSelector != null) {
-            Authorizer[] _authorizers = getAuthorizers();
-            for (int i = 0; i < _authorizers.length; i++) {
-                this.authorizerSelector.release(_authorizers[i]);
-            }
-            getManager().release(this.authorizerSelector);
-        }
-
-        if (this.authenticator != null) {
-            getManager().release(this.authenticator);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Disposing [" + this + "]");
-        }
-    }
-
-    /**
      * Returns the accreditable manager.
      * @return An accreditable manager.
      */
@@ -403,7 +345,7 @@
      * @see org.apache.lenya.ac.AccessController#setupIdentity(org.apache.cocoon.environment.Request)
      */
     public void setupIdentity(Request request) throws AccessControlException {
-        Session session = request.getCocoonSession(true);
+        HttpSession session = request.getSession(true);
         if (!hasValidIdentity(session)) {
             Identity identity = new Identity(getLogger());
             identity.initialize();
@@ -435,14 +377,15 @@
     }
 
     /**
-     * Checks if the session contains an identity that is not null and belongs
-     * to the used access controller.
+     * Checks if the session contains an identity that is not null and belongs to the used access
+     * controller.
      * 
      * @param session The current session.
      * @return A boolean value.
      * @throws AccessControlException when something went wrong.
      */
-    protected boolean hasValidIdentity(Session session) throws AccessControlException {
+    protected boolean hasValidIdentity(HttpSession session) throws AccessControlException {
+        Validate.notNull(session, "session");
         boolean valid = true;
         Identity identity = (Identity) session.getAttribute(Identity.class.getName());
         if (identity == null || !ownsIdenity(identity)) {

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java Tue Feb 10 18:25:55 2009
@@ -22,6 +22,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.parameters.ParameterException;
@@ -49,7 +50,7 @@
  * URL, e.g. <code>/foo/bar_de.print.html</code> is mapped to <code>/foo/bar</code>.
  */
 public class DocumentPolicyManagerWrapper extends AbstractLogEnabled implements
-        InheritingPolicyManager {
+        InheritingPolicyManager, Configurable {
 
     private InheritingPolicyManager policyManager;
     private Repository repository;

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java Tue Feb 10 18:25:55 2009
@@ -46,8 +46,7 @@
  */
 public class PublicationAccessControllerResolver extends AbstractAccessControllerResolver {
 
-    protected static final String AC_CONFIGURATION_FILE = "config/access-control/access-control.xml"
-            .replace('/', File.separatorChar);
+    protected static final String AC_CONFIGURATION_URI = "config/access-control/access-control.xml";
     protected static final String TYPE_ATTRIBUTE = "type";
 
     private Repository repository;
@@ -151,18 +150,23 @@
      * @throws AccessControlException when something went wrong.
      */
     public Configuration getConfiguration(Publication publication) throws AccessControlException {
-        File configurationFile = new File(publication.getDirectory(), AC_CONFIGURATION_FILE);
+        String uri = publication.getPubBaseUri() + "/" + publication.getId() + "/"
+                + AC_CONFIGURATION_URI;
+        Source source = null;
+        try {
+            source = this.sourceResolver.resolveURI(uri);
+            if (source.exists()) {
 
-        if (configurationFile.isFile()) {
-            try {
-                Configuration configuration = new DefaultConfigurationBuilder()
-                        .buildFromFile(configurationFile);
+                Configuration configuration = new DefaultConfigurationBuilder().build(source
+                        .getInputStream());
                 return configuration;
-            } catch (Exception e) {
-                throw new AccessControlException(e);
+            } else {
+                throw new AccessControlException("No such file or directory: " + uri);
             }
-        } else {
-            throw new AccessControlException("No such file or directory: " + configurationFile);
+        } catch (AccessControlException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new AccessControlException(e);
         }
     }
 

Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-components.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-components.xml?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-components.xml (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-components.xml Tue Feb 10 18:25:55 2009
@@ -73,6 +73,8 @@
   
   <!-- Accreditable Managers -->
   <bean name="org.apache.lenya.ac.AccreditableManagerFactory"
-    class="org.apache.lenya.ac.file.FileAccreditableManagerFactory"/>
+    class="org.apache.lenya.ac.file.FileAccreditableManagerFactory">
+    <property name="sourceResolver" ref="org.apache.excalibur.source.SourceResolver"/>
+  </bean>
   
 </beans>

Modified: lenya/trunk/org.apache.lenya.core.janitor/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.janitor/pom.xml?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.janitor/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.core.janitor/pom.xml Tue Feb 10 18:25:55 2009
@@ -27,9 +27,5 @@
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-repository</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.lenya</groupId>
-      <artifactId>lenya-core-impl</artifactId>
-    </dependency>
   </dependencies>
 </project>

Modified: lenya/trunk/org.apache.lenya.core.ldap/src/main/java/org/apache/lenya/ac/ldap/LDAPUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ldap/src/main/java/org/apache/lenya/ac/ldap/LDAPUser.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ldap/src/main/java/org/apache/lenya/ac/ldap/LDAPUser.java (original)
+++ lenya/trunk/org.apache.lenya.core.ldap/src/main/java/org/apache/lenya/ac/ldap/LDAPUser.java Tue Feb 10 18:25:55 2009
@@ -335,8 +335,7 @@
 
         Hashtable env = new Hashtable();
 
-        System.setProperty("javax.net.ssl.trustStore", getConfigurationDirectory()
-                .getAbsolutePath()
+        System.setProperty("javax.net.ssl.trustStore", getConfigurationUri()
                 + File.separator + defaultProperties.getProperty(KEY_STORE_PROP));
 
         env.put(Context.INITIAL_CONTEXT_FACTORY, LdapCtxFactory.class.getName());
@@ -386,7 +385,7 @@
      */
     private void readProperties() throws IOException {
         // create and load default properties
-        File propertiesFile = new File(getConfigurationDirectory(), LDAP_PROPERTIES_FILE);
+        File propertiesFile = new File(getConfigurationUri(), LDAP_PROPERTIES_FILE);
 
         if (defaultProperties == null) {
             defaultProperties = new Properties();

Modified: lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java (original)
+++ lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java Tue Feb 10 18:25:55 2009
@@ -17,6 +17,7 @@
  */
 package org.apache.lenya.cms.repository;
 
+import org.apache.commons.lang.Validate;
 import org.apache.lenya.transaction.IdentifiableFactory;
 import org.apache.lenya.transaction.IdentityMap;
 
@@ -34,6 +35,8 @@
      * @param session The session.
      */
     public RepositoryItemFactoryWrapper(RepositoryItemFactory delegate, Session session) {
+        Validate.notNull(delegate, "factory");
+        Validate.notNull(session, "session");
         this.delegate = delegate;
         this.session = session;
     }

Modified: lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java Tue Feb 10 18:25:55 2009
@@ -33,7 +33,6 @@
     public Session createSession(Identity identity, boolean modifiable) throws RepositoryException {
         SessionImpl session = new SessionImpl(identity, modifiable);
         session.setObservationRegistry(getObservationRegistry());
-        session.setUuidGenerator(getUuidGenerator());
         session.setSharedItemStore(getSharedItemStore());
         return session;
     }

Modified: lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java (original)
+++ lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java Tue Feb 10 18:25:55 2009
@@ -89,4 +89,14 @@
      */
     String getId();
 
+    /**
+     * @return The holder of this session.
+     */
+    SessionHolder getHolder();
+    
+    /**
+     * @param holder The holder of this session.
+     */
+    void setHolder(SessionHolder holder);
+
 }

Added: lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java?rev=743042&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java (added)
+++ lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java Tue Feb 10 18:25:55 2009
@@ -0,0 +1,24 @@
+/*
+ * 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.cms.repository;
+
+public interface SessionHolder {
+    
+    Session getRepositorySession();
+
+}

Modified: lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java?rev=743042&r1=743041&r2=743042&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java Tue Feb 10 18:25:55 2009
@@ -22,6 +22,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
@@ -51,7 +52,6 @@
     protected static final String UNMODIFIABLE_SESSION_ID = "unmodifiable";
     private Identity identity;
     private ObservationRegistry observationRegistry;
-    private UUIDGenerator uuidGenerator;
     private String id;
     private String userId;
 
@@ -68,14 +68,6 @@
         addListener(observationRegistry);
     }
 
-    protected UUIDGenerator getUuidGenerator() {
-        return uuidGenerator;
-    }
-
-    protected void setUuidGenerator(UUIDGenerator uuidGenerator) {
-        this.uuidGenerator = uuidGenerator;
-    }
-
     /**
      * Ctor.
      * @param identity The identity.
@@ -93,7 +85,7 @@
     }
 
     protected String createUuid() {
-        return getUuidGenerator().nextUUID();
+        return UUID.randomUUID().toString();
     }
 
     public Identity getIdentity() {
@@ -248,6 +240,8 @@
     private List events = new ArrayList();
     private IdentityMap identityMap;
 
+    private SessionHolder holder;
+
     public synchronized void enqueueEvent(RepositoryEvent event) {
         Validate.isTrue(event.getSession() == this, "event belongs to session");
         if (!isModifiable()) {
@@ -277,4 +271,12 @@
         return "Session " + getId();
     }
 
+    public SessionHolder getHolder() {
+        return this.holder;
+    }
+    
+    public void setHolder(SessionHolder holder) {
+        this.holder = holder;
+    }
+
 }



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