a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: ProcessingContextHeader.java,v 1.2 2008/06/25 05:47:22 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.soapbinding;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Document;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.xml.XMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The <code>ProcessingContextHeader</code> class represents
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>ProcessingContext</code> element defined in SOAP binding schema.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class ProcessingContextHeader {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String elementValue = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String id = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Boolean mustUnderstand = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String actor = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param elementValue the processing context header string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the elementValue is null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ProcessingContextHeader(String elementValue)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (elementValue == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString("missingPCvalue");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("ProcessingContextHeader: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.elementValue = elementValue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param processingContextElement a ProcessingContext element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while parsing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the ProcessingContext element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProcessingContextHeader(Element processingContextElement)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster elementValue = XMLUtils.getElementValue(processingContextElement);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (elementValue == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString("missingPCvalue");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("ProcessingContextHeader: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (elementValue == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString("missingPCvalue");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("ProcessingContextHeader: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id = XMLUtils.getNodeAttributeValue(processingContextElement,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.ATTR_id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String str = XMLUtils.getNodeAttributeValueNS(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextElement,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.ATTR_MUSTUNDERSTAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (str != null && str.length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mustUnderstand = Utils.StringToBoolean(str);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception pe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString("invalidMustUnderstand");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("ProcessingContextHeader: " + msg, pe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster actor = XMLUtils.getNodeAttributeValueNS(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextElement,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.ATTR_ACTOR);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns value of <code>ProcessingContext</code> element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of <code>ProcessingContext</code> element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getElementValue() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return elementValue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns value of <code>id</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of <code>id</code> attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getId() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return id;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns value of 'mustUnderstand' attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of 'mustUnderstand' attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Boolean getMustUnderstand() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return mustUnderstand;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns value of <code>actor</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of <code>actor</code> attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getActor() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return actor;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets value of <code>ProcessingContex</code> element if it is not null.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param elementValue value of <code>ProcessingContext</code> element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setElementValue(String elementValue) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (elementValue != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.elementValue = elementValue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets value of <code>mustUnderstand</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param mustUnderstand value of <code>mustUnderstand</code> attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setMustUnderstand(Boolean mustUnderstand) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.mustUnderstand = mustUnderstand;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets value of <code>actor</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param actor value of <code>actor</code> attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setActor(String actor) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.actor = actor;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the sign flag. If the value is set to true then the header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * will be signed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param signFlag the value of the sign flag.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSignFlag(boolean signFlag) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signFlag) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts this header to <code>org.w3c.dom.Element</code> and add to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * parent Header Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param headerE parent Header Element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void addToParent(Element headerE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Document doc = headerE.getOwnerDocument();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element processingContextHeaderE = doc.createElementNS(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP_BINDING,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PTAG_PROCESSING_CONTEXT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster headerE.appendChild(processingContextHeaderE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextHeaderE.appendChild(doc.createTextNode(elementValue));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (id != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextHeaderE.setAttributeNS(null,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.ATTR_id, id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (mustUnderstand != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextHeaderE.setAttributeNS(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PATTR_MUSTUNDERSTAND,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.BooleanToString(mustUnderstand));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (actor != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextHeaderE.setAttributeNS(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PATTR_ACTOR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster actor);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}