blob: 0852ef46310c5b6f3e0f1ac85f6fbc1e8f615be3 [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_SVC_H
#define AXIS2_SVC_H
/** @defgroup axis2_svc service
* @ingroup axis2_desc
* service represents the static structure of a service in a service group.
* In Axis2 description hierarchy, a service lives inside the service group to
* which it belongs.
* services are configured in services.xml files located in the respective
* service group folders of the services folder in the repository.
* In services.xml file, services are declared in association with a given
* service group or at top level as a stand alone service. In cases where a
* service is configured without an associated service group, a service group
* with the same name as that of the service would be created by the deployment
* engine and the service would be associated with that newly created service
* group. The deployment engine would create service instances to represent
* those configured services in services.xml files and would associate them with
* the respective service group in the configuration.
* service encapsulates data on engaged module information, the XML schema
* defined in WSDL that is associated with the service and the operations of
* the service.
* @{
*/
/**
* @file axis2_svc.h
*/
#include <axis2_param_container.h>
#include <axis2_flow_container.h>
#include <axis2_wsdl_svc.h>
#include <axis2_op.h>
#include <axis2_svc_grp.h>
#include <axis2_qname.h>
#include <axis2_error.h>
#include <axis2_array_list.h>
#include <axis2_const.h>
#include <axis2_phase_resolver.h>
#include <axis2_module_desc.h>
#include <axis2_conf.h>
#include <axis2_wsdl_soap_op.h>
#include <axis2_string.h>
#include <axis2_wsdl_endpoint.h>
#include <xml_schema.h>
#include <xml_schema_external.h>
#include <axis2_stream.h>
#include <xml_schema_element.h>
#ifdef __cplusplus
extern "C"
{
#endif
/** Type name for struct axis2_svc_ops */
typedef struct axis2_svc_ops axis2_svc_ops_t;
/** Type name for struct axis2_svc */
typedef struct axis2_svc axis2_svc_t;
struct axis2_wsdl_endpoint;
struct axis2_svc_grp;
/* struct axis2_op;*/
struct axis2_flow_container;
struct axis2_param_container;
struct axis2_wsdl_svc;
struct axis2_wsdl_interface;
struct axis2_module_desc;
struct axis2_conf;
struct axis2_wsdl_soap_op;
/**
* service ops struct.
* Encapsulator struct for ops of axis2_svc.
*/
struct axis2_svc_ops
{
/**
* Frees service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
free)(
axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Adds operation.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param op pointer to operation struct, service assumes ownership of
* operation
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_op)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_op *op);
/**
* Gets operation corresponding to the given QName.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param op_qname pointer to QName representing operation QName
* @return pointer to operation corresponding to given QName
*/
struct axis2_op *(AXIS2_CALL *
get_op_with_qname)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_qname_t *op_qname);
/**
* Gets operation corresponding to the name.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param op_name operation name string
* @return pointer to operation corresponding to given name
*/
struct axis2_op *(AXIS2_CALL *
get_op_with_name)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *op_name);
/**
* Gets all operations of service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to hash map containing all operations of the service
*/
axis2_hash_t *(AXIS2_CALL *
get_all_ops)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets parent which is of type service group.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param svc_grp pointer to parent service group
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_parent)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_svc_grp *svc_grp);
/**
* Gets parent which is of type service group.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to parent service group
*/
struct axis2_svc_grp *(AXIS2_CALL *
get_parent)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets QName.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param qname pointer to QName
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_qname)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_qname_t *qname);
/**
* Gets QName.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to QName
*/
const axis2_qname_t *(AXIS2_CALL *
get_qname)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Adds given parameter to operation.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param param pointer to parameter, service assumes ownership of
* parameter
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_param)(
axis2_svc_t *svc,
const axis2_env_t *env,
axis2_param_t *param);
/**
* Gets named parameter.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param name name string
* @return pointer to named parameter if exists, else NULL. Returns a
* reference, not a cloned copy
*/
axis2_param_t *(AXIS2_CALL *
get_param)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *name);
/**
* Gets all parameters stored within service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to array list of parameters, returns a reference,
* not a cloned copy
*/
axis2_array_list_t *(AXIS2_CALL *
get_all_params)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Checks if the named parameter is locked.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param param_name parameter name
* @return AXIS2_TRUE if the named parameter is locked, else AXIS2_FALSE
*/
axis2_bool_t (AXIS2_CALL *
is_param_locked)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *param_name);
/**
* Sets WSDL interface for service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param wsdl_interface pointer to wsdl interface struct
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_wsdl_interface)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_wsdl_interface *wsdl_interface);
/**
* Gets WSDL interface for service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to wsdl interface
*/
struct axis2_wsdl_interface *(AXIS2_CALL *
get_wsdl_interface)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Engages given module to service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param module_desc pointer to module description to be engaged,
* service does not assume the ownership of module
* @param conf pointer to configuration, it is configuration that holds
* module information
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
engage_module)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_module_desc *module_desc,
struct axis2_conf *conf);
/**
* Adds operations defined in a module to this service. It is possible
* to define operations that are associated to a module in a module.xml
* file. These operations in turn could be invoked in relation to a
* service. This method allows those module related operation to be
* added to a service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param module_desc pointer to module description containing module
* related operation information. service does not assume the ownership
* of module description
* @param conf pointer to configuration, it is configuration that stores
* the modules
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_module_ops)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_module_desc *module_desc,
struct axis2_conf *axis2_config);
/**
* Adds given module description to engaged module list.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param module_desc pointer to module description, service does not
* assume the ownership of module description
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_to_engaged_module_list)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_module_desc *module_desc);
/**
* Gets all engaged modules.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to array list containing all engaged modules
*/
axis2_array_list_t *(AXIS2_CALL *
get_all_engaged_modules)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Gets the WSDL operation element in service interface.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param op_qname pointer to QName of required operation
* @return pointer to WSDL operation as a void pointer
*/
void *(AXIS2_CALL *
get_wsdl_op)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_qname_t *op_qname);
/**
* Sets style. Style can be either RPC or document literal.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param style style of service as defined in WSDL
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_style)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *style);
/**
* Gets style. Style can be either RPC or document literal.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return string representing the style of service
*/
const axis2_char_t *(AXIS2_CALL *
get_style)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Gets in flow. In flow is the list of phases invoked
* along in path.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to flow representing in flow
*/
struct axis2_flow *(AXIS2_CALL *
get_in_flow)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets in flow. In flow is the list of phases invoked
* along in path.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param in_flow pointer to flow representing in flow
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_in_flow)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_flow *in_flow);
/**
* Gets out flow. Out flow is the list of phases invoked
* along out path.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to flow representing out flow
*/
struct axis2_flow *(AXIS2_CALL *
get_out_flow)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets out flow. Out flow is the list of phases invoked
* along out path.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return out_flow pointer to flow representing out flow
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_out_flow)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_flow *out_flow);
/**
* Gets fault in flow. Fault in flow is the list of phases invoked
* along in path if a fault happens.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to flow representing fault in flow
*/
struct axis2_flow *(AXIS2_CALL *
get_fault_in_flow)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets fault in flow. Fault in flow is the list of phases invoked
* along in path if a fault happens.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param fault_flow pointer to flow representing fault in flow
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_fault_in_flow)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_flow *fault_flow);
/**
* Gets fault out flow. Fault out flow is the list of phases invoked
* along out path if a fault happens.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to flow representing fault out flow
*/
struct axis2_flow *(AXIS2_CALL *
get_fault_out_flow)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets fault out flow. Fault out flow is the list of phases invoked
* along out path if a fault happens.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param fault_flow pointer to flow representing fault out flow
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_fault_out_flow)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_flow *fault_flow);
/**
* Gets operation corresponding to given SOAP Action.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param soap_action SOAP action string
* @return pointer to operation corresponding to given SOAP action if
* one exists, else NULL. Returns a reference, not a cloned copy
*/
struct axis2_op *(AXIS2_CALL *
get_op_by_soap_action)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *soap_action);
/**
* Gets operation corresponding to given SOAP Action and endpoint QName.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param soap_action SOAP action string
* @param endpoint pointer QName representing endpoint URI
* @return pointer operation corresponding to given SOAP Action and
* endpoint QName.
*/
struct axis2_op *(AXIS2_CALL *
get_op_by_soap_action_and_endpoint)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *soap_action,
const axis2_qname_t *endpoint);
/**
* Gets service name.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return service name string
*/
const axis2_char_t *(AXIS2_CALL *
get_name)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets service name.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param svc_name service name string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_name)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *svc_name);
/**
* Sets current time as last update time of the service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_last_update)(
axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Gets last update time of the service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return last updated time in seconds
*/
long (AXIS2_CALL *
get_last_update)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Gets the name of the file that holds the implementation of the
* service. service implementation is compiled into shared libraries
* and is placed in the respective sub folder in the services folder
* of Axis2 repository.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return file name string
*/
const axis2_char_t *(AXIS2_CALL *
get_file_name)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets the name of the file that holds the implementation of the
* service. service implementation is compiled into shared libraries
* and is placed in the respective sub folder in the services folder
* of Axis2 repository.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param file_name file name string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_file_name)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *file_name);
/**
* Gets all endpoints associated with the service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to hash map containing all endpoints
*/
axis2_hash_t *(AXIS2_CALL *
get_all_endpoints)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets the list of endpoints associated with the service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param endpoints pointer to hash map containing all endpoints
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_all_endpoints)(
axis2_svc_t *svc,
const axis2_env_t *env,
axis2_hash_t *endpoints);
/**
* Adds the given endpoint to the list of endpoints associated with the
* service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param endpoint pointer to WSDL endpoint, service assumes ownership
* of endpoint
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_endpoint)(
axis2_svc_t *svc,
const axis2_env_t *env,
struct axis2_wsdl_endpoint *endpoint);
/**
* Gets endpoint corresponding to given name from list of endpoints
* associated with the service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to WSDL endpoint, returns a reference, not a cloned
* copy
*/
struct axis2_wsdl_endpoint *(AXIS2_CALL *
get_endpoint)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_qname_t *qname);
/**
* Gets namespace.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return namespace URI string
*/
const axis2_char_t *(AXIS2_CALL *
get_namespace)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Adds WS-Addressing mapping for a given operation. The services.xml
* configuration file could specify a SOAP action that would map to
* one of the service operations. This method could be used to register
* that mapping against operations. WS-Addressing based dispatcher
* makes use of this mapping to identify the operation to be invoked,
* given WSA action.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param wsa_action WSA action string
* @param op pointer to operation that maps to the given WSA action
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_mapping)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *wsa_action ,
struct axis2_op *axis2_op);
/**
* Adds a module qname to list of module QNames associated with service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param module_qname pointer to QName to be added, this method clones
* the QName
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_module_qname)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_qname_t *module_qname);
/**
* Gets all module QNames associated with the service as a list.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to array list containing QNames
*/
axis2_array_list_t *(AXIS2_CALL *
get_all_module_qnames)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Checks if the XML schema location is adjusted.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return AXIS2_TRUE if XML schema is adjusted, else AXIS2_FALSE
*/
axis2_bool_t (AXIS2_CALL *
is_schema_location_adjusted)(
axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets the bool value indicating if the XML schema location is adjusted.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param adjusted AXIS2_TRUE if XML schema is adjusted, else AXIS2_FALSE
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_schema_location_adjusted)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_bool_t adjusted);
/**
* Gets XML schema mapping table for service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to hash map with XML schema mappings, returns a
* reference, not a cloned copy
*/
axis2_hash_t *(AXIS2_CALL *
get_schema_mapping_table)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets XML schema mapping table for service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param table pointer to hash map with XML schema mappings, service
* assumes ownership of the map
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_schema_mapping_table)(
axis2_svc_t *svc,
const axis2_env_t *env,
axis2_hash_t *table);
/**
* Gets custom schema prefix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return custom schema prefix string
*/
const axis2_char_t *(AXIS2_CALL *
get_custom_schema_prefix)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets custom schema prefix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param prefix custom schema prefix string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_custom_schema_prefix)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *prefix);
/**
* Gets custom schema suffix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return custom schema suffix string
*/
const axis2_char_t *(AXIS2_CALL *
get_custom_schema_suffix)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets custom schema suffix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param suffix custom schema suffix string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_custom_schema_suffix)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *suffix);
/**
* Prints the schema to given stream.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param out_stream stream to print to
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
print_schema)(
axis2_svc_t *svc,
const axis2_env_t *env,
axis2_stream_t *out_stream);
/**
* Gets the XML schema at the given index of XML schema array list.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param index index of the XML schema to be retrieved
* @return pointer to XML schema, returns a reference, not a cloned copy
*/
xml_schema_t *(AXIS2_CALL *
get_schema)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const int index);
/**
* Adds all namespaces in the namespace map to the XML schema at
* the given index of the XML schema array list.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param index index of the XML schema to be processed
* @return pointer to XML schema with namespaces added,
* returns a reference, not a cloned copy
*/
xml_schema_t *(AXIS2_CALL *
add_all_namespaces)(
axis2_svc_t *svc,
const axis2_env_t *env,
int index);
/**
* Gets the list of XML schemas associated with service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to array list of XML schemas, returns a reference,
* not a cloned copy
*/
axis2_array_list_t *(AXIS2_CALL *
get_all_schemas)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Adds the given XML schema to the list of XML schemas associated
* with the service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param schema pointer to XML schema struct, service assumes the
* ownership of struct
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_schema)(
axis2_svc_t *svc,
const axis2_env_t *env,
xml_schema_t *schema);
/**
* Adds the list of all XML schemas to service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param schemas pointer to array list containing XML schemas
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
add_all_schemas)(
axis2_svc_t *svc,
const axis2_env_t *env,
axis2_array_list_t *schemas);
/**
* Gets XML schema's target namespace.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return XML schema target namespace string
*/
const axis2_char_t *(AXIS2_CALL *
get_schema_target_ns)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets XML schema's target namespace.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param ns namespace string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_schema_target_ns)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *ns);
/**
* Gets XML schema's target namespace prefix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return XML schema target namespace prefix string
*/
const axis2_char_t *(AXIS2_CALL *
get_schema_target_ns_prefix)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets XML schema's target namespace prefix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param prefix namespace prefix string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_schema_target_ns_prefix)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *prefix);
/**
* Gets target namespace.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return target namespace as a string
*/
const axis2_char_t *(AXIS2_CALL *
get_target_ns)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets target namespace.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param ns target namespace as a string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_target_ns)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *ns);
/**
* Gets target namespace prefix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return target namespace prefix string
*/
const axis2_char_t *(AXIS2_CALL *
get_target_ns_prefix)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets target namespace prefix.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param prefix target namespace prefix string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_target_ns_prefix)(
axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_char_t *prefix);
/**
* Gets XML schemas element corresponding to the given QName.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param qname QName of the XML schema element to be retrieved
* @return pointer to XML schema element, returns a reference, not a
* cloned copy
*/
xml_schema_element_t *(AXIS2_CALL *
get_schema_element)(
const axis2_svc_t *svc,
const axis2_env_t *env,
const axis2_qname_t *qname);
/**
* Gets the namespace map with all namespaces related to service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return pointer to hash map containing all namespaces, returns a
* reference, not a cloned copy
*/
axis2_hash_t *(AXIS2_CALL *
get_ns_map)(
const axis2_svc_t *svc,
const axis2_env_t *env);
/**
* Sets the namespace map with all namespaces related to service.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @param ns_map pointer to hash map containing all namespaces
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_ns_map)(
axis2_svc_t *svc,
const axis2_env_t *env,
axis2_hash_t *ns_map);
/**
* Populates the schema mappings. This method is used in code generation
* and WSDL generation (WSDL2C and C2WSDL). This method deals with the
* imported schemas that would be there in the WSDL.
* @param svc pointer to service struct
* @param env pointer to environment struct
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
populate_schema_mappings)(
axis2_svc_t *svc,
const axis2_env_t *env);
};
/**
* service struct.
*/
struct axis2_svc
{
/** Operations of service */
axis2_svc_ops_t *ops;
/** parameter container to hold service related parameters */
struct axis2_param_container *param_container;
/** flow container that encapsulates the flow related data */
struct axis2_flow_container *flow_container;
/** WSDL service that holds WSDL related information of the service */
struct axis2_wsdl_svc *wsdl_svc;
};
/**
* Creates a service struct instance.
* @param env pointer to environment struct
* @return pointer to newly created service
*/
AXIS2_EXTERN axis2_svc_t *AXIS2_CALL
axis2_svc_create(
const axis2_env_t *env);
/**
* Creates a service struct with given QName.
* @param env pointer to environment struct
* @param qname service QName
* @return pointer to newly created service
*/
AXIS2_EXTERN axis2_svc_t *AXIS2_CALL
axis2_svc_create_with_qname(
const axis2_env_t *env,
const axis2_qname_t *qname);
/**
* Creates service struct with given WSDL service.
* @param env pointer to environment struct
* @param wsdl_svc pointer to WSDL service struct
* @return pointer to newly created service
*/
AXIS2_EXTERN axis2_svc_t *AXIS2_CALL
axis2_svc_create_with_wsdl_svc(
const axis2_env_t *env,
struct axis2_wsdl_svc *wsdl_svc);
/** Frees service.
@sa axis2_svc_ops#free */
#define AXIS2_SVC_FREE(svc, env) \
((svc)->ops->free (svc, env))
/** Adds operation.
@sa axis2_svc_ops#add_op */
#define AXIS2_SVC_ADD_OP(svc, env, op) \
((svc)->ops->add_op (svc, env, op))
/** Gets operation with given QName.
@sa axis2_svc_ops#get_op_with_qname */
#define AXIS2_SVC_GET_OP_WITH_QNAME(svc, env, op_qname) \
((svc)->ops->get_op_with_qname (svc, env, op_qname))
/** Gets operation with given name string.
@sa axis2_svc_ops#get_op_with_name */
#define AXIS2_SVC_GET_OP_WITH_NAME(svc, env, op_name) \
((svc)->ops->get_op_with_name (svc, env, op_name))
/** Gets all operations.
@sa axis2_svc_ops#get_all_ops */
#define AXIS2_SVC_GET_ALL_OPS(svc, env) \
((svc)->ops->get_all_ops (svc, env))
/** Sets parent which is of type service group.
@sa axis2_svc_ops#set_parent */
#define AXIS2_SVC_SET_PARENT(svc, env , svc_grp) \
((svc)->ops->set_parent (svc, env, svc_grp))
/** Gets parent which is of type service group.
@sa axis2_svc_ops#get_parent */
#define AXIS2_SVC_GET_PARENT(svc, env) \
((svc)->ops->get_parent (svc, env))
/** Sets QName.
@sa axis2_svc_ops#set_qname */
#define AXIS2_SVC_SET_QNAME(svc, env, qname) \
((svc)->ops->set_qname(svc , env, qname))
/** Gets QName.
@sa axis2_svc_ops#get_qname */
#define AXIS2_SVC_GET_QNAME(svc, env) \
((svc)->ops->get_qname(svc , env))
/** Adds given parameter to parameter list.
@sa axis2_svc_ops#add_param */
#define AXIS2_SVC_ADD_PARAM(svc, env, param) \
((svc)->ops->add_param(svc , env, param))
/** Gets parameter with given name.
@sa axis2_svc_ops#get_param */
#define AXIS2_SVC_GET_PARAM(svc, env, name) \
((svc)->ops->get_param(svc , env, name))
/** Gets all parameters.
@sa axis2_svc_ops#get_all_params */
#define AXIS2_SVC_GET_ALL_PARAMS(svc, env) \
((svc)->ops->get_all_params(svc , env))
/** Checks if the named parameter is locked.
@sa axis2_svc_ops#is_param_locked */
#define AXIS2_SVC_IS_PARAM_LOCKED(svc, env, param_name) \
((svc)->ops->is_param_locked(svc, env, param_name))
/** Sets WSDL service interface.
@sa axis2_svc_ops#set_wsdl_interface */
#define AXIS2_SVC_SET_WSDL_INTERFACE(svc, env, wsdl_interface) \
((svc)->ops->set_wsdl_interface(svc, env, wsdl_interface))
/** Gets WSDL service interface.
@sa axis2_svc_ops#get_wsdl_interface */
#define AXIS2_SVC_GET_WSDL_INTERFACE(svc, env) \
((svc)->ops->get_wsdl_interface(svc, env))
/** Engages given module to service.
@sa axis2_svc_ops#engage_module */
#define AXIS2_SVC_ENGAGE_MODULE(svc, env, module_desc, axis2_config) \
((svc)->ops->engage_module(svc, env, module_desc, axis2_config))
/** Adds operations defined in module configuration to service.
@sa axis2_svc_ops#add_module_ops */
#define AXIS2_SVC_ADD_MODULE_OPS(svc, env, module_desc, axis2_config) \
((svc)->ops->add_module_ops(svc, env, module_desc, axis2_config))
/** Adds the named module to engaged module list.
@sa axis2_svc_ops#add_to_engaged_module_list */
#define AXIS2_SVC_ADD_TO_ENGAGED_MODULE_LIST(svc, env, module_name) \
((svc)->ops->add_to_engaged_module_list(svc, env, module_name))
/** Gets all engaged modules.
@sa axis2_svc_ops#get_all_engaged_modules */
#define AXIS2_SVC_GET_ALL_ENGAGED_MODULES(svc, env) \
((svc)->ops->get_all_engaged_modules(svc, env))
/** Gets wsdl operation related to service corresponding to given operation name.
@sa axis2_svc_ops#get_wsdl_op */
#define AXIS2_SVC_GET_WSDL_OP(svc, env, op_name) \
((svc)->ops->get_wsdl_op(svc, env, op_name))
/** Sets service style.
@sa axis2_svc_ops#set_style */
#define AXIS2_SVC_SET_STYLE(svc, env, style) \
((svc)->ops->set_style(svc, env, style))
/** Gets service style.
@sa axis2_svc_ops#get_style */
#define AXIS2_SVC_GET_STYLE(svc, env) \
((svc)->ops->get_style(svc, env))
/** Gets in flow.
@sa axis2_svc_ops#get_in_flow */
#define AXIS2_SVC_GET_IN_FLOW(svc, env) \
((svc)->ops->get_in_flow(svc, env))
/** Sets in flow.
@sa axis2_svc_ops#set_in_flow */
#define AXIS2_SVC_SET_IN_FLOW(svc, env, in_flow) \
((svc)->ops->set_in_flow(svc, env, in_flow))
/** Gets out flow.
@sa axis2_svc_ops#get_out_flow */
#define AXIS2_SVC_GET_OUT_FLOW(svc, env) \
((svc)->ops->get_out_flow(svc, env))
/** Sets out flow.
@sa axis2_svc_ops#set_out_flow */
#define AXIS2_SVC_SET_OUT_FLOW(svc, env, out_flow) \
((svc)->ops->set_out_flow(svc, env, out_flow))
/** Gets fault in flow.
@sa axis2_svc_ops#get_fault_in_flow */
#define AXIS2_SVC_GET_FAULT_IN_FLOW(svc, env) \
((svc)->ops->get_fault_in_flow(svc, env))
/** Sets fault in flow.
@sa axis2_svc_ops#set_fault_in_flow */
#define AXIS2_SVC_SET_FAULT_IN_FLOW(svc, env, fault_in_flow) \
((svc)->ops->set_fault_in_flow(svc, env, fault_in_flow))
/** Gets fault out flow.
@sa axis2_svc_ops#get_fault_out_flow */
#define AXIS2_SVC_GET_FAULT_OUT_FLOW(svc, env) \
((svc)->ops->get_fault_out_flow(svc, env))
/** Sets fault out flow.
@sa axis2_svc_ops#set_fault_out_flow */
#define AXIS2_SVC_SET_FAULT_OUT_FLOW(svc, env, fault_out_flow) \
((svc)->ops->set_fault_out_flow(svc, env, fault_out_flow))
/** Gets operation corresponding to given soap action.
@sa axis2_svc_ops#get_op_by_soap_action */
#define AXIS2_SVC_GET_OP_BY_SOAP_ACTION(svc, env, soap_action) \
((svc)->ops->get_op_by_soap_action(svc, env, soap_action))
/** Gets operation corresponding to given soap action and endpoint.
@sa axis2_svc_ops#get_op_by_soap_action_and_endpoint */
#define AXIS2_SVC_GET_OP_BY_SOAP_ACTION_AND_ENDPOINT(svc, env, soap_action, endpoint) \
((svc)->ops->get_op_by_soap_action_and_endpoint(svc, env, soap_action, endpoint))
/** Gets name.
@sa axis2_svc_ops#get_name */
#define AXIS2_SVC_GET_NAME(svc, env) \
((svc)->ops->get_name(svc, env))
/** Sets name.
@sa axis2_svc_ops#set_name */
#define AXIS2_SVC_SET_NAME(svc, env, axis2_svc_name) \
((svc)->ops->set_name(svc, env, axis2_svc_name))
/** Sets last update time to current time.
@sa axis2_svc_ops#set_last_update */
#define AXIS2_SVC_SET_LAST_UPDATE(svc, env) \
((svc)->ops->set_last_update(svc, env))
/** Gets last update time.
@sa axis2_svc_ops#get_last_update */
#define AXIS2_SVC_GET_LAST_UPDATE(svc, env) \
((svc)->ops->get_last_update(svc, env))
/** Gets file name.
@sa axis2_svc_ops#get_file_name */
#define AXIS2_SVC_GET_FILE_NAME(svc, env) \
((svc)->ops->get_file_name(svc, env))
/** Sets file name.
@sa axis2_svc_ops#set_file_name */
#define AXIS2_SVC_SET_FILE_NAME(svc, env, filename) \
((svc)->ops->set_file_name(svc, env, filename))
/** Gets all endpoints related to service.
@sa axis2_svc_ops#get_all_endpoints */
#define AXIS2_SVC_GET_ALL_ENDPOINTS(svc, env) \
((svc)->ops->get_all_endpoints(svc, env))
/** Sets all endpoints related to service.
@sa axis2_svc_ops#set_all_endpoints */
#define AXIS2_SVC_SET_ALL_ENDPOINTS(svc, env, endpoints) \
((svc)->ops->set_all_endpoints(svc, env, endpoints))
/** Sets endpoint.
@sa axis2_svc_ops#set_endpoint */
#define AXIS2_SVC_SET_ENDPOINT(svc, env, endpoint) \
((svc)->ops->set_endpoint(svc, env, endpoint))
/** Gets endpoint.
@sa axis2_svc_ops#get_endpoint */
#define AXIS2_SVC_GET_ENDPOINT(svc, env, qname) \
((svc)->ops->get_endpoint(svc, env, qname))
/** Gets namespace.
@sa axis2_svc_ops#get_namespace */
#define AXIS2_SVC_GET_NAMESPACE(svc, env) \
((svc)->ops->get_namespace(svc, env))
/** Adds operation to key mapping for a given key and operation.
@sa axis2_svc_ops#add_mapping */
#define AXIS2_SVC_ADD_MAPPING(svc, env, mapping_key, axis2_opt) \
((svc)->ops->add_mapping(svc, env, mapping_key, axis2_opt))
/** Adds module QName.
@sa axis2_svc_ops#add_module_qname */
#define AXIS2_SVC_ADD_MODULE_QNAME(svc, env, module_qname) \
((svc)->ops->add_module_qname(svc, env, module_qname))
/** Gets all module QNames.
@sa axis2_svc_ops#get_all_module_qnames */
#define AXIS2_SVC_GET_ALL_MODULE_QNAMES(svc, env) \
((svc)->ops->get_all_module_qnames(svc, env))
/** Checks if the XML schema location is adjusted.
@sa axis2_svc_ops#is_schema_location_adjusted */
#define AXIS2_SVC_IS_SCHEMA_LOCATION_ADJUSTED(svc, env) \
((svc)->ops->is_schema_location_adjusted(svc, env))
/** Sets bool value indicating that XML schema location is adjusted.
@sa axis2_svc_ops#set_schema_location_adjusted */
#define AXIS2_SVC_SET_SCHEMA_LOCATION_ADJUSTED(svc, env, adjusted) \
((svc)->ops->set_schema_location_adjusted(svc, env, adjusted))
/** Gets XML schema mapping table.
@sa axis2_svc_ops#get_schema_mapping_table */
#define AXIS2_SVC_GET_SCHEMA_MAPPING_TABLE(svc, env) \
((svc)->ops->get_schema_mapping_table(svc, env))
/** Sets XML schema mapping table.
@sa axis2_svc_ops#set_schema_mapping_table */
#define AXIS2_SVC_SET_SCHEMA_MAPPING_TABLE(svc, env, table) \
((svc)->ops->set_schema_mapping_table(svc, env, table))
/** Gets custom XML schema prefix.
@sa axis2_svc_ops#get_custom_schema_prefix */
#define AXIS2_SVC_GET_CUSTOM_SCHEMA_PREFIX(svc, env) \
((svc)->ops->get_custom_schema_prefix(svc, env))
/** Sets custom XML schema prefix.
@sa axis2_svc_ops#set_custom_schema_prefix */
#define AXIS2_SVC_SET_CUSTOM_SCHEMA_PREFIX(svc, env, prefix) \
((svc)->ops->set_custom_schema_prefix(svc, env, prefix))
/** Gets custom XML schema suffix.
@sa axis2_svc_ops#get_custom_schema_suffix */
#define AXIS2_SVC_GET_CUSTOM_SCHEMA_SUFFIX(svc, env) \
((svc)->ops->get_custom_schema_suffix(svc, env))
/** Sets custom XML schema suffix.
@sa axis2_svc_ops#set_custom_schema_suffix */
#define AXIS2_SVC_SET_CUSTOM_SCHEMA_SUFFIX(svc, env, suffix) \
((svc)->ops->set_custom_schema_suffix(svc, env, suffix))
/** Prints XML schema to given stream.
@sa axis2_svc_ops#print_schema */
#define AXIS2_SVC_PRINT_SCHEMA(svc, env) \
((svc)->ops->print_schema(svc, env))
/** Gets XML schema at the given index of the XML schema list.
@sa axis2_svc_ops#get_schema */
#define AXIS2_SVC_GET_SCHEMA(svc, env, index) \
((svc)->ops->get_schema(svc, env, index))
/** Adds all namespaces to the XML schema at the given index of the XML
schema list.
@sa axis2_svc_ops#add_all_namespaces */
#define AXIS2_SVC_ADD_ALL_NAMESPACES(svc, env, index) \
((svc)->ops->add_all_namespaces(svc, env, index))
/** Gets all XML schemas.
@sa axis2_svc_ops#get_all_schemas */
#define AXIS2_SVC_GET_ALL_SCHEMAS(svc, env) \
((svc)->ops->get_all_schemas(svc, env))
/** Adds given XML schema.
@sa axis2_svc_ops#add_schema */
#define AXIS2_SVC_ADD_SCHEMA(svc, env, schema) \
((svc)->ops->add_schema(svc, env, schema))
/** Adds the given list as the list of XML schemas.
@sa axis2_svc_ops#add_all_schemas */
#define AXIS2_SVC_ADD_ALL_SCHEMAS(svc, env, schemas) \
((svc)->ops->add_all_schemas(svc, env, schemas))
/** Gets XML schema target namespace.
@sa axis2_svc_ops#get_schema_target_name_space */
#define AXIS2_SVC_GET_SCHEMA_TARGET_NAME_SPACE(svc, env) \
((svc)->ops->get_schema_target_ns(svc, env))
/** Sets XML schema target namespace.
@sa axis2_svc_ops#set_schema_target_name_space */
#define AXIS2_SVC_SET_SCHEMA_TARGET_NAME_SPACE(svc, env, ns) \
((svc)->ops->set_schema_target_ns(svc, env, ns))
/** Gets XML schema target namespace prefix.
@sa axis2_svc_ops#get_schema_target_name_spaces_prefix */
#define AXIS2_SVC_GET_SCHEMA_TARGET_NAME_SPACE_PREFIX(svc, env) \
((svc)->ops->get_schema_target_ns_prefix(svc, env))
/** Sets XML schema target namespace prefix.
@sa axis2_svc_ops#set_schema_target_name_space_prefix */
#define AXIS2_SVC_SET_SCHEMA_TARGET_NAME_SPACE_PREFIX(svc, env, prefix) \
((svc)->ops->set_schema_target_ns_prefix(svc, env, prefix))
/** Gets target namespace.
@sa axis2_svc_ops#get_target_ns */
#define AXIS2_SVC_GET_TARGET_NS(svc, env) \
((svc)->ops->get_target_ns(svc, env))
/** Sets target namespace.
@sa axis2_svc_ops#set_target_ns */
#define AXIS2_SVC_SET_TARGET_NS(svc, env, ns) \
((svc)->ops->set_target_ns(svc, env, ns))
/** Gets target namespace prefix.
@sa axis2_svc_ops#get_target_ns_prefix */
#define AXIS2_SVC_GET_TARGET_NS_PREFIX(svc, env) \
((svc)->ops->get_target_ns_prefix(svc, env))
/** Sets target namespace prefix.
@sa axis2_svc_ops#set_target_ns_prefix */
#define AXIS2_SVC_SET_TARGET_NS_PREFIX(svc, env, prefix) \
((svc)->ops->set_target_ns_prefix(svc, env, prefix))
/** Gets XML schema element.
@sa axis2_svc_ops#get_schema_element */
#define AXIS2_SVC_GET_SCHEMA_ELEMENT(svc, env) \
((svc)->ops->get_schema_element(svc, env))
/** Gets namespace map.
@sa axis2_svc_ops#get_ns_map */
#define AXIS2_SVC_GET_NS_MAP(svc, env) \
((svc)->ops->get_ns_map(svc, env))
/** Sets namespace map.
@sa axis2_svc_ops#set_ns_map */
#define AXIS2_SVC_SET_NS_MAP(svc, env, ns_map) \
((svc)->ops->set_ns_map(svc, env, ns_map))
/** Populates XML schema mappings.
@sa axis2_svc_ops#populate_schema_mappings */
#define AXIS2_SVC_POPULATE_SCHEMA_MAPPINGS(svc, env) \
((svc)->ops->populate_schema_mappings(svc, env))
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_SVC_H */