Juan Hernandez has uploaded a new change for review.

Change subject: core: Use map for LDAP query parameters
......................................................................

core: Use map for LDAP query parameters

Currently we format LDAP filters and distinguished names using the
String.format() method and custom formatter classes for cases where
parameters are arrays containing multiple values. This is difficult to
externalize and make configurable and leads to the creation of different
classes for different LDAP providers. In preparation for further changes
that will hopefull simplify the LDAP code this patch replaces the
String.format() with a simple but flexible templating mechanism. For
example, the mechanism that we currently use to generate a query for a
set Active Directory users can be replaced by a template like this:

  (|
    <% for (id in ids) { %>
      (objectGUID=${id})
    <% } %>
  )

Once these templates are in place it will be easier (in later patches)
to extract them out of the code and make them configurable.

Change-Id: I5c5e1c67d9635ff9fbac9c1bf681105be0338354
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/GroupsDNQueryGenerator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdGroupByGroupIdCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserIdCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserNameCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryData.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryDataImpl.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryExecutionFormatterBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataFactoryImpl.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/MultipleLdapQueryExecutionFormatter.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSMultipleLdapQueryExecutionFormatter.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSSimpleLdapQueryExecutionFormatter.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSUPNLdapQueryExecutionFormatter.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SearchQueryFotmatter.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SimpleLdapQueryExecutionFormatter.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersObjectGuidQueryGenerator.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LdapSearchQueryTestBase.java
18 files changed, 208 insertions(+), 212 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/14655/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
index 6e2e836..a9e0035 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
@@ -195,7 +195,7 @@
         LdapQueryData ldapQueryData = new LdapQueryDataImpl();
         ldapQueryData.setLdapQueryType(ldapQueryType);
         ldapQueryData.setDomain(data.getDomain());
-        ldapQueryData.setFilterParameters(new Object[] { 
data.getQueryForAdBroker() });
+        ldapQueryData.setName(data.getQueryForAdBroker());
 
         LdapReturnValueBase returnValue =
                 getLdapFactory(data.getDomain()).RunAdAction(adActionType,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/GroupsDNQueryGenerator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/GroupsDNQueryGenerator.java
index 5d109e0..cc2cfd5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/GroupsDNQueryGenerator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/GroupsDNQueryGenerator.java
@@ -21,10 +21,10 @@
         for (String groupIdentifier : ldapIdentifiers) {
             LdapQueryData queryData = new LdapQueryDataImpl();
             groupIdentifier = 
LdapBrokerUtils.hadleNameEscaping(groupIdentifier);
-            queryData.setBaseDNParameters(new Object[] { groupIdentifier });
+            queryData.setName(groupIdentifier);
             
queryData.setDomain(LdapBrokerUtils.getGroupDomain(groupIdentifier));
             String groupName = groupIdentifier.split(",", 2)[0].split("=")[1];
-            queryData.setFilterParameters(new Object[] { groupName });
+            queryData.setName(groupName);
             queryData.setLdapQueryType(LdapQueryType.getGroupByDN);
             results.add(queryData);
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java
index a4fbf6b..71f41ab 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java
@@ -30,7 +30,7 @@
             String[] loginNameParts = getLoginName().split("@");
             String principalName = constructPrincipalName(loginNameParts[0], 
loginNameParts[1]);
             String domain = loginNameParts[1].toLowerCase();
-            queryData.setFilterParameters(new Object[] { principalName });
+            queryData.setName(principalName);
             queryData.setDomain(domain);
             setDomain(domain);
             setAuthenticationDomain(domain);
@@ -39,7 +39,7 @@
             setAuthenticationDomain(getDomain());
             queryData.setDomain(getDomain());
             queryData.setLdapQueryType(LdapQueryType.getUserByName);
-            queryData.setFilterParameters(new Object[] { getLoginName() });
+            queryData.setName(getLoginName());
         }
         Object searchResult = directorySearcher.FindOne(queryData);
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdGroupByGroupIdCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdGroupByGroupIdCommand.java
index 5f53c2b..e28b592 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdGroupByGroupIdCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdGroupByGroupIdCommand.java
@@ -23,7 +23,7 @@
         Object group = null;
 
         LdapQueryData queryData = new LdapQueryDataImpl();
-        queryData.setFilterParameters(new Object[] { getGroupId() });
+        queryData.setId(getGroupId());
         queryData.setLdapQueryType(LdapQueryType.getGroupByGuid);
         queryData.setDomain(getDomain());
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserIdCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserIdCommand.java
index bdec7fa..bc22569 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserIdCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserIdCommand.java
@@ -23,7 +23,7 @@
         LdapUser user;
 
         LdapQueryData queryData = new LdapQueryDataImpl();
-        queryData.setFilterParameters(new Object[] { getUserId() });
+        queryData.setId(getUserId());
         queryData.setLdapQueryType(LdapQueryType.getUserByGuid);
         queryData.setDomain(getDomain());
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserNameCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserNameCommand.java
index 38d8eda..2795a42 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserNameCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGetAdUserByUserNameCommand.java
@@ -19,7 +19,7 @@
     protected void executeQuery(DirectorySearcher directorySearcher) {
         LdapQueryData queryData = new LdapQueryDataImpl();
         queryData.setDomain(getDomain());
-        queryData.setFilterParameters(new Object[] { 
getUserName().split("[@]", -1)[0] });
+        queryData.setName(getUserName().split("[@]", -1)[0]);
         queryData.setLdapQueryType(LdapQueryType.getUserByName);
         Object searchResult = directorySearcher.FindOne(queryData);
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryData.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryData.java
index a9acaf1..92e8f5f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryData.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryData.java
@@ -1,21 +1,26 @@
 package org.ovirt.engine.core.bll.adbroker;
 
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.compat.Guid;
+
 public interface LdapQueryData {
 
     public LdapQueryType getLdapQueryType();
 
     public void setLdapQueryType(LdapQueryType ldapQueryType);
 
-    public void setFilterParameters(Object[] filterParameters);
+    public Map<String, Object> getParameters();
 
-    public Object[] getFilterParameters();
-
-    public void setBaseDNParameters(Object[] baseDNParameters);
-
-    public Object[] getBaseDNParameters();
+    public void setDomain(String domain);
 
     public String getDomain();
 
-    public void setDomain(String domain);
+    public void setName(String name);
+
+    public void setId(Guid id);
+
+    public void setIds(List<Guid> ids);
 
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryDataImpl.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryDataImpl.java
index 502d142..5b07a8a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryDataImpl.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryDataImpl.java
@@ -1,11 +1,20 @@
 package org.ovirt.engine.core.bll.adbroker;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.compat.Guid;
+
 public class LdapQueryDataImpl implements LdapQueryData {
+    // Names for well known parameters:
+    private static final String DOMAIN = "domain";
+    private static final String NAME = "name";
+    private static final String ID = "id";
+    private static final String IDS = "ids";
 
     private LdapQueryType ldapQueryType;
-    private Object[] filterParameters;
-    private Object[] baseDNParameters;
-    private String domain;
+    private Map<String, Object> parameters = new HashMap<String, Object>(2);
 
     @Override
     public LdapQueryType getLdapQueryType() {
@@ -18,33 +27,32 @@
     }
 
     @Override
-    public void setFilterParameters(Object[] filterParameters) {
-        this.filterParameters = filterParameters;
-    }
-
-    @Override
-    public Object[] getFilterParameters() {
-        return filterParameters;
-    }
-
-    @Override
-    public void setBaseDNParameters(Object[] baseDNParameters) {
-        this.baseDNParameters = baseDNParameters;
-    }
-
-    @Override
-    public Object[] getBaseDNParameters() {
-        return baseDNParameters;
-    }
-
-    @Override
-    public String getDomain() {
-        return domain;
+    public Map<String, Object> getParameters() {
+        return parameters;
     }
 
     @Override
     public void setDomain(String domain) {
-        this.domain = domain;
+        parameters.put(DOMAIN, domain);
     }
 
+    @Override
+    public String getDomain() {
+        return (String) parameters.get(DOMAIN);
+    }
+
+    @Override
+    public void setName(String name) {
+        parameters.put(NAME, name);
+    }
+
+    @Override
+    public void setId(Guid id) {
+        parameters.put(ID, id);
+    }
+
+    @Override
+    public void setIds(List<Guid> ids) {
+        parameters.put(IDS, ids);
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryExecutionFormatterBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryExecutionFormatterBase.java
index 91397c5..2c33c80 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryExecutionFormatterBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryExecutionFormatterBase.java
@@ -1,5 +1,8 @@
 package org.ovirt.engine.core.bll.adbroker;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.ovirt.engine.core.compat.Guid;
 
 public abstract class LdapQueryExecutionFormatterBase implements 
LdapQueryFormatter<LdapQueryExecution> {
@@ -9,20 +12,20 @@
 
     protected abstract String getDisplayFilter(LdapQueryMetadata 
queryMetadata);
 
-    protected Object[] getEncodedParameters(Object[] parameters, 
LdapGuidEncoder LdapGuidEncoder) {
+    protected Map<String, Object> getEncodedParameters(Map<String, Object> 
parameters, LdapGuidEncoder LdapGuidEncoder) {
         if (parameters == null) {
             return null;
         }
 
-        Object[] retVal = parameters.clone();
+        Map<String, Object> retVal = new HashMap<String, 
Object>(parameters.size());
 
-        int index = 0;
-
-        for (Object parameter : parameters) {
-            if (parameter instanceof Guid) {
-                retVal[index] = LdapGuidEncoder.encodeGuid((Guid) parameter);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            String name = entry.getKey();
+            Object value = entry.getValue();
+            if (value instanceof Guid) {
+                value = LdapGuidEncoder.encodeGuid((Guid) value);
             }
-            index++;
+            retVal.put(name, value);
         }
 
         return retVal;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataFactoryImpl.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataFactoryImpl.java
index e24fe1b..9c60c0c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataFactoryImpl.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataFactoryImpl.java
@@ -56,7 +56,7 @@
     // 2. Base DN expression
     // 3. The context mapper
     // 4. The list of attributes we want the query to return from the ldap 
provider
-    // 5. The formatter - it formats the query (we currently have simple one, 
multiple (for queries like (|(...)(...))) and one for SearchBackend purposes
+    // 5. The formatter - it formats the query and one for SearchBackend 
purposes
     // 6. The GUID encoder - sometimes we need to convert the binary data to 
string (in AD for example), or just toString (in IPA)
 
     private static Map<LdapQueryType, LdapQueryMetadata> 
setGeneralProviderMap() {
@@ -77,14 +77,14 @@
 
         adHashMap.put(LdapQueryType.getGroupByDN, new LdapQueryMetadataImpl(
                         "(cn=*)",
-                        "%1$s",
+                        "${name}",
                         new ADGroupContextMapper(),
                         SearchControls.OBJECT_SCOPE,
                         ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
                         new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl(
-                        "(objectGUID=%1$s)",
+                        "(objectGUID=${id})",
                         "",
                         new ADUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -92,7 +92,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl(
-                        "(objectGUID=%1$s)",
+                        "(objectGUID=${id})",
                         "",
                         new ADGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -100,7 +100,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl(
-                        "(&(ObjectCategory=Group)(name=%1$s))",
+                        "(&(ObjectCategory=Group)(name=${name}))",
                         "",
                         new ADGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -108,7 +108,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getUserByPrincipalName, new 
LdapQueryMetadataImpl(
-                        
"(&(sAMAccountType=805306368)(userPrincipalName=%1$s))",
+                        
"(&(sAMAccountType=805306368)(userPrincipalName=${name}))",
                         "",
                         new ADUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -116,7 +116,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl(
-                        "(&(sAMAccountType=805306368)(sAMAccountName=%1$s))",
+                        
"(&(sAMAccountType=805306368)(sAMAccountName=${name}))",
                         "",
                         new ADUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -132,20 +132,31 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getGroupsByGroupNames, new 
LdapQueryMetadataImpl(
-                        "(&(ObjectCategory=Group)(name=%1$s))",
+                        "(&" +
+                            "(ObjectCategory=Group)" +
+                            "(|" +
+                                "<% for (name in names) { %>" +
+                                    "(name=${name})" +
+                                "<% } %>" +
+                            ")" +
+                        ")",
                         "",
                         new ADGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
-                        new MultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
         adHashMap.put(LdapQueryType.getUsersByUserGuids, new 
LdapQueryMetadataImpl(
-                        "(objectGUID=%1$s)",
+                        "(|" +
+                            "<% for (id in ids) { %>" +
+                                "(objectGUID=${id})" +
+                            "<% } %>" +
+                        ")",
                         "",
                         new ADUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         ADUserContextMapper.USERS_ATTRIBUTE_FILTER,
-                        new MultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new SimpleLdapQueryExecutionFormatter(),
                         new ADLdapGuidEncoder()));
 
         LdapQueryMetadataImpl searchUsersMetadata =
@@ -174,14 +185,14 @@
         HashMap<LdapQueryType, LdapQueryMetadata> ipaHashMap = new 
HashMap<LdapQueryType, LdapQueryMetadata>();
         ipaHashMap.put(LdapQueryType.getGroupByDN, new LdapQueryMetadataImpl(
                         "(cn=*)",
-                        "%1$s",
+                        "${name}",
                         new IPAGroupContextMapper(),
                         SearchControls.OBJECT_SCOPE,
                         IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
                         new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl(
-                        "(ipaUniqueID=%1$s)",
+                        "(ipaUniqueID=${id})",
                         "",
                         new IPAGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -189,7 +200,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl(
-                        "(ipaUniqueID=%1$s)",
+                        "(ipaUniqueID=${id})",
                         "",
                         new IPAUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -197,7 +208,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl(
-                        "(&(objectClass=ipaUserGroup)(cn=%1$s))",
+                        "(&(objectClass=ipaUserGroup)(cn=${name}))",
                         "",
                         new IPAGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -205,7 +216,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getUserByPrincipalName, new 
LdapQueryMetadataImpl(
-                        
"(&(objectClass=krbPrincipalAux)(krbPrincipalName=%1$s))",
+                        
"(&(objectClass=krbPrincipalAux)(krbPrincipalName=${name}))",
                         "",
                         new IPAUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -213,7 +224,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl(
-                        
"(&(objectClass=posixAccount)(objectClass=krbPrincipalAux)(uid=%1$s))",
+                        
"(&(objectClass=posixAccount)(objectClass=krbPrincipalAux)(uid=${name}))",
                         "",
                         new IPAUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -229,20 +240,31 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getGroupsByGroupNames, new 
LdapQueryMetadataImpl(
-                        "(&(objectClass=ipaUserGroup)(cn=%1$s))",
+                        "(&" +
+                            "(objectClass=ipaUserGroup)" +
+                            "(|" +
+                                "<% for (name in names) { %>" +
+                                    "(cn=${name})" +
+                                "<% } %>" +
+                            ")" +
+                        ")",
                         "",
                         new IPAGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
-                        new MultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         ipaHashMap.put(LdapQueryType.getUsersByUserGuids, new 
LdapQueryMetadataImpl(
-                        "(ipaUniqueID=%1$s)",
+                        "(|" +
+                            "<% for (id in ids) { %>" +
+                                "(ipaUniqueID=${id})" +
+                            "<% } %>" +
+                        ")",
                         "",
                         new IPAUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         IPAUserContextMapper.USERS_ATTRIBUTE_FILTER,
-                        new MultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new SimpleLdapQueryExecutionFormatter(),
                         new IPALdapGuidEncoder()));
         LdapQueryMetadataImpl ipaSearchUsersMetadata = new 
LdapQueryMetadataImpl(
                         "this string is replaced by user input meta-query",
@@ -272,14 +294,14 @@
         HashMap<LdapQueryType, LdapQueryMetadata> dsHashMap = new 
HashMap<LdapQueryType, LdapQueryMetadata>();
         dsHashMap.put(LdapQueryType.getGroupByDN, new LdapQueryMetadataImpl(
                         "(cn=*)",
-                        "%1$s",
+                        "${name}",
                         new RHDSGroupContextMapper(),
                         SearchControls.OBJECT_SCOPE,
                         RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
                         new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         dsHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl(
-                        "(nsuniqueid=%1$s)",
+                        "(nsuniqueid=${id})",
                         "",
                         new RHDSGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -287,7 +309,7 @@
                         new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         dsHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl(
-                        "(nsuniqueid=%1$s)",
+                        "(nsuniqueid=${id})",
                         "",
                         new RHDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -295,7 +317,7 @@
                         new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         dsHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl(
-                        "(&(objectClass=groupofuniquenames)(cn=%1$s))",
+                        "(&(objectClass=groupofuniquenames)(cn=${name}))",
                         "",
                         new RHDSGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -303,7 +325,7 @@
                         new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         dsHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl(
-                        "(&(objectClass=person)(uid=%1$s))",
+                        "(&(objectClass=person)(uid=${name}))",
                         "",
                         new RHDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -313,7 +335,7 @@
         // In RHDS there is no UPN, so we do the same query as getUserByName, 
using a formatter that will adjust the filter
         // to contain the user name instead of the UPN
         dsHashMap.put(LdapQueryType.getUserByPrincipalName, new 
LdapQueryMetadataImpl(
-                        "(&(objectClass=person)(uid=%1$s))",
+                        "(&(objectClass=person)(uid=${name}))",
                         "",
                         new RHDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -329,20 +351,31 @@
                         new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         dsHashMap.put(LdapQueryType.getGroupsByGroupNames, new 
LdapQueryMetadataImpl(
-                        "(&(objectClass=groupofuniquenames)(cn=%1$s))",
+                        "(&" +
+                            "(objectClass=groupofuniquenames)" +
+                            "(|" +
+                                "<% for (name in names) { %>" +
+                                    "(cn=${name})" +
+                                "<% } %>" +
+                            ")" +
+                        ")",
                         "",
                         new RHDSGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
-                        new RHDSMultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         dsHashMap.put(LdapQueryType.getUsersByUserGuids, new 
LdapQueryMetadataImpl(
-                        "(nsuniqueid=%1$s)",
+                        "(|" +
+                            "<% for (id in ids) { %>" +
+                                "(nsuniqueid=${id})" +
+                            "<% } %>" +
+                        ")",
                         "",
                         new RHDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         RHDSUserContextMapper.USERS_ATTRIBUTE_FILTER,
-                        new RHDSMultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new RHDSSimpleLdapQueryExecutionFormatter(),
                         new RHDSLdapGuidEncoder()));
         LdapQueryMetadataImpl rhdsSearchUsersMetadata = new 
LdapQueryMetadataImpl(
                         "this string is replaced by user input meta-query",
@@ -372,14 +405,14 @@
         HashMap<LdapQueryType, LdapQueryMetadata> itdsHashMap = new 
HashMap<LdapQueryType, LdapQueryMetadata>();
         itdsHashMap.put(LdapQueryType.getGroupByDN, new LdapQueryMetadataImpl(
                         "(cn=*)",
-                        "%1$s",
+                        "${name}",
                         new ITDSGroupContextMapper(),
                         SearchControls.OBJECT_SCOPE,
                         ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
                         new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getGroupByGuid, new 
LdapQueryMetadataImpl(
-                        "(uniqueIdentifier=%1$s)",
+                        "(uniqueIdentifier=${id})",
                         "",
                         new ITDSGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -387,7 +420,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl(
-                        "(uniqueIdentifier=%1$s)",
+                        "(uniqueIdentifier=${id})",
                         "",
                         new ITDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -395,7 +428,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getGroupByName, new 
LdapQueryMetadataImpl(
-                        "(&(objectClass=groupofuniquenames)(cn=%1$s))",
+                        "(&(objectClass=groupofuniquenames)(cn=${name}))",
                         "",
                         new ITDSGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -403,7 +436,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getUserByPrincipalName, new 
LdapQueryMetadataImpl(
-                        "(principalName=%1$s))",
+                        "(principalName=${name}))",
                         "",
                         new ITDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -411,7 +444,7 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl(
-                        "(uid=%1$s))",
+                        "(uid=${name}))",
                         "",
                         new ITDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
@@ -427,20 +460,31 @@
                         new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getGroupsByGroupNames, new 
LdapQueryMetadataImpl(
-                        "(&(objectClass=groupofuniquenames)(cn=%1$s))",
+                        "(&" +
+                            "(objectClass=groupofuniquenames)" +
+                            "(|" +
+                                "<% for (name in names) { %>" +
+                                    "(cn=${name})" +
+                                "<% } %>" +
+                            ")" +
+                        ")",
                         "",
                         new ITDSGroupContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER,
-                        new MultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         itdsHashMap.put(LdapQueryType.getUsersByUserGuids, new 
LdapQueryMetadataImpl(
-                        "(uid=%1$s)",
+                        "(|" +
+                            "<% for (id in ids) { %>" +
+                                "(uid=${id})" +
+                            "<% } %>" +
+                        ")",
                         "",
                         new ITDSUserContextMapper(),
                         SearchControls.SUBTREE_SCOPE,
                         ITDSUserContextMapper.USERS_ATTRIBUTE_FILTER,
-                        new MultipleLdapQueryExecutionFormatter("(|", ")"),
+                        new SimpleLdapQueryExecutionFormatter(),
                         new ITDSLdapGuidEncoder()));
         LdapQueryMetadataImpl itdsSearchUsersMetadata = new 
LdapQueryMetadataImpl(
                         "this string is replaced by user input meta-query",
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/MultipleLdapQueryExecutionFormatter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/MultipleLdapQueryExecutionFormatter.java
deleted file mode 100644
index 4241c91..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/MultipleLdapQueryExecutionFormatter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.ovirt.engine.core.bll.adbroker;
-
-public class MultipleLdapQueryExecutionFormatter extends 
LdapQueryExecutionFormatterBase {
-
-    private String prefix;
-    private String suffix;
-
-    MultipleLdapQueryExecutionFormatter(String prefix, String suffix) {
-        this.prefix = prefix;
-        this.suffix = suffix;
-    }
-
-    @Override
-    protected String getDisplayFilter(LdapQueryMetadata queryMetadata) {
-        // The display filter uses the regular parameters, because the encoded 
ones may not be readable
-        return getFilter(queryMetadata, 
queryMetadata.getQueryData().getFilterParameters());
-    }
-
-    @Override
-    public LdapQueryExecution format(LdapQueryMetadata queryMetadata) {
-
-        String displayFilter = getDisplayFilter(queryMetadata);
-
-        Object[] encodedFilterParameters =
-                
getEncodedParameters(queryMetadata.getQueryData().getFilterParameters(),
-                        queryMetadata.getLdapGuidEncoder());
-
-        String filter = getFilter(queryMetadata, encodedFilterParameters);
-
-        String baseDN =
-                String.format(queryMetadata.getBaseDN(),
-                        
getEncodedParameters(queryMetadata.getQueryData().getBaseDNParameters(),
-                                queryMetadata.getLdapGuidEncoder()));
-
-        return new LdapQueryExecution(filter,
-                displayFilter,
-                baseDN,
-                queryMetadata.getContextMapper(),
-                queryMetadata.getSearchScope(),
-                queryMetadata.getReturningAttributes(),
-                queryMetadata.getQueryData().getDomain());
-    }
-
-    protected String getFilter(LdapQueryMetadata queryMetadata, Object[] 
filterParameters) {
-        StringBuilder filter = new StringBuilder(prefix);
-
-        for (Object currObject : filterParameters) {
-            filter.append(String.format(queryMetadata.getFilter(), 
currObject));
-        }
-
-        filter.append(suffix);
-
-        return filter.toString();
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-
-    public String getSuffix() {
-        return suffix;
-    }
-
-    public void setSuffix(String suffix) {
-        this.suffix = suffix;
-    }
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSMultipleLdapQueryExecutionFormatter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSMultipleLdapQueryExecutionFormatter.java
deleted file mode 100644
index 2ed5631..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSMultipleLdapQueryExecutionFormatter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.ovirt.engine.core.bll.adbroker;
-
-public class RHDSMultipleLdapQueryExecutionFormatter extends 
MultipleLdapQueryExecutionFormatter {
-
-    RHDSMultipleLdapQueryExecutionFormatter(String prefix, String suffix) {
-        super(prefix, suffix);
-    }
-
-    // In DS the guid is a readable String as well, but it is different then 
our guid, so we need to show the encoded
-    // parameters
-    @Override
-    protected String getDisplayFilter(LdapQueryMetadata queryMetadata) {
-        Object[] encodedFilterParameters =
-                
getEncodedParameters(queryMetadata.getQueryData().getFilterParameters(),
-                        queryMetadata.getLdapGuidEncoder());
-
-        return getFilter(queryMetadata, encodedFilterParameters);
-    }
-
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSSimpleLdapQueryExecutionFormatter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSSimpleLdapQueryExecutionFormatter.java
index d9dfdf15..5e1c81e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSSimpleLdapQueryExecutionFormatter.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSSimpleLdapQueryExecutionFormatter.java
@@ -1,13 +1,28 @@
 package org.ovirt.engine.core.bll.adbroker;
 
+import org.apache.log4j.Logger;
+import org.ovirt.engine.core.utils.templates.Template;
+import org.ovirt.engine.core.utils.templates.TemplateCompiler;
+import org.ovirt.engine.core.utils.templates.TemplateException;
+
 public class RHDSSimpleLdapQueryExecutionFormatter extends 
SimpleLdapQueryExecutionFormatter {
+    // The log:
+    private static final Logger log = 
Logger.getLogger(RHDSSimpleLdapQueryExecutionFormatter.class);
+
     // In DS the guid is a readable String as well, but it is different then 
our guid, so we need to show the encoded
     // parameters
     @Override
     protected String getDisplayFilter(LdapQueryMetadata queryMetadata) {
-        return String.format(queryMetadata.getFilter(),
-                
getEncodedParameters(queryMetadata.getQueryData().getFilterParameters(),
-                        queryMetadata.getLdapGuidEncoder()));
+        try {
+            Template filterTemplate = 
TemplateCompiler.getInstance().compile(queryMetadata.getFilter());
+            return filterTemplate.eval(
+                
getEncodedParameters(queryMetadata.getQueryData().getParameters(),
+                            queryMetadata.getLdapGuidEncoder()));
+        }
+        catch (TemplateException exception) {
+            log.error("Error evaluating template.", exception);
+            return null;
+        }
     }
 
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSUPNLdapQueryExecutionFormatter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSUPNLdapQueryExecutionFormatter.java
index cdb2134..89673c1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSUPNLdapQueryExecutionFormatter.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSUPNLdapQueryExecutionFormatter.java
@@ -9,7 +9,7 @@
      * Put the user name instead of the UPN in the filter
      */
     protected String getFilter(LdapQueryMetadata queryMetadata) {
-        String userPrincipalName = 
(String)queryMetadata.getQueryData().getFilterParameters()[0];
+        String userPrincipalName = 
(String)queryMetadata.getQueryData().getParameters().get("name");
         String userName = userPrincipalName.split("@")[0];
         return String.format(queryMetadata.getFilter(), userName);
     }
@@ -26,7 +26,7 @@
 
         String baseDN =
                 String.format(queryMetadata.getBaseDN(),
-                        
getEncodedParameters(queryMetadata.getQueryData().getBaseDNParameters(),
+                        
getEncodedParameters(queryMetadata.getQueryData().getParameters(),
                                 queryMetadata.getLdapGuidEncoder()));
 
         return new LdapQueryExecution(filter,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SearchQueryFotmatter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SearchQueryFotmatter.java
index 7a3a356..928b1c4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SearchQueryFotmatter.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SearchQueryFotmatter.java
@@ -22,7 +22,7 @@
     @Override
     public LdapQueryExecution format(LdapQueryMetadata queryMetadata) {
 
-        String filter = (String) 
queryMetadata.getQueryData().getFilterParameters()[0];
+        String filter = (String) 
queryMetadata.getQueryData().getParameters().get("name");
         for (Entry<SearchLangageLDAPTokens, String> tokenEntry : 
tokensToLDAPKeys.entrySet()) {
             filter = StringUtils.replace(filter, tokenEntry.getKey().name(), 
tokenEntry.getValue());
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SimpleLdapQueryExecutionFormatter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SimpleLdapQueryExecutionFormatter.java
index 208c9c9..9dba0b5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SimpleLdapQueryExecutionFormatter.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/SimpleLdapQueryExecutionFormatter.java
@@ -1,31 +1,45 @@
 package org.ovirt.engine.core.bll.adbroker;
 
+import org.apache.log4j.Logger;
+import org.ovirt.engine.core.utils.templates.Template;
+import org.ovirt.engine.core.utils.templates.TemplateCompiler;
+import org.ovirt.engine.core.utils.templates.TemplateException;
+
 public class SimpleLdapQueryExecutionFormatter extends 
LdapQueryExecutionFormatterBase {
+    // The log:
+    private static final Logger log = 
Logger.getLogger(SimpleLdapQueryExecutionFormatter.class);
 
     @Override
     protected String getDisplayFilter(LdapQueryMetadata queryMetadata) {
-        return String.format(queryMetadata.getFilter(), 
queryMetadata.getQueryData().getFilterParameters());
+        return String.format(queryMetadata.getFilter(), 
queryMetadata.getQueryData().getParameters());
     }
 
     @Override
     public LdapQueryExecution format(LdapQueryMetadata queryMetadata) {
+        try {
+            Template filterTemplate = 
TemplateCompiler.getInstance().compile(queryMetadata.getFilter());
+            String filter =
+                    filterTemplate.eval(
+                            
getEncodedParameters(queryMetadata.getQueryData().getParameters(),
+                                    queryMetadata.getLdapGuidEncoder()));
+            Template baseDNTemplate = 
TemplateCompiler.getInstance().compile(queryMetadata.getBaseDN());
+            String baseDN =
+                    baseDNTemplate.eval(
+                            
getEncodedParameters(queryMetadata.getQueryData().getParameters(),
+                                    queryMetadata.getLdapGuidEncoder()));
 
-        String filter =
-                String.format(queryMetadata.getFilter(),
-                        
getEncodedParameters(queryMetadata.getQueryData().getFilterParameters(),
-                                queryMetadata.getLdapGuidEncoder()));
+            return new LdapQueryExecution(filter,
+                    getDisplayFilter(queryMetadata),
+                    baseDN,
+                    queryMetadata.getContextMapper(),
+                    queryMetadata.getSearchScope(),
+                    queryMetadata.getReturningAttributes(),
+                    queryMetadata.getQueryData().getDomain());
+        }
+        catch (TemplateException exception) {
+            log.error("Error while evaluating template.", exception);
+            return null;
+        }
 
-        String baseDN =
-                String.format(queryMetadata.getBaseDN(),
-                        
getEncodedParameters(queryMetadata.getQueryData().getBaseDNParameters(),
-                                queryMetadata.getLdapGuidEncoder()));
-
-        return new LdapQueryExecution(filter,
-                getDisplayFilter(queryMetadata),
-                baseDN,
-                queryMetadata.getContextMapper(),
-                queryMetadata.getSearchScope(),
-                queryMetadata.getReturningAttributes(),
-                queryMetadata.getQueryData().getDomain());
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersObjectGuidQueryGenerator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersObjectGuidQueryGenerator.java
index 0143490..9e02384 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersObjectGuidQueryGenerator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersObjectGuidQueryGenerator.java
@@ -21,7 +21,7 @@
         List<LdapQueryData> results = new ArrayList<LdapQueryData>();
         LdapQueryData subQueryData = new LdapQueryDataImpl();
 
-        ArrayList<Object> filterParameters = new ArrayList<Object>();
+        List<Guid> filterParameters = new ArrayList<Guid>();
 
         int counter = 0;
         for (Guid identifier : ldapIdentifiers) {
@@ -31,22 +31,20 @@
             if (counter >= queryLimit) {
                 // More than queryLimit query clauses were added to the query -
                 // close the query, add it to the results, and start a new 
query
-                subQueryData.setFilterParameters(filterParameters.toArray());
+                subQueryData.setIds(filterParameters);
                 
subQueryData.setLdapQueryType(LdapQueryType.getUsersByUserGuids);
-                subQueryData.setBaseDNParameters(null);
                 subQueryData.setDomain(domain);
                 results.add(subQueryData);
                 subQueryData = new LdapQueryDataImpl();
-                filterParameters = new ArrayList<Object>();
+                filterParameters.clear();
                 counter = 0;
             }
             counter++;
         }
 
         if (!filterParameters.isEmpty()) {
-            subQueryData.setFilterParameters(filterParameters.toArray());
+            subQueryData.setIds(filterParameters);
             subQueryData.setLdapQueryType(LdapQueryType.getUsersByUserGuids);
-            subQueryData.setBaseDNParameters(null);
             subQueryData.setDomain(domain);
             results.add(subQueryData);
         }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LdapSearchQueryTestBase.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LdapSearchQueryTestBase.java
index d4b5105..7862ddb 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LdapSearchQueryTestBase.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LdapSearchQueryTestBase.java
@@ -115,8 +115,8 @@
                 return false;
             }
             LdapSearchByQueryParameters ldapParams = 
(LdapSearchByQueryParameters) argument;
-            return ldapParams.getLdapQueryData().getFilterParameters().length 
== 1 &&
-                    ((String) 
ldapParams.getLdapQueryData().getFilterParameters()[0]).contains(NAME_TO_SEARCH)
 &&
+            return 
ldapParams.getLdapQueryData().getParameters().containsKey("name") &&
+                    ((String) 
ldapParams.getLdapQueryData().getParameters().get("name")).contains(NAME_TO_SEARCH)
 &&
                     
ldapParams.getLdapQueryData().getLdapQueryType().equals(getLdapActionType()) &&
                     ldapParams.getDomain().equals(DOMAIN);
 


--
To view, visit http://gerrit.ovirt.org/14655
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5c5e1c67d9635ff9fbac9c1bf681105be0338354
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to