svn commit: r719100 - in /lenya/sandbox/access_control_redesign/src/modules: blog/java/src/org/apache/lenya/cms/site/usecases/ contactform/java/src/org/apache/lenya/cms/contactform/ editors/java/src/org/apache/lenya/cms/editors/ lucene/java/src/org/apa...

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Wed Nov 19 14:35:09 2008
New Revision: 719100

URL: http://svn.apache.org/viewvc?rev=719100&view=rev
Log:
Committing changes to modules.

Added:
    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
Modified:
    lenya/sandbox/access_control_redesign/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java
    lenya/sandbox/access_control_redesign/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java
    lenya/sandbox/access_control_redesign/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.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/InboxModule.java
    lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java
    lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.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/EmailNotifier.java
    lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Message.java
    lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java
    lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java
    lenya/sandbox/access_control_redesign/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
    lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
    lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java

Modified: lenya/sandbox/access_control_redesign/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java Wed Nov 19 14:35:09 2008
@@ -257,7 +257,7 @@
             throw new RuntimeException("Element entry/author/name not found.");
         }
 
-        DocumentHelper.setSimpleElementText(element, identity.getUser().getId());
+        DocumentHelper.setSimpleElementText(element, identity.getUserReference().getId());
 
         // Replace date created, issued and modified
         DateFormat datefmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

Modified: lenya/sandbox/access_control_redesign/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java Wed Nov 19 14:35:09 2008
@@ -23,8 +23,11 @@
 import org.apache.lenya.ac.User;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.cms.usecase.AbstractUsecase;
+import org.apache.lenya.notification.Address;
 import org.apache.lenya.notification.Message;
 import org.apache.lenya.notification.NotificationUtil;
+import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
 
 /**
  * Contact form. The recipient user ID is set using the "recipient" parameter. The sender user ID is
@@ -68,18 +71,17 @@
         String senderUserId = getParameterAsString(SENDER);
         String recipientUserId = getParameterAsString(RECIPIENT);
 
-        User sender = getUser(senderUserId);
+        Address sender = new UserAddress(getUser(senderUserId));
         User recipient = getUser(recipientUserId);
-        User[] recipients = { recipient };
+        UserAddress[] recipients = { new UserAddress(recipient) };
 
         String name = getParameterAsString(NAME);
         String body = getParameterAsString(MESSAGE);
         String from = getParameterAsString(FROM);
 
-        Message message = new Message("Contact form submitted by " + name + " (" + from + ")",
-                new String[0],
-                body,
-                new String[0],
+        Message message = new Message(new Text("Contact form submitted by " + name + " (" + from + ")",
+                false),
+                new Text(body, false),
                 sender,
                 recipients);
         

Modified: lenya/sandbox/access_control_redesign/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java Wed Nov 19 14:35:09 2008
@@ -24,7 +24,7 @@
 import java.util.Map;
 
 import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.UserReference;
 import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
 import org.apache.lenya.cms.linking.LinkRewriter;
 import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
@@ -56,9 +56,9 @@
 
         setParameter(DOCUMENT, getSourceDocument());
         try {
-            User user = getSession().getIdentity().getUser();
-            if (user != null) {
-                setParameter("creator", user.getId());
+            UserReference userRef = getSession().getIdentity().getUserReference();
+            if (userRef != null) {
+                setParameter("creator", userRef.getId());
             }
         } catch (final Exception e) {
             throw new RuntimeException(e);

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=719100&r1=719099&r2=719100&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 Nov 19 14:35:09 2008
@@ -17,7 +17,6 @@
 package org.apache.cocoon.transformation;
 
 import java.io.IOException;
-import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.Map;
@@ -30,6 +29,7 @@
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.components.search.Index;
@@ -40,14 +40,20 @@
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.Identifiable;
+import org.apache.lenya.ac.AccessController;
+import org.apache.lenya.ac.AccessControllerResolver;
+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;
 import org.apache.lenya.notification.NotificationUtil;
+import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
+import org.apache.lenya.util.ServletHelper;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -651,18 +657,17 @@
 
         try {
             Session session = RepositoryUtil.getSession(this.manager, this.request);
-            User sender = session.getIdentity().getUser();
-            UserManager userManager = (UserManager) sender.getItemManager();
+            User user = getErrorMessageRecipient();
+            Address sender = new UserAddress(user);
+            UserManager userManager = (UserManager) user.getItemManager();
             User recipient = userManager.getUser(this.notificationRecipient);
-            Identifiable[] recipients = { recipient };
+            Address[] recipients = { new UserAddress(recipient) };
 
-            String subject = "indexing-failed-subject";
-            String[] subjectParams = new String[0];
-            String body = "indexing-failed-body";
+            Text subject = new Text("indexing-failed-subject", true);
             String[] bodyParams = { this.pubId, this.area, this.uuid, this.language, msg };
+            Text body = new Text("indexing-failed-body", bodyParams);
 
-            Message message = new Message(subject, subjectParams, body, bodyParams, sender,
-                    recipients);
+            Message message = new Message(subject, body, sender, recipients);
             NotificationUtil.notify(this.manager, message);
 
             getLogger().error(
@@ -680,6 +685,43 @@
          * new SAXException(msg, ex); }
          */
     }
+    
+    protected User getErrorMessageRecipient() {
+
+        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);
+                    }
+                    selector.release(acResolver);
+                }
+                this.manager.release(selector);
+            }
+        }
+    }
+
 
     /**
      * Close the indexer

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java Wed Nov 19 14:35:09 2008
@@ -23,13 +23,17 @@
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.components.modules.input.AbstractInputModule;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
+import org.apache.lenya.ac.AccessController;
+import org.apache.lenya.ac.AccessControllerResolver;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.util.ServletHelper;
 
 /**
  * <p>
@@ -53,12 +57,23 @@
 
         Object value = null;
         if (name.equals(NEW_MESSAGE_COUNT)) {
+            ServiceSelector selector = null;
+            AccessControllerResolver acResolver = null;
+            AccessController accessController = null;
             InboxManager inboxManager = null;
             try {
-                inboxManager = (InboxManager) this.manager.lookup(InboxManager.ROLE);
+                selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+                        + "Selector");
+                acResolver = (AccessControllerResolver) selector
+                        .select(AccessControllerResolver.DEFAULT_RESOLVER);
+                
                 Request request = ObjectModelHelper.getRequest(objectModel);
+                String webappUrl = ServletHelper.getWebappURI(request);
+                accessController = acResolver.resolveAccessController(webappUrl);
+                inboxManager = (InboxManager) this.manager.lookup(InboxManager.ROLE);
                 Session session = RepositoryUtil.getSession(manager, request);
-                User user = session.getIdentity().getUser();
+                String userId = session.getIdentity().getUserReference().getId();
+                User user = accessController.getAccreditableManager().getUserManager().getUser(userId);
                 if (user == null) {
                     return "0";
                 } else {
@@ -76,6 +91,15 @@
             } catch (Exception e) {
                 throw new ConfigurationException("Attribute [" + name + "]: ", e);
             } finally {
+                if (selector != null) {
+                    if (acResolver != null) {
+                        if (accessController != null) {
+                            acResolver.release(accessController);
+                        }
+                        selector.release(acResolver);
+                    }
+                    this.manager.release(selector);
+                }
                 if (inboxManager != null) {
                     this.manager.release(inboxManager);
                 }

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java Wed Nov 19 14:35:09 2008
@@ -17,7 +17,11 @@
  */
 package org.apache.lenya.inbox.usecases;
 
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.lenya.ac.AccessController;
+import org.apache.lenya.ac.AccessControllerResolver;
 import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.cms.usecase.AbstractUsecase;
 import org.apache.lenya.inbox.InboxManager;
 import org.apache.lenya.inbox.InboxMessage;
@@ -30,18 +34,41 @@
     protected void initParameters() {
         super.initParameters();
         
-        User user = getSession().getIdentity().getUser();
-        setParameter("user", user);
-        
+        ServiceSelector selector = null;
+        AccessControllerResolver acResolver = null;
+        AccessController accessController = null;
         InboxManager inboxManager = null;
+
         try {
+            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+                    + "Selector");
+            acResolver = (AccessControllerResolver) selector
+                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
+            accessController = acResolver.resolveAccessController(getSourceURL());
             inboxManager = (InboxManager) this.manager.lookup(InboxManager.ROLE);
+
+            UserManager userManager = accessController.getAccreditableManager().getUserManager();
+            String userId = getSession().getIdentity().getUserReference().getId();
+            
+            User user = userManager.getUser(userId);
+            setParameter("user", user);
+            
             org.apache.lenya.inbox.Inbox inbox = inboxManager.getInbox(user);
             setParameter("inbox", inbox);
+            
         } catch (Exception e) {
             throw new RuntimeException(e);
-        }
-        finally {
+
+        } finally {
+            if (selector != null) {
+                if (acResolver != null) {
+                    if (accessController != null) {
+                        acResolver.release(accessController);
+                    }
+                    selector.release(acResolver);
+                }
+                this.manager.release(selector);
+            }
             if (inboxManager != null) {
                 this.manager.release(inboxManager);
             }

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java Wed Nov 19 14:35:09 2008
@@ -17,12 +17,17 @@
  */
 package org.apache.lenya.inbox.usecases;
 
-import org.apache.lenya.ac.Identifiable;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.lenya.ac.AccessController;
+import org.apache.lenya.ac.AccessControllerResolver;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.ac.UserManager;
 import org.apache.lenya.cms.usecase.AbstractUsecase;
+import org.apache.lenya.notification.Address;
 import org.apache.lenya.notification.Message;
 import org.apache.lenya.notification.NotificationUtil;
+import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
 import org.apache.lenya.util.Assert;
 
 /**
@@ -33,18 +38,37 @@
     protected void initParameters() {
         super.initParameters();
 
-        User user = getSession().getIdentity().getUser();
-        setParameter("user", user);
-
+        ServiceSelector selector = null;
+        AccessControllerResolver acResolver = null;
+        AccessController accessController = null;
         try {
-            UserManager userManager = user.getAccreditableManager().getUserManager();
+            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+                    + "Selector");
+            acResolver = (AccessControllerResolver) selector
+                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
+            accessController = acResolver.resolveAccessController(getSourceURL());
+
+            UserManager userManager = accessController.getAccreditableManager().getUserManager();
+            String userId = getSession().getIdentity().getUserReference().getId();
+            User user = userManager.getUser(userId);
+            setParameter("user", user);
+
             User[] users = userManager.getUsers();
             setParameter("users", users);
-
         } catch (Exception e) {
             throw new RuntimeException(e);
-        }
 
+        } finally {
+            if (selector != null) {
+                if (acResolver != null) {
+                    if (accessController != null) {
+                        acResolver.release(accessController);
+                    }
+                    selector.release(acResolver);
+                }
+                this.manager.release(selector);
+            }
+        }
     }
 
     protected void doCheckExecutionConditions() throws Exception {
@@ -74,25 +98,44 @@
     protected void doExecute() throws Exception {
         super.doExecute();
 
-        String recipientId = getRecipient();
-        User sender = getSession().getIdentity().getUser();
-        User recipient;
-
+        ServiceSelector selector = null;
+        AccessControllerResolver acResolver = null;
+        AccessController accessController = null;
         try {
-            UserManager userManager = sender.getAccreditableManager().getUserManager();
-            recipient = userManager.getUser(recipientId);
+            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+                    + "Selector");
+            acResolver = (AccessControllerResolver) selector
+                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
+            accessController = acResolver.resolveAccessController(getSourceURL());
+
+            UserManager userManager = accessController.getAccreditableManager().getUserManager();
+            String userId = getSession().getIdentity().getUserReference().getId();
+            User sender = userManager.getUser(userId);
+            Address senderAddress = new UserAddress(sender);
+
+            String recipientId = getRecipient();
+            User recipient = userManager.getUser(recipientId);
             Assert.notNull("user " + recipientId, recipient);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
 
-        Identifiable[] recipients = { recipient };
-        String subject = getSubject();
-        String body = getBody();
-
-        Message message = new Message(subject, new String[0], body, new String[0], sender,
-                recipients);
-        NotificationUtil.notify(this.manager, message);
+            Address[] recipients = { new UserAddress(recipient) };
+            String subject = getSubject();
+            String body = getBody();
+
+            Message message = new Message(new Text(subject, new String[0]), new Text(body,
+                    new String[0]), senderAddress, recipients);
+            NotificationUtil.notify(this.manager, message);
+
+        } finally {
+            if (selector != null) {
+                if (acResolver != null) {
+                    if (accessController != null) {
+                        acResolver.release(accessController);
+                    }
+                    selector.release(acResolver);
+                }
+                this.manager.release(selector);
+            }
+        }
 
     }
 

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=719100&r1=719099&r2=719100&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 Nov 19 14:35:09 2008
@@ -27,13 +27,16 @@
 import org.apache.axis.components.uuid.UUIDGenFactory;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Identifiable;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.inbox.Inbox;
 import org.apache.lenya.inbox.InboxMessage;
+import org.apache.lenya.notification.Address;
+import org.apache.lenya.notification.GroupAddress;
 import org.apache.lenya.notification.Message;
 import org.apache.lenya.notification.Notifier;
+import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
 import org.apache.lenya.util.Assert;
 import org.apache.lenya.xml.DocumentHelper;
 import org.apache.lenya.xml.NamespaceHelper;
@@ -117,7 +120,7 @@
                     }
                     
                     String senderId = messageElements[i].getAttribute("sender");
-                    User sender = getUser(senderId);
+                    Address sender = new UserAddress(getUser(senderId));
 
                     Element recipientElement = helper.getFirstChild(messageElements[i],
                             "recipients");
@@ -125,17 +128,17 @@
                     Element[] userElements = helper.getChildren(recipientElement, "user");
                     Element[] groupElements = helper.getChildren(recipientElement, "group");
 
-                    Identifiable[] recipients = new Identifiable[userElements.length
+                    Address[] recipients = new Address[userElements.length
                             + groupElements.length];
 
                     for (int u = 0; u < userElements.length; u++) {
                         String userId = userElements[u].getAttribute("id");
-                        recipients[u] = getUser(userId);
+                        recipients[u] = new UserAddress(getUser(userId));
                     }
 
                     for (int g = 0; g < groupElements.length; g++) {
                         String groupId = groupElements[g].getAttribute("id");
-                        recipients[userElements.length + g] = getGroup(groupId);
+                        recipients[userElements.length + g] = new GroupAddress(getGroup(groupId));
                     }
 
                     Element bodyElement = helper.getFirstChild(messageElements[i], "body");
@@ -163,7 +166,7 @@
                     }
                     boolean read = Boolean.valueOf(readString).booleanValue();
 
-                    Message message = new Message(subject, subjectParams, body, bodyParams, sender,
+                    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);
@@ -223,13 +226,13 @@
             
             Element messageElement = helper.createElement("message");
             helper.getDocument().getDocumentElement().appendChild(messageElement);
-            User sender = (User) message.getSender();
+            Address sender = message.getSenderAddress();
             messageElement.setAttribute("sender", sender.getId());
 
             Element recipientsElement = helper.createElement("recipients");
             messageElement.appendChild(recipientsElement);
 
-            Identifiable[] recipients = message.getRecipients();
+            Address[] recipients = message.getRecipientAddresses();
             for (int r = 0; r < recipients.length; r++) {
                 if (recipients[r] instanceof User) {
                     Element userElement = helper.createElement("user");
@@ -244,21 +247,21 @@
 
             Element subjectElement = helper.createElement("subject");
             messageElement.appendChild(subjectElement);
-            Element subjectTextElement = helper.createElement("text", message.getSubject());
+            Element subjectTextElement = helper.createElement("text", message.getSubjectText().getText());
             subjectElement.appendChild(subjectTextElement);
-            String[] subjectParams = message.getSubjectParameters();
+            Text[] subjectParams = message.getSubjectText().getParameters();
             for (int p = 0; p < subjectParams.length; p++) {
-                Element paramElement = helper.createElement("param", subjectParams[p]);
+                Element paramElement = helper.createElement("param", subjectParams[p].getText());
                 subjectElement.appendChild(paramElement);
             }
 
             Element bodyElement = helper.createElement("body");
             messageElement.appendChild(bodyElement);
-            Element bodyTextElement = helper.createElement("text", message.getBody());
+            Element bodyTextElement = helper.createElement("text", message.getBodyText().getText());
             bodyElement.appendChild(bodyTextElement);
-            String[] bodyParams = message.getBodyParameters();
+            Text[] bodyParams = message.getBodyText().getParameters();
             for (int p = 0; p < bodyParams.length; p++) {
-                Element paramElement = helper.createElement("param", bodyParams[p]);
+                Element paramElement = helper.createElement("param", bodyParams[p].getText());
                 bodyElement.appendChild(paramElement);
             }
             

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=719100&r1=719099&r2=719100&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 Nov 19 14:35:09 2008
@@ -53,7 +53,7 @@
 
         Set noDuplicates = new HashSet();
 
-        Identifiable[] recipients = message.getRecipients();
+        Address[] recipients = message.getRecipientAddresses();
 
         for (int i = 0; i < recipients.length; i++) {
             if (recipients[i] instanceof Group) {
@@ -144,7 +144,7 @@
                 String body = DocumentHelper.getSimpleElementText(bodyElement);
 
                 return new Message(new Text(subject, false), new Text(body, false), message
-                        .getSender(), message.getRecipients());
+                        .getSenderAddress(), message.getRecipientAddresses());
             } else {
                 // this happens in the test
                 getLogger().info("cocoon protocol not available, not translating message");

Added: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Address.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Address.java?rev=719100&view=auto
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Address.java (added)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Address.java Wed Nov 19 14:35:09 2008
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.lenya.notification;
+
+/**
+ * A message recipient address.
+ */
+public interface Address {
+    
+    String getId();
+
+}

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java Wed Nov 19 14:35:09 2008
@@ -25,7 +25,6 @@
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.cocoon.mail.MailSender;
-import org.apache.lenya.ac.Identifiable;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.inbox.InboxNotifier;
 
@@ -43,7 +42,7 @@
             return;
         }
 
-        Identifiable sender = translatedMessage.getSender();
+        Address sender = translatedMessage.getSenderAddress();
         MailSender mailer = null;
         try {
             mailer = (MailSender) this.manager.lookup(MailSender.ROLE);
@@ -54,12 +53,12 @@
             }
 
             mailer.setTo(recipient.getEmail());
-            if (sender instanceof User) {
-                mailer.setFrom(((User) sender).getEmail());
+            if (sender instanceof UserAddress) {
+                mailer.setFrom(((UserAddress) sender).getUser().getEmail());
             }
 
-            mailer.setSubject(translatedMessage.getSubject());
-            mailer.setBody(translatedMessage.getBody(), "text/plain; charset=UTF-8");
+            mailer.setSubject(translatedMessage.getSubjectText().getText());
+            mailer.setBody(translatedMessage.getBodyText().getText(), "text/plain; charset=UTF-8");
             mailer.send();
         
         } catch (AddressException e) {

Added: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/GroupAddress.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/GroupAddress.java?rev=719100&view=auto
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/GroupAddress.java (added)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/GroupAddress.java Wed Nov 19 14:35:09 2008
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.lenya.notification;
+
+import org.apache.lenya.ac.Group;
+import org.apache.lenya.util.Assert;
+
+public class GroupAddress implements Address {
+    
+    private Group group;
+
+    public GroupAddress(Group group) {
+        Assert.notNull("group", group);
+        this.group = group;
+    }
+
+    public String getId() {
+        return getGroup().getId();
+    }
+
+    private Group getGroup() {
+        return this.group;
+    }
+
+}

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Message.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Message.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Message.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/Message.java Wed Nov 19 14:35:09 2008
@@ -17,10 +17,8 @@
  */
 package org.apache.lenya.notification;
 
-import java.util.Arrays;
 import java.util.Date;
 
-import org.apache.lenya.ac.Identifiable;
 import org.apache.lenya.util.Assert;
 
 /**
@@ -31,17 +29,17 @@
     private Text subject;
     private Text body;
 
-    private Identifiable sender;
-    private Identifiable[] recipients;
     private Date time;
-    
+    private Address sender;
+    private Address[] recipients;
+   
     /**
      * @param subject The subject.
      * @param body The body.
      * @param sender The sender.
      * @param recipients The recipients.
      */
-    public Message(Text subject, Text body, Identifiable sender, Identifiable[] recipients) {
+    public Message(Text subject, Text body, Address sender, Address[] recipients) {
         Assert.notNull("subject", subject);
         Assert.notNull("body", body);
         Assert.notNull("sender", sender);
@@ -53,22 +51,7 @@
         this.time = new Date();
     }
 
-    /**
-     * Constructor.
-     * @param subject The subject.
-     * @param subjectParams The subject parameters.
-     * @param body The body.
-     * @param bodyParams The body parameters.
-     * @param sender The sender.
-     * @param recipients The recipients.
-     * @deprecated Use {@link #Message(Text, Text, Identifiable, Identifiable[])}Êinstead.
-     */
-    public Message(String subject, String[] subjectParams, String body, String[] bodyParams,
-            Identifiable sender, Identifiable[] recipients) {
-        this(new Text(subject, subjectParams), new Text(body, bodyParams), sender, recipients);
-    }
-
-    /**
+   /**
      * Determine if this message has parameters
      * @return true if the message has parameters
      */
@@ -132,22 +115,6 @@
     }
     
     /**
-     * @return The sender.
-     */
-    public Identifiable getSender() {
-        return this.sender;
-    }
-    
-    /**
-     * @return The recipients.
-     */
-    public Identifiable[] getRecipients() {
-        // don't expose the internal array
-        return (Identifiable[]) Arrays.asList(this.recipients).toArray(
-                new Identifiable[this.recipients.length]);
-    }
-    
-    /**
      * @return The time when the message was sent.
      */
     public Date getTime() {
@@ -167,5 +134,19 @@
     public Text getBodyText() {
         return this.body;
     }
+    
+    /**
+     * @return The sender address.
+     */
+    public Address getSenderAddress() {
+        return this.sender;
+    }
+    
+    /**
+     * @return The recipient addresses.
+     */
+    public Address[] getRecipientAddresses() {
+        return this.recipients;
+    }
 
 }

Added: lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/UserAddress.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/UserAddress.java?rev=719100&view=auto
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/UserAddress.java (added)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/src/org/apache/lenya/notification/UserAddress.java Wed Nov 19 14:35:09 2008
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.lenya.notification;
+
+import org.apache.lenya.ac.User;
+import org.apache.lenya.util.Assert;
+
+public class UserAddress implements Address {
+    
+    private User user;
+
+    public UserAddress(User user) {
+        Assert.notNull("user", user);
+        this.user = user;
+    }
+    
+    public User getUser() {
+        return this.user;
+    }
+
+    public String getId() {
+        return getUser().getId();
+    }
+
+}

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java Wed Nov 19 14:35:09 2008
@@ -17,51 +17,58 @@
  */
 package org.apache.lenya.inbox;
 
-import org.apache.lenya.ac.Identifiable;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.inbox.xml.XmlSourceInbox;
 import org.apache.lenya.notification.AbstractNotificationTest;
+import org.apache.lenya.notification.Address;
 import org.apache.lenya.notification.Message;
+import org.apache.lenya.notification.Text;
+import org.apache.lenya.notification.UserAddress;
 
 /**
  * Inbox test.
  */
 public class InboxTest extends AbstractNotificationTest {
-    
+
     protected static final String SUBJECT = "hello";
 
     /**
      * The test.
-     * @throws Exception if an error occurs.
+     * 
+     * @throws Exception
+     *             if an error occurs.
      */
     public void testInbox() throws Exception {
-        
+
         User lenya = getAccreditableManager().getUserManager().getUser("lenya");
         Inbox inbox = getInbox(lenya);
-        
+
         cleanUp(inbox, SUBJECT);
         assertFalse(containsMessage(inbox, SUBJECT));
-        
-        Identifiable[] recipients = { lenya };
 
-        Message message = new Message(SUBJECT, new String[0], "body", new String[0], lenya,
-                recipients);
+        Address sender = new UserAddress(lenya);
+        Address[] recipients = { sender };
+
+        Text subject = new Text(SUBJECT, new String[0]);
+        Text body = new Text("body", new String[0]);
+
+        Message message = new Message(subject, body, sender, recipients);
         InboxMessage inboxMessage = inbox.add(message);
-        
-        assertEquals(inboxMessage.getMessage().getSubject(), SUBJECT);
-        
+
+        assertEquals(inboxMessage.getMessage().getSubjectText().getText(), SUBJECT);
+
         assertFalse(inboxMessage.isMarkedAsRead());
         inboxMessage.markAsRead(true);
         assertTrue(inboxMessage.isMarkedAsRead());
-        
+
         XmlSourceInbox xmlInbox = new XmlSourceInbox(getManager(), lenya);
         assertTrue(containsMessage(xmlInbox, SUBJECT));
-        
+
         InboxMessage xmlMessage = getMessage(xmlInbox, SUBJECT);
         assertTrue(xmlMessage.isMarkedAsRead());
-        
+
         cleanUp(inbox, SUBJECT);
-        
+
     }
 
 }

Modified: lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java Wed Nov 19 14:35:09 2008
@@ -17,7 +17,6 @@
  */
 package org.apache.lenya.notification;
 
-import org.apache.lenya.ac.Identifiable;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.cms.observation.RepositoryEvent;
 import org.apache.lenya.cms.observation.RepositoryEventFactory;
@@ -44,10 +43,11 @@
         User lenya = getAccreditableManager().getUserManager().getUser("lenya");
         User alice = getAccreditableManager().getUserManager().getUser("alice");
 
-        Identifiable[] recipients = { alice };
+        Address[] recipients = { new UserAddress(alice) };
+        Text subject = new Text(SUBJECT, true);
+        Text body = new Text("body", true);
 
-        Message message = new Message(SUBJECT, new String[0], "body", new String[0], lenya,
-                recipients);
+        Message message = new Message(subject, body, new UserAddress(lenya), recipients);
         NotificationEventDescriptor descr = new NotificationEventDescriptor(message);
         RepositoryEvent event = RepositoryEventFactory.createEvent(getManager(), session,
                 getLogger(), descr);

Modified: lenya/sandbox/access_control_redesign/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java Wed Nov 19 14:35:09 2008
@@ -83,7 +83,7 @@
         this.acResolver = null;
         this.policyManager = null;
 
-        this.identity = Identity.getIdentity(this.request.getSession(false));
+        this.identity = (Identity) this.request.getSession(false).getAttribute(Identity.class.getName());
 
         try {
             String publicationId = par.getParameter(PARAMETER_PUBLICATION_ID);

Modified: lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java Wed Nov 19 14:35:09 2008
@@ -28,7 +28,7 @@
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.excalibur.source.TraversableSource;
 import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.UserReference;
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataException;
 import org.apache.lenya.cms.observation.DocumentEvent;
@@ -91,7 +91,7 @@
         String userId = null;
         Identity identity = getSession().getIdentity();
         if (identity != null) {
-            User user = identity.getUser();
+            UserReference user = identity.getUserReference();
             if (user != null) {
                 userId = user.getId();
             }

Modified: lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java?rev=719100&r1=719099&r2=719100&view=diff
==============================================================================
--- lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java (original)
+++ lenya/sandbox/access_control_redesign/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java Wed Nov 19 14:35:09 2008
@@ -144,7 +144,7 @@
     public synchronized void checkOutIn(Node node, short type, long time, boolean backup,
             boolean newVersion, boolean restrictedToSession) throws RevisionControlException {
 
-        String identity = node.getSession().getIdentity().getUser().getId();
+        String identity = node.getSession().getIdentity().getUserReference().getId();
 
         Vector entries = getEntries();
         if (entries.size() == 0) {
@@ -625,7 +625,7 @@
                 // not restricted to session
                 if (otherSessionId.equals(ALL_SESSIONS)) {
                     String otherUserId = entry.getIdentity();
-                    String userId = session.getIdentity().getUser().getId();
+                    String userId = session.getIdentity().getUserReference().getId();
                     return userId.equals(otherUserId);
                 }
                 // restricted to session
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.