Changeset 29936
- Timestamp:
- 02/07/08 13:34:29 (2 years ago)
- Files:
-
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/examples/default-ldap-users-directory-bundle.xml (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPDirectoryDescriptor.java (modified) (4 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPSession.java (modified) (4 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPSubstringMatchType.java (copied) (copied from org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPSubstringMatchType.java)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/examples/default-ldap-users-directory-bundle.xml
r26973 r29936 65 65 <searchScope>onelevel</searchScope> 66 66 67 <!-- using 'subany', search will match *toto*. use 'subfinal' to 68 match *toto and 'subinitial' to match toto*. subinitial is the 69 default behaviour--> 70 <substringMatchType>subany</substringMatchType> 71 67 72 <readOnly>false</readOnly> 68 73 org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPDirectoryDescriptor.java
r25319 r29936 28 28 29 29 import org.apache.commons.lang.StringUtils; 30 import org.apache.commons.logging.Log; 31 import org.apache.commons.logging.LogFactory; 30 32 import org.nuxeo.common.xmap.annotation.XNode; 31 33 import org.nuxeo.common.xmap.annotation.XNodeList; … … 39 41 public class LDAPDirectoryDescriptor { 40 42 43 public static final Log log = LogFactory.getLog(LDAPDirectoryDescriptor.class); 44 41 45 public static final int defaultSearchScope = SearchControls.ONELEVEL_SCOPE; 42 46 … … 74 78 75 79 public int searchScope; 80 81 public String substringMatchType; 76 82 77 83 @XNode("creationBaseDn") … … 195 201 } 196 202 203 public String getSubstringMatchType() { 204 return substringMatchType; 205 } 206 207 @XNode("substringMatchType") 208 public void setSubstringMatchType(String substringMatchType) { 209 if (substringMatchType == null) { 210 // default behaviour 211 this.substringMatchType = LDAPSubstringMatchType.SUBINITIAL; 212 } else if (LDAPSubstringMatchType.SUBINITIAL.equals(substringMatchType) 213 || LDAPSubstringMatchType.SUBFINAL.equals(substringMatchType) 214 || LDAPSubstringMatchType.SUBANY.equals(substringMatchType)) { 215 this.substringMatchType = substringMatchType; 216 } else { 217 log.error("Invalid substring match type: " + substringMatchType 218 + ". Valid options: subinitial, subfinal, subany"); 219 this.substringMatchType = LDAPSubstringMatchType.SUBINITIAL; 220 } 221 } 222 197 223 public String getName() { 198 224 return name; org.nuxeo.ecm.platform/trunk/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPSession.java
r29584 r29936 96 96 protected final Map<String, Field> schemaFieldMap; 97 97 98 protected final String substringMatchType; 99 98 100 public LDAPSession(LDAPDirectory directory, DirContext dirContext) { 99 101 this.directory = directory; … … 105 107 sid = String.valueOf(SIDGenerator.next()); 106 108 searchBaseDn = directory.getConfig().getSearchBaseDn(); 109 substringMatchType = directory.getConfig().getSubstringMatchType(); 107 110 } 108 111 … … 376 379 String[] filterArgs = new String[filter.size()]; 377 380 381 if (fulltext == null) { 382 fulltext = Collections.emptySet(); 383 } 384 378 385 int index = 0; 379 386 for (String fieldName : filter.keySet()) { … … 393 400 currentFilter.append("!(" + backendFieldName + "=*)"); 394 401 } else if ("".equals(fieldValue)) { 402 if (fulltext.contains(fieldName)) { 403 currentFilter.append(backendFieldName + "=*"); 404 } else { 405 currentFilter.append(backendFieldName + "="); 406 } 407 } else { 395 408 currentFilter.append(backendFieldName + "="); 396 } else { 397 currentFilter.append(backendFieldName + "={" + index + "}"); 398 } 399 if (fieldValue != null && fulltext.contains(fieldName)) { 400 currentFilter.append("*"); 409 if (fulltext.contains(fieldName)) { 410 if (LDAPSubstringMatchType.SUBFINAL.equals(substringMatchType)) { 411 currentFilter.append("*{" + index + "}"); 412 } else if (LDAPSubstringMatchType.SUBANY.equals(substringMatchType)) { 413 currentFilter.append("*{" + index + "}*"); 414 } else { 415 // default behavior: subinitial 416 currentFilter.append("{" + index + "}*"); 417 } 418 } else { 419 currentFilter.append("{" + index + "}"); 420 } 401 421 } 402 422 currentFilter.append(")");
