private static List<OrganizationalEntity> getExcludedEntities(Task task, UserInfo userInfo) { List<OrganizationalEntity> excluded = ((InternalPeopleAssignments) task.getPeopleAssignments()).getExcludedOwners(); List<OrganizationalEntity> excludedUsers = new ArrayList<>(); for (OrganizationalEntity entity : excluded) { if (entity instanceof Group) { userInfo.getMembersForGroup((Group) entity).forEachRemaining(excludedUsers::add); } } excluded.addAll(excludedUsers); return excluded; }
private void testGetEntityForEmail(String email, String expected, boolean useDN) { Properties properties = createUserInfoProperties(); if (useDN) { properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true"); } UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties); Assertions.assertThat(ldapUserInfo.getEntityForEmail(email)).isEqualTo(expected); }
protected void buildMapByLanguage(Map<String, List<User>> map, User user, UserInfo userInfo) { String language = userInfo.getLanguageForEntity(user); List<User> list = map.get(language); if (list == null) { list = new ArrayList<User>(); map.put(language, list); } list.add(user); }
private void testGetEmailForEntity(OrganizationalEntity entity, String email, boolean customAttribute) { Properties properties = createUserInfoProperties(); if (customAttribute) { properties.setProperty(LDAPUserInfoImpl.EMAIL_ATTR_ID, "email"); } if (entity.getId().startsWith("uid=") || entity.getId().startsWith("cn=")) { properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true"); } UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties); Assertions.assertThat(ldapUserInfo.getEmailForEntity(entity)).isEqualTo(email); }
private void testGetDisplayName(OrganizationalEntity entity, String expectedName, boolean customAttribute) { Properties properties = createUserInfoProperties(); if (customAttribute) { properties.setProperty(LDAPUserInfoImpl.NAME_ATTR_ID, "name"); } if (entity.getId().startsWith("uid=") || entity.getId().startsWith("cn=")) { properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true"); } UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties); String name = ldapUserInfo.getDisplayName(entity); Assertions.assertThat(name).isNotNull(); Assertions.assertThat(name).isEqualTo(expectedName); }
FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in String displayName = user.getDisplayName(); Uri profileUri = user.getPhotoUrl(); // If the above were null, iterate the provider data // and set with the first non null data for (UserInfo userInfo : user.getProviderData()) { if (displayName == null && userInfo.getDisplayName() != null) { displayName = userInfo.getDisplayName(); } if (profileUri == null && userInfo.getPhotoUrl() != null) { profileUri = userInfo.getPhotoUrl(); } } accountNameTextView.setText(displayName); emailTextView.setText(user.getEmail()); if (profileUri != null) { Glide.with(this) .load(profileUri) .fitCenter() .into(userProfilePicture); } }
private void testHasEmail(Group group, boolean hasEmail, boolean customAttribute) { Properties properties = createUserInfoProperties(); if (customAttribute) { properties.setProperty(LDAPUserInfoImpl.EMAIL_ATTR_ID, "email"); } if (group.getId().startsWith("cn=")) { properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true"); } UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties); Assertions.assertThat(ldapUserInfo.hasEmail(group)).isEqualTo(hasEmail); }
for (User user : entry.getValue()) { String emailAddress = userInfo.getEmailForEntity(user); if (emailAddress != null) { if (toAddresses.add(emailAddress)) { User user = TaskModelProvider.getFactory().newUser(); ((InternalOrganizationalEntity) user).setId(header.getFrom()); msg.setFrom( new InternetAddress(userInfo.getEmailForEntity(user))); } else { msg.setFrom( new InternetAddress(mailSession.getProperty("mail.from"))); ((InternalOrganizationalEntity) user).setId(header.getReplyTo()); msg.setReplyTo( new InternetAddress[] { new InternetAddress(userInfo.getEmailForEntity(user))}); } else if (mailSession.getProperty("mail.replyto") != null) { msg.setReplyTo( new InternetAddress[] { new InternetAddress(mailSession.getProperty("mail.replyto"))});
private void assertUsers(UserInfo userInfo, boolean john, boolean mary, boolean peter, boolean mike) { Assertions.assertThat(userInfo).isNotNull(); SoftAssertions assertions = new SoftAssertions(); assertions.assertThat(userInfo.getDisplayName(JOHN)).as(JOHN.getId()).isEqualTo(john ? JOHN.getId() : null); assertions.assertThat(userInfo.getDisplayName(MARY)).as(MARY.getId()).isEqualTo(mary ? MARY.getId() : null); assertions.assertThat(userInfo.getDisplayName(PETER)).as(PETER.getId()).isEqualTo(peter ? PETER.getId() : null); assertions.assertThat(userInfo.getDisplayName(MIKE)).as(MIKE.getId()).isEqualTo(mike ? MIKE.getId() : null); assertions.assertAll(); }
private static List<OrganizationalEntity> getExcludedEntities(Task task, UserInfo userInfo) { List<OrganizationalEntity> excluded = ((InternalPeopleAssignments) task.getPeopleAssignments()).getExcludedOwners(); List<OrganizationalEntity> excludedUsers = new ArrayList<>(); for (OrganizationalEntity entity : excluded) { if (entity instanceof Group) { userInfo.getMembersForGroup((Group) entity).forEachRemaining(excludedUsers::add); } } excluded.addAll(excludedUsers); return excluded; } }
protected String getEmailAddress(OrganizationalEntity entity) { String emailAddress = userInfo.getEmailForEntity(entity); if (emailAddress != null) { return emailAddress; } return entity.getId(); }
private void assertGroups(UserInfo userInfo, boolean manager, boolean user, boolean analyst, boolean developer) { Assertions.assertThat(userInfo).isNotNull(); SoftAssertions assertions = new SoftAssertions(); assertions.assertThat(userInfo.getDisplayName(MANAGER)).as(MANAGER.getId()) .isEqualTo(manager ? MANAGER.getId() : null); assertions.assertThat(userInfo.getDisplayName(USER)).as(USER.getId()) .isEqualTo(user ? USER.getId() : null); assertions.assertThat(userInfo.getDisplayName(ANALYST)).as(ANALYST.getId()) .isEqualTo(analyst ? ANALYST.getId() : null); assertions.assertThat(userInfo.getDisplayName(DEVELOPER)).as(DEVELOPER.getId()) .isEqualTo(developer ? DEVELOPER.getId() : null); assertions.assertAll(); }
private void testGetLanguageForEntity(OrganizationalEntity entity, String language, boolean customAttribute) { Properties properties = createUserInfoProperties(); if (customAttribute) { properties.setProperty(LDAPUserInfoImpl.LANG_ATTR_ID, "language"); } if (entity.getId().startsWith("uid=") || entity.getId().startsWith("cn=")) { properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true"); } UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties); Assertions.assertThat(ldapUserInfo.getLanguageForEntity(entity)).isEqualTo(language); }
@Test public void testGetEntityForEmail() { String entityId = userInfo.getEntityForEmail("mary@domain.com"); assertEquals( "mary", entityId ); }
protected void buildMapByLanguage(Map<String, List<User>> map, Group group, UserInfo userInfo) { Iterator<OrganizationalEntity> it = userInfo.getMembersForGroup(group); if (it != null) { while (it.hasNext()) { OrganizationalEntity entity = it.next(); if (entity instanceof Group) { buildMapByLanguage(map, (Group) entity, userInfo); } else { buildMapByLanguage(map, (User) entity, userInfo); } } } }
@Override public Assignment apply(Task task, TaskContext taskContext, String excludedUser) { UserInfo userInfo = (UserInfo) ((org.jbpm.services.task.commands.TaskContext)taskContext).get(EnvironmentName.TASK_USER_INFO); List<OrganizationalEntity> excluded = (getExcludedEntities(task, userInfo)); // Get the the users from the task's the potential owners, making sure that excluded users are not included List<OrganizationalEntity> potentialOwners = task.getPeopleAssignments().getPotentialOwners().stream() .filter(oe -> oe instanceof User && !excluded.contains(oe) && !oe.getId().equals(excludedUser)) .collect(Collectors.toList()); // Get the users belonging to groups that are potential owners task.getPeopleAssignments().getPotentialOwners().stream().filter(oe -> oe instanceof Group) .forEach(oe -> { Iterator<OrganizationalEntity> groupUsers = userInfo.getMembersForGroup((Group)oe); if (groupUsers != null) { groupUsers.forEachRemaining(user -> { if (user != null && !excluded.contains(user) && !potentialOwners.contains(user) && !user.getId().equals(excludedUser)) { potentialOwners.add(user); } }); } }); logger.debug("Asking the load calculator [{}] for task loads for the users {}",calculator.getIdentifier(),potentialOwners); List<User> users = potentialOwners.stream().map(entityToUser).collect(Collectors.toList()); Collection<UserTaskLoad> loads = calculator.getUserTaskLoads(users, taskContext); UserTaskLoad lightestLoad = loads.stream().min(UserTaskLoad::compareTo).orElse(null); return lightestLoad != null ? new Assignment(lightestLoad.getUser().getId()):null; }
@Override public Assignment apply(Task task, TaskContext taskContext, String excludedUser) { UserInfo userInfo = (UserInfo) ((org.jbpm.services.task.commands.TaskContext) taskContext).get(EnvironmentName.TASK_USER_INFO); List<OrganizationalEntity> excluded = getExcludedEntities(task, userInfo); // Get the the users from the task's the potential owners List<OrganizationalEntity> potentialOwners = task.getPeopleAssignments().getPotentialOwners().stream() .filter(oe -> oe instanceof User && !excluded.contains(oe)) .collect(Collectors.toList()); // Get the users belonging to groups that are potential owners task.getPeopleAssignments().getPotentialOwners().stream().filter(oe -> oe instanceof Group) .forEach(oe -> { Iterator<OrganizationalEntity> groupUsers = userInfo.getMembersForGroup((Group) oe); if (groupUsers != null) { groupUsers.forEachRemaining(user -> { if (user != null && !excluded.contains(user) && !potentialOwners.contains(user)) { potentialOwners.add(user); } }); } }); if (excludedUser != null) { logger.debug("Removing excluded user {} from the list of eligible users", excludedUser); potentialOwners.removeIf(entity -> entity.getId().equals(excludedUser)); } String queueName = getQueueName(task); CircularQueue<OrganizationalEntity> mappedQueue = synchronizedQueue(queueName, potentialOwners); OrganizationalEntity owner = mappedQueue.take(); return new Assignment(owner.getId()); }
logger.debug("Groups going to be resolved by {}", userInfo); potentialOwners.stream().filter(po -> po instanceof Group && !excludedOwners.contains(po)).forEach(po -> { Iterator<OrganizationalEntity> usersOfGroup = userInfo.getMembersForGroup((Group)po); if (usersOfGroup != null) {
private void testGetMembersForGroup(boolean emptyGroup, boolean customAttribute, boolean distinguishedName) { Properties properties = createUserInfoProperties(); if (customAttribute) { properties.setProperty(LDAPUserInfoImpl.MEMBER_ATTR_ID, "representative"); } if (distinguishedName) { properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true"); } UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties); Group group; if (distinguishedName) { group = emptyGroup ? USER_DN : MANAGER_DN; } else { group = emptyGroup ? USER : MANAGER; } Iterator<OrganizationalEntity> iterator = ldapUserInfo.getMembersForGroup(group); if (emptyGroup) { Assertions.assertThat(iterator.hasNext()).isFalse(); return; } Assertions.assertThat(iterator.hasNext()).isTrue(); User user = (User) iterator.next(); if (customAttribute) { Assertions.assertThat(user.getId()).isEqualTo(MARY_DN.getId()); } else { Assertions.assertThat(user.getId()).isEqualTo(JOHN_DN.getId()); } Assertions.assertThat(iterator.hasNext()).isFalse(); }
protected void collectRecipients(Set<String> emailRecipients, OrganizationalEntity entity) { if (entity instanceof User) { String recipientAddress = getEmailAddress(entity); emailRecipients.add(recipientAddress); } else if (entity instanceof Group) { Iterator<OrganizationalEntity> members = userInfo.getMembersForGroup((Group) entity); if (members != null) { while (members.hasNext()) { OrganizationalEntity member = (OrganizationalEntity) members.next(); collectRecipients(emailRecipients, member); } } } }