调用对象参数 ArrayList 并将其转换为 CSV 格式的字符串
Calling an Object parameter ArrayList and converting it to a String in CSV format
我得到了一些可以正常工作的 WSO2 自定义声明代码。虽然我想添加或更改其中的一部分。当我使用 identifiers.getRolesCSV() 进行调用时,它将像字符串一样打印出来,但如果您尝试将其用作变量,它仍然会将其视为 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;
}
看起来代码运行正常。代码何时构建令牌,它会正确打印出来。当 wso2 构建声明时,它会以另一种方式打印出来。重点是它工作正常只是看起来它工作错误。
我得到了一些可以正常工作的 WSO2 自定义声明代码。虽然我想添加或更改其中的一部分。当我使用 identifiers.getRolesCSV() 进行调用时,它将像字符串一样打印出来,但如果您尝试将其用作变量,它仍然会将其视为 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;
}
看起来代码运行正常。代码何时构建令牌,它会正确打印出来。当 wso2 构建声明时,它会以另一种方式打印出来。重点是它工作正常只是看起来它工作错误。