/*
 * Copyright 2004,2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef AXIS2_ADDR_H
#define AXIS2_ADDR_H

#ifdef __cplusplus
extern "C"
{
#endif

/**
 * @defgroup axis2_addr_consts Addressing related constants
 * @ingroup axis2_addr
 * @{
 */

    /* ====================== Common Message Addressing Properties ===========*/
    #define AXIS2_WSA_MESSAGE_ID "MessageID"
    #define AXIS2_WSA_RELATES_TO "RelatesTo"
    #define AXIS2_WSA_RELATES_TO_RELATIONSHIP_TYPE "RelationshipType"
    #define AXIS2_WSA_TO "To"
    #define AXIS2_WSA_FROM "From"
    #define AXIS2_WSA_REPLY_TO "ReplyTo"
    #define AXIS2_WSA_FAULT_TO "FaultTo"
    #define AXIS2_WSA_ACTION "Action"
    #define AXIS2_WSA_MAPPING "wsamapping"

    /* ====================== Common EPR Elements ============================*/
    #define EPR_ADDRESS "Address"
    #define EPR_REFERENCE_PARAMETERS "ReferenceParameters"
    #define EPR_SERVICE_NAME "ServiceName"

    /* ====================== Addressing Submission Version Constants ========*/
    #define AXIS2_WSA_NAMESPACE_SUBMISSION "http://schemas.xmlsoap.org/ws/2004/08/addressing"
    #define AXIS2_WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE_SUBMISSION "wsa:Reply"
    #define AXIS2_WSA_ANONYMOUS_URL_SUBMISSION "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous"

    #define EPR_REFERENCE_PROPERTIES "ReferenceProperties"
    #define EPR_PORT_TYPE "PortType"
    #define EPR_SERVICE_NAME_PORT_NAME "PortName"

    /* =====================Addressing 1.0 Final Version Constants ===========*/
    #define AXIS2_WSA_NAMESPACE "http://www.w3.org/2005/08/addressing"
    #define AXIS2_WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE "http://www.w3.org/2005/08/addressing/reply"
    #define AXIS2_WSA_ANONYMOUS_URL "http://www.w3.org/2005/08/addressing/anonymous"

    #define AXIS2_WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE "IsReferenceParameter"
    #define AXIS2_WSA_TYPE_ATTRIBUTE_VALUE "true"

    #define AXIS2_WSA_INTERFACE_NAME "InterfaceName"
    #define AXIS2_WSA_SERVICE_NAME_ENDPOINT_NAME "EndpointName"
    #define AXIS2_WSA_POLICIES "Policies"
    #define AXIS2_WSA_METADATA "Metadata"
        
    /* =======================================================================*/

    #define AXIS2_WSA_VERSION "WSAddressingVersion"
    #define AXIS2_WSA_DEFAULT_PREFIX "wsa"

    #define PARAM_SERVICE_GROUP_CONTEXT_ID "ServiceGroupContextIdFromAddressing"

/** @} */
    
#ifdef __cplusplus
}
#endif

#endif    /* AXIS2_ADDR_H */
