List of usage examples for org.apache.commons.collections4 Predicate Predicate
Predicate
From source file:org.apache.syncope.core.provisioning.java.pushpull.RealmPullResultHandlerImpl.java
private void doHandle(final SyncDelta delta, final OrgUnit orgUnit) throws JobExecutionException { LOG.debug("Process {} for {} as {}", delta.getDeltaType(), delta.getUid().getUidValue(), delta.getObject().getObjectClass()); Realm realm = IterableUtils.find(realmDAO.findAll(), new Predicate<Realm>() { @Override//from w w w . j a va 2 s. c o m public boolean evaluate(final Realm realm) { JexlContext jexlContext = new MapContext(); JexlUtils.addFieldsToContext(realm, jexlContext); String evalConnObjectLink = JexlUtils.evaluate(orgUnit.getConnObjectLink(), jexlContext); return delta.getObject().getName().getNameValue().equals(evalConnObjectLink); } }); LOG.debug("Match found for {} as {}: {}", delta.getObject().getName().getNameValue(), delta.getObject().getObjectClass(), realm); String realmName = delta.getUid().getUidValue(); Attribute nameAttr = delta.getObject().getAttributeByName(orgUnit.getExtAttrName()); if (nameAttr != null && nameAttr.getValue() != null && !nameAttr.getValue().isEmpty()) { realmName = nameAttr.getValue().get(0).toString(); } try { if (SyncDeltaType.CREATE_OR_UPDATE == delta.getDeltaType()) { if (realm == null) { switch (profile.getTask().getUnmatchingRule()) { case ASSIGN: CollectionUtils.addIgnoreNull(profile.getResults(), assign(delta, realmName)); break; case PROVISION: CollectionUtils.addIgnoreNull(profile.getResults(), provision(delta, realmName)); break; case IGNORE: CollectionUtils.addIgnoreNull(profile.getResults(), ignore(delta, false)); break; default: // do nothing } } else { switch (profile.getTask().getMatchingRule()) { case UPDATE: CollectionUtils.addIgnoreNull(profile.getResults(), update(delta, realm, realmName)); break; case DEPROVISION: CollectionUtils.addIgnoreNull(profile.getResults(), deprovision(delta, realm, false)); break; case UNASSIGN: CollectionUtils.addIgnoreNull(profile.getResults(), deprovision(delta, realm, true)); break; case LINK: CollectionUtils.addIgnoreNull(profile.getResults(), link(delta, realm, false)); break; case UNLINK: CollectionUtils.addIgnoreNull(profile.getResults(), link(delta, realm, true)); break; case IGNORE: CollectionUtils.addIgnoreNull(profile.getResults(), ignore(delta, true)); break; default: // do nothing } } } else if (SyncDeltaType.DELETE == delta.getDeltaType()) { if (realm == null) { LOG.debug("No match found for deletion"); } else { CollectionUtils.addIgnoreNull(profile.getResults(), delete(delta, realm)); } } } catch (IllegalStateException | IllegalArgumentException e) { LOG.warn(e.getMessage()); } }
From source file:org.apache.syncope.core.provisioning.java.sync.DBPasswordSyncActions.java
private String getCipherAlgorithm(final ConnInstance connInstance) { ConnConfProperty cipherAlgorithm = CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() { @Override/* w w w .j a v a 2 s.co m*/ public boolean evaluate(final ConnConfProperty property) { return "cipherAlgorithm".equals(property.getSchema().getName()) && property.getValues() != null && !property.getValues().isEmpty(); } }); return cipherAlgorithm == null ? CLEARTEXT : (String) cipherAlgorithm.getValues().get(0); }
From source file:org.apache.syncope.core.provisioning.java.sync.LDAPMembershipSyncActions.java
/** * Allows easy subclassing for the ConnId AD connector bundle. * * @param connector A Connector instance to query for the groupMemberAttribute property name * @return the name of the attribute used to keep track of group memberships *//*from www .j ava2 s .co m*/ protected String getGroupMembershipAttrName(final Connector connector) { ConnConfProperty groupMembership = CollectionUtils .find(connector.getActiveConnInstance().getConfiguration(), new Predicate<ConnConfProperty>() { @Override public boolean evaluate(final ConnConfProperty property) { return "groupMemberAttribute".equals(property.getSchema().getName()) && property.getValues() != null && !property.getValues().isEmpty(); } }); return groupMembership == null ? "uniquemember" : (String) groupMembership.getValues().get(0); }
From source file:org.apache.syncope.core.workflow.activiti.ActivitiUtils.java
@Transactional(readOnly = true) public boolean isUserIngroup(final User user, final String groupName) { return IterableUtils.matchesAny(user.getMemberships(), new Predicate<UMembership>() { @Override// w ww .j av a2 s.co m public boolean evaluate(final UMembership membership) { return groupName != null && groupName.equals(membership.getRightEnd().getName()); } }); }
From source file:org.apache.syncope.fit.core.AbstractTaskITCase.java
protected NotificationTaskTO findNotificationTaskBySender(final String sender) { PagedResult<NotificationTaskTO> tasks = taskService .list(new TaskQuery.Builder(TaskType.NOTIFICATION).page(1).size(100).build()); assertNotNull(tasks);// w ww . j a v a2 s. co m assertFalse(tasks.getResult().isEmpty()); return IterableUtils.find(tasks.getResult(), new Predicate<NotificationTaskTO>() { @Override public boolean evaluate(final NotificationTaskTO task) { return sender.equals(task.getSender()); } }); }
From source file:org.apache.syncope.fit.core.MembershipITCase.java
@Test public void misc() { UserTO user = UserITCase.getUniqueSampleTO("memb@apache.org"); user.setRealm("/even/two"); user.getPlainAttrs().add(new AttrTO.Builder().schema("aLong").value("1976").build()); user.getPlainAttrs().remove(user.getPlainAttrMap().get("ctype")); // the group 034740a9-fa10-453b-af37-dc7897e98fb1 has USER type extensions for 'csv' and 'other' // any type classes MembershipTO membership = new MembershipTO.Builder().group("034740a9-fa10-453b-af37-dc7897e98fb1").build(); membership.getPlainAttrs().add(new AttrTO.Builder().schema("aLong").value("1977").build()); // 'fullname' is in 'minimal user', so it is not allowed for this membership membership.getPlainAttrs().add(new AttrTO.Builder().schema("fullname").value("discarded").build()); user.getMemberships().add(membership); // user creation fails because of fullname try {//w w w . ja v a2s. co m createUser(user); fail(); } catch (SyncopeClientException e) { assertEquals(ClientExceptionType.InvalidUser, e.getType()); assertTrue(e.getMessage().contains("InvalidPlainAttr: fullname not allowed for membership of group")); } // remove fullname and try again CollectionUtils.filterInverse(membership.getPlainAttrs(), new Predicate<AttrTO>() { @Override public boolean evaluate(final AttrTO object) { return "fullname".equals(object.getSchema()); } }); try { user = createUser(user).getEntity(); // 1. verify that 'aLong' is correctly populated for user assertEquals(1, user.getPlainAttrMap().get("aLong").getValues().size()); assertEquals("1976", user.getPlainAttrMap().get("aLong").getValues().get(0)); // 2. verify that 'aLong' is correctly populated for user's membership assertEquals(1, user.getMemberships().size()); membership = user.getMembershipMap().get("034740a9-fa10-453b-af37-dc7897e98fb1"); assertNotNull(membership); assertEquals(1, membership.getPlainAttrMap().get("aLong").getValues().size()); assertEquals("1977", membership.getPlainAttrMap().get("aLong").getValues().get(0)); // 3. verify that derived attrbutes from 'csv' and 'other' are also populated for user's membership assertFalse(membership.getDerAttrMap().get("csvuserid").getValues().isEmpty()); assertFalse(membership.getDerAttrMap().get("noschema").getValues().isEmpty()); // update user - change some values and add new membership attribute UserPatch userPatch = new UserPatch(); userPatch.setKey(user.getKey()); userPatch.getPlainAttrs().add(new AttrPatch.Builder() .attrTO(new AttrTO.Builder().schema("aLong").value("1977").build()).build()); MembershipPatch membershipPatch = new MembershipPatch.Builder().group(membership.getGroupKey()).build(); membershipPatch.getPlainAttrs().add(new AttrPatch.Builder() .attrTO(new AttrTO.Builder().schema("aLong").value("1976").build()).build()); membershipPatch.getPlainAttrs().add(new AttrPatch.Builder() .attrTO(new AttrTO.Builder().schema("ctype").value("membership type").build()).build()); userPatch.getMemberships().add(membershipPatch); user = updateUser(userPatch).getEntity(); // 4. verify that 'aLong' is correctly populated for user assertEquals(1, user.getPlainAttrMap().get("aLong").getValues().size()); assertEquals("1977", user.getPlainAttrMap().get("aLong").getValues().get(0)); assertFalse(user.getPlainAttrMap().containsKey("ctype")); // 5. verify that 'aLong' is correctly populated for user's membership assertEquals(1, user.getMemberships().size()); membership = user.getMembershipMap().get("034740a9-fa10-453b-af37-dc7897e98fb1"); assertNotNull(membership); assertEquals(1, membership.getPlainAttrMap().get("aLong").getValues().size()); assertEquals("1976", membership.getPlainAttrMap().get("aLong").getValues().get(0)); // 6. verify that 'ctype' is correctly populated for user's membership assertEquals("membership type", membership.getPlainAttrMap().get("ctype").getValues().get(0)); // finally remove membership userPatch = new UserPatch(); userPatch.setKey(user.getKey()); membershipPatch = new MembershipPatch.Builder().group(membership.getGroupKey()) .operation(PatchOperation.DELETE).build(); userPatch.getMemberships().add(membershipPatch); user = updateUser(userPatch).getEntity(); assertTrue(user.getMemberships().isEmpty()); } finally { if (user.getKey() != null) { userService.delete(user.getKey()); } } }
From source file:org.apache.syncope.fit.core.MembershipITCase.java
@Test public void pull() { // 0. create ad-hoc resource, with adequate mapping ResourceTO newResource = resourceService.read(RESOURCE_NAME_DBPULL); newResource.setKey(getUUIDString()); MappingItemTO item = IterableUtils.find(newResource.getProvision("USER").getMapping().getItems(), new Predicate<MappingItemTO>() { @Override/*from ww w. j av a 2 s . com*/ public boolean evaluate(final MappingItemTO object) { return "firstname".equals(object.getIntAttrName()); } }); assertNotNull(item); assertEquals("ID", item.getExtAttrName()); item.setIntAttrName("memberships[additional].aLong"); item.setPurpose(MappingPurpose.BOTH); item = IterableUtils.find(newResource.getProvision("USER").getMapping().getItems(), new Predicate<MappingItemTO>() { @Override public boolean evaluate(final MappingItemTO object) { return "fullname".equals(object.getIntAttrName()); } }); item.setPurpose(MappingPurpose.PULL); PullTaskTO newTask = null; try { newResource = createResource(newResource); assertNotNull(newResource); // 1. create user with new resource assigned UserTO user = UserITCase.getUniqueSampleTO("memb@apache.org"); user.setRealm("/even/two"); user.getPlainAttrs().remove(user.getPlainAttrMap().get("ctype")); user.getResources().clear(); user.getResources().add(newResource.getKey()); MembershipTO membership = new MembershipTO.Builder().group("034740a9-fa10-453b-af37-dc7897e98fb1") .build(); membership.getPlainAttrs().add(new AttrTO.Builder().schema("aLong").value("5432").build()); user.getMemberships().add(membership); user = createUser(user).getEntity(); assertNotNull(user); // 2. verify that user was found on resource JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource); String idOnResource = jdbcTemplate.queryForObject("SELECT id FROM testpull WHERE id=?", String.class, "5432"); assertEquals("5432", idOnResource); // 3. unlink user from resource, then remove it DeassociationPatch patch = new DeassociationPatch(); patch.setKey(user.getKey()); patch.setAction(ResourceDeassociationAction.UNLINK); patch.getResources().add(newResource.getKey()); assertNotNull(userService.deassociate(patch).readEntity(BulkActionResult.class)); userService.delete(user.getKey()); // 4. create pull task and execute newTask = taskService.read("7c2242f4-14af-4ab5-af31-cdae23783655", true); newTask.setResource(newResource.getKey()); newTask.setDestinationRealm("/even/two"); Response response = taskService.create(newTask); newTask = getObject(response.getLocation(), TaskService.class, PullTaskTO.class); assertNotNull(newTask); ExecTO execution = AbstractTaskITCase.execProvisioningTask(taskService, newTask.getKey(), 50, false); assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); // 5. verify that pulled user has PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().realm("/").fiql(SyncopeClient .getUserSearchConditionBuilder().is("username").equalTo(user.getUsername()).query()).build()); assertEquals(1, users.getTotalCount()); assertEquals(1, users.getResult().get(0).getMemberships().size()); assertEquals("5432", users.getResult().get(0).getMemberships().get(0).getPlainAttrMap().get("aLong") .getValues().get(0)); } catch (Exception e) { LOG.error("Unexpected error", e); fail(e.getMessage()); } finally { if (newTask != null && !"83f7e85d-9774-43fe-adba-ccd856312994".equals(newTask.getKey())) { taskService.delete(newTask.getKey()); } resourceService.delete(newResource.getKey()); } }
From source file:org.apache.syncope.fit.core.MigrationITCase.java
@Test public void migrateFromSyncope12() throws InterruptedException { // 1. cleanup try {//from ww w .ja v a 2 s . c o m for (AbstractTaskTO task : taskService .list(new TaskQuery.Builder(TaskType.PULL).resource(RESOURCE_KEY).build()).getResult()) { if (PULL_TASK_NAME.equals(PullTaskTO.class.cast(task).getName())) { taskService.delete(task.getKey()); } } } catch (Exception e) { // ignore } try { resourceService.delete(RESOURCE_KEY); } catch (Exception e) { // ignore } try { for (ConnInstanceTO connInstance : connectorService.list(null)) { if (CONNINSTANCE_DISPLAY_NAME.equals(connInstance.getDisplayName())) { connectorService.delete(connInstance.getKey()); } } } catch (Exception e) { // ignore } try { schemaService.delete(SchemaType.PLAIN, MIGRATION_CIPHER_ALGORITHM); schemaService.delete(SchemaType.PLAIN, MIGRATION_MEMBERSHIPS_SCHEMA); schemaService.delete(SchemaType.PLAIN, MIGRATION_RESOURCES_SCHEMA); anyTypeClassService.delete(MIGRATION_ANYTYPE_CLASS); } catch (Exception e) { // ignore } BulkAction bulkAction = new BulkAction(); bulkAction.setType(BulkAction.Type.DELETE); for (UserTO user : userService.search(new AnyQuery.Builder().fiql("username==*12").build()).getResult()) { bulkAction.getTargets().add(user.getKey()); } userService.bulk(bulkAction); bulkAction.getTargets().clear(); for (GroupTO group : groupService.search(new AnyQuery.Builder().fiql("name==*12").build()).getResult()) { bulkAction.getTargets().add(group.getKey()); } groupService.bulk(bulkAction); // 2. setup setupResource(setupConnector(), setupAnyTypeClass()); setupRealm(); String pullTaskKey = setupPullTask(); // 3. execute pull task execProvisioningTask(taskService, pullTaskKey, 50, false); Thread.sleep(3000L); // 4. verify UserTO user = userService.read("rossini12"); assertNotNull(user); assertEquals("/" + MIGRATION_REALM, user.getRealm()); GroupTO group = groupService.read("12 aRoleForPropagation12"); assertNotNull(group); assertEquals("/" + MIGRATION_REALM, group.getRealm()); // 4a. user plain attrs assertEquals("Gioacchino", user.getPlainAttrMap().get("firstname").getValues().get(0)); assertEquals("Rossini", user.getPlainAttrMap().get("surname").getValues().get(0)); // 4b. user resources assertTrue(user.getResources().contains(RESOURCE_NAME_TESTDB2)); // 4c. user memberships assertTrue(IterableUtils.matchesAny(user.getMemberships(), new Predicate<MembershipTO>() { @Override public boolean evaluate(final MembershipTO object) { return "1 root12".equals(object.getGroupName()); } })); // 4d. user password assertNotNull(clientFactory.create("bellini12", ADMIN_PWD).self()); // 4e. group plain attrs assertEquals("r12", group.getPlainAttrMap().get("title").getValues().get(0)); // 4f. group resources assertTrue(group.getResources().contains(RESOURCE_NAME_CSV)); }
From source file:org.apache.syncope.fit.core.RealmITCase.java
private RealmTO getRealm(final String fullPath) { return IterableUtils.find(realmService.list(fullPath), new Predicate<RealmTO>() { @Override//from w w w . j a v a 2 s. c o m public boolean evaluate(final RealmTO object) { return fullPath.equals(object.getFullPath()); } }); }
From source file:org.apache.syncope.fit.core.RealmITCase.java
@Test public void createUpdate() { final RealmTO realm = new RealmTO(); realm.setName("last"); // 1. create//from www . j a va 2 s . c om Response response = realmService.create("/even/two", realm); RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class); assertNotNull(actuals); assertTrue(actuals.length > 0); RealmTO actual = actuals[0]; assertNotNull(actual.getKey()); assertEquals("last", actual.getName()); assertEquals("/even/two/last", actual.getFullPath()); assertEquals(actual.getParent(), getRealm("/even/two").getKey()); assertNull(realm.getAccountPolicy()); assertNull(realm.getPasswordPolicy()); // 2. update setting policies actual.setAccountPolicy("06e2ed52-6966-44aa-a177-a0ca7434201f"); actual.setPasswordPolicy("986d1236-3ac5-4a19-810c-5ab21d79cba1"); realmService.update(actual); actual = getRealm(actual.getFullPath()); assertNotNull(actual.getAccountPolicy()); assertNotNull(actual.getPasswordPolicy()); // 3. update changing parent actual.setParent(getRealm("/odd").getKey()); realmService.update(actual); actual = getRealm("/odd/last"); assertNotNull(actual); assertEquals("/odd/last", actual.getFullPath()); assertEquals(1, IterableUtils.countMatches(realmService.list(), new Predicate<RealmTO>() { @Override public boolean evaluate(final RealmTO object) { return realm.getName().equals(object.getName()); } })); // 4. create under invalid path try { realmService.create("a name", realm); fail(); } catch (SyncopeClientException e) { assertEquals(ClientExceptionType.InvalidPath, e.getType()); } // 5. attempt to create duplicate try { realmService.create("/odd", realm); fail(); } catch (SyncopeClientException e) { assertEquals(ClientExceptionType.EntityExists, e.getType()); } }