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