/*
 * The Apache Software License, Version 1.1
 *
 *
 * Copyright (c) 2001 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Axis" and "Apache Software Foundation" must
 *    not be used to endorse or promote products derived from this
 *    software withou prior written permission. For written
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    nor may "Apache" appear in their name, without prior written
 *    permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 */
package org.apache.axis.wsdl.toJava;

import javax.wsdl.QName;
import java.util.Vector;

import javax.wsdl.extensions.soap.SOAPHeader;

/**
  * This class simply collects a SOAPHeader's information in order for JavaStubWriter to generate the appropriate 
  * set header calls before the invocation of the method as well as the appropriate update header call after the 
  * method has been invoked.
  * @author Sylvain St-Germain 
  */
public class Header {
   
    /**
     *  The namespace of this header, just a string.
     */
    private String namespaceURI;   

    /** 
     * The part name of this parameter, just a string.
     */
    private String partName;

    /** 
     * The message name of this parameter, just a string.
     */
    private QName messageQName;

    /**
     * Is this header requried or not...
     */
    private boolean required;
      
    public String toString() {
        return "(" + getMessageQName() + ", " + getPartName() + ", " + getNamespaceURI() + ", " + getRequired() + ")";
    } // toString

		/** 
		 * Construct a SOAP Header object that is used to property set the headers onto the 
		 * Call object in the WSDL2Java generated BindingStub.
		 */
		public Header(SOAPHeader sh) {
		  
		  if ( sh != null ) {	  
					setPartName( sh.getPart() );
					setMessageQName( sh.getMessage() );
					setNamespaceURI( sh.getNamespaceURI() );
					//setRequired( sh.getRequired().booleanValue() );	//seems allways null although the WSDL has it...
		  } else {
		    System.out.println("Provided soap:header is null");
		  }
		}

    /**
     * Gets the namespaceURI.
     * @return Returns a String
     */
    public String getNamespaceURI() {
      return namespaceURI;
    }

    /**
     * Sets the namespaceURI.
     * @param namespaceURI The namespaceURI to set
     */
    public void setNamespaceURI(String namespaceURI) {
      this.namespaceURI = namespaceURI;
    }

    /**
     * Gets the partName.
     * @return Returns a String
     */
    public String getPartName() {
      return partName;
    }

    /**
     * Sets the partName.
     * @param partName The partName to set
     */
    public void setPartName(String partName) {
      this.partName = partName;
    }

    /**
     * Gets the required.
     * @return Returns a boolean
     */
    public boolean getRequired() {
      return required;
    }

    /**
     * Sets the required.
     * @param required The required to set
     */
    public void setRequired(boolean required) {
      this.required = required;
    }

    /**
     * Gets the messageQName.
     * @return Returns a QName
     */
    public QName getMessageQName() {
      return messageQName;
    }

    /**
     * Sets the messageQName.
     * @param messageQName The messageQName to set
     */
    public void setMessageQName(QName messageQName) {
      this.messageQName = messageQName;
    }

} // class Header
