Author: bdaw
Date: 2009-09-21 11:15:13 -0400 (Mon, 21 Sep 2009)
New Revision: 802
Modified:
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreConfiguration.java
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/SimpleLDAPIdentityStoreConfiguration.java
idm/trunk/idm-testsuite/src/test/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreTestCase.java
idm/trunk/idm-testsuite/src/test/resources/test-identity-config-openldapds.xml
Log:
make sort extension support configurable
Modified:
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreConfiguration.java
===================================================================
---
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreConfiguration.java 2009-09-21
14:11:12 UTC (rev 801)
+++
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreConfiguration.java 2009-09-21
15:15:13 UTC (rev 802)
@@ -82,4 +82,6 @@
String getNamedRelationshipMemberAttributeName();
+ boolean isSortExtensionSupported();
+
}
Modified:
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java
===================================================================
---
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java 2009-09-21
14:11:12 UTC (rev 801)
+++
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java 2009-09-21
15:15:13 UTC (rev 802)
@@ -47,6 +47,7 @@
import org.jboss.identity.idm.spi.store.IdentityStoreInvocationContext;
import org.jboss.identity.idm.spi.store.IdentityStoreSession;
+import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -63,7 +64,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
-import java.io.UnsupportedEncodingException;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -105,22 +105,13 @@
IdentityStoreConfigurationMetaData configurationMD;
- private static Set<IdentityObjectSearchCriteriaType>
supportedSearchCriteriaTypes =
+ private final Set<IdentityObjectSearchCriteriaType> supportedSearchCriteriaTypes
=
new HashSet<IdentityObjectSearchCriteriaType>();
// <IdentityObjectType name, <Attribute name, MD>
private Map<String, Map<String, IdentityObjectAttributeMetaData>>
attributesMetaData = new HashMap<String, Map<String,
IdentityObjectAttributeMetaData>>();
- static {
- // List all supported controls classes
- //TODO: attribute filter
- supportedSearchCriteriaTypes.add(IdentityObjectSearchCriteriaType.SORT);
- supportedSearchCriteriaTypes.add(IdentityObjectSearchCriteriaType.PAGE);
- supportedSearchCriteriaTypes.add(IdentityObjectSearchCriteriaType.NAME_FILTER);
- //supportedSearchControls.add(AttributeFilterSearchControl.class);
- }
-
public LDAPIdentityStoreImpl(String id)
{
this.id = id;
@@ -147,6 +138,15 @@
}
}
+ supportedSearchCriteriaTypes.clear();
+ if (configuration.isSortExtensionSupported())
+ {
+ supportedSearchCriteriaTypes.add(IdentityObjectSearchCriteriaType.SORT);
+ }
+ supportedSearchCriteriaTypes.add(IdentityObjectSearchCriteriaType.PAGE);
+ supportedSearchCriteriaTypes.add(IdentityObjectSearchCriteriaType.NAME_FILTER);
+
+
supportedFeatures = new FeaturesMetaDataImpl(configurationMD,
supportedSearchCriteriaTypes, false, false, readOnlyObjectTypes);
// Attribute mappings - helper structures
@@ -577,12 +577,11 @@
Control[] requestControls = null;
// Sort control
- if (criteria != null && criteria.isSorted())
+ if (criteria != null && criteria.isSorted() &&
configuration.isSortExtensionSupported())
{
- //TODO: make criticallity optional
//TODO sort by attribute name
requestControls = new Control[]{
- new SortControl(typeConfiguration.getIdAttributeName(),
Control.NONCRITICAL)
+ new SortControl(typeConfiguration.getIdAttributeName(), Control.CRITICAL)
};
}
@@ -640,7 +639,7 @@
{
ctx = (LdapContext)res.getObject();
String dn = ctx.getNameInNamespace();
- if (criteria != null && criteria.isSorted())
+ if (criteria != null && criteria.isSorted() &&
configuration.isSortExtensionSupported())
{
// It seams that the sort order is not configurable and
// sort control returns entries in descending order by default...
Modified:
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/SimpleLDAPIdentityStoreConfiguration.java
===================================================================
---
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/SimpleLDAPIdentityStoreConfiguration.java 2009-09-21
14:11:12 UTC (rev 801)
+++
idm/trunk/idm-ldap/src/main/java/org/jboss/identity/idm/impl/store/ldap/SimpleLDAPIdentityStoreConfiguration.java 2009-09-21
15:15:13 UTC (rev 802)
@@ -82,7 +82,9 @@
private final String namedRelationshipMemberAttributeName;
+ private final boolean sortExtensionSupported;
+
// Consts
public static final String PROVIDER_URL = "providerURL";
@@ -125,6 +127,8 @@
public static final String NAMED_RELATIONSHIP_MEMBER_ATTRIBUTE_NAME =
"namedRelationshipMemberAttributeName";
+ public static final String SORT_EXTENSION_SUPPORTED =
"sortExtensionSupported";
+
public SimpleLDAPIdentityStoreConfiguration(IdentityStoreConfigurationMetaData
storeMD)
{
if (storeMD == null)
@@ -167,7 +171,17 @@
this.supportNamedRelationships = false;
}
+ String sortExtension = storeMD.getOptionSingleValue(SORT_EXTENSION_SUPPORTED);
+ if (sortExtension != null &&
sortExtension.equalsIgnoreCase("false"))
+ {
+ this.sortExtensionSupported = false;
+ }
+ else
+ {
+ this.sortExtensionSupported = true;
+ }
+
Map<String, LDAPIdentityObjectTypeConfiguration> types = new
HashMap<String, LDAPIdentityObjectTypeConfiguration>();
for (IdentityObjectTypeMetaData identityObjectTypeMetaData :
storeMD.getSupportedIdentityTypes())
@@ -460,4 +474,9 @@
{
return authenticationMethod;
}
+
+ public boolean isSortExtensionSupported()
+ {
+ return sortExtensionSupported;
+ }
}
Modified:
idm/trunk/idm-testsuite/src/test/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreTestCase.java
===================================================================
---
idm/trunk/idm-testsuite/src/test/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreTestCase.java 2009-09-21
14:11:12 UTC (rev 801)
+++
idm/trunk/idm-testsuite/src/test/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreTestCase.java 2009-09-21
15:15:13 UTC (rev 802)
@@ -364,7 +364,7 @@
public void testCredentials() throws Exception
{
populateClean();
-
+
commonTest.testPasswordCredential();
}
Modified: idm/trunk/idm-testsuite/src/test/resources/test-identity-config-openldapds.xml
===================================================================
---
idm/trunk/idm-testsuite/src/test/resources/test-identity-config-openldapds.xml 2009-09-21
14:11:12 UTC (rev 801)
+++
idm/trunk/idm-testsuite/src/test/resources/test-identity-config-openldapds.xml 2009-09-21
15:15:13 UTC (rev 802)
@@ -933,6 +933,10 @@
<name>searchTimeLimit</name>
<value>10000</value>
</option>
+ <option>
+ <name>sortExtensionSupported</name>
+ <value>false</value>
+ </option>
</options>
</identity-store>
</identity-stores>
Show replies by date