Author: ludovic
Date: 2007-12-24 22:56:45 +0100 (Mon, 24 Dec 2007)
New Revision: 6457

Modified:
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationImpl.java
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/JoinRequestImpl.java
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/MembershipRequestImpl.java
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/test/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerTest.java
Log:
CURRIKI-1179 Fix invitation manager code

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationImpl.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationImpl.java
    2007-12-24 16:13:33 UTC (rev 6456)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationImpl.java
    2007-12-24 21:56:45 UTC (rev 6457)
@@ -71,6 +71,19 @@
         }
     }
 
+    /**
+     * Allows to load an invitation from a wiki document
+     * @param fullName
+     * @param manager
+     * @param context
+     * @throws XWikiException
+     */
+    public InvitationImpl(String fullName, InvitationManagerImpl manager, 
XWikiContext context)
+        throws XWikiException
+    {
+        super(fullName, manager, context);
+    }
+
     protected String getClassName() {
        return manager.getJoinRequestClassName("Invitation");
     }

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java
     2007-12-24 16:13:33 UTC (rev 6456)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java
     2007-12-24 21:56:45 UTC (rev 6457)
@@ -24,7 +24,6 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.io.UnsupportedEncodingException;
 
 import org.apache.commons.lang.RandomStringUtils;
 import org.apache.velocity.VelocityContext;
@@ -35,13 +34,12 @@
 
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
+import com.xpn.xwiki.api.Document;
 import com.xpn.xwiki.render.XWikiVelocityRenderer;
 import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.plugin.mailsender.MailSenderPlugin;
 import com.xpn.xwiki.plugin.mailsender.Mail;
 
-import javax.mail.MessagingException;
-
 /**
  * The default implementation for [EMAIL PROTECTED] InvitationManager}
  */
@@ -240,22 +238,22 @@
 
             String space = prototype.getSpace();
             String invitee = prototype.getInvitee();
-            if (space != null && invitee != null) {
+            if (!"".equals(space) && !"".equals(invitee)) {
                 Invitation invitation = getInvitation(space, invitee, context);
                 // find a better way of testing if the invitation is new
-                if (((XWikiDocument) invitation).isNew()) {
+                if (((Document) invitation).isNew()) {
                     return Collections.EMPTY_LIST;
                 }
                 List list = new ArrayList();
                 list.add(invitation);
                 return list;
-            } else if (space != null) {
+            } else if (!"".equals(space)) {
                 fromClause.append(", StringProperty as space");
                 whereClause
                         .append(" and obj.id=space.id.id and space.id.name='"
                                 + InvitationImpl.InvitationFields.SPACE + "' 
and space.value='" + space
                                 + "'");
-            } else if (invitee != null) {
+            } else if (!"".equals(invitee)) {
                 fromClause.append(" StringProperty as invitee");
                 whereClause.append(" and obj.id=invitee.id.id and 
invitee.id.name='"
                         + InvitationImpl.InvitationFields.INVITEE + "' and 
invitee.value='" + invitee
@@ -279,7 +277,7 @@
             }
 
             String inviter = prototype.getInviter();
-            if (inviter != null) {
+            if (!"".equals(inviter)) {
                 fromClause.append(" StringProperty as inviter");
                 whereClause.append(" and obj.id=inviter.id.id and 
inviter.id.name='"
                         + InvitationImpl.InvitationFields.INVITER + "' and 
inviter.value='" + inviter
@@ -287,14 +285,47 @@
             }
 
             String sql =
-                    "select distinct doc " + fromClause.toString() + " " + 
whereClause.toString();
-            return context.getWiki().getStore().search(sql, count, start, 
context);
+                    "select distinct doc.fullName " + fromClause.toString() + 
" " + whereClause.toString();
+
+            return wrapInvitations(context.getWiki().getStore().search(sql, 
count, start, context), context);
         } catch (XWikiException e) {
             e.printStackTrace();
             return Collections.EMPTY_LIST;
         }
     }
 
+    private List wrapInvitations(List list, XWikiContext context) {
+        ArrayList result = new ArrayList();
+        if (list==null)
+         return null;
+        for (int i=0;i<list.size();i++) {
+            String inviteDocName = (String) list.get(i);
+            try {
+                result.add(new InvitationImpl(inviteDocName, this, context));
+            } catch (XWikiException e) {
+                // let's not a single invitation break our requests
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+      private List wrapMembershipRequests(List list, XWikiContext context) {
+        ArrayList result = new ArrayList();
+        if (list==null)
+         return null;
+        for (int i=0;i<list.size();i++) {
+            String inviteDocName = (String) list.get(i);
+            try {
+                result.add(new MembershipRequestImpl(inviteDocName, this, 
context));
+            } catch (XWikiException e) {
+                // let's not a single invitation break our requests
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
     /**
      * [EMAIL PROTECTED]
      *
@@ -335,11 +366,13 @@
                                XWikiContext context)
     {
         try {
-            List roles = new ArrayList();
-            roles.add(role);
             Invitation prototype = createInvitation(null, space, context);
+            if ((role!=null)&&!"".equals(role)) {
+                List roles = new ArrayList();
+                roles.add(role);
+                prototype.setRoles(roles);
+            }
             prototype.setStatus(status);
-            prototype.setRoles(roles);
             return getInvitations(prototype, start, count, context);
         } catch (XWikiException e) {
             e.printStackTrace();
@@ -464,21 +497,21 @@
 
             String space = prototype.getSpace();
             String requester = prototype.getRequester();
-            if (space != null && requester != null) {
+            if (!"".equals(space) && !"".equals(requester)) {
                 MembershipRequest request = getMembershipRequest(space, 
requester, context);
                 // find a better way of testing if the request is new
-                if (((XWikiDocument) request).isNew()) {
+                if (((Document) request).isNew()) {
                     return Collections.EMPTY_LIST;
                 }
                 List list = new ArrayList();
                 list.add(request);
                 return list;
-            } else if (space != null) {
+            } else if (!"".equals(space)) {
                 fromClause.append(", StringProperty as space");
                 whereClause.append(" and obj.id=space.id.id and 
space.id.name='"
                         + MembershipRequestImpl.MembershipRequestFields.SPACE 
+ "' and space.value='"
                         + space + "'");
-            } else if (requester != null) {
+            } else if (!"".equals(requester)) {
                 fromClause.append(" StringProperty as requester");
                 whereClause.append(" and obj.id=requester.id.id and 
requester.id.name='"
                         + 
MembershipRequestImpl.MembershipRequestFields.REQUESTER
@@ -503,7 +536,7 @@
             }
 
             String responder = prototype.getResponder();
-            if (responder != null) {
+            if (!"".equals(responder)) {
                 fromClause.append(" StringProperty as responder");
                 whereClause.append(" and obj.id=responder.id.id and 
responder.id.name='"
                         + 
MembershipRequestImpl.MembershipRequestFields.RESPONDER
@@ -511,8 +544,8 @@
             }
 
             String sql =
-                    "select distinct doc " + fromClause.toString() + " " + 
whereClause.toString();
-            return context.getWiki().getStore().search(sql, count, start, 
context);
+                    "select distinct doc.fullName " + fromClause.toString() + 
" " + whereClause.toString();
+            return 
wrapMembershipRequests(context.getWiki().getStore().search(sql, count, start, 
context), context);
         } catch (XWikiException e) {
             e.printStackTrace();
             return Collections.EMPTY_LIST;
@@ -983,7 +1016,7 @@
             throws XWikiException
     {
         SpaceManager spaceManager = 
SpaceManagers.findSpaceManagerForSpace(space, context);
-        if (!spaceManager.userIsMember(space, user, context)) {
+        if (!spaceManager.isMember(space, user, context)) {
             spaceManager.addMember(space, user, context);
             if (roles != null && roles.size() > 0) {
                 spaceManager.addUserToRoles(space, user, roles, context);

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/JoinRequestImpl.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/JoinRequestImpl.java
   2007-12-24 16:13:33 UTC (rev 6456)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/JoinRequestImpl.java
   2007-12-24 21:56:45 UTC (rev 6457)
@@ -28,6 +28,7 @@
 import org.xwiki.plugin.invitationmanager.api.JoinRequest;
 
 import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.api.Document;
 
 /**
@@ -35,6 +36,7 @@
  */
 public abstract class JoinRequestImpl extends Document implements JoinRequest
 {
+
     public static interface JoinRequestFields
     {
         String REQUEST_DATE = "requestDate";
@@ -60,6 +62,12 @@
         this.manager = manager;
     }
 
+    public JoinRequestImpl(String fullName, InvitationManagerImpl manager, 
XWikiContext context) throws XWikiException {
+        this(manager, context);
+        // we initialize the request document
+        doc = context.getWiki().getDocument(fullName, context);
+    }
+
     /**
      * [EMAIL PROTECTED]
      * 

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/MembershipRequestImpl.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/MembershipRequestImpl.java
     2007-12-24 16:13:33 UTC (rev 6456)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/MembershipRequestImpl.java
     2007-12-24 21:56:45 UTC (rev 6457)
@@ -67,6 +67,20 @@
         }
     }
 
+    /**
+     * Allows to load an invitation from a wiki document
+     * @param fullName
+     * @param manager
+     * @param context
+     * @throws XWikiException
+     */
+    public MembershipRequestImpl(String fullName, InvitationManagerImpl 
manager, XWikiContext context)
+        throws XWikiException
+    {
+        super(fullName, manager, context);
+    }
+
+
     protected String getClassName() {
        return manager.getJoinRequestClassName("Invitation");
     }

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/test/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerTest.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/test/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerTest.java
     2007-12-24 16:13:33 UTC (rev 6456)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/test/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerTest.java
     2007-12-24 21:56:45 UTC (rev 6457)
@@ -131,8 +131,8 @@
     private void setUpSpaceManager()
     {
         mockXWikiStore = mock(SpaceManager.class, new Class[] {}, new Object[] 
{});
-        mockXWikiStore.stubs().method("userIsMember").will(
-            new CustomStub("Implements SpaceManager.userIsMember")
+        mockXWikiStore.stubs().method("isMember").will(
+            new CustomStub("Implements SpaceManager.isMember")
             {
                 public Object invoke(Invocation invocation) throws Throwable
                 {
@@ -171,14 +171,14 @@
             context.setUser(ADMIN);
             invitationManager.inviteUser(nonMember, SPACE, false, 
DEVELOPER_ROLE, context);
 
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
             assertFalse(getSpaceManager().getUsersForRole(SPACE, 
DEVELOPER_ROLE, context)
                 .contains(nonMember));
 
             context.setUser(nonMember);
             invitationManager.acceptInvitation(SPACE, context);
 
-            assertTrue(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertTrue(getSpaceManager().isMember(SPACE, nonMember, context));
             assertTrue(getSpaceManager().getUsersForRole(SPACE, 
DEVELOPER_ROLE, context)
                 .contains(nonMember));
         } catch (XWikiException e) {
@@ -194,14 +194,14 @@
             invitationManager.requestMembership(SPACE, "I love yout space", 
DEVELOPER_ROLE,
                 context);
 
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
             assertFalse(getSpaceManager().getUsersForRole(SPACE, 
DEVELOPER_ROLE, context)
                 .contains(nonMember));
 
             context.setUser(ADMIN);
             invitationManager.acceptMembership(SPACE, nonMember, context);
 
-            assertTrue(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertTrue(getSpaceManager().isMember(SPACE, nonMember, context));
             assertTrue(getSpaceManager().getUsersForRole(SPACE, 
DEVELOPER_ROLE, context)
                 .contains(nonMember));
         } catch (XWikiException e) {
@@ -213,7 +213,7 @@
     {
         try {
             String nonMember = "testCancelInvitation_nonMember";
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(ADMIN);
             invitationManager.inviteUser(nonMember, SPACE, false, context);
@@ -222,7 +222,7 @@
 
             assertEquals(JoinRequestStatus.CANCELLED, invitation.getStatus());
             assertNull(invitation.getResponseDate());
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
         } catch (XWikiException e) {
             assertTrue(false);
         }
@@ -232,7 +232,7 @@
     {
         try {
             String nonMember = "testCancelMembershipRequest_nonMember";
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(nonMember);
             invitationManager.requestMembership(SPACE, "I love your space", 
context);
@@ -241,7 +241,7 @@
 
             assertEquals(JoinRequestStatus.CANCELLED, request.getStatus());
             assertNull(request.getResponseDate());
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
         } catch (XWikiException e) {
             assertTrue(false);
         }
@@ -307,7 +307,7 @@
     {
         try {
             String nonMember = "testInviteUser_nonMember";
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(ADMIN);
             invitationManager.inviteUser(nonMember, SPACE, false, context);
@@ -323,7 +323,7 @@
             context.setUser(nonMember);
             invitationManager.acceptInvitation(SPACE, context);
 
-            assertTrue(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertTrue(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(ADMIN);
             invitationManager.inviteUser(nonMember, SPACE, false, context);
@@ -342,7 +342,7 @@
     {
         try {
             String nonMember = "testRejectInvitation_nonMember";
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(ADMIN);
             invitationManager.inviteUser(nonMember, SPACE, false, context);
@@ -353,7 +353,7 @@
 
             assertEquals(JoinRequestStatus.REFUSED, invitation.getStatus());
             assertNotNull(invitation.getResponseDate());
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
         } catch (XWikiException e) {
             assertTrue(false);
         }
@@ -363,7 +363,7 @@
     {
         try {
             String nonMember = "testRejectMembership_nonMember";
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(nonMember);
             invitationManager.requestMembership(SPACE, "I love your space", 
context);
@@ -374,7 +374,7 @@
 
             assertEquals(JoinRequestStatus.REFUSED, request.getStatus());
             assertNotNull(request.getResponseDate());
-            assertFalse(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertFalse(getSpaceManager().isMember(SPACE, nonMember, context));
         } catch (XWikiException e) {
             assertTrue(false);
         }
@@ -398,7 +398,7 @@
             context.setUser(ADMIN);
             invitationManager.acceptMembership(SPACE, nonMember, context);
 
-            assertTrue(getSpaceManager().userIsMember(SPACE, nonMember, 
context));
+            assertTrue(getSpaceManager().isMember(SPACE, nonMember, context));
 
             context.setUser(nonMember);
             invitationManager.requestMembership(SPACE, "I really really love 
you space", context);

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to