Skip to content

Commit 4b699dc

Browse files
committed
manage also adynMembershipConds
1 parent 4981392 commit 4b699dc

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,7 @@ protected void link(final Any<?> any, final boolean unlink, final ProvisioningRe
181181
operation(unlink ? PatchOperation.DELETE : PatchOperation.ADD_REPLACE).
182182
value(profile.getTask().getResource().getKey()).build());
183183

184-
if (any instanceof Group && ((Group) any).getUDynMembership() != null) {
185-
((GroupUR) req).setUDynMembershipCond(((Group) any).getUDynMembership().getFIQLCond());
186-
}
184+
copyDynMembershipConds(any, req);
187185

188186
update(req);
189187

@@ -196,9 +194,7 @@ protected void unassign(final Any<?> any, final ConnectorObject beforeObj, final
196194
operation(PatchOperation.DELETE).
197195
value(profile.getTask().getResource().getKey()).build());
198196

199-
if (any instanceof Group && ((Group) any).getUDynMembership() != null) {
200-
((GroupUR) req).setUDynMembershipCond(((Group) any).getUDynMembership().getFIQLCond());
201-
}
197+
copyDynMembershipConds(any, req);
202198

203199
update(req);
204200

@@ -211,15 +207,24 @@ protected void assign(final Any<?> any, final Boolean enabled, final Provisionin
211207
operation(PatchOperation.ADD_REPLACE).
212208
value(profile.getTask().getResource().getKey()).build());
213209

214-
if (any instanceof Group && ((Group) any).getUDynMembership() != null) {
215-
((GroupUR) req).setUDynMembershipCond(((Group) any).getUDynMembership().getFIQLCond());
216-
}
210+
copyDynMembershipConds(any, req);
217211

218212
update(req);
219213

220214
provision(any, enabled, result);
221215
}
222216

217+
protected void copyDynMembershipConds(final Any<?> any, final AnyUR req) {
218+
if (any instanceof Group &&
219+
(((Group) any).getUDynMembership() != null || !((Group) any).getADynMemberships().isEmpty())) {
220+
((GroupUR) req).setUDynMembershipCond(((Group) any).getUDynMembership().getFIQLCond());
221+
222+
((Group) any).getADynMemberships().forEach(aDynGroupMembership ->
223+
((GroupUR) req).getADynMembershipConds().put(
224+
aDynGroupMembership.getAnyType().getKey(), aDynGroupMembership.getFIQLCond()));
225+
}
226+
}
227+
223228
@Transactional(propagation = Propagation.REQUIRES_NEW)
224229
@Override
225230
public boolean handle(final String anyKey) {

fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ public void issueSYNCOPE648() {
519519
@Test
520520
void issueSYNCOPE1918() {
521521
GroupUR groupUR = new GroupUR.Builder("29f96485-729e-4d31-88a1-6fc60e4677f3")
522-
.udynMembershipCond("username=~ros*").build();
522+
.udynMembershipCond("username=~ros*").adynMembershipCond(PRINTER, "name=~hp*").build();
523523
GroupTO groupTO = updateGroup(groupUR).getEntity();
524524
assertTrue(StringUtils.isNotBlank(groupTO.getUDynMembershipCond()));
525525

@@ -528,11 +528,14 @@ void issueSYNCOPE1918() {
528528

529529
groupTO = GROUP_SERVICE.read("29f96485-729e-4d31-88a1-6fc60e4677f3");
530530
assertTrue(StringUtils.isNotBlank(groupTO.getUDynMembershipCond()));
531+
assertFalse(groupTO.getADynMembershipConds().isEmpty());
531532

532533
//Restore group citizen
533534
groupUR.setUDynMembershipCond(null);
535+
groupUR.getADynMembershipConds().clear();
534536
groupTO = updateGroup(groupUR).getEntity();
535537

536538
assertTrue(StringUtils.isBlank(groupTO.getUDynMembershipCond()));
539+
assertTrue(groupTO.getADynMembershipConds().isEmpty());
537540
}
538541
}

0 commit comments

Comments
 (0)