You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2009/01/21 19:04:04 UTC
svn commit: r736356 [1/2] - in /lenya/sandbox/access_control_redesign/src:
java/org/apache/lenya/ac/ modules-core/ac/config/
modules-core/ac/java/src/org/apache/lenya/ac/attr/antlr/
modules-core/ac/java/src/org/apache/lenya/ac/file/ modules-core/ac/jav...
Author: andreas
Date: Wed 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", "alice@test.com", "secret");
editorRole.save();
Modified: lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java?rev=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)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org