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