/** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: ResourceResultRequest.java,v 1.3 2008/06/25 05:43:54 qcheng Exp $ * */ /* * Portions Copyrighted [2011] [ForgeRock AS] */ package com.sun.identity.policy.remote; import com.sun.identity.shared.debug.Debug; import com.sun.identity.shared.xml.XMLUtils; import com.sun.identity.policy.PolicyException; import com.sun.identity.policy.PolicyUtils; import com.sun.identity.policy.ResBundleUtils; import java.util.Map; import java.util.Set; import org.w3c.dom.Node; /** * This ResourceResultRequest class represents a * GetResourceResults XML document. The GetResourceResults * DTD is defined as the following: *

*

 * 
 *
 * 
 * 
 * 
*

*/ public class ResourceResultRequest { static final String GET_RESOURCE_RESULTS = PolicyRequest.GET_RESOURCE_RESULTS; static final String USER_SSOTOKEN = "userSSOToken"; static final String SERVICE_NAME = "serviceName"; static final String RESOURCE_NAME = "resourceName"; static final String RESOURCE_SCOPE = "resourceScope"; static final String ENV_PARAMETERS = "EnvParameters"; static final String GET_RESPONSE_DECISIONS = "GetResponseDecisions"; static final String RESOURCE_SCOPE_SELF = "self"; static final String RESOURCE_SCOPE_STRICT_SUBTREE = "strict-subtree"; static final String RESOURCE_SCOPE_SUBTREE = "subtree"; static final String RESPONSE_ATTRIBUTES_ONLY = "response-attributes-only"; static final String CRLF = PolicyService.CRLF; static Debug debug = PolicyService.debug; private String userSSOToken = null; private String serviceName = null; private String resourceName = null; private String resourceScope = null; private Map envParms = null; private Set respAttributes = null; /** * Default constructor for ResourceResultRequest. */ public ResourceResultRequest() { } /** * Returns the user's single sign-on token. * * @return user's single sign-on token. */ public String getUserSSOToken() { return userSSOToken; } /** * Sets the user's single sign-on token. * * @param ssoToken user's single sign-on token. */ public void setUserSSOToken(String ssoToken) { userSSOToken = ssoToken; } /** * Returns the service name of the request. * * @return the service name. */ public String getServiceName() { return serviceName; } /** * Sets the service name of the request. * * @param name the service name. */ public void setServiceName(String name) { serviceName = name; } /** * Returns the resource name of the request. * * @return the resource name. */ public String getResourceName() { return resourceName; } /** * Sets the resource name of the request. * * @param name Resource name. */ public void setResourceName(String name) { resourceName = name; } /** * Returns the resource scope of the request. * * @return the resource scope. */ public String getResourceScope() { return resourceScope; } /** * Sets the resource scope of the request. * * @param scope Resource scope. */ public void setResourceScope(String scope) { resourceScope = scope; } /** * Returns the environment parameters. * * @return the environment parameters. */ public Map getEnvParms() { return envParms; } /** * Sets the environment parameters. * * @param envs the environment parameters. */ public void setEnvParms(Map envs) { envParms = envs; } /** * Returns the response attributes. * * @return the response attributes. */ public Set getResponseAttributes() { return respAttributes; } /** * Sets the response attributes. * * @param attrs response attributes. */ public void setResponseAttributes(Set attrs) { respAttributes = attrs; } /** * Returns ResourceResultRequest object constructed from a * XML. * * @param pNode the XML DOM node for the ResourceResultRequest * object * @return constructed ResourceResultRequest object. */ public static ResourceResultRequest parseXML(Node pNode) throws PolicyEvaluationException { ResourceResultRequest resResultReq = new ResourceResultRequest(); String attr = null; attr = XMLUtils.getNodeAttributeValue(pNode, USER_SSOTOKEN); if ((attr == null) || (attr.trim().equals(PolicyUtils.EMPTY_STRING)) ) { if (debug.messageEnabled()) { debug.error("ResourceResultRequest: user sso toekn is null"); } attr = PolicyUtils.EMPTY_STRING; } resResultReq.setUserSSOToken(attr); attr = XMLUtils.getNodeAttributeValue(pNode, SERVICE_NAME); if (attr == null) { debug.error("ResourceResultRequest: missing attribute " + SERVICE_NAME); String objs[] = { SERVICE_NAME }; throw new PolicyEvaluationException(ResBundleUtils.rbName, "missing_attribute", objs, null); } resResultReq.setServiceName(attr); attr = XMLUtils.getNodeAttributeValue(pNode, RESOURCE_NAME); if (attr == null) { debug.error("ResourceResultRequest: missing attribute " + RESOURCE_NAME); String objs[] = { RESOURCE_NAME }; throw new PolicyEvaluationException(ResBundleUtils.rbName, "missing_attribute",objs, null); } resResultReq.setResourceName(attr); attr = XMLUtils.getNodeAttributeValue(pNode, RESOURCE_SCOPE); if (attr == null) { /* if the resource scope is not specified in the request, * we take the default value RESOURCE_SCOPE_STRICT_SUBTREE */ resResultReq.setResourceScope(RESOURCE_SCOPE_STRICT_SUBTREE); } else { if (attr.equals(RESOURCE_SCOPE_SUBTREE) || attr.equals(RESOURCE_SCOPE_STRICT_SUBTREE) || attr.equals(RESOURCE_SCOPE_SELF) || attr.equals(RESPONSE_ATTRIBUTES_ONLY)) { resResultReq.setResourceScope(attr); } else { debug.error("ResourceResultRequest: invalid value " + attr + " set for attribute " + RESOURCE_SCOPE); String objs[] = { attr, RESOURCE_SCOPE }; throw new PolicyEvaluationException(ResBundleUtils.rbName, "invalid_value_for_attribute", objs, null); } } Node node = XMLUtils.getChildNode(pNode, ENV_PARAMETERS); if (node != null) { try { resResultReq.setEnvParms( PolicyUtils.parseEnvParameters(node)); } catch (PolicyException pe) { throw new PolicyEvaluationException(pe); } } node = XMLUtils.getChildNode(pNode, GET_RESPONSE_DECISIONS); if (node != null) { try { resResultReq.setResponseAttributes( PolicyUtils.parseResponseAttributes(node)); } catch (PolicyException pe) { throw new PolicyEvaluationException(pe); } } return resResultReq; } /** * Returns a XML representation of this object. * * @return a XML representation of this object. */ public String toXMLString() { StringBuilder xmlsb = new StringBuilder(1000); xmlsb.append("<") .append(GET_RESOURCE_RESULTS); xmlsb.append(" ") .append(USER_SSOTOKEN) .append("=\"") .append((userSSOToken != null) ? userSSOToken : PolicyUtils.EMPTY_STRING) .append("\""); xmlsb.append(" ") .append(SERVICE_NAME) .append("=\"") .append(serviceName) .append("\""); xmlsb.append(" ") .append(RESOURCE_NAME) .append("=\"") .append(XMLUtils.escapeSpecialCharacters(resourceName)) .append("\""); xmlsb.append(" ") .append(RESOURCE_SCOPE) .append("=\"") .append(resourceScope) .append("\">") .append(CRLF); if (envParms != null) { xmlsb.append(PolicyUtils.envParametersToXMLString(envParms)); } if (respAttributes != null) { xmlsb.append(PolicyUtils.responseAttributesToXMLString( respAttributes)); } xmlsb.append("") .append(CRLF); return xmlsb.toString(); } }