01/23/2023 06:19 PM - edited 01/25/2023 03:35 PM
Team,
We have a use case as part of service account request process, where there are certain request attributes(PAMPREAUTHUSERSADDED) that may or may not be passed while request submission.
When value is passed to request attribute then below parameter is working to get value
${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}
But when value is not passed then getting below error
How can I check if request_access_attrs has that parameter exist or not before trying to get value?
I tried below variation but didn't work, Can someone help me with right syntax?
<% if ((task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString()!="") print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>
<% if (!((task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().trim().isEmpty())) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>
<% if (task?.requestAccessKey?.collect{ it.request_access_attrss }.contains("PAMPREAUTHUSERSADDED")) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>
<% if (task?.requestAccessKey?.collect{ it.request_access_attrss }.includes("PAMPREAUTHUSERSADDED")) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>
<% if (task?.requestAccessKey?.collect{it.request_access_attrss.contains("PAMPREAUTHUSERSADDED")}) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>
<% if (task?.requestAccessKey?.collect{it.request_access_attrss.includes("PAMPREAUTHUSERSADDED")}) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>
Solved! Go to Solution.
01/24/2023 08:04 AM
01/24/2023 12:51 PM
Remove print keyword and try
01/25/2023 03:39 PM
I am able to figure out the right syntax to check if parameter exists or not and then get value only if it exists.
Below is the working syntax.
<% if (task?.requestAccessKey?.collect{it.request_access_attrss.collect{it.attributeName}.contains('PAMPREAUTHUSERSADDED')}.get(0)) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>