Author: andreas
Date: Wed Jan 21 10:04:03 2009
New Revision: 736356
URL: http://svn.apache.org/viewvc?rev=736356&view=rev
Log:
Next steps in introduction of transient users.
Modified:
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java
lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java
lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java
lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java
lenya/sandbox/access_control_redesign/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java
lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java
lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java
lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Address.java
lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/GroupAddress.java
lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/UserAddress.java
lenya/sandbox/access_control_redesign/src/modules/notification/usecases/currentMessage.jx
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/AbstractUserReference.java Wed Jan 21 10:04:03 2009
@@ -31,14 +31,18 @@
private static final long serialVersionUID = 1L;
private String userId;
+ private String managerId;
/**
* @param userId The ID of the user.
+ * @param accrMgrId The ID of the accreditable manager.
* @see Item#getId()
*/
- public AbstractUserReference(String userId) {
+ public AbstractUserReference(String userId, String accrMgrId) {
Assert.notNull("user ID", userId);
+ Assert.notNull("accreditable manager ID", accrMgrId);
this.userId = userId;
+ this.managerId = accrMgrId;
}
/**
@@ -92,4 +96,9 @@
return matchingGroups;
}
+ public boolean belongsToAccreditableManager(String accrMgrId) {
+ Assert.notNull("accreditable manager ID", accrMgrId);
+ return accrMgrId.equals(this.managerId);
+ }
+
}
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Authenticator.java Wed Jan 21 10:04:03 2009
@@ -20,7 +20,6 @@
import org.apache.avalon.framework.component.Component;
import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.attr.AttributeSet;
/**
* An authenticator.
@@ -42,25 +41,4 @@
*/
boolean authenticate(AccreditableManager accreditableManager, Request request)
throws AccessControlException;
-
- /**
- * The login URI for a certain request.
- * @param request The request.
- * @return A string.
- */
- String getLoginUri(Request request);
-
- /**
- * The target URI, i.e. the URI to redirect to after a successful
- * authentication.
- * @param request The request containing the authentication data.
- * @return A string.
- */
- String getTargetUri(Request request);
-
- /**
- * @return The set of attributes to be expected when a user has been
- * authenticated by this authenticator.
- */
- AttributeSet getAttributeSet();
}
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/Item.java Wed Jan 21 10:04:03 2009
@@ -20,13 +20,15 @@
package org.apache.lenya.ac;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.LogEnabled;
/**
* An item can be initialized from a configuration.
*/
-public interface Item {
+public interface Item extends LogEnabled {
/**
* Returns the ID.
@@ -58,4 +60,16 @@
*/
void setDescription(String description);
+ /**
+ * Configures this item.
+ * @param configuration The configuration.
+ * @throws ConfigurationException when something went wrong.
+ */
+ void configure(Configuration configuration) throws ConfigurationException;
+
+ /**
+ * @return The item manager this item belongs to.
+ */
+ ItemManager getItemManager();
+
}
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUser.java Wed Jan 21 10:04:03 2009
@@ -20,7 +20,7 @@
/**
* A user which is managed by the Lenya CMS itself, i.e. it belongs to a {@link UserManager}.
*/
-public interface ManagedUser extends User, Accreditable, Groupable {
+public interface ManagedUser extends User, Accreditable {
/**
* Delete this user.
@@ -43,12 +43,6 @@
void setPassword(String plainTextPassword);
/**
- * Checks support for changing password
- * @return true if password change is supported
- */
- public abstract boolean canChangePassword();
-
- /**
* Saves this user.
* @throws AccessControlException if the user could not be saved.
*/
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/ManagedUserReference.java Wed Jan 21 10:04:03 2009
@@ -17,23 +17,17 @@
*/
package org.apache.lenya.ac;
-import org.apache.lenya.util.Assert;
-
/**
* A reference to a managed user.
*/
public class ManagedUserReference extends AbstractUserReference {
-
- private String managerId;
/**
* @param userId The user ID.
* @param managerId The ID of the accreditable manager the user belongs to.
*/
public ManagedUserReference(String userId, String managerId) {
- super(userId);
- Assert.notNull("manager ID", managerId);
- this.managerId = managerId;
+ super(userId, managerId);
}
private static final long serialVersionUID = 1L;
@@ -50,9 +44,4 @@
}
}
- public boolean belongsToAccreditableManager(String accrMgrId) {
- Assert.notNull("accreditable manager ID", accrMgrId);
- return accrMgrId.equals(this.managerId);
- }
-
}
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/User.java Wed Jan 21 10:04:03 2009
@@ -24,7 +24,7 @@
* A user.
* @version $Id$
*/
-public interface User extends Item, AttributeOwner {
+public interface User extends Accreditable, Item, Groupable, AttributeOwner {
/**
* Get the email address
@@ -41,6 +41,18 @@
void setEmail(String email);
/**
+ * Sets the password.
+ * @param plainTextPassword The plain text password.
+ */
+ void setPassword(String plainTextPassword);
+
+ /**
+ * Checks support for changing password
+ * @return true if password change is supported
+ */
+ public abstract boolean canChangePassword();
+
+ /**
* Returns the user's preferred locale for the Lenya
* CMS menus and CMS screens.
*
@@ -84,4 +96,32 @@
*/
void setDefaultDocumentLocale(String documentLocale);
+ /**
+ * Save the user
+ *
+ * @throws AccessControlException if the save failed
+ */
+ void save() throws AccessControlException;
+
+ /**
+ * Delete a user
+ *
+ * @throws AccessControlException if the delete failed
+ */
+ void delete() throws AccessControlException;
+
+ /**
+ * Authenticate a user. This is done by encrypting
+ * the given password and comparing this to the
+ * encryptedPassword.
+ *
+ * @param password to authenticate with
+ * @return true if the given password matches the password for this user
+ */
+ boolean authenticate(String password);
+
+ /**
+ * @return The accreditable manager this accreditable belongs to.
+ */
+ AccreditableManager getAccreditableManager();
}
Modified: lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java (original)
+++ lenya/sandbox/access_control_redesign/src/java/org/apache/lenya/ac/UserManager.java Wed Jan 21 10:04:03 2009
@@ -61,7 +61,7 @@
* @return the requested user or null if there is
* no user with the given user id
*/
- ManagedUser getUser(String userId);
+ User getUser(String userId);
/**
* @param userId A user ID.
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/config/module.xml Wed Jan 21 10:04:03 2009
@@ -22,8 +22,6 @@
<id>org.apache.lenya.modules.ac</id>
<export package="org.apache.lenya.ac.file"/>
<export package="org.apache.lenya.ac.impl"/>
- <export package="org.apache.lenya.ac.attr"/>
- <export package="org.apache.lenya.ac.attr.impl"/>
<depends module="org.apache.lenya.modules.cache"/>
<depends module="org.apache.lenya.modules.linking"/>
<package>org.apache.lenya.modules</package>
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsLexer.java Wed Jan 21 10:04:03 2009
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2008-11-19 23:56:23
+// $ANTLR 3.0.1 /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2009-01-21 16:54:41
package org.apache.lenya.ac.attr.antlr;
import org.apache.lenya.ac.attr.ErrorHandler;
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/ExpressionsParser.java Wed Jan 21 10:04:03 2009
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2008-11-19 23:56:22
+// $ANTLR 3.0.1 /Users/nobby/apache/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/Expressions.g 2009-01-21 16:54:40
package org.apache.lenya.ac.attr.antlr;
import java.util.HashMap;
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java Wed Jan 21 10:04:03 2009
@@ -28,6 +28,8 @@
import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.Accreditable;
+import org.apache.lenya.ac.Item;
import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.impl.AbstractGroup;
import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -35,7 +37,7 @@
/**
* File-based group implementation.
*/
-public class FileGroup extends AbstractGroup implements FileItem {
+public class FileGroup extends AbstractGroup implements Item {
/**
* @see org.apache.lenya.ac.Group#delete()
@@ -127,7 +129,7 @@
return this.configurationDirectory;
}
- public void setConfigurationDirectory(File _configurationDirectory) {
+ protected void setConfigurationDirectory(File _configurationDirectory) {
assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
this.configurationDirectory = _configurationDirectory;
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java Wed Jan 21 10:04:03 2009
@@ -41,7 +41,7 @@
/**
* IP range that is stored in a file.
*/
-public class FileIPRange extends AbstractIPRange implements Serializable, FileItem {
+public class FileIPRange extends AbstractIPRange implements Serializable {
/**
*
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java Wed Jan 21 10:04:03 2009
@@ -152,7 +152,7 @@
String fileName = file.getName();
String id = fileName.substring(0, fileName.length() - getSuffix().length());
- FileItem item = (FileItem) this.items.get(id);
+ Item item = (Item) this.items.get(id);
String klass = ItemConfiguration.getItemClass(config);
if (item == null) {
@@ -160,7 +160,7 @@
Class[] paramTypes = { ItemManager.class, Logger.class };
Constructor ctor = Class.forName(klass).getConstructor(paramTypes);
Object[] params = { this, getLogger() };
- item = (FileItem) ctor.newInstance(params);
+ item = (Item) ctor.newInstance(params);
} catch (Exception e) {
String errorMsg = "Exception when trying to instanciate: " + klass
+ " with exception: " + e.fillInStackTrace();
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java Wed Jan 21 10:04:03 2009
@@ -26,6 +26,7 @@
import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.Item;
import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.impl.AbstractRole;
import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -34,7 +35,7 @@
* File-based role implementation.
* @version $Id$
*/
-public class FileRole extends AbstractRole implements FileItem {
+public class FileRole extends AbstractRole implements Item {
protected static final String ATTR_ASSIGNABLE = "assignable";
@@ -111,7 +112,7 @@
return this.configurationDirectory;
}
- public void setConfigurationDirectory(File file) {
+ protected void setConfigurationDirectory(File file) {
this.configurationDirectory = file;
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java Wed Jan 21 10:04:03 2009
@@ -29,6 +29,7 @@
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Group;
import org.apache.lenya.ac.GroupManager;
+import org.apache.lenya.ac.Item;
import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.ManagedUser;
import org.apache.lenya.ac.impl.AbstractUser;
@@ -38,7 +39,7 @@
* File-based user implementation.
* @version $Id$
*/
-public class FileUser extends AbstractUser implements FileItem, Serializable, ManagedUser {
+public class FileUser extends AbstractUser implements Item, Serializable, ManagedUser {
/**
*
@@ -215,7 +216,7 @@
return this.configurationDirectory;
}
- public void setConfigurationDirectory(File _configurationDirectory) {
+ protected void setConfigurationDirectory(File _configurationDirectory) {
assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
this.configurationDirectory = _configurationDirectory;
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java Wed Jan 21 10:04:03 2009
@@ -29,7 +29,6 @@
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ManagedUser;
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.UserType;
@@ -119,8 +118,8 @@
* @param userId user id of requested user
* @return the requested user or null if there is no user with the given user id
*/
- public ManagedUser getUser(String userId) {
- return (ManagedUser) getItem(userId);
+ public User getUser(String userId) {
+ return (User) getItem(userId);
}
/**
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java Wed Jan 21 10:04:03 2009
@@ -121,7 +121,7 @@
return this.configurationDirectory;
}
- public void setConfigurationDirectory(File _configurationDirectory) {
+ protected void setConfigurationDirectory(File _configurationDirectory) {
this.configurationDirectory = _configurationDirectory;
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java Wed Jan 21 10:04:03 2009
@@ -26,7 +26,6 @@
import org.apache.lenya.ac.ManagedUserReference;
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.UserReference;
-import org.apache.lenya.ac.attr.AttributeSet;
/**
* The anonymous authenticator authenticates to an anonymous user with no
@@ -79,19 +78,4 @@
}
return authenticated;
}
-
- public AttributeSet getAttributeSet() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getLoginUri(Request request) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getTargetUri(Request request) {
- // TODO Auto-generated method stub
- return null;
- }
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java Wed Jan 21 10:04:03 2009
@@ -163,7 +163,7 @@
Accreditable accreditable = null;
if (elementName.equals(USER_ELEMENT)) {
- accreditable = (Accreditable) getAccreditableManager().getUserManager().getUser(id);
+ accreditable = getAccreditableManager().getUserManager().getUser(id);
} else if (elementName.equals(GROUP_ELEMENT)) {
accreditable = getAccreditableManager().getGroupManager().getGroup(id);
} else if (elementName.equals(WORLD_ELEMENT)) {
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUser.java Wed Jan 21 10:04:03 2009
@@ -18,27 +18,41 @@
package org.apache.lenya.ac.impl;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.Accreditable;
+import org.apache.lenya.ac.AccreditableManager;
+import org.apache.lenya.ac.Group;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.User;
+import org.apache.lenya.util.Assert;
/**
- * Class for users which are not stored in the CMS, but in an external directory
- * like LDAP or a Shibboleth identity provider.
+ * Class for users which are not stored in the CMS, but in an external directory like LDAP or a
+ * Shibboleth identity provider.
*/
-public class TransientUser implements User {
+public class TransientUser extends AbstractLogEnabled implements User {
+
+ private AccreditableManager accreditableManager;
/**
* @param id The user ID.
*/
- public TransientUser(String id) {
+ public TransientUser(AccreditableManager accrMgr, String id) {
+ Assert.notNull("accrMgr", accrMgr);
+ Assert.notNull("id", id);
+ this.accreditableManager = accrMgr;
this.id = id;
}
private String id;
-
+
public String getId() {
return this.id;
}
@@ -67,7 +81,7 @@
protected boolean hasAttributes() {
return !this.attributes.isEmpty();
}
-
+
private String email;
private String description;
private String name;
@@ -105,9 +119,79 @@
}
public void setDefaultDocumentLocale(String documentLocale) {
+ throw new UnsupportedOperationException();
}
public void setDefaultMenuLocale(String menuLocale) {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean authenticate(String password) {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean canChangePassword() {
+ return false;
+ }
+
+ public void delete() throws AccessControlException {
+ throw new UnsupportedOperationException();
+ }
+
+ public AccreditableManager getAccreditableManager() {
+ return this.accreditableManager;
+ }
+
+ public void save() throws AccessControlException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setPassword(String plainTextPassword) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Accreditable[] getAccreditablesToAuthorize() {
+ Set accrs = new HashSet();
+ accrs.add(this);
+ accrs.addAll(getGroupSet());
+ return (Accreditable[]) accrs.toArray(new Accreditable[accrs.size()]);
+ }
+
+ public void configure(Configuration configuration) throws ConfigurationException {
+ }
+
+ public ItemManager getItemManager() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addedToGroup(Group group) {
+ }
+
+ public Group[] getGroups() {
+ Set groups = getGroupSet();
+ return (Group[]) groups.toArray(new Group[groups.size()]);
+ }
+
+ protected Set getGroupSet() {
+ try {
+ Set groups = new HashSet();
+ Group[] allGroups = getAccreditableManager().getGroupManager().getGroups();
+ for (int i = 0; i < allGroups.length; i++) {
+ if (allGroups[i].matches(this)) {
+ groups.add(allGroups[i]);
+ }
+ }
+ return groups;
+ } catch (AccessControlException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void removeFromAllGroups() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void removedFromGroup(Group group) {
}
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/TransientUserReference.java Wed Jan 21 10:04:03 2009
@@ -38,7 +38,7 @@
* @param user The user.
*/
public TransientUserReference(TransientUser user) {
- super(user.getId());
+ super(user.getId(), user.getAccreditableManager().getId());
this.user = user;
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java Wed Jan 21 10:04:03 2009
@@ -24,13 +24,10 @@
import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Authenticator;
import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.ManagedUser;
import org.apache.lenya.ac.ManagedUserReference;
+import org.apache.lenya.ac.User;
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.UserReference;
-import org.apache.lenya.ac.attr.AttributeSet;
-import org.apache.lenya.ac.attr.impl.AttributeSetImpl;
-import org.apache.lenya.util.ServletHelper;
/**
* User authenticator.
@@ -103,7 +100,7 @@
String password, Identity identity) throws AccessControlException {
UserManager userManager = accreditableManager.getUserManager();
- ManagedUser user = (ManagedUser) userManager.getUser(username);
+ User user = userManager.getUser(username);
if (getLogger().isDebugEnabled()) {
getLogger().debug("Authenticating user: [" + user + "]");
}
@@ -135,17 +132,4 @@
return authenticated;
}
- public AttributeSet getAttributeSet() {
- return new AttributeSetImpl();
- }
-
- public String getLoginUri(Request request) {
- String webappUrl = ServletHelper.getWebappURI(request);
- return webappUrl + "?lenya.module=openid&lenya.action=login";
- }
-
- public String getTargetUri(Request request) {
- return ServletHelper.getWebappURI(request);
- }
-
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java Wed Jan 21 10:04:03 2009
@@ -47,7 +47,6 @@
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.UserReference;
-import org.apache.lenya.ac.impl.DefaultAccessController;
import org.apache.lenya.cms.ac.PolicyUtil;
import org.apache.lenya.util.ServletHelper;
@@ -62,17 +61,14 @@
* <li><strong><code>user-id</code></strong> - the ID of the currently logged-in user</li>
* <li><strong><code>user-name</code></strong> - the full name of the currently logged-in user</li>
* <li><strong><code>user-name:{user-id}</code></strong> - the full name of a specific user</li>
- * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user
- * </li>
+ * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user</li>
* <li><strong><code>user-email:{user-id}</code></strong> - the e-mail address of a specific user</li>
* <li><strong><code>ip-address</code></strong> - the IP address of the client machine</li>
- * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current
- * identity</li>
+ * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current identity</li>
* <li><strong><code>user-manager</code></strong> - the user manager object</li>
* <li><strong><code>group-manager</code></strong> - the group manager object</li>
* <li><strong><code>iprange-manager</code></strong> - the IP range manager object</li>
* <li><strong><code>role-manager</code></strong> - the role manager object</li>
- * <li><strong><code>login-uri</code></strong> - the URI for the redirect to the login screen</li>
* </ul>
*
*/
@@ -118,16 +114,12 @@
* Returns if the current page is SSL protected (true|false).
*/
public static final String SSL = "ssl";
- /**
- * The URI for the redirect to the login screen.
- */
- public static final String LOGIN_URI = "login-uri";
/**
* The names of the AccessControlModule parameters.
*/
static final String[] PARAMETER_NAMES = { IP_ADDRESS, USER_ID, USER_NAME, USER_EMAIL, ROLE_IDS,
- USER_MANAGER, GROUP_MANAGER, ROLE_MANAGER, IP_RANGE_MANAGER, SSL, LOGIN_URI };
+ USER_MANAGER, GROUP_MANAGER, ROLE_MANAGER, IP_RANGE_MANAGER, SSL };
/**
*
@@ -148,9 +140,11 @@
throw new ConfigurationException("The attribute [" + name + "] is not supported!");
}
- Identity identity = session != null ? (Identity) session.getAttribute(Identity.class
- .getName()) : null;
-
+ Identity identity = null;
+
+ if (session != null) {
+ identity = (Identity) session.getAttribute(Identity.class.getName());
+ }
User user = getUser(request, parameters, identity);
if (user != null) {
@@ -193,31 +187,40 @@
if (name.equals(USER_MANAGER) || name.equals(GROUP_MANAGER) || name.equals(ROLE_MANAGER)
|| name.equals(IP_RANGE_MANAGER)) {
value = getItemManager(request, name);
- } else if (name.equals(LOGIN_URI)) {
- ValueExtractor extractor = new ValueExtractor() {
- protected String extractValue(DefaultAccessController accessController,
- Request request) {
- return accessController.getAuthenticator().getLoginUri(request);
- }
- };
- value = extractValue(request, extractor);
- } else if (name.equals(SSL)) {
- ValueExtractor extractor = new ValueExtractor() {
- protected String extractValue(DefaultAccessController accessController,
- Request request) {
- String url = ServletHelper.getWebappURI(request);
- AccreditableManager accreditableManager = accessController
- .getAccreditableManager();
- PolicyManager policyManager = accessController.getPolicyManager();
- try {
- Policy policy = policyManager.getPolicy(accreditableManager, url);
- return Boolean.toString(policy.isSSLProtected());
- } catch (Exception e) {
- throw new RuntimeException(e);
+ }
+
+ if (name.equals(SSL)) {
+ ServiceSelector selector = null;
+ AccessControllerResolver acResolver = null;
+ AccessController accessController = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+ + "Selector");
+ acResolver
+ = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
+
+ String url = ServletHelper.getWebappURI(request);
+ accessController = acResolver.resolveAccessController(url);
+ AccreditableManager accreditableManager = accessController.getAccreditableManager();
+ PolicyManager policyManager = accessController.getPolicyManager();
+
+ Policy policy = policyManager.getPolicy(accreditableManager, url);
+ value = Boolean.toString(policy.isSSLProtected());
+ }
+ catch (Exception e) {
+ throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
+ }
+ finally {
+ if (selector != null) {
+ if (acResolver != null) {
+ if (accessController != null) {
+ acResolver.release(accessController);
+ }
+ selector.release(acResolver);
}
+ this.manager.release(selector);
}
- };
- value = extractValue(request, extractor);
+ }
}
return value;
@@ -339,44 +342,4 @@
this.manager = _manager;
}
- /**
- * Class to obtain a property of the access controller without duplicating the lookup/release
- * boilerplate code.
- */
- protected static abstract class ValueExtractor {
- protected abstract String extractValue(DefaultAccessController accessController,
- Request request);
- }
-
- protected String extractValue(Request request, ValueExtractor extractor)
- throws ConfigurationException {
- DefaultAccessController accessController = null;
- ServiceSelector selector = null;
- AccessControllerResolver resolver = null;
-
- try {
- selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- resolver = (AccessControllerResolver) selector
- .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
- String url = ServletHelper.getWebappURI(request);
- accessController = (DefaultAccessController) resolver.resolveAccessController(url);
-
- return extractor.extractValue(accessController, request);
-
- } catch (Exception e) {
- throw new ConfigurationException("Could not determine login URI: ", e);
- } finally {
- if (selector != null) {
- if (resolver != null) {
- if (accessController != null) {
- resolver.release(accessController);
- }
- selector.release(resolver);
- }
- this.manager.release(selector);
- }
- }
- }
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java Wed Jan 21 10:04:03 2009
@@ -225,7 +225,7 @@
FileUserManager _manager = getUserManager();
assertNotNull(_manager);
- FileUser lenya = (FileUser) _manager.getUser("lenya");
+ User lenya = _manager.getUser("lenya");
assertNotNull(lenya);
assertTrue(lenya.authenticate("levi"));
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java Wed Jan 21 10:04:03 2009
@@ -74,7 +74,7 @@
FileRole adminRole = new FileRole(getAccreditableManager().getRoleManager(), getLogger(),
adminRoleId);
- FileUser user = new FileUser(getAccreditableManager().getUserManager(), getLogger(), userName,
+ User user = new FileUser(getAccreditableManager().getUserManager(), getLogger(), userName,
"Alice in Wonderland", "[email protected]", "secret");
editorRole.save();
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java Wed Jan 21 10:04:03 2009
@@ -17,7 +17,7 @@
*/
package org.apache.lenya.cms.ac.usecases;
-import org.apache.lenya.ac.ManagedUser;
+import org.apache.lenya.ac.User;
/**
@@ -28,7 +28,7 @@
protected static final String NEW_PASSWORD = "newPassword";
protected static final String CONFIRM_PASSWORD = "confirmPassword";
- protected abstract ManagedUser getUser();
+ protected abstract User getUser();
/**
* @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java Wed Jan 21 10:04:03 2009
@@ -20,7 +20,6 @@
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.ItemUtil;
-import org.apache.lenya.ac.ManagedUser;
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.file.FileUser;
@@ -109,7 +108,7 @@
String email = getParameterAsString(UserProfile.EMAIL);
String className = getParameterAsString(CLASS_NAME);
- ManagedUser user;
+ User user;
if (className.equals(LDAPUser.class.getName())) {
String ldapId = getParameterAsString(LDAP_ID);
user = new LDAPUser(userManager, getLogger(), userId, email, ldapId, getLogger());
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java Wed Jan 21 10:04:03 2009
@@ -17,7 +17,7 @@
*/
package org.apache.lenya.cms.ac.usecases;
-import org.apache.lenya.ac.ManagedUser;
+import org.apache.lenya.ac.User;
/**
* Usecase to change a user's password. The old password is checked.
@@ -29,7 +29,7 @@
/**
* @return Always returns the currently logged in user.
*/
- protected ManagedUser getUser() {
+ protected User getUser() {
String id = getSession().getIdentity().getUserReference().getId();
return getUserManager().getUser(id);
}
@@ -47,7 +47,7 @@
*/
private void checkOldPassword() {
String oldPassword = getParameterAsString(OLD_PASSWORD);
- boolean authenticated = ((ManagedUser) getUser()).authenticate(oldPassword);
+ boolean authenticated = getUser().authenticate(oldPassword);
if (!authenticated) {
addErrorMessage("The old password is not correct.");
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java Wed Jan 21 10:04:03 2009
@@ -17,16 +17,16 @@
*/
package org.apache.lenya.cms.ac.usecases;
-import org.apache.lenya.ac.ManagedUser;
+import org.apache.lenya.ac.User;
/**
* Usecase to change a user's password.
*/
public class ChangePasswordAdmin extends AbstractChangePassword {
- private ManagedUser user;
+ private User user;
- protected ManagedUser getUser() {
+ protected User getUser() {
if (this.user == null) {
String userId = getParameterAsString(UserProfile.USER_ID);
this.user = getUserManager().getUser(userId);
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java Wed Jan 21 10:04:03 2009
@@ -17,7 +17,7 @@
*/
package org.apache.lenya.cms.ac.usecases;
-import org.apache.lenya.ac.ManagedUser;
+import org.apache.lenya.ac.User;
/**
* Usecase to delete a user.
@@ -33,7 +33,7 @@
super.doExecute();
String userId = getParameterAsString(UserProfile.USER_ID);
- ManagedUser user = getUserManager().getUser(userId);
+ User user = getUserManager().getUser(userId);
if (user == null) {
throw new RuntimeException("User [" + userId + "] not found.");
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java Wed Jan 21 10:04:03 2009
@@ -23,7 +23,6 @@
import org.apache.lenya.ac.Group;
import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.ManagedUser;
import org.apache.lenya.ac.User;
import org.apache.lenya.cms.usecase.UsecaseException;
@@ -80,7 +79,7 @@
List groupUsers = (List) getParameter(GROUP_USERS);
for (Iterator i = groupUsers.iterator(); i.hasNext();) {
- ManagedUser user = (ManagedUser) i.next();
+ User user = (User) i.next();
group.add(user);
user.save();
}
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java Wed Jan 21 10:04:03 2009
@@ -23,8 +23,7 @@
import java.util.List;
import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.ManagedUser;
+import org.apache.lenya.ac.User;
import org.apache.lenya.cms.usecase.UsecaseException;
/**
@@ -45,13 +44,13 @@
protected void doExecute() throws Exception {
super.doExecute();
- ManagedUser user = getUser();
+ User user = getUser();
user.removeFromAllGroups();
List userGroups = (List) getParameter(USER_GROUPS);
for (Iterator i = userGroups.iterator(); i.hasNext();) {
Group group = (Group) i.next();
- group.add((Groupable) user);
+ group.add(user);
}
user.save();
}
@@ -101,9 +100,9 @@
}
- protected ManagedUser getUser() {
+ protected User getUser() {
String userId = getParameterAsString(UserProfile.USER_ID);
- ManagedUser user = getUserManager().getUser(userId);
+ User user = getUserManager().getUser(userId);
if (user == null) {
throw new RuntimeException("User [" + userId + "] not found.");
}
@@ -113,7 +112,7 @@
protected void initParameters() {
super.initParameters();
- Group[] userGroupArray = ((Groupable) getUser()).getGroups();
+ Group[] userGroupArray = getUser().getGroups();
List userGroups = new ArrayList(Arrays.asList(userGroupArray));
setParameter(USER_GROUPS, userGroups);
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java Wed Jan 21 10:04:03 2009
@@ -17,7 +17,7 @@
*/
package org.apache.lenya.cms.ac.usecases;
-import org.apache.lenya.ac.ManagedUser;
+import org.apache.lenya.ac.User;
import org.apache.lenya.ac.ItemUtil;
/**
@@ -71,13 +71,13 @@
}
- private ManagedUser user;
+ private User user;
/**
* Returns the currently edited user.
* @return A user.
*/
- protected ManagedUser getUser() {
+ protected User getUser() {
return this.user;
}
Modified: lenya/sandbox/access_control_redesign/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java Wed Jan 21 10:04:03 2009
@@ -45,6 +45,8 @@
import org.apache.lenya.ac.Identity;
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.UserManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.modules.lucene.MetaDataFieldRegistry;
import org.apache.lenya.notification.Address;
import org.apache.lenya.notification.Message;
@@ -62,20 +64,23 @@
/**
* Another lucene index transformer.</br> allow
* <ul>
- * <li>index function (update indexing or add indexing if clear attribute is true)</li>
+ * <li>index function (update indexing or add indexing if clear attribute is
+ * true)</li>
* <li>lucene field boosting</li>
* <li>delete function</li>
* </ul>
*
* <p>
- * This tranformer used several avalon components, but you can use them separatly :
+ * This tranformer used several avalon components, but you can use them
+ * separatly :
* <ul>
- * <li>AnalyzerManager: you can setup a analyzer (configurable) in the analyzer_manager tag in
- * cocoon.xconf file</li>
- * <li>IndexManager: you can setup a index in a the /WEB-INF/index.xml (default location , but you
- * can specify the location in the IndexManager component configuration in cocoon.xconf file)</li>
- * <li>Indexer (2 implementations: default (with update optimization) and parallel implementation
- * for multiple cpu)</li>
+ * <li>AnalyzerManager: you can setup a analyzer (configurable) in the
+ * analyzer_manager tag in cocoon.xconf file</li>
+ * <li>IndexManager: you can setup a index in a the /WEB-INF/index.xml (default
+ * location , but you can specify the location in the IndexManager component
+ * configuration in cocoon.xconf file)</li>
+ * <li>Indexer (2 implementations: default (with update optimization) and
+ * parallel implementation for multiple cpu)</li>
* </p>
* <p>
* <strong>Example of input source: </strong>
@@ -85,18 +90,20 @@
* <li>to Index <br>
* <lucene:index xmlns:lucene="http://apache.org/cocoon/lucene/1.0"
* <br/>indexid="myindex" <br>
- * clear="true" (optinal attribute: clear index) <br/>merge-factor="100"> (optinal attribute: see
- * lucene doc) <br>
- * <br/><lucene:document uid="http://myhost/myfile1.data"> <br/> <lucene:field name="tile"
- * > sqdqsdq </lucene:field> <br>
- * <lucene:field name="description" > a text bla bal blalael balbal</lucene:field> <br>
- * <lucene:field name="date" >10/12/2002</lucene:field> <br/> </lucene:document> <br>
+ * clear="true" (optinal attribute: clear index) <br/>merge-factor="100">
+ * (optinal attribute: see lucene doc) <br>
+ * <br/><lucene:document uid="http://myhost/myfile1.data"> <br/>
+ * <lucene:field name="tile" > sqdqsdq </lucene:field> <br>
+ * <lucene:field name="description" > a text bla bal blalael
+ * balbal</lucene:field> <br>
+ * <lucene:field name="date" >10/12/2002</lucene:field> <br/>
+ * </lucene:document> <br>
*
* <p>
* <lucene:document uid="http://myhost/myfile2.data" > <br>
* <lucene:field name="author" boost="2" >Mr Author </lucene:field>
- * <em>(boost the field for the search (see Lucene documentation))</em> <br/> <lucene:field
- * name="langage" >french</lucene:field> <br>
+ * <em>(boost the field for the search (see Lucene documentation))</em> <br/>
+ * <lucene:field name="langage" >french</lucene:field> <br>
* </lucene:document> <br>
* < /lucene:index>
* </p>
@@ -114,15 +121,17 @@
* <strong>Example of Output Source </strong>
* </p>
* <p>
- * <page xmlns:lucene="http://apache.org/cocoon/lucene/1.0"> <br>
+ * <page xmlns:lucene="http://apache.org/cocoon/lucene/1.0">
+ * <br>
* < lucene:index > <br>
- * <lucene:document uid="http://myhost/myfile1.data"/> <br/> <lucene:document
- * uid="http://myhost/myfile2.data"/> <br/> </lucene:index>
+ * <lucene:document uid="http://myhost/myfile1.data"/> <br/>
+ * <lucene:document uid="http://myhost/myfile2.data"/> <br/>
+ * </lucene:index>
* </p>
* <p>
- * <lucene:delete > <lucene:document uid="http://myhost/myfile1.data"/>
- * <br/><lucene:document uid="EODOED-EFE"/> <br/></lucene:delete ></br>
- * </li>
+ * <lucene:delete > <lucene:document
+ * uid="http://myhost/myfile1.data"/> <br/><lucene:document
+ * uid="EODOED-EFE"/> <br/></lucene:delete ></br></li>
* </ul>
*
* @author Nicolas Maisonneuve
@@ -158,14 +167,14 @@
public static final String LUCENE_INDEXING_CREATE_ATTRIBUTE = "clear";
/**
- * Optional attribute: Analyzer identity: see analyzerManager Component (default: the analyer of
- * the index declared in the index definition)
+ * Optional attribute: Analyzer identity: see analyzerManager Component
+ * (default: the analyer of the index declared in the index definition)
*/
public static final String LUCENE_INDEXING_ANALYZER_ATTRIBUTE = "analyzer";
/**
- * Optional attribute: MergeFactor number (default 10): improve the indexing speed for large
- * indexing (see Lucene docs)
+ * Optional attribute: MergeFactor number (default 10): improve the indexing
+ * speed for large indexing (see Lucene docs)
*/
public static final String LUCENE_INDEXING_MERGE_FACTOR_ATTRIBUTE = "mergefactor";
@@ -363,10 +372,9 @@
if (LUCENE_FIELD_ELEMENT.equals(localName)) {
final String namespace = atts.getValue(NAMESPACE_ATTRIBUTE);
final String name = atts.getValue(LUCENE_FIELD_NAME_ATTRIBUTE);
-
+
// set the field name
- this.fieldname = namespace == null ? name : getMetaDataFieldName(namespace,
- name);
+ this.fieldname = namespace == null ? name : getMetaDataFieldName(namespace, name);
if (this.fieldname == null || this.fieldname.equals("")) {
handleError("<lucene:field> element must contain name attribute");
}
@@ -396,8 +404,7 @@
protected String getMetaDataFieldName(String namespace, String elementName) {
if (this.registry == null) {
try {
- this.registry = (MetaDataFieldRegistry) this.manager
- .lookup(MetaDataFieldRegistry.ROLE);
+ this.registry = (MetaDataFieldRegistry) this.manager.lookup(MetaDataFieldRegistry.ROLE);
} catch (ServiceException e) {
throw new RuntimeException(e);
}
@@ -485,7 +492,7 @@
try {
Field f = index.createField(fieldname, fieldvalue.toString());
f.setBoost(fieldboost);
-
+
// add field to the lucene document
bodyDocument.add(f);
processing = IN_DOCUMENT_PROCESS;
@@ -498,8 +505,7 @@
break;
default:
- handleError("Inappropriate element '" + localName + "' in state '" + processing
- + "'!");
+ handleError("Inappropriate element '" + localName + "' in state '" + processing + "'!");
}
} else {
super.endElement(namespaceURI, localName, qName);
@@ -508,8 +514,7 @@
protected void handleUnexpectedClosingElement(String localName, String expectedLocalName)
throws SAXException {
- handleError("</lucene:" + expectedLocalName + "> was expected instead of </lucene:"
- + localName + ">!");
+ handleError("</lucene:" + expectedLocalName + "> was expected instead of </lucene:" + localName + ">!");
}
protected boolean canIndex() {
@@ -544,10 +549,10 @@
setIndexer(indexId);
if (canIndex()) {
-
+
String analyzerId = atts.getValue(LUCENE_URI, LUCENE_INDEXING_ANALYZER_ATTRIBUTE);
setAnalyzer(analyzerId);
-
+
// set clear mode
boolean new_index = (clear != null && clear.toLowerCase().equals("true")) ? true
: false;
@@ -580,7 +585,8 @@
index = indexManager.getIndex(indexId);
if (index == null) {
handleError("index [" + indexId + "] no found in the index definition");
- } else {
+ }
+ else {
indexer = index.getIndexer();
if (indexer == null) {
handleError("Index [" + indexId + "] did return a null indexer.");
@@ -615,12 +621,13 @@
handleError(ex1);
} catch (ConfigurationException ex2) {
handleError("error setting analyzer for index [" + this.index.getID() + "]", ex2);
- } finally {
+ }
+ finally {
manager.release(analyzerManager);
}
}
}
-
+
void handleError(String message, Exception ex) throws SAXException {
handleError(message + ": " + getExceptionMessage(ex));
}
@@ -649,9 +656,11 @@
closeIndexer();
try {
+ Session session = RepositoryUtil.getSession(this.manager, this.request);
User user = getErrorMessageRecipient();
Address sender = new UserAddress(user);
- User recipient = getUserManager().getUser(this.notificationRecipient);
+ UserManager userManager = (UserManager) user.getItemManager();
+ User recipient = userManager.getUser(this.notificationRecipient);
Address[] recipients = { new UserAddress(recipient) };
Text subject = new Text("indexing-failed-subject", true);
@@ -671,54 +680,48 @@
}
/*
- * if (ex == null) { // this.getLogger().error(msg); throw new SAXException(msg); } else {
- * // this.getLogger().error(msg, ex); throw new SAXException(msg, ex); }
+ * if (ex == null) { // this.getLogger().error(msg); throw new
+ * SAXException(msg); } else { // this.getLogger().error(msg, ex); throw
+ * new SAXException(msg, ex); }
*/
}
+
+ protected User getErrorMessageRecipient() {
- private UserManager userManager;
-
- protected UserManager getUserManager() {
- if (this.userManager == null) {
- AccessController accessController = null;
- ServiceSelector selector = null;
- AccessControllerResolver resolver = null;
- try {
- selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- resolver = (AccessControllerResolver) selector
- .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
- String url = ServletHelper.getWebappURI(this.request);
- accessController = resolver.resolveAccessController(url);
- this.userManager = accessController.getAccreditableManager().getUserManager();
- } catch (Exception e) {
- throw new RuntimeException("Could not obtain user manager: ", e);
- } finally {
- if (selector != null) {
- if (resolver != null) {
- if (accessController != null) {
- resolver.release(accessController);
- }
- selector.release(resolver);
+ ServiceSelector selector = null;
+ AccessControllerResolver acResolver = null;
+ AccessController accessController = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+ + "Selector");
+ acResolver = (AccessControllerResolver) selector
+ .select(AccessControllerResolver.DEFAULT_RESOLVER);
+ String webappUrl = ServletHelper.getWebappURI(this.request);
+ accessController = acResolver.resolveAccessController(webappUrl);
+
+ UserManager userManager = accessController.getAccreditableManager().getUserManager();
+ Identity identity = (Identity) this.request.getSession().getAttribute(Identity.class.getName());
+ String userId = identity.getUserReference().getId();
+ User user = userManager.getUser(userId);
+ if (user == null) {
+ throw new RuntimeException("The user '" + userId + "' doesn't exist.");
+ }
+ return user;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (acResolver != null) {
+ if (accessController != null) {
+ acResolver.release(accessController);
}
- this.manager.release(selector);
+ selector.release(acResolver);
}
+ this.manager.release(selector);
}
}
- return this.userManager;
}
- protected User getErrorMessageRecipient() {
- Identity identity = (Identity) this.request.getSession().getAttribute(
- Identity.class.getName());
- String userId = identity.getUserReference().getId();
- User user = getUserManager().getUser(userId);
- if (user == null) {
- throw new RuntimeException("The user '" + userId + "' doesn't exist.");
- }
- return user;
- }
/**
* Close the indexer
Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java Wed Jan 21 10:04:03 2009
@@ -23,17 +23,11 @@
import javax.xml.parsers.ParserConfigurationException;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.axis.components.uuid.UUIDGen;
import org.apache.axis.components.uuid.UUIDGenFactory;
-import org.apache.cocoon.environment.Request;
import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Group;
import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
import org.apache.lenya.cms.cocoon.source.SourceUtil;
import org.apache.lenya.inbox.Inbox;
import org.apache.lenya.inbox.InboxMessage;
@@ -44,7 +38,6 @@
import org.apache.lenya.notification.Text;
import org.apache.lenya.notification.UserAddress;
import org.apache.lenya.util.Assert;
-import org.apache.lenya.util.ServletHelper;
import org.apache.lenya.xml.DocumentHelper;
import org.apache.lenya.xml.NamespaceHelper;
import org.w3c.dom.Document;
@@ -57,7 +50,6 @@
private ServiceManager manager;
private User user;
- private AccreditableManager accrMgr;
/**
* @param manager The service manager.
@@ -68,45 +60,6 @@
this.user = user;
}
- protected AccreditableManager getAccreditableManager() {
- if (this.accrMgr == null) {
- AccessController accessController = null;
- ServiceSelector selector = null;
- AccessControllerResolver resolver = null;
- ContextUtility context = null;
-
- try {
- selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- resolver = (AccessControllerResolver) selector
- .select(AccessControllerResolver.DEFAULT_RESOLVER);
- context = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
- Request request = context.getRequest();
- String url = ServletHelper.getWebappURI(request);
- accessController = resolver.resolveAccessController(url);
- this.accrMgr = accessController.getAccreditableManager();
-
- } catch (Exception e) {
- throw new RuntimeException("Could not obtain accreditable manager: ", e);
- } finally {
- if (selector != null) {
- if (resolver != null) {
- if (accessController != null) {
- resolver.release(accessController);
- }
- selector.release(resolver);
- }
- this.manager.release(selector);
- }
- if (context != null) {
- this.manager.release(context);
- }
- }
-
- }
- return this.accrMgr;
- }
-
public synchronized InboxMessage add(Message message) {
InboxMessage msg = new XmlSourceInboxMessage(this, generateId(), message, false);
messages().add(msg);
@@ -127,13 +80,13 @@
}
public InboxMessage[] getMessages() {
- List messages = messages();
+ List<InboxMessage> messages = messages();
return (InboxMessage[]) messages.toArray(new InboxMessage[messages.size()]);
}
- private List messages;
+ private List<InboxMessage> messages;
- protected List messages() {
+ protected List<InboxMessage> messages() {
if (this.messages == null) {
load();
}
@@ -143,7 +96,7 @@
private long lastModified = -1;
protected synchronized void load() {
- this.messages = new ArrayList();
+ this.messages = new ArrayList<InboxMessage>();
try {
if (SourceUtil.exists(getSourceUri(), this.manager)) {
@@ -157,14 +110,15 @@
Element[] messageElements = helper.getChildren(xml.getDocumentElement(), "message");
for (int i = 0; i < messageElements.length; i++) {
-
+
String id;
if (messageElements[i].hasAttribute("id")) {
id = messageElements[i].getAttribute("id");
- } else {
+ }
+ else {
id = generateId();
}
-
+
String senderId = messageElements[i].getAttribute("sender");
Address sender = new UserAddress(getUser(senderId));
@@ -174,7 +128,8 @@
Element[] userElements = helper.getChildren(recipientElement, "user");
Element[] groupElements = helper.getChildren(recipientElement, "group");
- Address[] recipients = new Address[userElements.length + groupElements.length];
+ Address[] recipients = new Address[userElements.length
+ + groupElements.length];
for (int u = 0; u < userElements.length; u++) {
String userId = userElements[u].getAttribute("id");
@@ -204,15 +159,15 @@
subjectParams[p] = DocumentHelper
.getSimpleElementText(subjectParamElements[p]);
}
-
+
String readString = "false";
if (messageElements[i].hasAttribute("read")) {
readString = messageElements[i].getAttribute("read");
}
boolean read = Boolean.valueOf(readString).booleanValue();
- Message message = new Message(new Text(subject, subjectParams), new Text(body,
- bodyParams), sender, recipients);
+ Message message = new Message(new Text(subject, subjectParams), new Text(body, bodyParams), sender,
+ recipients);
InboxMessage msg = new XmlSourceInboxMessage(this, id, message, read);
this.messages.add(msg);
}
@@ -224,18 +179,18 @@
}
protected User getUser(String id) throws AccessControlException {
- return getAccreditableManager().getUserManager().getUser(id);
+ return this.user.getAccreditableManager().getUserManager().getUser(id);
}
protected Group getGroup(String id) throws AccessControlException {
- return getAccreditableManager().getGroupManager().getGroup(id);
+ return this.user.getAccreditableManager().getGroupManager().getGroup(id);
}
private String sourceUri;
protected String getSourceUri() {
if (this.sourceUri == null) {
- String configUri = getAccreditableManager().getConfigurationCollectionUri();
+ String configUri = this.user.getAccreditableManager().getConfigurationCollectionUri();
if (configUri.endsWith("/")) {
configUri = configUri.substring(0, configUri.length() - 1);
}
@@ -264,11 +219,9 @@
protected NamespaceHelper buildXml() throws ParserConfigurationException {
NamespaceHelper helper = new NamespaceHelper(Notifier.NAMESPACE, "", "inbox");
- InboxMessage[] messages = getMessages();
- for (int i = 0; i < messages.length; i++) {
-
- Message message = messages[i].getMessage();
-
+ for (InboxMessage inboxMessage : getMessages()) {
+ Message message = inboxMessage.getMessage();
+
Element messageElement = helper.createElement("message");
helper.getDocument().getDocumentElement().appendChild(messageElement);
Address sender = message.getSenderAddress();
@@ -277,27 +230,23 @@
Element recipientsElement = helper.createElement("recipients");
messageElement.appendChild(recipientsElement);
- Address[] recipients = message.getRecipientAddresses();
- for (int r = 0; r < recipients.length; r++) {
- if (recipients[r] instanceof User) {
- Element userElement = helper.createElement("user");
- userElement.setAttribute("id", ((User) recipients[r]).getId());
- recipientsElement.appendChild(userElement);
- } else if (recipients[r] instanceof Group) {
- Element groupElement = helper.createElement("group");
- groupElement.setAttribute("id", ((Group) recipients[r]).getId());
- recipientsElement.appendChild(groupElement);
+ for (Address recipient : message.getRecipientAddresses()) {
+ Element element = null;
+ if (recipient instanceof UserAddress) {
+ element = helper.createElement("user");
+ } else if (recipient instanceof Group) {
+ element = helper.createElement("group");
}
+ element.setAttribute("id", recipient.getId());
+ recipientsElement.appendChild(element);
}
Element subjectElement = helper.createElement("subject");
messageElement.appendChild(subjectElement);
- Element subjectTextElement = helper.createElement("text", message.getSubjectText()
- .getText());
+ Element subjectTextElement = helper.createElement("text", message.getSubjectText().getText());
subjectElement.appendChild(subjectTextElement);
- Text[] subjectParams = message.getSubjectText().getParameters();
- for (int p = 0; p < subjectParams.length; p++) {
- Element paramElement = helper.createElement("param", subjectParams[p].getText());
+ for (Text text : message.getSubjectText().getParameters()) {
+ Element paramElement = helper.createElement("param", text.getText());
subjectElement.appendChild(paramElement);
}
@@ -305,14 +254,13 @@
messageElement.appendChild(bodyElement);
Element bodyTextElement = helper.createElement("text", message.getBodyText().getText());
bodyElement.appendChild(bodyTextElement);
- Text[] bodyParams = message.getBodyText().getParameters();
- for (int p = 0; p < bodyParams.length; p++) {
- Element paramElement = helper.createElement("param", bodyParams[p].getText());
+ for (Text text : message.getBodyText().getParameters()) {
+ Element paramElement = helper.createElement("param", text.getText());
bodyElement.appendChild(paramElement);
}
-
- messageElement.setAttribute("read", Boolean.toString(messages[i].isMarkedAsRead()));
- messageElement.setAttribute("id", messages[i].getId());
+
+ messageElement.setAttribute("read", Boolean.toString(inboxMessage.isMarkedAsRead()));
+ messageElement.setAttribute("id", inboxMessage.getId());
}
return helper;
}
Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java?rev=736356&r1=736355&r2=736356&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java Wed Jan 21 10:04:03 2009
@@ -17,9 +17,7 @@
*/
package org.apache.lenya.notification;
-import java.util.Arrays;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
import org.apache.avalon.framework.context.Context;
@@ -35,8 +33,6 @@
import org.apache.cocoon.transformation.I18nTransformer;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Identifiable;
import org.apache.lenya.ac.User;
import org.apache.lenya.xml.DocumentHelper;
import org.apache.lenya.xml.NamespaceHelper;
@@ -50,29 +46,14 @@
Contextualizable {
public void notify(Message message) throws NotificationException {
-
- Set noDuplicates = new HashSet();
-
- Address[] recipients = message.getRecipientAddresses();
-
- for (int i = 0; i < recipients.length; i++) {
- if (recipients[i] instanceof Group) {
- Group group = (Group) recipients[i];
- noDuplicates.addAll(Arrays.asList(group.getMembers()));
- } else {
- noDuplicates.add(recipients[i]);
- }
+ Set<User> users = new HashSet<User>();
+ for (Address address : message.getRecipientAddresses()) {
+ users.addAll(address.getRecipients());
}
-
- for (Iterator i = noDuplicates.iterator(); i.hasNext();) {
- Identifiable identifiable = (Identifiable) i.next();
- if (identifiable instanceof User) {
- User user = (User) identifiable;
- Message translatedMessage = translateMessage(user.getDefaultMenuLocale(), message);
- notify(user, translatedMessage);
- }
+ for (User user: users) {
+ Message translatedMessage = translateMessage(user.getDefaultMenuLocale(), message);
+ notify(user, translatedMessage);
}
-
}
protected abstract void notify(User user, Message translatedMessage)
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.