8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The contents of this file are subject to the terms
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * of the Common Development and Distribution License
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * (the License). You may not use this file except in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * compliance with the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * You can obtain a copy of the License at
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * opensso/legal/CDDLv1.0.txt
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * See the License for the specific language governing
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * permission and limitations under the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * When distributing Covered Code, include this CDDL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Header Notice in each file and include the License file
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * at opensso/legal/CDDLv1.0.txt.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * If applicable, add the following below the CDDL Header,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * with the fields enclosed by brackets [] replaced by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * your own identifying information:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * $Id: ResourceResultRequest.java,v 1.3 2008/06/25 05:43:54 qcheng Exp $
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Portions Copyrighted [2011] [ForgeRock AS]
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpackage com.sun.identity.policy.remote;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.shared.debug.Debug;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.shared.xml.XMLUtils;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.policy.PolicyException;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.policy.PolicyUtils;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.policy.ResBundleUtils;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport java.util.Map;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport java.util.Set;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport org.w3c.dom.Node;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This <code>ResourceResultRequest</code> class represents a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * GetResourceResults XML document. The GetResourceResults
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DTD is defined as the following:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <pre>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <!-- GetResourceResults element is used by the client to request
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * the policy evaluation decisions for a particular user regarding
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * a given service and a resource and possibly its sub resources.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The attribute userSSOToken provides the identity of the user.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The attribute serviceName specifies the service name and
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * resourceName specifies the name of the resource for which the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * policy is evaluated.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The attribute resourceScope gives the scope of the resources in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * terms of the policy evaluation. The value of the attribute could
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * be "self", "strict-subtree", or "subtree". Value "self" means the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * resource node itself only; value "strict-subtree" means the strict
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * subtree of the root, no wildcard matching subtree included; value
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * "subtree" means to get all the subtrees with the resource node being
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * the root of one of the subtree, the other subtree roots are those that
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * match the resourceName by wildcard.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The sub-element EnvParameters provides the environment
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * information which may be useful during the policy evaluation.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The sub-element GetResponseDecisions requests for the values for
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * a set of user response attributes.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * -->
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <!ELEMENT GetResourceResults ( EnvParameters?, GetResponseDecisions? ) >
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <!ATTLIST GetResourceResults
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * userSSOToken CDATA #IMPLIED
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * serviceName NMTOKEN #REQUIRED
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * resourceName CDATA #REQUIRED
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * resourceScope (self | strict-subtree | subtree) "strict-subtree"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * >
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </pre>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpublic class ResourceResultRequest {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String GET_RESOURCE_RESULTS =
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PolicyRequest.GET_RESOURCE_RESULTS;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String USER_SSOTOKEN = "userSSOToken";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String SERVICE_NAME = "serviceName";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String RESOURCE_NAME = "resourceName";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String RESOURCE_SCOPE = "resourceScope";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String ENV_PARAMETERS = "EnvParameters";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String GET_RESPONSE_DECISIONS = "GetResponseDecisions";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String RESOURCE_SCOPE_SELF = "self";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String RESOURCE_SCOPE_STRICT_SUBTREE = "strict-subtree";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String RESOURCE_SCOPE_SUBTREE = "subtree";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String RESPONSE_ATTRIBUTES_ONLY = "response-attributes-only";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String CRLF = PolicyService.CRLF;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static Debug debug = PolicyService.debug;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String userSSOToken = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String serviceName = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String resourceName = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String resourceScope = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private Map envParms = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private Set respAttributes = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Default constructor for <code>ResourceResultRequest</code>.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public ResourceResultRequest() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the user's single sign-on token.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return user's single sign-on token.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getUserSSOToken() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return userSSOToken;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the user's single sign-on token.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param ssoToken user's single sign-on token.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setUserSSOToken(String ssoToken) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster userSSOToken = ssoToken;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the service name of the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return the service name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getServiceName() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return serviceName;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the service name of the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param name the service name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setServiceName(String name) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster serviceName = name;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the resource name of the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return the resource name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getResourceName() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return resourceName;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the resource name of the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param name Resource name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setResourceName(String name) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resourceName = name;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the resource scope of the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return the resource scope.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getResourceScope() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return resourceScope;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the resource scope of the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param scope Resource scope.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setResourceScope(String scope) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resourceScope = scope;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the environment parameters.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return the environment parameters.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public Map getEnvParms() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return envParms;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the environment parameters.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param envs the environment parameters.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setEnvParms(Map envs) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster envParms = envs;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the response attributes.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return the response attributes.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public Set getResponseAttributes() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return respAttributes;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the response attributes.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param attrs response attributes.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setResponseAttributes(Set attrs) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster respAttributes = attrs;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns <code>ResourceResultRequest</code> object constructed from a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * XML.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param pNode the XML DOM node for the <code>ResourceResultRequest</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * object
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return constructed <code>ResourceResultRequest</code> object.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static ResourceResultRequest parseXML(Node pNode)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throws PolicyEvaluationException
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ResourceResultRequest resResultReq = new ResourceResultRequest();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String attr = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster attr = XMLUtils.getNodeAttributeValue(pNode, USER_SSOTOKEN);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if ((attr == null) ||
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster (attr.trim().equals(PolicyUtils.EMPTY_STRING))
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (debug.messageEnabled()) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster debug.error("ResourceResultRequest: user sso toekn is null");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster attr = PolicyUtils.EMPTY_STRING;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setUserSSOToken(attr);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster attr = XMLUtils.getNodeAttributeValue(pNode, SERVICE_NAME);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (attr == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster debug.error("ResourceResultRequest: missing attribute " +
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster SERVICE_NAME);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String objs[] = { SERVICE_NAME };
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new PolicyEvaluationException(ResBundleUtils.rbName,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster "missing_attribute", objs, null);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setServiceName(attr);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster attr = XMLUtils.getNodeAttributeValue(pNode, RESOURCE_NAME);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (attr == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster debug.error("ResourceResultRequest: missing attribute " +
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster RESOURCE_NAME);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String objs[] = { RESOURCE_NAME };
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new PolicyEvaluationException(ResBundleUtils.rbName,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster "missing_attribute",objs, null);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setResourceName(attr);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster attr = XMLUtils.getNodeAttributeValue(pNode, RESOURCE_SCOPE);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (attr == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /* if the resource scope is not specified in the request,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * we take the default value RESOURCE_SCOPE_STRICT_SUBTREE
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setResourceScope(RESOURCE_SCOPE_STRICT_SUBTREE);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster else {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (attr.equals(RESOURCE_SCOPE_SUBTREE)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster || attr.equals(RESOURCE_SCOPE_STRICT_SUBTREE)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster || attr.equals(RESOURCE_SCOPE_SELF)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster || attr.equals(RESPONSE_ATTRIBUTES_ONLY)) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setResourceScope(attr);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster else {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster debug.error("ResourceResultRequest: invalid value "
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster + attr + " set for attribute " + RESOURCE_SCOPE);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String objs[] = { attr, RESOURCE_SCOPE };
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new PolicyEvaluationException(ResBundleUtils.rbName,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster "invalid_value_for_attribute", objs, null);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Node node = XMLUtils.getChildNode(pNode, ENV_PARAMETERS);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (node != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster try {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setEnvParms(
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PolicyUtils.parseEnvParameters(node));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (PolicyException pe) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new PolicyEvaluationException(pe);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster node = XMLUtils.getChildNode(pNode, GET_RESPONSE_DECISIONS);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (node != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster try {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resResultReq.setResponseAttributes(
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PolicyUtils.parseResponseAttributes(node));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (PolicyException pe) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new PolicyEvaluationException(pe);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return resResultReq;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns a XML representation of this object.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return a XML representation of this object.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String toXMLString() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster StringBuilder xmlsb = new StringBuilder(1000);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append("<")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(GET_RESOURCE_RESULTS);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append(" ")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(USER_SSOTOKEN)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("=\"")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append((userSSOToken != null)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ? userSSOToken : PolicyUtils.EMPTY_STRING)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("\"");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append(" ")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(SERVICE_NAME)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("=\"")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(serviceName)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("\"");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append(" ")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(RESOURCE_NAME)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("=\"")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(XMLUtils.escapeSpecialCharacters(resourceName))
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("\"");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append(" ")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(RESOURCE_SCOPE)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("=\"")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(resourceScope)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append("\">")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(CRLF);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (envParms != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append(PolicyUtils.envParametersToXMLString(envParms));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (respAttributes != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append(PolicyUtils.responseAttributesToXMLString(
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster respAttributes));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xmlsb.append("</")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(GET_RESOURCE_RESULTS)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(">")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(CRLF);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return xmlsb.toString();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster}