Example usage for org.apache.commons.collections4 Predicate Predicate

List of usage examples for org.apache.commons.collections4 Predicate Predicate

Introduction

In this page you can find the example usage for org.apache.commons.collections4 Predicate Predicate.

Prototype

Predicate

Source Link

Usage

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());
    }
}