diff --git a/core/src/main/java/org/springframework/ldap/core/LdapTemplate.java b/core/src/main/java/org/springframework/ldap/core/LdapTemplate.java index 2cf3ead18f..d2ce0012c0 100644 --- a/core/src/main/java/org/springframework/ldap/core/LdapTemplate.java +++ b/core/src/main/java/org/springframework/ldap/core/LdapTemplate.java @@ -1811,7 +1811,7 @@ public List findAll(Name base, SearchControls searchControls, final Class */ @Override public List findAll(Class clazz) { - return findAll(LdapUtils.emptyLdapName(), + return findAll(this.odm.base(clazz), getDefaultSearchControls(defaultSearchScope, RETURN_OBJ_FLAG, ALL_ATTRIBUTES), clazz); } diff --git a/core/src/main/java/org/springframework/ldap/odm/core/ObjectDirectoryMapper.java b/core/src/main/java/org/springframework/ldap/odm/core/ObjectDirectoryMapper.java index 1674fff10c..bea92c84c5 100644 --- a/core/src/main/java/org/springframework/ldap/odm/core/ObjectDirectoryMapper.java +++ b/core/src/main/java/org/springframework/ldap/odm/core/ObjectDirectoryMapper.java @@ -20,6 +20,7 @@ import org.springframework.LdapDataEntry; import org.springframework.ldap.filter.Filter; +import org.springframework.ldap.odm.annotations.Entry; /** * The ObjectDirectoryMapper keeps track of managed class metadata and is used by {@link org.springframework.ldap.core.LdapTemplate} @@ -95,4 +96,12 @@ public interface ObjectDirectoryMapper { * @return all relevant attribute names used in the given class (either for reading from LDAP or for writing to LDAP or both) * @throws org.springframework.ldap.NamingException on error. */ String[] manageClass(Class clazz); + + /** + * Get the base DN corresponding to the {@link Entry#base} property + * + * @param clazz the clazz + * @return the {@link Name} representing the base DN + */ + Name base(Class clazz); } diff --git a/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java b/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java index 225b7498a6..bf951a3904 100644 --- a/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java +++ b/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java @@ -182,6 +182,11 @@ private EntityData addManagedClass(Class managedClass) { return newValue; } + @Override + public Name base(Class clazz) { + return this.getEntityData(clazz).metaData.getBase(); + } + private void verifyConversion(Class managedClass, Field field, AttributeMetaData attributeInfo) { Class jndiClass = attributeInfo.getJndiClass(); Class javaClass = attributeInfo.getValueClass();