Author: mflorea
Date: 2008-01-10 13:37:20 +0100 (Thu, 10 Jan 2008)
New Revision: 6723

Modified:
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManager.java
   
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManagerException.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/plugin/InvitationManagerPluginApi.java
Log:
CURRIKI-1338: Message while inviting existing member

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManager.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManager.java
  2008-01-10 12:28:56 UTC (rev 6722)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManager.java
  2008-01-10 12:37:20 UTC (rev 6723)
@@ -252,33 +252,36 @@
      *            should be a mailing list address
      * @param context A XWikiContext instance
      */
-    boolean inviteUser(String user, String space, boolean open, XWikiContext 
context) throws InvitationManagerException;
+    void inviteUser(String user, String space, boolean open, XWikiContext 
context)
+        throws InvitationManagerException;
 
     /**
      * @param role The role the user will have in the space, provided he 
accepts the invitation
      * @see #inviteUser(String, String, XWikiContext)
      */
-    boolean inviteUser(String user, String space, boolean open, String role, 
XWikiContext context) throws InvitationManagerException;
+    void inviteUser(String user, String space, boolean open, String role, 
XWikiContext context)
+        throws InvitationManagerException;
 
     /**
      * @param roles The list of roles the user will have in the space, 
provided he accepts the
      *            invitation
      * @see #inviteUser(String, String, XWikiContext)
      */
-    boolean inviteUser(String user, String space, boolean open, List roles, 
XWikiContext context) throws InvitationManagerException;
+    void inviteUser(String user, String space, boolean open, List roles, 
XWikiContext context)
+        throws InvitationManagerException;
 
     /**
      * @param templateMail Custom e-mail template
      * @see #inviteUser(String, String, List, XWikiContext)
      */
-    boolean inviteUser(String user, String space, boolean open, List roles, 
String templateMail,
+    void inviteUser(String user, String space, boolean open, List roles, 
String templateMail,
         XWikiContext context) throws InvitationManagerException;
 
     /**
      * @param map A map of additional parameters for the invitation
      * @see #inviteUser(String, String, List, String, XWikiContext)
      */
-    boolean inviteUser(String user, String space, boolean open, List roles, 
String templateMail,
+    void inviteUser(String user, String space, boolean open, List roles, 
String templateMail,
         Map map, XWikiContext context) throws InvitationManagerException;
 
     /**

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManagerException.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManagerException.java
 2008-01-10 12:28:56 UTC (rev 6722)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/api/InvitationManagerException.java
 2008-01-10 12:37:20 UTC (rev 6723)
@@ -25,15 +25,17 @@
 public class InvitationManagerException extends XWikiException {
     public static final int MODULE_PLUGIN_INVITATIONMANAGER = 101;
 
-    public static final int ERROR_INVITATION_ALREADY_EXISTS = 101001;
-    public static final int ERROR_INVITATION_DATA_INVALID = 101002;
-    public static final int ERROR_INVITATION_SENDER_EMAIL_INVALID = 101003;
-    public static final int ERROR_INVITATION_TARGET_EMAIL_INVALID = 101004;
-    public static final int ERROR_INVITATION_CANNOT_FIND_EMAIL_ADDRESS = 
101005;
-    public static final int ERROR_INVITATION_CURRIKI_ID_INVALID = 101006;
-    public static final int ERROR_INVITATION_ERROR_FINDING_USER = 101007;
+    public static final int ERROR_INVITATION_INVITEE_MISSING = 101001;
+    public static final int ERROR_INVITATION_INVITEE_EMAIL_INVALID = 101002;
+    public static final int ERROR_INVITATION_ALREADY_EXISTS = 101003;
+    public static final int ERROR_INVITATION_ALREADY_MEMBER = 101004;
+    public static final int ERROR_INVITATION_SENDER_EMAIL_INVALID = 101005;
+    public static final int ERROR_INVITATION_TARGET_EMAIL_INVALID = 101006;
+    public static final int ERROR_INVITATION_SENDING_EMAIL_FAILED = 101007;
     public static final int 
ERROR_INVITATION_MANAGER_REQUIRES_MAILSENDER_PLUGIN = 101008;
-    public static final int ERROR_INVITATION_SENDING_EMAIL_FAILED = 101009;
+    
+    public static final int ERROR_INVITATION_DATA_INVALID = 101009;
+    public static final int ERROR_INVITATION_CANNOT_FIND_EMAIL_ADDRESS = 
101010;
 
     public InvitationManagerException(){
        }

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
     2008-01-10 12:28:56 UTC (rev 6722)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java
     2008-01-10 12:37:20 UTC (rev 6723)
@@ -846,25 +846,38 @@
      * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String,
      *      boolean, List, String, Map, XWikiContext)
      */
-    public boolean inviteUser(String wikiNameOrMailAddress, String space, 
boolean open,
-        List roles, String templateMail, Map map, XWikiContext context)
-        throws InvitationManagerException
+    public void inviteUser(String wikiNameOrMailAddress, String space, boolean 
open, List roles,
+        String templateMail, Map map, XWikiContext context) throws 
InvitationManagerException
     {
-        String invitee;
-        String registeredUser = null;
         try {
+            if (wikiNameOrMailAddress == null || 
wikiNameOrMailAddress.trim().length() == 0) {
+                throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
+                    
InvitationManagerException.ERROR_INVITATION_INVITEE_MISSING,
+                    "Invitee missing");
+            }
+
             wikiNameOrMailAddress = wikiNameOrMailAddress.trim();
-            registeredUser = getRegisteredUser(wikiNameOrMailAddress, context);
+            String registeredUser = getRegisteredUser(wikiNameOrMailAddress, 
context);
+            String invitee;
             if (registeredUser == null) {
+                // it should be an e-mail address
+                if (!isEmailAddress(wikiNameOrMailAddress)) {
+                    throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
+                        
InvitationManagerException.ERROR_INVITATION_INVITEE_EMAIL_INVALID,
+                        "Invalid invitee e-mail address");
+                }
                 // hide the e-mail address (only for invitation document name)
                 invitee = encodeEmailAddress(wikiNameOrMailAddress);
             } else {
                 invitee = registeredUser;
                 if (isMember(space, invitee, context)) {
                     addToAlreadyMember(invitee, context);
-                    return false;
+                    throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
+                        
InvitationManagerException.ERROR_INVITATION_ALREADY_MEMBER,
+                        "Already member");
                 }
             }
+
             // create the invitation object
             Invitation invitation = createInvitation(invitee, space, context);
 
@@ -876,7 +889,9 @@
                     || JoinRequestStatus.SENT.equals(status)) {
                     // is's a new one
                     addToAlreadyInvited(invitee, context);
-                    return false;
+                    throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
+                        
InvitationManagerException.ERROR_INVITATION_ALREADY_EXISTS,
+                        "Already invited");
                 } else {
                     // is's an old one
                     // in this case we overwrite the invitation
@@ -907,7 +922,8 @@
 
             // save invitation after
             invitation.saveWithProgrammingRights();
-            return true;
+        } catch (InvitationManagerException e) {
+            throw e;
         } catch (XWikiException e) {
             throw new InvitationManagerException(e);
         }
@@ -915,51 +931,60 @@
 
     /**
      * [EMAIL PROTECTED]
-     *
-     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String, boolean, List, String, XWikiContext)
+     * 
+     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String,
+     *      boolean, List, String, XWikiContext)
      */
-    public boolean inviteUser(String user, String space, boolean open, List 
roles,
-                           String templateMail, XWikiContext context) throws 
InvitationManagerException {
-        return inviteUser(user, space, open, roles, templateMail, 
Collections.EMPTY_MAP, context);
+    public void inviteUser(String user, String space, boolean open, List roles,
+        String templateMail, XWikiContext context) throws 
InvitationManagerException
+    {
+        inviteUser(user, space, open, roles, templateMail, 
Collections.EMPTY_MAP, context);
     }
 
     /**
      * [EMAIL PROTECTED]
-     *
-     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String, boolean, List, XWikiContext)
+     * 
+     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String,
+     *      boolean, List, XWikiContext)
      */
-    public boolean inviteUser(String user, String space, boolean open, List 
roles,
-                           XWikiContext context) throws 
InvitationManagerException {
+    public void inviteUser(String user, String space, boolean open, List roles,
+        XWikiContext context) throws InvitationManagerException
+    {
         String templateMail =
-                getDefaultTemplateMailDocumentName(space, "Invitation", 
JoinRequestAction.SEND,
-                        context);
-        return inviteUser(user, space, open, roles, templateMail, context);
+            getDefaultTemplateMailDocumentName(space, "Invitation", 
JoinRequestAction.SEND,
+                context);
+        inviteUser(user, space, open, roles, templateMail, context);
     }
 
     /**
      * [EMAIL PROTECTED]
-     *
-     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String, boolean, String, XWikiContext)
+     * 
+     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String,
+     *      boolean, String, XWikiContext)
      */
-    public boolean inviteUser(String user, String space, boolean open, String 
role,
-                           XWikiContext context) throws 
InvitationManagerException {
+    public void inviteUser(String user, String space, boolean open, String 
role,
+        XWikiContext context) throws InvitationManagerException
+    {
         List roles = new ArrayList();
         roles.add(role);
-        return inviteUser(user, space, open, roles, context);
+        inviteUser(user, space, open, roles, context);
     }
 
     /**
      * [EMAIL PROTECTED]
-     *
-     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String, boolean, XWikiContext)
+     * 
+     * @see 
org.xwiki.plugin.invitationmanager.api.InvitationManager#inviteUser(String, 
String,
+     *      boolean, XWikiContext)
      */
-    public boolean inviteUser(String user, String space, boolean open, 
XWikiContext context) throws InvitationManagerException {
-       return  inviteUser(user, space, open, Collections.EMPTY_LIST, context);
+    public void inviteUser(String user, String space, boolean open, 
XWikiContext context)
+        throws InvitationManagerException
+    {
+        inviteUser(user, space, open, Collections.EMPTY_LIST, context);
     }
 
     /**
      * [EMAIL PROTECTED]
-     *
+     * 
      * @see InvitationManager#rejectInvitation(String, String, String, 
XWikiContext)
      */
     public void rejectInvitation(String space, String email, String code, 
XWikiContext context) throws InvitationManagerException {
@@ -1189,7 +1214,7 @@
      *         the <code>space</code>
      */
     private Invitation createInvitation(String invitee, String space, 
XWikiContext context)
-            throws XWikiException
+        throws XWikiException
     {
         return new InvitationImpl(invitee, space, true, this, context);
     }
@@ -1266,13 +1291,16 @@
     }
 
     /**
-     * Wrapper method for adding a user to a space and to the given roles 
using the space manager
+     * Wrapper method for testing if a user is a member of a space
      */
     private boolean isMember(String space, String user, XWikiContext context)
-            throws XWikiException
     {
-        SpaceManager spaceManager = 
SpaceManagers.findSpaceManagerForSpace(space, context);
-        return spaceManager.isMember(space, user, context);
+        try {
+            SpaceManager spaceManager = 
SpaceManagers.findSpaceManagerForSpace(space, context);
+            return spaceManager.isMember(space, user, context);
+        } catch (XWikiException e) {
+            return false;
+        }
     }
 
     /**
@@ -1390,38 +1418,26 @@
     /**
      * @return the wiki name of the registered user with the given
      *         <code>wikiNameOrMailAddress</code>
-     * @throws XWikiException if there is no registered user with the given 
wiki name or email
-     *             address
      */
     private String getRegisteredUser(String wikiNameOrMailAddress, 
XWikiContext context)
-            throws InvitationManagerException
     {
+        if (!isEmailAddress(wikiNameOrMailAddress)) {
+            return findUser(wikiNameOrMailAddress, context);
+        }
+        String email = wikiNameOrMailAddress;
+        String sql =
+            "select distinct doc.name from XWikiDocument as doc, BaseObject as 
obj, StringProperty as prop where doc.fullName=obj.name and obj.className = 
'XWiki.XWikiUsers' and obj.id=prop.id.id and prop.id.name='email' and 
prop.value='"
+                + email + "'";
+        List userList = Collections.EMPTY_LIST;
         try {
-            if (isEmailAddress(wikiNameOrMailAddress)) {
-                String email = wikiNameOrMailAddress;
-                String sql =
-                        "select distinct doc.name from XWikiDocument as doc, 
BaseObject as obj, StringProperty as prop where doc.fullName=obj.name and 
obj.className = 'XWiki.XWikiUsers' and obj.id=prop.id.id and 
prop.id.name='email' and prop.value='"
-                                + email + "'";
-                List userList = null;
-                userList = context.getWiki().getStore().search(sql, 1, 0, 
context);
-                if (userList.size() > 0) {
-                    return (String) userList.get(0);
-                } else {
-                    return null;
-                }
-            } else {
-                String user = findUser(wikiNameOrMailAddress, context);
-                if (user == null) {
-                    throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
 InvitationManagerException.ERROR_INVITATION_CURRIKI_ID_INVALID,
-                            "Curriki ID is invalid");
-                } else {
-                    return user;
-                }
-            }
-        } catch (Exception e) {
-            throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
 InvitationManagerException.ERROR_INVITATION_CURRIKI_ID_INVALID,
-                    "Curriki ID is invalid", e);
+            userList = context.getWiki().getStore().search(sql, 1, 0, context);
+        } catch (XWikiException e) {
         }
+        if (userList.size() > 0) {
+            return (String) userList.get(0);
+        } else {
+            return null;
+        }
     }
     
     /**
@@ -1465,23 +1481,13 @@
         }
     }
 
-    // copy & paste from XWikiAuthServiceImpl#findUser(String, XWikiContext)
     private String findUser(String username, XWikiContext context)
-        throws InvitationManagerException
     {
-        try {
-            // First let's look in the cache
-            if (context.getWiki().exists("XWiki." + username, context))
-                return "XWiki." + username;
-            else
-                return null;
-        } catch (Exception e) {
-            throw new 
InvitationManagerException(InvitationManagerException.MODULE_PLUGIN_INVITATIONMANAGER,
-                InvitationManagerException.ERROR_INVITATION_ERROR_FINDING_USER,
-                "Error finding user " + username,
-                e);
-        }
-
+        // First let's look in the cache
+        if (context.getWiki().exists("XWiki." + username, context))
+            return "XWiki." + username;
+        else
+            return null;
     }
     
     /**

Modified: 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/plugin/InvitationManagerPluginApi.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/plugin/InvitationManagerPluginApi.java
      2008-01-10 12:28:56 UTC (rev 6722)
+++ 
xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/plugin/InvitationManagerPluginApi.java
      2008-01-10 12:37:20 UTC (rev 6723)
@@ -321,9 +321,17 @@
      * @param open <code>true</code> if the invitation is open. In this case 
the <code>user</code>
      *            should be a mailing list address
      */
-    public boolean inviteUser(String user, String space, boolean open) throws 
InvitationManagerException {
+    public boolean inviteUser(String user, String space, boolean open)
+    {
+        context.remove("InvitationManagerException");
         if (hasProgrammingRights()) {
-            return getInvitationManager().inviteUser(user, space, open, 
context);
+            try {
+                getInvitationManager().inviteUser(user, space, open, context);
+                return true;
+            } catch (InvitationManagerException e) {
+                context.put("InvitationManagerException", e);
+                return false;
+            }
         }
         return false;
     }
@@ -332,9 +340,17 @@
      * @param role The role the user will have in the space, provided he 
accepts the invitation
      * @see #inviteUser(String, String)
      */
-    public boolean inviteUser(String user, String space, boolean open, String 
role) throws InvitationManagerException {
+    public boolean inviteUser(String user, String space, boolean open, String 
role)
+    {
+        context.remove("InvitationManagerException");
         if (hasProgrammingRights()) {
-            return getInvitationManager().inviteUser(user, space, open, role, 
context);
+            try {
+                getInvitationManager().inviteUser(user, space, open, role, 
context);
+                return true;
+            } catch (InvitationManagerException e) {
+                context.put("InvitationManagerException", e);
+                return false;
+            }
         }
         return false;
     }
@@ -344,9 +360,17 @@
      *            invitation
      * @see #inviteUser(String, String)
      */
-    public boolean inviteUser(String user, String space, boolean open, List 
roles) throws InvitationManagerException {
+    public boolean inviteUser(String user, String space, boolean open, List 
roles)
+    {
+        context.remove("InvitationManagerException");
         if (hasProgrammingRights()) {
-            return getInvitationManager().inviteUser(user, space, open, roles, 
context);
+            try {
+                getInvitationManager().inviteUser(user, space, open, roles, 
context);
+                return true;
+            } catch (InvitationManagerException e) {
+                context.put("InvitationManagerException", e);
+                return false;
+            }
         }
         return false;
     }
@@ -355,9 +379,19 @@
      * @param templateMail Custom e-mail template
      * @see #inviteUser(String, String, List)
      */
-    public boolean inviteUser(String user, String space, boolean open, List 
roles, String templateMail) throws InvitationManagerException {
+    public boolean inviteUser(String user, String space, boolean open, List 
roles,
+        String templateMail)
+    {
+        context.remove("InvitationManagerException");
         if (hasProgrammingRights()) {
-            return getInvitationManager().inviteUser(user, space, open, roles, 
templateMail, context);
+            try {
+                getInvitationManager()
+                    .inviteUser(user, space, open, roles, templateMail, 
context);
+                return true;
+            } catch (InvitationManagerException e) {
+                context.put("InvitationManagerException", e);
+                return false;
+            }
         }
         return false;
     }
@@ -366,11 +400,19 @@
      * @param map A map of additional parameters for the invitation
      * @see #inviteUser(String, String, List, String)
      */
-    public boolean inviteUser(String user, String space, boolean open, List 
roles, String templateMail,
-        Map map) throws InvitationManagerException {
+    public boolean inviteUser(String user, String space, boolean open, List 
roles,
+        String templateMail, Map map)
+    {
+        context.remove("InvitationManagerException");
         if (hasProgrammingRights()) {
-            return getInvitationManager().inviteUser(user, space, open, roles, 
templateMail, map,
-                context);
+            try {
+                getInvitationManager().inviteUser(user, space, open, roles, 
templateMail, map,
+                    context);
+                return true;
+            } catch (InvitationManagerException e) {
+                context.put("InvitationManagerException", e);
+                return false;
+            }
         }
         return false;
     }

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

Reply via email to