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