@Override public void search(final String pattern, final int maxResults, final LiveSearchCallback<String> callback) { final List<String> filteredCustomEntries; if (pattern == null || pattern.isEmpty()) { filteredCustomEntries = customEntries; } else { filteredCustomEntries = customEntries.stream() .filter(entry -> entry.contains(pattern)) .collect(Collectors.toList()); } RemoteCallback<AbstractEntityManager.SearchResponse<?>> searchResponseRemoteCallback = response -> processFilterResponse(response, filteredCustomEntries, maxResults, callback); ErrorCallback<Message> searchErrorCallback = (message, throwable) -> processError(callback); SearchRequestImpl request = new SearchRequestImpl(pattern, 1, maxResults); if (AssigneeType.USER.equals(type)) { userSystemManager.users(searchResponseRemoteCallback, searchErrorCallback).search(request); } else { userSystemManager.groups(searchResponseRemoteCallback, searchErrorCallback).search(request); } }
@Override public Group get(String identifier) throws SecurityManagementException { final GroupManager serviceImpl = getService(); return serviceImpl.get(identifier); }
@Override public void assignUsers(String name, Collection<String> users) throws SecurityManagementException { final GroupManager serviceImpl = getService(); serviceImpl.assignUsers(name, users); }
@Override public Group create(Group group) throws SecurityManagementException { final String name = group.getName(); if (isConstrained(name)) { throw new IllegalArgumentException("Group with name '" + name + "' cannot be created, " + "as it is a constrained value (it is a role or the admin group"); } final GroupManager serviceImpl = getService(); return serviceImpl.create(group); }
@Override public void delete(String... identifiers) throws SecurityManagementException { for (final String name : identifiers) { if (isConstrained(name)) { throw new IllegalArgumentException("Group with name '" + name + "' cannot be deleted, " + "as it is a constrained value (it is a role or the admin group"); } } final GroupManager serviceImpl = getService(); serviceImpl.delete(identifiers); }
@Override public Group update(Group group) throws SecurityManagementException { final String name = group.getName(); if (isConstrained(name)) { throw new IllegalArgumentException("Group with name '" + name + "' cannot be updated, " + "as it is a constrained value (it is a role or the admin group"); } final GroupManager serviceImpl = getService(); return serviceImpl.update(group); }
@Override public GroupManagerSettings getSettings() { final GroupManager serviceImpl = getService(); final GroupManagerSettings settings = serviceImpl.getSettings(); if (null != settings) { settings.setConstrainedGroups(SecurityManagementUtils.getRegisteredRoleNames()); } return settings; }
errorCallback).create(_group);
void delete() { final String name = group.getName(); userSystemManager.groups((Void v) -> { deleteGroupEvent.fire(new DeleteGroupEvent(name)); workbenchNotification.fire(new NotificationEvent(UsersManagementWidgetsConstants.INSTANCE.groupRemoved(name), INFO)); clear(); }, errorCallback).delete(name); }
@Override public SearchResponse<Group> search(SearchRequest request) throws SecurityManagementException { final GroupManager serviceImpl = getService(); if (request.getPage() == 0) { throw new IllegalArgumentException("First page must be 1."); } // Constraint registered UF roles as not allowed for searching. final Set<String> registeredRoleNames = SecurityManagementUtils.getRegisteredRoleNames(); if (request.getConstrainedIdentifiers() == null) { request.setConstrainedIdentifiers(registeredRoleNames); } else { request.getConstrainedIdentifiers().addAll(registeredRoleNames); } // Delegate the search to the specific provider. return serviceImpl.search(request); }
protected void doLoad(String name) { clear(); // Call backend service. showLoadingBox(); userSystemManager.groups((Group o) -> { hideLoadingBox(); GroupEditorWorkflow.this.group = o; assert group != null; edit(); }, errorCallback).get(name); }
errorCallback).create(_group);
protected void assignUsers(final Collection<String> users) { assert group != null; final String name = group.getName(); final boolean isEmptyUsersAllowed = userSystemManager.getGroupManagerSettings().allowEmpty(); final boolean isEmpty = users == null || users.isEmpty(); if (!isEmptyUsersAllowed && isEmpty) { showErrorMessage(UsersManagementWidgetsConstants.INSTANCE.groupMustHaveAtLeastOneUser()); showUsersAssignment(name); } else { loadingBox.show(); userSystemManager.groups(new RemoteCallback<Void>() { @Override public void callback(Void o) { loadingBox.hide(); fireUsersAssigned(name); create(); } }, errorCallback).assignUsers(name, users); } }
void delete() { final String name = group.getName(); userSystemManager.groups((Void v) -> { deleteGroupEvent.fire(new DeleteGroupEvent(name)); workbenchNotification.fire(new NotificationEvent(UsersManagementWidgetsConstants.INSTANCE.groupRemoved(name), INFO)); clear(); }, errorCallback).delete(name); }
@Override protected void showSearch() { showLoadingView(); // Call backend service. userSystemManager.groups(new RemoteCallback<AbstractEntityManager.SearchResponse<Group>>() { @Override public void callback(final AbstractEntityManager.SearchResponse<Group> response) { if (response != null) { final EntitiesList.Callback<Group> callback = createCallback(); entitiesList.show(response, callback); // Show the explorer's view. view.show(context, viewCallback); hideLoadingView(); } } }, errorCallback).search(new SearchRequestImpl(searchPattern, currentPage, pageSize, context != null ? context.getConstrainedEntities() : null)); }
protected void doLoad(String name) { clear(); // Call backend service. showLoadingBox(); userSystemManager.groups((Group o) -> { hideLoadingBox(); GroupEditorWorkflow.this.group = o; assert group != null; edit(); }, errorCallback).get(name); }
protected void assignUsers(final Collection<String> users) { assert group != null; final String name = group.getName(); final boolean isEmptyUsersAllowed = userSystemManager.getGroupManagerSettings().allowEmpty(); final boolean isEmpty = users == null || users.isEmpty(); if (!isEmptyUsersAllowed && isEmpty) { showErrorMessage(UsersManagementWidgetsConstants.INSTANCE.groupMustHaveAtLeastOneUser()); showUsersAssignment(name); } else { loadingBox.show(); userSystemManager.groups(new RemoteCallback<Void>() { @Override public void callback(Void o) { loadingBox.hide(); fireUsersAssigned(name); create(); } }, errorCallback).assignUsers(name, users); } }
@Override protected void showSearch() { showLoadingView(); // Call backend service. userSystemManager.groups(new RemoteCallback<AbstractEntityManager.SearchResponse<Group>>() { @Override public void callback(final AbstractEntityManager.SearchResponse<Group> response) { if (response != null) { final EntitiesList.Callback<Group> callback = createCallback(); entitiesList.show(response, callback); // Show the explorer's view. view.show(context, viewCallback); hideLoadingView(); } } }, errorCallback).search(new SearchRequestImpl(searchPattern, currentPage, pageSize, context != null ? context.getConstrainedEntities() : null)); }
@Test public void testSearchRoleNotExists() { GroupManager groupManager = mock(GroupManager.class); doAnswer(new Answer<Group>() { @Override public Group answer(InvocationOnMock invocationOnMock) throws Throwable { String name = (String) invocationOnMock.getArguments()[0]; Group g = mock(Group.class); when(g.getName()).thenReturn(name); return g; } }).when(groupManager).get(anyString()); doThrow(new GroupNotFoundException("admin")).when(groupManager).get("admin"); when(userSystemManager.groups()).thenReturn(groupManager); AbstractEntityManager.SearchResponse<Role> response = tested.search(new SearchRequestImpl("", 1, 10)); assertNotNull(response); int total = response.getTotal(); assertEquals(total, 3); boolean hasNextPage = response.hasNextPage(); assertEquals(hasNextPage, false); List<Role> results = response.getResults(); assertEquals(results.size(), 3); }
@Override public void searchEntry(String key, LiveSearchCallback<String> callback) { SearchRequestImpl request = new SearchRequestImpl(key, 1, 1); ErrorCallback<Message> searchErrorCallback = (message, throwable) -> processError(callback); RemoteCallback<AbstractEntityManager.SearchResponse<?>> searchResponseRemoteCallback = response -> searchEntry(key, response, callback); if (AssigneeType.USER.equals(type)) { userSystemManager.users(searchResponseRemoteCallback, searchErrorCallback).search(request); } else { userSystemManager.groups(searchResponseRemoteCallback, searchErrorCallback).search(request); } }