Here is an example of how I am gathering details on all domains which might help:
public static void listPolicyInfoWithRules(SmApiSession smApi) throws SmApiException {
Vector<String> domainsVector = new Vector<String>();
Vector<String> policiesVector = new Vector<String>();
SmPolicyApi smPolicyApi = new SmPolicyApiImpl(smApi);
try {
PrintWriter pw = new PrintWriter(new FileWriter("siteminder_policy_info_rules.txt"));
smPolicyApi.getGlobalObjectNames("Domains", domainsVector);
for (String d : domainsVector) {
pw.println("Domain: " + d);
SmDomain domain = new SmDomain();
smPolicyApi.getDomain(d, domain);
smPolicyApi.getDomainObjectNames("Policies", domain.getName(), policiesVector);
// INFO: System.out.println(policiesVector); // --> [PolicyDetails Policy,
// DevProductivity Policy, admin policy]
for (String p : policiesVector) {
SmPolicy policy = new SmPolicy();
smPolicyApi.getPolicy(p, domain.getName(), policy);
pw.println("\tPolicy: " + policy.getName());
Vector<SmPolicyLink> polLinks = new Vector<SmPolicyLink>();
smPolicyApi.getPolicyLinks(policy.getName(), domain.getName(), polLinks);
for (SmPolicyLink ruleLink : polLinks) {
SmRule rule = new SmRule();
SmRealm realm = new SmRealm();
SmResponse response = new SmResponse();
Vector<SmResponseAttr> responseAttrsVector = new Vector<SmResponseAttr>();
smPolicyApi.getRule(ruleLink.getRule().toString(), policy.getName(), domain.getName(), rule);
smPolicyApi.getRealm(rule.getRealm().toString(), domain.getName(), realm);
smPolicyApi.getResponse(ruleLink.getResponse().toString(), domain.getName(), response);
smPolicyApi.getResponseAttrs(response.getName(), domain.getName(), responseAttrsVector);
pw.println("\t\tRule: " + rule.getName());
pw.println("\t\t\tResource: " + realm.getResourceFilter() + rule.getResource());
pw.println("\t\t\tResponse: " + response.getName());
for (SmResponseAttr responseAttr : responseAttrsVector) {
pw.println("\t\t\t\tValue: " + responseAttr.getValue());
}
}
}
}
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}