diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties
index 3d22726d2d..1ffbfb4af3 100644
--- a/config/alfresco/messages/webclient.properties
+++ b/config/alfresco/messages/webclient.properties
@@ -602,6 +602,8 @@ space_owner=User ''{0}'' is the current owner of this space.
users_and_groups=Users and Groups
authority=Username
invite_users_summary=Users and Roles
+too_many_users=Too many users matched by your search. Please narrow your search and try again.
+max_users_returned=Search has been limited to show first {0} results.
# Invite Content Users Wizard messages
invite_content_title=Invite Content Users Wizard
diff --git a/config/alfresco/web-client-config.xml b/config/alfresco/web-client-config.xml
index 1b28d86534..f807418b38 100644
--- a/config/alfresco/web-client-config.xml
+++ b/config/alfresco/web-client-config.xml
@@ -51,6 +51,9 @@
500
+
+ 500
+
/app:company_home/app:user_homes
diff --git a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java
index 3f44d13551..cae1b4175d 100644
--- a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java
+++ b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java
@@ -54,6 +54,7 @@ import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.ui.common.SortableSelectItem;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.component.UIGenericPicker;
+import org.apache.lucene.search.BooleanQuery;
/**
* Implementation of the add user dialog.
@@ -244,6 +245,15 @@ public class AddUsersDialog extends BaseDialogBean
}
});
}
+ catch (BooleanQuery.TooManyClauses clauses)
+ {
+ Utils.addErrorMessage(Application.getMessage(
+ FacesContext.getCurrentInstance(), "too_many_users"));
+
+ try { if (tx != null) {tx.rollback();} } catch (Exception tex) {}
+
+ return new SelectItem[0];
+ }
catch (Exception err)
{
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
diff --git a/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java b/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java
index 3a0b6f8438..57c39deccd 100644
--- a/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java
+++ b/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java
@@ -46,7 +46,9 @@ import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.search.impl.lucene.QueryParser;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.ResultSet;
+import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType;
@@ -61,6 +63,9 @@ import org.alfresco.web.bean.repository.User;
import org.alfresco.web.ui.common.SortableSelectItem;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.component.UIGenericPicker;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.lucene.search.BooleanQuery;
import org.springframework.mail.javamail.JavaMailSender;
/**
@@ -72,12 +77,15 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
{
private static final long serialVersionUID = -5145813383038390250L;
+ private final static Log logger = LogFactory.getLog(BaseInviteUsersWizard.class);
+
/** I18N message strings */
protected static final String MSG_USERROLES = "invite_users_summary";
private static final String MSG_USERS = "users";
private static final String MSG_GROUPS = "groups";
private static final String MSG_INVITED_TO = "invited_to";
private static final String MSG_INVITED_ROLE = "invite_role";
+ private static final String MSG_MAX_USERS = "max_users_returned";
protected static final String STEP_NOTIFY = "notify";
@@ -111,6 +119,9 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
/** True to allow duplicate authorities (with a different role) */
protected boolean allowDuplicateAuthorities = true;
+ /** Flag to determine if the maximum number of users have been returned */
+ protected boolean maxUsersReturned = false;
+
/** dialog state */
private String notify = NOTIFY_NO;
@@ -208,6 +219,7 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
{
super.init(parameters);
+ maxUsersReturned = false;
notify = NOTIFY_NO;
userRolesDataModel = null;
userGroupRoles = new ArrayList(8);
@@ -339,6 +351,7 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
FacesContext context = FacesContext.getCurrentInstance();
SelectItem[] items;
+ this.maxUsersReturned = false;
UserTransaction tx = null;
try
@@ -360,11 +373,32 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
query.append("*\" @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
query.append(term);
query.append("*");
- ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(
- Repository.getStoreRef(),
- SearchService.LANGUAGE_LUCENE,
- query.toString());
- List nodes = resultSet.getNodeRefs();
+
+ int maxResults = Application.getClientConfig(context).getInviteUsersMaxResults();
+
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Maximum invite users results size: " + maxResults);
+ }
+
+ SearchParameters searchParams = new SearchParameters();
+ searchParams.addStore(Repository.getStoreRef());
+ searchParams.setLanguage(SearchService.LANGUAGE_LUCENE);
+ searchParams.setQuery(query.toString());
+ if (maxResults > 0)
+ {
+ searchParams.setLimit(maxResults);
+ searchParams.setLimitBy(LimitBy.FINAL_SIZE);
+ }
+
+ ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(searchParams);
+ List nodes = resultSet.getNodeRefs();
+
+ // set the maximum users returned flag if appropriate
+ if (nodes.size() == maxResults)
+ {
+ this.maxUsersReturned = true;
+ }
for (int index=0; index
<%@ page isELIgnored="false" %>
+<%@ page import="org.alfresco.web.ui.common.PanelGenerator" %>
+<%@ page import="org.alfresco.web.ui.common.Utils" %>
+
+
+
+ <% PanelGenerator.generatePanelStart(out, request.getContextPath(), "yellowInner", "#ffffcc"); %>
+
+
+
+
+ <% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "yellowInner");
+ out.write(""); %>
+
+