blob: 3cb983cccb84aa525a9d2e7f861e762acf38b67b [file] [log] [blame]
/*
* 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_WSDL_DESC_H
#define AXIS2_WSDL_DESC_H
/**
* @file axis2_wsdl_desc.h
* @brief Axis2 Wsdl interface interface
*/
#include <axis2_const.h>
#include <axis2_error.h>
#include <axis2_defines.h>
#include <axis2_env.h>
#include <axis2_allocator.h>
#include <axis2_hash.h>
#include <axis2_array_list.h>
#include <axis2_qname.h>
#ifdef __cplusplus
extern "C"
{
#endif
struct axis2_wsdl_op;
struct axis2_wsdl_component;
struct axis2_wsdl_include;
struct axis2_wsdl_import;
struct axis2_wsdl_types;
struct axis2_wsdl_msg_ref;
struct axis2_wsdl_fault_ref;
struct axis2_wsdl_feature;
struct axis2_wsdl_property;
struct axis2_wsdl_binding;
struct axis2_wsdl_binding_fault;
struct axis2_wsdl_binding_op;
struct axis2_wsdl_extensible_attribute;
struct axis2_wsdl_interface;
typedef struct axis2_wsdl_desc axis2_wsdl_desc_t;
typedef struct axis2_wsdl_desc_ops axis2_wsdl_desc_ops_t;
/** @defgroup axis2_wsdl_desc Wsdl Description
* @ingroup axis2_wsdl
* @{
*/
/**
* @brief Wsdl Description ops struct
* Encapsulator struct for ops of axis2_wsdl_desc
*/
struct axis2_wsdl_desc_ops
{
/** De-allocate memory
* @return status code
*/
axis2_status_t (AXIS2_CALL *
free)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Returns a Map of <code>wsdl_bindings</code> Objects keyed by the
* <code>axis2_qname_t</code> of the Binding.
*
* @return
*/
axis2_hash_t *(AXIS2_CALL *
get_bindings)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Sets the whole new set of Bindings to the axis2_wsd_desc.
*
* @param bindings
*/
axis2_status_t (AXIS2_CALL *
set_bindings)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_hash_t *bindings);
/**
* The axis2_wsdl_binding Will be added to the map keyed with its own qname.
* If the axis2_wsdl_binding is null it will not be added.
* If the axis2_wsdl_binding is not null and Binding name is null then
* error is set.
*
* @param binding <code>axis2_wsdl_binding</code> Object
*/
axis2_status_t (AXIS2_CALL *
add_binding)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
struct axis2_wsdl_binding *binding);
/**
* Retrives the <code>axis2_wsdl_binding_t</code> by its qname. Wil return NULL
* if <code>axis2_wsdl_binding_t</code> is not found.
*
* @param qname The qname of the Binding.
* @return
*/
struct axis2_wsdl_binding *(AXIS2_CALL *
get_binding)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_qname_t *qname);
/**
* The Interface component will be added to the map keyed with its own name.
* If the Interface is NULL it will not be added.
* If the interface name is NULL an Error will be set and return.
*
* @param interface
*/
axis2_status_t (AXIS2_CALL *
add_interface)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
struct axis2_wsdl_interface *interface);
/**
* The Interface will be returned if it exsists,
* otherwise null will be returned.
*
* @param qname qname of the Interface.
* @return The Interface with the relavent qname
*/
struct axis2_wsdl_interface *(AXIS2_CALL *
get_interface)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_qname_t *qname);
/**
* Method get_interfaces
*
* @return
*/
axis2_hash_t *(AXIS2_CALL *
get_interfaces)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Method set_interfaces
*
* @param interfaces
*/
axis2_status_t (AXIS2_CALL *
set_interfaces)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_hash_t *interfaces);
/**
* Method get_svcs
*
* @return map of axis2_wsdl_svc's
*/
axis2_hash_t *(AXIS2_CALL *
get_svcs)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Method set_svcs
*
* @param svcs
*/
axis2_status_t (AXIS2_CALL *
set_svcs)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_hash_t *svcs);
/**
* Will return the <code>axis2_wsdl_svc </code> if found otherwise return NULL.
*
* @param qname <code>qname</code> of the svc
* @return The svc with the relevant qname
*/
struct axis2_wsdl_svc *(AXIS2_CALL *
get_svc)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_qname_t *qname);
/**
* Will add the <code>axis2_wsdl_svc_t</code> to the map.
* If svc is NULL it will not be added.
* If the <code>axis2_wsdl_svc_t</code> name is NULL an error will be set.
*
* @param svc
*/
axis2_status_t (AXIS2_CALL *
add_svc)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
struct axis2_wsdl_svc *svc);
/**
* Method get_target_namespace
*
* @return
*/
axis2_char_t *(AXIS2_CALL *
get_target_namespace)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Method set_target_namespace
*
* @param target_namespace
*/
axis2_status_t (AXIS2_CALL *
set_target_namespace)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_char_t *target_namespace);
/**
* Method get_types
*
* @return
*/
struct axis2_wsdl_types *(AXIS2_CALL *
get_types)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Method axis2_wsdl_desc_set_types
*
* @param types
*/
axis2_status_t (AXIS2_CALL *
set_types)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
struct axis2_wsdl_types *types);
/**
* Gets the name attribute of the WSDL 1.1 Definitions Element
*
* @return
*/
axis2_qname_t *(AXIS2_CALL *
get_wsdl1_def_name)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Sets the name attribute of the WSDL 1.1 Definitions Element
*
* @param wsdl1_def_name
*/
axis2_status_t (AXIS2_CALL *
set_wsdl1_def_name)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_qname_t *wsdl1_def_name);
/**
* Will return the Namespace URI as a String if there exists an
* Namespace URI associated with the given prefix, in the Definition
* Component, Will return NULL if not found.
*
* @param prefix Prefix defined in the Definitions elemet in the WSDL file
* @return The Namespace URI for the prefix.
*/
axis2_char_t *(AXIS2_CALL *
get_namespace)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_char_t *prefix);
/**
* Will return all the Namespaces associated with the Definition
* Component and will be keyed by the Napespace Prefix.
*
* @return
*/
axis2_hash_t *(AXIS2_CALL *
get_namespaces)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Sets the Namespaces associated with the Difinition Component
* and they should be keyed by its Namespace Prefix.
*
* @param namespaces
*/
axis2_status_t (AXIS2_CALL *
set_namespaces)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_hash_t *namespaces);
/**
* Returns the WSDL Imports in an <code>axis2_array_list_t</code>
*
* @return
*/
axis2_array_list_t *(AXIS2_CALL *
get_imports)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Sets the imports as an <code>axis2_array_list_t</code>
*
* @param imports
*/
axis2_status_t (AXIS2_CALL *
set_imports)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_array_list_t *imports);
/**
* Adds an import to the list.
*
* @param wsdl_import
*/
axis2_status_t (AXIS2_CALL *
add_import)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
struct axis2_wsdl_import *wsdl_import);
/**
* Returns the Includes in an <code>axis2_array_list_t</code>
*
* @return
*/
axis2_array_list_t *(AXIS2_CALL *
get_includes)(axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
/**
* Sets the includes as an <code>axis2_array_list_t</code>
*
* @param includes
*/
axis2_status_t (AXIS2_CALL *
set_includes) (axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
axis2_array_list_t *includes);
/**
* Adds an wsdl include to the list.
*
* @param wsdl_include
*/
axis2_status_t (AXIS2_CALL *
add_include) (axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env,
struct axis2_wsdl_include *wsdl_include);
struct axis2_wsdl_binding *(AXIS2_CALL *
get_first_binding) (axis2_wsdl_desc_t *wsdl_desc,
const axis2_env_t *env);
};
/**
* @brief Wsdl container struct
* Property for params
*/
struct axis2_wsdl_desc
{
axis2_wsdl_desc_ops_t *ops;
struct axis2_wsdl_component *component;
};
/**
* Creates wsdl property struct
* @return pointer to newly created wsdl property
*/
AXIS2_EXTERN axis2_wsdl_desc_t * AXIS2_CALL
axis2_wsdl_desc_create (const axis2_env_t *env);
/*************************** Function macros **********************************/
#define AXIS2_WSDL_DESC_FREE(wsdl_desc, env) \
((wsdl_desc)->ops->free (wsdl_desc, env))
#define AXIS2_WSDL_DESC_GET_BINDINGS(wsdl_desc, env) \
((wsdl_desc)->ops->get_bindings (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_BINDINGS(wsdl_desc, env, bindings) \
((wsdl_desc)->ops->set_bindings (wsdl_desc, env, bindings))
#define AXIS2_WSDL_DESC_ADD_BINDING(wsdl_desc, env, binding) \
((wsdl_desc)->ops->add_binding (wsdl_desc, env, binding))
#define AXIS2_WSDL_DESC_GET_BINDING(wsdl_desc, env, qname) \
((wsdl_desc)->ops->get_binding (wsdl_desc, env, qname))
#define AXIS2_WSDL_DESC_ADD_INTERFACE(wsdl_desc, env, interface) \
((wsdl_desc)->ops->add_interface (wsdl_desc, env, interface))
#define AXIS2_WSDL_DESC_GET_INTERFACE(wsdl_desc, env, qname) \
((wsdl_desc)->ops->get_interface (wsdl_desc, env, qname))
#define AXIS2_WSDL_DESC_GET_INTERFACES(wsdl_desc, env) \
((wsdl_desc)->ops->get_interfaces (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_INTERFACES(wsdl_desc, env, interfaces) \
((wsdl_desc)->ops->set_interfaces (wsdl_desc, env, interfaces))
#define AXIS2_WSDL_DESC_GET_SVCS(wsdl_desc, env) \
((wsdl_desc)->ops->get_svcs (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_SVCS(wsdl_desc, env, svcs) \
((wsdl_desc)->ops->set_svcs (wsdl_desc, env, svcs))
#define AXIS2_WSDL_DESC_GET_SVC(wsdl_desc, env, qname) \
((wsdl_desc)->ops->get_svc (wsdl_desc, env, qname))
#define AXIS2_WSDL_DESC_ADD_SVC(wsdl_desc, env, svc) \
((wsdl_desc)->ops->add_svc (wsdl_desc, env, svc))
#define AXIS2_WSDL_DESC_GET_TARGET_NAMESPACE(wsdl_desc, env) \
((wsdl_desc)->ops->get_target_namespace (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_TARGET_NAMESPACE(wsdl_desc, env, target_namespace) \
((wsdl_desc)->ops->set_target_namespace (wsdl_desc, env, target_namespace))
#define AXIS2_WSDL_DESC_GET_TYPES(wsdl_desc, env) \
((wsdl_desc)->ops->get_types (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_TYPES(wsdl_desc, env, types) \
((wsdl_desc)->ops->set_types (wsdl_desc, env, types))
#define AXIS2_WSDL_DESC_GET_WSDL1_DEF_NAME(wsdl_desc, env) \
((wsdl_desc)->ops->get_wsdl1_def_name (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_WSDL1_DEF_NAME(wsdl_desc, env, wsdl1_def_qname) \
((wsdl_desc)->ops->set_wsdl1_def_name (wsdl_desc, env, wsdl1_def_qname))
#define AXIS2_WSDL_DESC_GET_NAMESPACE(wsdl_desc, env, prefix) \
((wsdl_desc)->ops->get_namespace (wsdl_desc, env, prefix))
#define AXIS2_WSDL_DESC_GET_NAMESPACES(wsdl_desc, env) \
((wsdl_desc)->ops->get_namespaces (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_NAMESPACES(wsdl_desc, env, namespaces) \
((wsdl_desc)->ops->set_namespace (wsdl_desc, env, namespaces))
#define AXIS2_WSDL_DESC_GET_IMPORTS(wsdl_desc, env) \
((wsdl_desc)->ops->get_imports (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_IMPORTS(wsdl_desc, env, imports) \
((wsdl_desc)->ops->set_imports (wsdl_desc, env, imports))
#define AXIS2_WSDL_DESC_ADD_IMPORT(wsdl_desc, env, wsdl_import) \
((wsdl_desc)->ops->add_import (wsdl_desc, env, wsdl_import))
#define AXIS2_WSDL_DESC_GET_INCLUDES(wsdl_desc, env) \
((wsdl_desc)->ops->get_includes (wsdl_desc, env))
#define AXIS2_WSDL_DESC_SET_INCLUDES(wsdl_desc, env, includes) \
((wsdl_desc)->ops->set_includes (wsdl_desc, env, includes))
#define AXIS2_WSDL_DESC_ADD_INCLUDE(wsdl_desc, env, wsdl_include) \
((wsdl_desc)->ops->add_include (wsdl_desc, env, wsdl_include))
/*************************** End of function macros ***************************/
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_WSDL_DESC_H */