
package com.amadeus.travelManagement.amadeus.xml._2010._06.travel_orderchangerq_v1;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;


/**
 * Payload information for OrderCreateRQ.
 * 
 * &lt;p&gt;Java class for RequestType complex type.
 * 
 * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
 * 
 * &lt;pre&gt;
 * &amp;lt;complexType name="RequestType"&amp;gt;
 *   &amp;lt;complexContent&amp;gt;
 *     &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
 *       &amp;lt;sequence&amp;gt;
 *         &amp;lt;element name="ActionContextCode" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}CodeType" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="BookingRef" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}BookingRefType" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="ChangeOrder" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}ChangeOrderType" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="DataLists" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}DataListsType" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="Metadata" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}OrdChangeMetadataType" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="Order" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}OrderType" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="FareWaiver" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}FareWaiverType" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="OrderChangeParameters" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}OrdChangeParamsType" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="PaxGroup" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}PaxGroupType" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="PaymentInfo" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}PaymentInfoType" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
 *         &amp;lt;element name="Parameters" minOccurs="0"&amp;gt;
 *           &amp;lt;complexType&amp;gt;
 *             &amp;lt;complexContent&amp;gt;
 *               &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
 *                 &amp;lt;sequence&amp;gt;
 *                   &amp;lt;element name="Invoice" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}InvoiceDeliveryType" minOccurs="0"/&amp;gt;
 *                 &amp;lt;/sequence&amp;gt;
 *               &amp;lt;/restriction&amp;gt;
 *             &amp;lt;/complexContent&amp;gt;
 *           &amp;lt;/complexType&amp;gt;
 *         &amp;lt;/element&amp;gt;
 *       &amp;lt;/sequence&amp;gt;
 *     &amp;lt;/restriction&amp;gt;
 *   &amp;lt;/complexContent&amp;gt;
 * &amp;lt;/complexType&amp;gt;
 * &lt;/pre&gt;
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RequestType", propOrder = {
    "actionContextCode",
    "bookingRef",
    "changeOrder",
    "dataLists",
    "metadata",
    "order",
    "fareWaiver",
    "orderChangeParameters",
    "paxGroup",
    "paymentInfo",
    "parameters"
})
public class RequestType {

    @XmlElement(name = "ActionContextCode")
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "token")
    protected String actionContextCode;
    @XmlElement(name = "BookingRef")
    protected List<BookingRefType> bookingRef;
    @XmlElement(name = "ChangeOrder")
    protected ChangeOrderType changeOrder;
    @XmlElement(name = "DataLists")
    protected DataListsType dataLists;
    @XmlElement(name = "Metadata")
    protected OrdChangeMetadataType metadata;
    @XmlElement(name = "Order")
    protected OrderType order;
    @XmlElement(name = "FareWaiver")
    protected List<FareWaiverType> fareWaiver;
    @XmlElement(name = "OrderChangeParameters")
    protected OrdChangeParamsType orderChangeParameters;
    @XmlElement(name = "PaxGroup")
    protected List<PaxGroupType> paxGroup;
    @XmlElement(name = "PaymentInfo")
    protected List<PaymentInfoType> paymentInfo;
    @XmlElement(name = "Parameters")
    protected RequestType.Parameters parameters;

    /**
     * Gets the value of the actionContextCode property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getActionContextCode() {
        return actionContextCode;
    }

    /**
     * Sets the value of the actionContextCode property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setActionContextCode(String value) {
        this.actionContextCode = value;
    }

    /**
     * Gets the value of the bookingRef property.
     * 
     * &lt;p&gt;
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a &lt;CODE&gt;set&lt;/CODE&gt; method for the bookingRef property.
     * 
     * &lt;p&gt;
     * For example, to add a new item, do as follows:
     * &lt;pre&gt;
     *    getBookingRef().add(newItem);
     * &lt;/pre&gt;
     * 
     * 
     * &lt;p&gt;
     * Objects of the following type(s) are allowed in the list
     * {@link BookingRefType }
     * 
     * 
     */
    public List<BookingRefType> getBookingRef() {
        if (bookingRef == null) {
            bookingRef = new ArrayList<BookingRefType>();
        }
        return this.bookingRef;
    }

    /**
     * Gets the value of the changeOrder property.
     * 
     * @return
     *     possible object is
     *     {@link ChangeOrderType }
     *     
     */
    public ChangeOrderType getChangeOrder() {
        return changeOrder;
    }

    /**
     * Sets the value of the changeOrder property.
     * 
     * @param value
     *     allowed object is
     *     {@link ChangeOrderType }
     *     
     */
    public void setChangeOrder(ChangeOrderType value) {
        this.changeOrder = value;
    }

    /**
     * Gets the value of the dataLists property.
     * 
     * @return
     *     possible object is
     *     {@link DataListsType }
     *     
     */
    public DataListsType getDataLists() {
        return dataLists;
    }

    /**
     * Sets the value of the dataLists property.
     * 
     * @param value
     *     allowed object is
     *     {@link DataListsType }
     *     
     */
    public void setDataLists(DataListsType value) {
        this.dataLists = value;
    }

    /**
     * Gets the value of the metadata property.
     * 
     * @return
     *     possible object is
     *     {@link OrdChangeMetadataType }
     *     
     */
    public OrdChangeMetadataType getMetadata() {
        return metadata;
    }

    /**
     * Sets the value of the metadata property.
     * 
     * @param value
     *     allowed object is
     *     {@link OrdChangeMetadataType }
     *     
     */
    public void setMetadata(OrdChangeMetadataType value) {
        this.metadata = value;
    }

    /**
     * Gets the value of the order property.
     * 
     * @return
     *     possible object is
     *     {@link OrderType }
     *     
     */
    public OrderType getOrder() {
        return order;
    }

    /**
     * Sets the value of the order property.
     * 
     * @param value
     *     allowed object is
     *     {@link OrderType }
     *     
     */
    public void setOrder(OrderType value) {
        this.order = value;
    }

    /**
     * Gets the value of the fareWaiver property.
     * 
     * &lt;p&gt;
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a &lt;CODE&gt;set&lt;/CODE&gt; method for the fareWaiver property.
     * 
     * &lt;p&gt;
     * For example, to add a new item, do as follows:
     * &lt;pre&gt;
     *    getFareWaiver().add(newItem);
     * &lt;/pre&gt;
     * 
     * 
     * &lt;p&gt;
     * Objects of the following type(s) are allowed in the list
     * {@link FareWaiverType }
     * 
     * 
     */
    public List<FareWaiverType> getFareWaiver() {
        if (fareWaiver == null) {
            fareWaiver = new ArrayList<FareWaiverType>();
        }
        return this.fareWaiver;
    }

    /**
     * Gets the value of the orderChangeParameters property.
     * 
     * @return
     *     possible object is
     *     {@link OrdChangeParamsType }
     *     
     */
    public OrdChangeParamsType getOrderChangeParameters() {
        return orderChangeParameters;
    }

    /**
     * Sets the value of the orderChangeParameters property.
     * 
     * @param value
     *     allowed object is
     *     {@link OrdChangeParamsType }
     *     
     */
    public void setOrderChangeParameters(OrdChangeParamsType value) {
        this.orderChangeParameters = value;
    }

    /**
     * Gets the value of the paxGroup property.
     * 
     * &lt;p&gt;
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a &lt;CODE&gt;set&lt;/CODE&gt; method for the paxGroup property.
     * 
     * &lt;p&gt;
     * For example, to add a new item, do as follows:
     * &lt;pre&gt;
     *    getPaxGroup().add(newItem);
     * &lt;/pre&gt;
     * 
     * 
     * &lt;p&gt;
     * Objects of the following type(s) are allowed in the list
     * {@link PaxGroupType }
     * 
     * 
     */
    public List<PaxGroupType> getPaxGroup() {
        if (paxGroup == null) {
            paxGroup = new ArrayList<PaxGroupType>();
        }
        return this.paxGroup;
    }

    /**
     * Gets the value of the paymentInfo property.
     * 
     * &lt;p&gt;
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a &lt;CODE&gt;set&lt;/CODE&gt; method for the paymentInfo property.
     * 
     * &lt;p&gt;
     * For example, to add a new item, do as follows:
     * &lt;pre&gt;
     *    getPaymentInfo().add(newItem);
     * &lt;/pre&gt;
     * 
     * 
     * &lt;p&gt;
     * Objects of the following type(s) are allowed in the list
     * {@link PaymentInfoType }
     * 
     * 
     */
    public List<PaymentInfoType> getPaymentInfo() {
        if (paymentInfo == null) {
            paymentInfo = new ArrayList<PaymentInfoType>();
        }
        return this.paymentInfo;
    }

    /**
     * Gets the value of the parameters property.
     * 
     * @return
     *     possible object is
     *     {@link RequestType.Parameters }
     *     
     */
    public RequestType.Parameters getParameters() {
        return parameters;
    }

    /**
     * Sets the value of the parameters property.
     * 
     * @param value
     *     allowed object is
     *     {@link RequestType.Parameters }
     *     
     */
    public void setParameters(RequestType.Parameters value) {
        this.parameters = value;
    }


    /**
     * &lt;p&gt;Java class for anonymous complex type.
     * 
     * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
     * 
     * &lt;pre&gt;
     * &amp;lt;complexType&amp;gt;
     *   &amp;lt;complexContent&amp;gt;
     *     &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
     *       &amp;lt;sequence&amp;gt;
     *         &amp;lt;element name="Invoice" type="{http://xml.amadeus.com/2010/06/Travel_OrderChangeRQ_v1}InvoiceDeliveryType" minOccurs="0"/&amp;gt;
     *       &amp;lt;/sequence&amp;gt;
     *     &amp;lt;/restriction&amp;gt;
     *   &amp;lt;/complexContent&amp;gt;
     * &amp;lt;/complexType&amp;gt;
     * &lt;/pre&gt;
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "invoice"
    })
    public static class Parameters {

        @XmlElement(name = "Invoice")
        protected InvoiceDeliveryType invoice;

        /**
         * Gets the value of the invoice property.
         * 
         * @return
         *     possible object is
         *     {@link InvoiceDeliveryType }
         *     
         */
        public InvoiceDeliveryType getInvoice() {
            return invoice;
        }

        /**
         * Sets the value of the invoice property.
         * 
         * @param value
         *     allowed object is
         *     {@link InvoiceDeliveryType }
         *     
         */
        public void setInvoice(InvoiceDeliveryType value) {
            this.invoice = value;
        }

    }

}
