Repository: cxf
Updated Branches:
  refs/heads/master e00159949 -> af100a919


[CXF-6372] Distinct claim values (if no delimiter is set)


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/39ac2b4e
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/39ac2b4e
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/39ac2b4e

Branch: refs/heads/master
Commit: 39ac2b4eb848be0142d4f3e3da2bb6eb00ea55e5
Parents: e001599
Author: Jan Bernhardt <[email protected]>
Authored: Tue Apr 28 06:49:37 2015 +0200
Committer: Jan Bernhardt <[email protected]>
Committed: Tue Apr 28 08:58:55 2015 +0200

----------------------------------------------------------------------
 .../apache/cxf/sts/claims/LdapClaimsHandler.java | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/39ac2b4e/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java
----------------------------------------------------------------------
diff --git 
a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java
 
b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java
index 9572edc..5c2c7fa 100644
--- 
a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java
+++ 
b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java
@@ -52,7 +52,7 @@ public class LdapClaimsHandler implements ClaimsHandler, 
RealmSupport {
     private Map<String, String> claimMapping;
     private String userBaseDn;
     private List<String> userBaseDNs;
-    private String delimiter = ";";
+    private String delimiter;
     private boolean x500FilterEnabled = true;
     private String objectClass = "person";
     private String userNameAttribute = "cn";
@@ -240,7 +240,6 @@ public class LdapClaimsHandler implements ClaimsHandler, 
RealmSupport {
                 c.setClaimType(claimType);
                 c.setPrincipal(principal);
 
-                StringBuilder claimValue = new StringBuilder();
                 try {
                     NamingEnumeration<?> list = 
(NamingEnumeration<?>)attr.getAll();
                     while (list.hasMore()) {
@@ -257,9 +256,16 @@ public class LdapClaimsHandler implements ClaimsHandler, 
RealmSupport {
                                     //Ignore, not X500 compliant thus use the 
whole string as the value
                                 }
                             }
-                            claimValue.append(itemValue);
-                            if (list.hasMore()) {
-                                claimValue.append(this.getDelimiter());
+                            if (delimiter != null) {
+                                StringBuilder claimValue = new StringBuilder();
+                                claimValue.append(itemValue);
+                                if (list.hasMore()) {
+                                    claimValue.append(this.getDelimiter());
+                                } else if (claimValue.length() > 0) {
+                                    c.addValue(claimValue.toString());
+                                }
+                            } else {
+                                c.addValue(itemValue);
                             }
                         } else if (obj instanceof byte[]) {
                             // Just store byte[]
@@ -274,9 +280,6 @@ public class LdapClaimsHandler implements ClaimsHandler, 
RealmSupport {
                     LOG.warning("Failed to read value of LDAP attribute '" + 
ldapAttribute + "'");
                 }
                 
-                if (claimValue.length() > 0) {
-                    c.addValue(claimValue.toString());
-                }
                 // c.setIssuer(issuer);
                 // c.setOriginalIssuer(originalIssuer);
                 // c.setNamespace(namespace);

Reply via email to