调用Object参数ArrayList并将其转换为CSV格式的String

时间:2017-01-18 23:21:28

标签: java csv arraylist wso2 wso2is

我为我们的WSO2自定义声明获得了一些正常工作的代码。虽然我想添加或改变它的一部分。当我使用 identifiers.getRolesCSV()进行调用时,它将像String一样打印出来,但是如果你尝试将它用作变量,它仍会将它视为ArrayList。或者另一种说法是,现在从WSO2传递的角色是一个如下所示的数组。

"roles": [
"Admin",
" Software Engineer",
" Current User",
],

我想将它改为像这样的逗号分隔字符串。

"roles": "Admin, Software Engineer, Current User"

第二个是ID令牌中返回的内容。

以下是一些代码。

代码

    private Map<String, String> addClaims(String subscriberId, Map<String, String> map) {

    if (subscriberId == null) {
        return map;
    }

    Entity identifiers = null;

    identifiers = EntityHelper.getEntityFromUserName(subscriberId);
    if (identifiers == null) {
        return map;
    }

    map.put("roles", identifiers.getRolesCSV());

    return map;
}
public class Entity {
List roles = new ArrayList();


public Entity() {
}

public String getRolesCSV() {

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < roles.size(); i++) {
        sb.append(roles.get(i));

        if (i != roles.size() - 1)
        {
            sb.append(", ");
        }

    }

    return sb.toString();     
}
public class EntityHelper {

private final LdapHelp ldapHelper = new LdapHelp();

public EntityHelper() {

}

public Entity getEntityFromUserName(String netid) {

    Attributes attributes = null;
    Entity domainEntity = new Entity();

    try {
        attributes = ldapHelper.getAttributesForUsername(netid, Domain.*local*);

        if (attributes != null) {

            List roles = getAttributeList(attributes.get(LdapHelp.MEMBER_OF_ATTRIBUTE), "CN");
            domainEntity.setRoles(roles);

        } else {
            if (log.isDebugEnabled()) {
                log.debug("no attributes returned");
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return domainEntity;
}

1 个答案:

答案 0 :(得分:0)

所以看起来代码是正常的。代码何时构建令牌,它会将其打印出来。当wso2建立声明时,它会以另一种方式打印它。点是它的工作正常只是看起来它工作错了。