Skip to content

Commit 1deb3b8

Browse files
committed
Allow MCC properties to be set per-container to facilitate automated tests
1 parent acf34c1 commit 1deb3b8

File tree

7 files changed

+37
-36
lines changed

7 files changed

+37
-36
lines changed

mcc/src/org/labkey/mcc/MccController.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public class RequestUserAction extends MutatingApiAction<RequestUserForm>
108108
@Override
109109
public void validateForm(RequestUserForm form, Errors errors)
110110
{
111-
Container mccContainer = MccManager.get().getMCCContainer();
111+
Container mccContainer = MccManager.get().getMCCContainer(getContainer());
112112
if (mccContainer == null)
113113
{
114114
errors.reject(ERROR_MSG, "The MCC project has not been set on this server. This is an administrator error.");
@@ -165,17 +165,17 @@ public Object execute(RequestUserForm form, BindException errors) throws Excepti
165165
row.put("title", form.getTitle());
166166
row.put("institution", form.getInstitution());
167167
row.put("reason", form.getReason());
168-
row.put("container", MccManager.get().getMCCContainer().getId());
168+
row.put("container", MccManager.get().getMCCContainer(getContainer()).getId());
169169

170170
Table.insert(UserManager.getGuestUser(), ti, row);
171171

172-
Set<Address> emails = MccManager.get().getNotificationUserEmails();
172+
Set<Address> emails = MccManager.get().getNotificationUserEmails(getContainer());
173173
if (emails != null && !emails.isEmpty())
174174
{
175175
try
176176
{
177177
MailHelper.MultipartMessage mail = MailHelper.createMultipartMessage();
178-
Container c = MccManager.get().getMCCContainer();
178+
Container c = MccManager.get().getMCCContainer(getContainer());
179179
if (c == null)
180180
{
181181
c = getContainer();
@@ -299,7 +299,7 @@ public class ApproveUserRequestsAction extends MutatingApiAction<ApproveUserRequ
299299
@Override
300300
public void validateForm(ApproveUserRequestsForm form, Errors errors)
301301
{
302-
Container mccContainer = MccManager.get().getMCCContainer();
302+
Container mccContainer = MccManager.get().getMCCContainer(getContainer());
303303
if (mccContainer == null)
304304
{
305305
errors.reject(ERROR_MSG, "The MCC project has not been set on this server. This is an administrator error.");
@@ -390,7 +390,7 @@ public Object execute(ApproveUserRequestsForm form, BindException errors) throws
390390
allUsers.add(st.getUser());
391391
}
392392

393-
Container mccContainer = MccManager.get().getMCCContainer();
393+
Container mccContainer = MccManager.get().getMCCContainer(getContainer());
394394
for (User u : existingUsersGivenAccess)
395395
{
396396
boolean isLDAP = AuthenticationManager.isLdapEmail(new ValidEmail(u.getEmail()));
@@ -460,7 +460,7 @@ public class RequestHelpAction extends MutatingApiAction<RequestHelpForm>
460460
@Override
461461
public void validateForm(RequestHelpForm form, Errors errors)
462462
{
463-
Container mccContainer = MccManager.get().getMCCContainer();
463+
Container mccContainer = MccManager.get().getMCCContainer(getContainer());
464464
if (mccContainer == null)
465465
{
466466
errors.reject(ERROR_MSG, "The MCC project has not been set on this server. This is an administrator error.");
@@ -487,7 +487,7 @@ public void validateForm(RequestHelpForm form, Errors errors)
487487
@Override
488488
public Object execute(RequestHelpForm form, BindException errors) throws Exception
489489
{
490-
Set<Address> emails = MccManager.get().getNotificationUserEmails();
490+
Set<Address> emails = MccManager.get().getNotificationUserEmails(getContainer());
491491
if (emails != null && !emails.isEmpty())
492492
{
493493
try
@@ -568,7 +568,7 @@ public boolean handlePost(Object o, BindException errors) throws Exception
568568
}
569569

570570
// Ensure groups have target roles:
571-
Container requestContainer = MccManager.get().getMCCRequestContainer();
571+
Container requestContainer = MccManager.get().getMCCRequestContainer(getContainer());
572572
if (requestContainer != null)
573573
{
574574
Group requestGroup = GroupManager.getGroup(ContainerManager.getRoot(), MccManager.REQUEST_GROUP_NAME, GroupEnumType.SITE);
@@ -604,7 +604,7 @@ public boolean handlePost(Object o, BindException errors) throws Exception
604604
}
605605
}
606606

607-
Container dataContainer = MccManager.get().getMCCContainer();
607+
Container dataContainer = MccManager.get().getMCCContainer(getContainer());
608608
if (dataContainer != null)
609609
{
610610
Group adminGroup = GroupManager.getGroup(ContainerManager.getRoot(), MccManager.ADMIN_GROUP_NAME, GroupEnumType.SITE);
@@ -622,13 +622,13 @@ public boolean handlePost(Object o, BindException errors) throws Exception
622622
@Override
623623
public void validateCommand(Object o, Errors errors)
624624
{
625-
Container mccContainer = MccManager.get().getMCCContainer();
625+
Container mccContainer = MccManager.get().getMCCContainer(getContainer());
626626
if (mccContainer == null)
627627
{
628628
errors.reject(ERROR_MSG, "The MCC data container property has not been set");
629629
}
630630

631-
Container requestContainer = MccManager.get().getMCCRequestContainer();
631+
Container requestContainer = MccManager.get().getMCCRequestContainer(getContainer());
632632
if (requestContainer == null)
633633
{
634634
errors.reject(ERROR_MSG, "The MCC request container property has not been set");
@@ -760,7 +760,7 @@ public Object execute(NotifyReviewersForm form, BindException errors) throws Exc
760760
mail.setFrom("mcc-do-not-reply@ohsu.edu");
761761
mail.setSubject("MCC Animal Request Reviews");
762762

763-
Container rc = MccManager.get().getMCCRequestContainer();
763+
Container rc = MccManager.get().getMCCRequestContainer(getContainer());
764764
DetailsURL url = DetailsURL.fromString("/mcc/rabRequestReview.view", rc);
765765
mail.setEncodedHtmlContent("You have been assigned one or more MCC Animal Requests to review. <a href=\"" + AppProps.getInstance().getBaseServerUrl() + url.getActionURL() + "\">Please click here to view and complete these assignments</a>");
766766
mail.addRecipients(Message.RecipientType.BCC, emails.toArray(new Address[0]));

mcc/src/org/labkey/mcc/MccMaintenanceTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.apache.logging.log4j.Logger;
44
import org.labkey.api.data.Container;
5+
import org.labkey.api.data.ContainerManager;
56
import org.labkey.api.data.TableInfo;
67
import org.labkey.api.data.TableSelector;
78
import org.labkey.api.ldk.LDKService;
@@ -37,7 +38,7 @@ public void run(Logger log)
3738

3839
private void checkForDuplicateAliases(Logger log)
3940
{
40-
Container studyParent = MccManager.get().getMCCInternalDataContainer();
41+
Container studyParent = MccManager.get().getMCCInternalDataContainer(ContainerManager.getRoot());
4142
if (studyParent == null)
4243
{
4344
return;

mcc/src/org/labkey/mcc/MccManager.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,11 @@ public static MccManager get()
128128
return _instance;
129129
}
130130

131-
public Container getMCCRequestContainer()
131+
public Container getMCCRequestContainer(Container c)
132132
{
133133
Module m = ModuleLoader.getInstance().getModule(MccModule.NAME);
134134
ModuleProperty mp = m.getModuleProperties().get(MccManager.MCCRequestContainer);
135-
String path = mp.getEffectiveValue(ContainerManager.getRoot());
135+
String path = mp.getEffectiveValue(c);
136136
if (path == null)
137137
return null;
138138

@@ -144,31 +144,31 @@ public String getMccAdminEmail()
144144
return "mcc@ohsu.edu";
145145
}
146146

147-
public Container getMCCInternalDataContainer()
147+
public Container getMCCInternalDataContainer(Container c)
148148
{
149149
Module m = ModuleLoader.getInstance().getModule(MccModule.NAME);
150150
ModuleProperty mp = m.getModuleProperties().get(MccManager.MCCInternalDataContainerPropName);
151-
String path = mp.getEffectiveValue(ContainerManager.getRoot());
151+
String path = mp.getEffectiveValue(c);
152152
if (path == null)
153153
return null;
154154

155155
return ContainerManager.getForPath(path);
156156
}
157157

158-
public Container getMCCContainer()
158+
public Container getMCCContainer(Container c)
159159
{
160160
Module m = ModuleLoader.getInstance().getModule(MccModule.NAME);
161161
ModuleProperty mp = m.getModuleProperties().get(MccManager.ContainerPropName);
162-
String path = mp.getEffectiveValue(ContainerManager.getRoot());
162+
String path = mp.getEffectiveValue(c);
163163
if (path == null)
164164
return null;
165165

166166
return ContainerManager.getForPath(path);
167167
}
168168

169-
public boolean isRequestAdmin(User u)
169+
public boolean isRequestAdmin(User u, Container container)
170170
{
171-
Container c = getMCCRequestContainer();
171+
Container c = getMCCRequestContainer(container);
172172
if (c == null)
173173
{
174174
_log.error("MccManager.isRequestAdmin called, but MCCRequestContainer has not been set");
@@ -191,21 +191,21 @@ public File getZimsImportFolder(Container c)
191191
return new File(val);
192192
}
193193

194-
public Set<Address> getNotificationUserEmails()
194+
public Set<Address> getNotificationUserEmails(Container c)
195195
{
196-
return getUserEmailsForProp(MccManager.NotifyPropName);
196+
return getUserEmailsForProp(MccManager.NotifyPropName, c);
197197
}
198198

199-
public Set<Address> getRequestNotificationUserEmails()
199+
public Set<Address> getRequestNotificationUserEmails(Container c)
200200
{
201-
return getUserEmailsForProp(MccManager.MCCRequestNotificationUsers);
201+
return getUserEmailsForProp(MccManager.MCCRequestNotificationUsers, c);
202202
}
203203

204-
private Set<Address> getUserEmailsForProp(String propName)
204+
private Set<Address> getUserEmailsForProp(String propName, Container c)
205205
{
206206
Module m = ModuleLoader.getInstance().getModule(MccModule.NAME);
207207
ModuleProperty mp = m.getModuleProperties().get(propName);
208-
String userNames = mp.getEffectiveValue(ContainerManager.getRoot());
208+
String userNames = mp.getEffectiveValue(c);
209209
userNames = StringUtils.trimToNull(userNames);
210210
if (userNames == null)
211211
return null;
@@ -227,7 +227,7 @@ private Set<Address> getUserEmailsForProp(String propName)
227227
}
228228
else
229229
{
230-
UserPrincipal up = SecurityManager.getPrincipal(principalName, getMCCContainer(), true);
230+
UserPrincipal up = SecurityManager.getPrincipal(principalName, getMCCContainer(c), true);
231231
if (up == null)
232232
{
233233
_log.error("Unknown user/group registered for MCC notifications: [" + principalName + "]", new Exception());

mcc/src/org/labkey/mcc/MccModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public JSONObject getPageContextJson(ContainerUser context)
9292
{
9393
JSONObject ret = super.getPageContextJson(context);
9494

95-
Container requestContainer = MccManager.get().getMCCRequestContainer();
95+
Container requestContainer = MccManager.get().getMCCRequestContainer(context.getContainer());
9696
ret.put("hasRequestAdminPermission", requestContainer != null && requestContainer.hasPermission(context.getUser(), MccRequestAdminPermission.class));
9797
ret.put("hasRabPermission", requestContainer != null && requestContainer.hasPermission(context.getUser(), MccRabReviewPermission.class));
9898
ret.put("hasFinalDecisionPermission", requestContainer != null && requestContainer.hasPermission(context.getUser(), MccFinalReviewPermission.class));

mcc/src/org/labkey/mcc/query/RequestReviewActionsDisplayColumnFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep
4343
}
4444

4545
String requestId = ctx.get(getBoundKey("requestId"), String.class);
46-
Container requestContainer = MccManager.get().getMCCRequestContainer();
46+
Container requestContainer = MccManager.get().getMCCRequestContainer(ctx.getContainer());
4747
DetailsURL url = DetailsURL.fromString("/mcc/requestReview.view?requestId=" + requestId + "&mode=rabReview", requestContainer);
4848
out.write("<a class=\"labkey-text-link\" href=\"" + url.getActionURL().addReturnURL(ctx.getViewContext().getActionURL()) + "\">Enter Review</a>");
4949
}

mcc/src/org/labkey/mcc/query/RequestScoreActionsDisplayColumnFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
3535
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
3636
{
3737
int requestRowId = ctx.get(getBoundKey("requestId", "rowid"), Integer.class);
38-
if (MccManager.get().isRequestAdmin(ctx.getViewContext().getUser()))
38+
if (MccManager.get().isRequestAdmin(ctx.getViewContext().getUser(), ctx.getContainer()))
3939
{
4040
int userId = ctx.get(getBoundKey("requestId", "createdby"), Integer.class);
4141
User u = UserManager.getUser(userId);
@@ -60,7 +60,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep
6060
String requestId = ctx.get(getBoundKey("requestId"), String.class);
6161

6262
MccManager.RequestStatus st = MccManager.RequestStatus.resolveStatus(status);
63-
Container requestContainer = MccManager.get().getMCCRequestContainer();
63+
Container requestContainer = MccManager.get().getMCCRequestContainer(ctx.getContainer());
6464
if (requestContainer == null)
6565
{
6666
_log.error("RequestScoreActionsDisplayColumnFactory was called, but MCCRequestContainer is not set", new Exception());

mcc/src/org/labkey/mcc/query/TriggerHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public void ensureReviewRecordsCreated(String objectId, String status, @Nullable
162162
}
163163

164164
private void sendInitialNotification() {
165-
Set<Address> emails = MccManager.get().getRequestNotificationUserEmails();
165+
Set<Address> emails = MccManager.get().getRequestNotificationUserEmails(_container);
166166
if (emails == null || emails.isEmpty())
167167
{
168168
_log.error("An MCC request was finalized but there are no notification users");
@@ -175,7 +175,7 @@ private void sendInitialNotification() {
175175
mail.setFrom("mcc-do-not-reply@ohsu.edu");
176176
mail.setSubject("MCC Animal Request");
177177

178-
Container rc = MccManager.get().getMCCRequestContainer();
178+
Container rc = MccManager.get().getMCCRequestContainer(_container);
179179
DetailsURL url = DetailsURL.fromString("/mcc/mccRequestAdmin.view", rc);
180180
mail.setEncodedHtmlContent("An animal request was submitted on MCC. <a href=\"" + AppProps.getInstance().getBaseServerUrl() + url.getActionURL().toString()+ "\">Click here to view/approve this request</a>");
181181
mail.addRecipients(Message.RecipientType.TO, emails.toArray(new Address[0]));
@@ -247,7 +247,7 @@ public void possiblySendRabNotification(int reviewerId)
247247
mail.setFrom("mcc@ohsu.edu");
248248
mail.setSubject("MCC RAB Review Assignment");
249249

250-
Container rc = MccManager.get().getMCCRequestContainer();
250+
Container rc = MccManager.get().getMCCRequestContainer(_container);
251251
DetailsURL url = DetailsURL.fromString("/mcc/rabRequestReview.view", rc);
252252
mail.setEncodedHtmlContent("One or more MCC requests were assigned to you for RAB Review. <a href=\"" + AppProps.getInstance().getBaseServerUrl() + url.getActionURL().toString()+ "\">Click here to view and enter your review(s)</a>. Please reply to this email if you have any questions.");
253253
mail.addRecipients(Message.RecipientType.TO, emails.toArray(new Address[0]));

0 commit comments

Comments
 (0)