Juan Hernandez has uploaded a new change for review. Change subject: core: Move UUID encoding to templates ......................................................................
core: Move UUID encoding to templates The encoding is now performed by the templates that generate the LDAP queries. This is just one step to make the LDAP layer independent of the LDAP provider, so that all things specific to particular providers will go in configuration. Change-Id: Iba26d52d93a068a30109172ca23c3c23b3e20761 Signed-off-by: Juan Hernandez <[email protected]> --- D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ADLdapGuidEncoder.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/IPALdapGuidEncoder.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ITDSLdapGuidEncoder.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGuidEncoder.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/LdapQueryMetadata.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataFactoryImpl.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataImpl.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSLdapGuidEncoder.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/SimpleLdapQueryExecutionFormatter.java A backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/functions M backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getGroupByGuid.filter M backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUserByGuid.filter M backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUsersByUserGuids.filter M backend/manager/modules/bll/src/main/resources/ldap/ipa/getGroupByGuid.filter A backend/manager/modules/bll/src/main/resources/ldap/rhds/functions M backend/manager/modules/bll/src/main/resources/ldap/rhds/getGroupByGuid.filter M backend/manager/modules/bll/src/main/resources/ldap/rhds/getUserByGuid.filter M backend/manager/modules/bll/src/main/resources/ldap/rhds/getUsersByUserGuids.filter 21 files changed, 128 insertions(+), 223 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/35/14835/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ADLdapGuidEncoder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ADLdapGuidEncoder.java deleted file mode 100644 index e0df20a..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ADLdapGuidEncoder.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.ovirt.engine.core.bll.adbroker; - -import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.utils.GuidUtils; - -public class ADLdapGuidEncoder implements LdapGuidEncoder { - - @Override - public String encodeGuid(Guid guid) { - byte[] ba = GuidUtils.ToByteArray(guid.getUuid()); - - // AD guid is stored in reversed order than MS-SQL guid - - // Since it is important for us to work with GUIDs which are MS-SQL - // aligned, - // for each GUID -before using with AD we will change its byte order to - // support AD - Guid adGuid = new Guid(ba, false); - ba = GuidUtils.ToByteArray(adGuid.getUuid()); - StringBuilder sb = new StringBuilder(); - for (int idx = 0; idx < ba.length; idx++) { - sb.append("\\" + String.format("%02X", ba[idx])); - } - - return sb.toString(); - } - -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/IPALdapGuidEncoder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/IPALdapGuidEncoder.java deleted file mode 100644 index 4e4af04..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/IPALdapGuidEncoder.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.ovirt.engine.core.bll.adbroker; - -import org.ovirt.engine.core.compat.Guid; - -public class IPALdapGuidEncoder implements LdapGuidEncoder { - - @Override - public String encodeGuid(Guid guid) { - return guid.toString(); - } - -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ITDSLdapGuidEncoder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ITDSLdapGuidEncoder.java deleted file mode 100644 index e0a4bce..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/ITDSLdapGuidEncoder.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.ovirt.engine.core.bll.adbroker; - -import org.ovirt.engine.core.compat.Guid; - -public class ITDSLdapGuidEncoder implements LdapGuidEncoder { - - @Override - public String encodeGuid(Guid guid) { - return guid.toString(); - } - -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGuidEncoder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGuidEncoder.java deleted file mode 100644 index fe60e92..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapGuidEncoder.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.ovirt.engine.core.bll.adbroker; - -import org.ovirt.engine.core.compat.Guid; - -public interface LdapGuidEncoder { - public String encodeGuid( Guid guid ); -} 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 2c33c80..54703d8 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,33 +1,9 @@ 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> { @Override public abstract LdapQueryExecution format(LdapQueryMetadata queryMetadata); protected abstract String getDisplayFilter(LdapQueryMetadata queryMetadata); - - protected Map<String, Object> getEncodedParameters(Map<String, Object> parameters, LdapGuidEncoder LdapGuidEncoder) { - if (parameters == null) { - return null; - } - - Map<String, Object> retVal = new HashMap<String, Object>(parameters.size()); - - 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); - } - retVal.put(name, value); - } - - return retVal; - } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadata.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadata.java index 7e14ed4..e910c0f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadata.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadata.java @@ -14,8 +14,6 @@ public String[] getReturningAttributes(); - public LdapGuidEncoder getLdapGuidEncoder(); - public LdapQueryFormatter<LdapQueryExecution> getFormatter(); public LdapQueryData getQueryData(); 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 b8613d5..0882c6d 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 @@ -67,8 +67,7 @@ null, SearchControls.OBJECT_SCOPE, null, - new SimpleLdapQueryExecutionFormatter(), - null)); + new SimpleLdapQueryExecutionFormatter())); return generalHashMap; } @@ -81,72 +80,63 @@ new ADGroupContextMapper(), SearchControls.OBJECT_SCOPE, ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getUserByGuid, new ADUserContextMapper(), SearchControls.SUBTREE_SCOPE, ADUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getGroupByGuid, new ADGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getGroupByName, new ADGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getUserByPrincipalName, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getUserByPrincipalName, new ADUserContextMapper(), SearchControls.SUBTREE_SCOPE, ADUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getUserByName, new ADUserContextMapper(), SearchControls.SUBTREE_SCOPE, ADUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.rootDSE, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.rootDSE, new ADRootDSEContextMapper(), SearchControls.OBJECT_SCOPE, ADRootDSEContextMapper.ROOTDSE_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getGroupsByGroupNames, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getGroupsByGroupNames, new ADGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); adHashMap.put(LdapQueryType.getUsersByUserGuids, new LdapQueryMetadataImpl( LdapProviderType.activeDirectory, LdapQueryType.getUsersByUserGuids, new ADUserContextMapper(), SearchControls.SUBTREE_SCOPE, ADUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ADLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); LdapQueryMetadataImpl searchUsersMetadata = new LdapQueryMetadataImpl( @@ -155,8 +145,7 @@ new ADUserContextMapper(), SearchControls.SUBTREE_SCOPE, ADUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(activeDirectorySearchSyntaxMap), - new ADLdapGuidEncoder()); + new SearchQueryFotmatter(activeDirectorySearchSyntaxMap)); adHashMap.put(LdapQueryType.searchUsers, searchUsersMetadata); LdapQueryMetadataImpl searchGroupsMetadata = @@ -166,8 +155,7 @@ new ADGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ADGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(activeDirectorySearchSyntaxMap), - new ADLdapGuidEncoder()); + new SearchQueryFotmatter(activeDirectorySearchSyntaxMap)); adHashMap.put(LdapQueryType.searchGroups, searchGroupsMetadata); return adHashMap; } @@ -180,80 +168,70 @@ new IPAGroupContextMapper(), SearchControls.OBJECT_SCOPE, IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getGroupByGuid, new IPAGroupContextMapper(), SearchControls.SUBTREE_SCOPE, IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getUserByGuid, new IPAUserContextMapper(), SearchControls.SUBTREE_SCOPE, IPAUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getGroupByName, new IPAGroupContextMapper(), SearchControls.SUBTREE_SCOPE, IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getUserByPrincipalName, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getUserByPrincipalName, new IPAUserContextMapper(), SearchControls.SUBTREE_SCOPE, IPAUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getUserByName, new IPAUserContextMapper(), SearchControls.SUBTREE_SCOPE, IPAUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.rootDSE, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.rootDSE, new IPARootDSEContextMapper(), SearchControls.OBJECT_SCOPE, IPARootDSEContextMapper.ROOTDSE_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getGroupsByGroupNames, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getGroupsByGroupNames, new IPAGroupContextMapper(), SearchControls.SUBTREE_SCOPE, IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); ipaHashMap.put(LdapQueryType.getUsersByUserGuids, new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.getUsersByUserGuids, new IPAUserContextMapper(), SearchControls.SUBTREE_SCOPE, IPAUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new IPALdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); LdapQueryMetadataImpl ipaSearchUsersMetadata = new LdapQueryMetadataImpl( LdapProviderType.ipa, LdapQueryType.searchUsers, new IPAUserContextMapper(), SearchControls.SUBTREE_SCOPE, IPAUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(ipaSearchSyntaxMap), - new IPALdapGuidEncoder()); + new SearchQueryFotmatter(ipaSearchSyntaxMap)); ipaHashMap.put(LdapQueryType.searchUsers, ipaSearchUsersMetadata); LdapQueryMetadataImpl ipaSearchGroupsMetadata = new LdapQueryMetadataImpl( @@ -262,8 +240,7 @@ new IPAGroupContextMapper(), SearchControls.SUBTREE_SCOPE, IPAGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(ipaSearchSyntaxMap), - new IPALdapGuidEncoder()); + new SearchQueryFotmatter(ipaSearchSyntaxMap)); ipaHashMap.put(LdapQueryType.searchGroups, ipaSearchGroupsMetadata); return ipaHashMap; @@ -278,40 +255,35 @@ new RHDSGroupContextMapper(), SearchControls.OBJECT_SCOPE, RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.getGroupByGuid, new RHDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.getUserByGuid, new RHDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.getGroupByName, new RHDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.getUserByName, new RHDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); // 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( @@ -320,40 +292,35 @@ new RHDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new RHDSUPNLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSUPNLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.rootDSE, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.rootDSE, new RHDSRootDSEContextMapper(), SearchControls.OBJECT_SCOPE, RHDSRootDSEContextMapper.ROOTDSE_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.getGroupsByGroupNames, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.getGroupsByGroupNames, new RHDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); dsHashMap.put(LdapQueryType.getUsersByUserGuids, new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.getUsersByUserGuids, new RHDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new RHDSSimpleLdapQueryExecutionFormatter(), - new RHDSLdapGuidEncoder())); + new RHDSSimpleLdapQueryExecutionFormatter())); LdapQueryMetadataImpl rhdsSearchUsersMetadata = new LdapQueryMetadataImpl( LdapProviderType.rhds, LdapQueryType.searchUsers, new RHDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(dsSearchSyntaxMap), - new RHDSLdapGuidEncoder()); + new SearchQueryFotmatter(dsSearchSyntaxMap)); dsHashMap.put(LdapQueryType.searchUsers, rhdsSearchUsersMetadata); LdapQueryMetadataImpl rhdsSearchGroupsMetadata = new LdapQueryMetadataImpl( @@ -362,8 +329,7 @@ new RHDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, RHDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(dsSearchSyntaxMap), - new RHDSLdapGuidEncoder()); + new SearchQueryFotmatter(dsSearchSyntaxMap)); dsHashMap.put(LdapQueryType.searchGroups, rhdsSearchGroupsMetadata); return dsHashMap; @@ -378,80 +344,70 @@ new ITDSGroupContextMapper(), SearchControls.OBJECT_SCOPE, ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getGroupByGuid, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getGroupByGuid, new ITDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getUserByGuid, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getUserByGuid, new ITDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getGroupByName, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getGroupByName, new ITDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getUserByPrincipalName, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getUserByPrincipalName, new ITDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getUserByName, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getUserByName, new ITDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.rootDSE, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.rootDSE, new ITDSRootDSEContextMapper(), SearchControls.OBJECT_SCOPE, ITDSRootDSEContextMapper.ROOTDSE_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getGroupsByGroupNames, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getGroupsByGroupNames, new ITDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); itdsHashMap.put(LdapQueryType.getUsersByUserGuids, new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.getUsersByUserGuids, new ITDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SimpleLdapQueryExecutionFormatter(), - new ITDSLdapGuidEncoder())); + new SimpleLdapQueryExecutionFormatter())); LdapQueryMetadataImpl itdsSearchUsersMetadata = new LdapQueryMetadataImpl( LdapProviderType.itds, LdapQueryType.searchUsers, new ITDSUserContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSUserContextMapper.USERS_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(itdsSearchSyntaxMap), - new ITDSLdapGuidEncoder()); + new SearchQueryFotmatter(itdsSearchSyntaxMap)); itdsHashMap.put(LdapQueryType.searchUsers, itdsSearchUsersMetadata); LdapQueryMetadataImpl itdsSearchGroupsMetadata = new LdapQueryMetadataImpl( @@ -460,8 +416,7 @@ new ITDSGroupContextMapper(), SearchControls.SUBTREE_SCOPE, ITDSGroupContextMapper.GROUP_ATTRIBUTE_FILTER, - new SearchQueryFotmatter(itdsSearchSyntaxMap), - new ITDSLdapGuidEncoder()); + new SearchQueryFotmatter(itdsSearchSyntaxMap)); itdsHashMap.put(LdapQueryType.searchGroups, itdsSearchGroupsMetadata); return itdsHashMap; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataImpl.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataImpl.java index b41c1d6..3f0b8f7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataImpl.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapQueryMetadataImpl.java @@ -16,7 +16,6 @@ private ContextMapper contextMapper; private int searchScope; private String[] returningAttributes; - private LdapGuidEncoder ldapGuidEncoder; private LdapQueryFormatter<LdapQueryExecution> formatter; private LdapQueryData queryData; @@ -26,14 +25,12 @@ ContextMapper contextMapper, int searchScope, String[] returningAttributes, - LdapQueryFormatter<LdapQueryExecution> formatter, - LdapGuidEncoder ldapGuidEncoder ) { + LdapQueryFormatter<LdapQueryExecution> formatter) { this.contextMapper = contextMapper; this.searchScope = searchScope; this.returningAttributes = returningAttributes; this.formatter = formatter; - this.ldapGuidEncoder = ldapGuidEncoder; // Load the filter template: try { @@ -78,11 +75,6 @@ @Override public String[] getReturningAttributes() { return returningAttributes; - } - - @Override - public LdapGuidEncoder getLdapGuidEncoder() { - return ldapGuidEncoder; } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSLdapGuidEncoder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSLdapGuidEncoder.java deleted file mode 100644 index 1b1b157..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/RHDSLdapGuidEncoder.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.ovirt.engine.core.bll.adbroker; - -import org.ovirt.engine.core.compat.Guid; - -public class RHDSLdapGuidEncoder implements LdapGuidEncoder { - - private String getNsUniqueIdFromGuidString(String guidString) { - // 12345678-1234-5678-1234-567812345678 --> - // 12345678-12345678-12345678-12345678 - StringBuilder sb = new StringBuilder(); - sb.append(guidString.substring(0, 13)) - .append(guidString.substring(14, 23)) - .append(guidString.substring(24, 28)) - .append("-") - .append(guidString.substring(28, 36)); - return sb.toString(); - } - - @Override - public String encodeGuid(Guid guid) { - return getNsUniqueIdFromGuidString(guid.toString()); - } - -} - 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 4d4c863..45c3fec 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 @@ -18,8 +18,7 @@ queryMetadata.getFilter() ); return filterTemplate.eval( - getEncodedParameters(queryMetadata.getQueryData().getParameters(), - queryMetadata.getLdapGuidEncoder())); + queryMetadata.getQueryData().getParameters()); } catch (TemplateException exception) { log.error("Error evaluating template.", exception); 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 89673c1..b8348c0 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 @@ -26,8 +26,7 @@ String baseDN = String.format(queryMetadata.getBaseDN(), - getEncodedParameters(queryMetadata.getQueryData().getParameters(), - queryMetadata.getLdapGuidEncoder())); + queryMetadata.getQueryData().getParameters()); return new LdapQueryExecution(filter, getDisplayFilter(queryMetadata), 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 849fb9d..75a95c4 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 @@ -31,15 +31,13 @@ ); String filter = filterTemplate.eval( - getEncodedParameters(queryMetadata.getQueryData().getParameters(), - queryMetadata.getLdapGuidEncoder())); + queryMetadata.getQueryData().getParameters()); Template baseDNTemplate = TemplateEngine.getInstance().compile( queryMetadata.getBaseDN() ); String baseDN = baseDNTemplate.eval( - getEncodedParameters(queryMetadata.getQueryData().getParameters(), - queryMetadata.getLdapGuidEncoder())); + queryMetadata.getQueryData().getParameters()); return new LdapQueryExecution(filter, getDisplayFilter(queryMetadata), diff --git a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/functions b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/functions new file mode 100644 index 0000000..75b6f7c --- /dev/null +++ b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/functions @@ -0,0 +1,31 @@ + <%! + + // + // Active Directory requires UUIDs in binary format and with some of the bytes + // reversed, so we need to reorder and escape them according the LDAP escaping + // rules: + // + function format(uuid) { + var value = uuid.toString(); + value = + "\\" + value.substring(6, 8) + + "\\" + value.substring(4, 6) + + "\\" + value.substring(2, 4) + + "\\" + value.substring(0, 2) + + "\\" + value.substring(11, 13) + + "\\" + value.substring(9, 11) + + "\\" + value.substring(16, 18) + + "\\" + value.substring(14, 16) + + "\\" + value.substring(19, 21) + + "\\" + value.substring(21, 23) + + "\\" + value.substring(24, 26) + + "\\" + value.substring(26, 28) + + "\\" + value.substring(28, 30) + + "\\" + value.substring(30, 32) + + "\\" + value.substring(32, 34) + + "\\" + value.substring(34, 36) + ; + return value; + } + +%> diff --git a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getGroupByGuid.filter b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getGroupByGuid.filter index 9bd929c..c76bb15 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getGroupByGuid.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getGroupByGuid.filter @@ -1,3 +1,5 @@ <%@ options whitespace="ignore" %> -(objectGUID=${id}) +<%@ include resource="ldap/activeDirectory/functions" %> + +(objectGUID=${format(id)}) diff --git a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUserByGuid.filter b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUserByGuid.filter index 9bd929c..c76bb15 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUserByGuid.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUserByGuid.filter @@ -1,3 +1,5 @@ <%@ options whitespace="ignore" %> -(objectGUID=${id}) +<%@ include resource="ldap/activeDirectory/functions" %> + +(objectGUID=${format(id)}) diff --git a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUsersByUserGuids.filter b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUsersByUserGuids.filter index 8c3f21a..053c11a 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUsersByUserGuids.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/activeDirectory/getUsersByUserGuids.filter @@ -1,7 +1,9 @@ <%@ options whitespace="ignore" %> +<%@ include resource="ldap/activeDirectory/functions" %> + (| <% for each (var id in ids) { %> - (objectGUID=${id}) + (objectGUID=${format(id)}) <% } %> ) diff --git a/backend/manager/modules/bll/src/main/resources/ldap/ipa/getGroupByGuid.filter b/backend/manager/modules/bll/src/main/resources/ldap/ipa/getGroupByGuid.filter index 8c2477a..06ce176 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/ipa/getGroupByGuid.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/ipa/getGroupByGuid.filter @@ -1,3 +1,3 @@ <%@ options whitespace="ignore" %> -(ipaUniqueID=${id}) +(ipaUniqueID=${id}) \ No newline at end of file diff --git a/backend/manager/modules/bll/src/main/resources/ldap/rhds/functions b/backend/manager/modules/bll/src/main/resources/ldap/rhds/functions new file mode 100644 index 0000000..a4bb190 --- /dev/null +++ b/backend/manager/modules/bll/src/main/resources/ldap/rhds/functions @@ -0,0 +1,28 @@ + <%! + + // + // The 389 directory server uses a different string representation of UUIDs, + // with dashes in different places. The standard layout is something like + // this: + // + // 12345678-1234-5678-1234-567812345678 + // + // And the layout used by the 389 directory is like this: + // + // 12345678-12345678-12345678-12345678 + // + // This function performs that translation. + // + function format(uuid) { + var value = uuid.toString(); + value = + value.substring(0, 13) + + value.substring(14, 23) + + value.substring(24, 28) + + "-" + + value.substring(28, 36) + ; + return value; + } + +%> diff --git a/backend/manager/modules/bll/src/main/resources/ldap/rhds/getGroupByGuid.filter b/backend/manager/modules/bll/src/main/resources/ldap/rhds/getGroupByGuid.filter index 5290902..cdd6bda 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/rhds/getGroupByGuid.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/rhds/getGroupByGuid.filter @@ -1,3 +1,5 @@ <%@ options whitespace="ignore" %> -(nsUniqueId=${id}) +<%@ include resource="ldap/rhds/functions" %> + +(nsUniqueId=${format(id)}) diff --git a/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUserByGuid.filter b/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUserByGuid.filter index 08b0ec9..ea2a509 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUserByGuid.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUserByGuid.filter @@ -1,3 +1,5 @@ <%@ options whitespace="ignore" %> -(nsUniqueID=${id}) +<%@ include resource="ldap/rhds/functions" %> + +(nsUniqueID=${format(id)}) diff --git a/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUsersByUserGuids.filter b/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUsersByUserGuids.filter index f7c374b..63c269c 100644 --- a/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUsersByUserGuids.filter +++ b/backend/manager/modules/bll/src/main/resources/ldap/rhds/getUsersByUserGuids.filter @@ -1,7 +1,9 @@ <%@ options whitespace="ignore" %> +<%@ include resource="ldap/rhds/functions" %> + (| <% for each (var id in ids) { %> - (nsUniqueId=${id}) + (nsUniqueId=${format(id)}) <% } %> ) -- To view, visit http://gerrit.ovirt.org/14835 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iba26d52d93a068a30109172ca23c3c23b3e20761 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Juan Hernandez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
