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;
+ }
+
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.