/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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_CONFIG_H #define AXIS2_CONFIG_H /** * @defgroup axis2_engine engine * @ingroup axis2 * @{ * @} */ /** * @defgroup axis2_config configuration * @ingroup axis2_engine * Axis2 configuration captures all configuration information. Configuration * information includes user preferences along with module and * service information that is either statically configured using axis2.xml * file, service.xml files and module.xml files or dynamically using the * functions defined in the ops struct related to this conf struct. * @{ */ /** * @file axis2_config.h */ #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** Type name for struct axis2_conf */ typedef struct axis2_conf axis2_conf_t; struct axis2_msg_recv; struct axis2_phases_info; struct axis2_svc_grp; struct axis2_svc; struct axis2_op; struct axis2_dep_engine; struct axis2_desp; /** * Frees conf struct. * @param conf pointer to conf struct * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN void AXIS2_CALL axis2_conf_free( axis2_conf_t * conf, const axutil_env_t * env); /** * Adds a service group to the configuration. * @param conf pointer to conf struct * @param env pointer to environment struct * @param svc_grp pointer to service group, conf takes over the * ownership of the service group * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_svc_grp( axis2_conf_t * conf, const axutil_env_t * env, struct axis2_svc_grp *svc_grp); /** * Gets a named service group. * @param conf pointer to conf struct * @param env pointer to environment struct * @param svc_grp_name name of the service group to be accessed * @return pointer to service group with the given name if exists, * else NULL. Returns a reference, not a cloned copy */ AXIS2_EXTERN struct axis2_svc_grp *AXIS2_CALL axis2_conf_get_svc_grp( const axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * svc_grp_name); /** * Gets all service group added to conf. * @param conf pointer to conf struct * @param env pointer to environment struct * @return pointer to hash table containing the service groups, returns * a reference, not a cloned copy */ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL axis2_conf_get_all_svc_grps( const axis2_conf_t * conf, const axutil_env_t * env); /** * Adds a service to configuration. * @param conf pointer to conf struct * @param env pointer to environment struct * @param svc pointer to service, conf takes over the ownership of the * service * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_svc( axis2_conf_t * conf, const axutil_env_t * env, struct axis2_svc *svc); /** * Gets a service with given name. * @param conf pointer to conf struct * @param env pointer to environment struct * @param svc_name service name string * @return pointer to service with the given name if exists, else NULL. * Returns a reference, not a cloned copy */ AXIS2_EXTERN struct axis2_svc *AXIS2_CALL axis2_conf_get_svc( const axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * svc_name); /** * Removes the named service from configuration. * @param conf pointer to conf struct * @param env pointer to environment struct * @param name name of service to be removed * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_remove_svc( axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * name); /** * Adds a parameter to configuration. * @param conf pointer to conf struct * @param env pointer to environment struct * @param param pointer to parameter struct to be added * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_param( axis2_conf_t * conf, const axutil_env_t * env, axutil_param_t * param); /** * Gets a parameter with the given name. * @param conf pointer to conf struct * @param env pointer to environment struct * @param name name of the parameter to be accessed * @return pointer to parameter with the given name if exists, else NULL. * Returns a reference, not a cloned copy */ AXIS2_EXTERN axutil_param_t *AXIS2_CALL axis2_conf_get_param( const axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * name); /** * Gets all the parameters added to the configuration. * @param conf pointer to conf struct * @param env pointer to environment * @return pointer to array list containing parameters if exists, * else NULL. Returns a reference, not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_all_params( const axis2_conf_t * conf, const axutil_env_t * env); /** * Checks if the named parameter is locked. * @param conf pointer to conf struct * @param env pointer to environment struct * @param param_name name of the parameter * @return AXIS2_TRUE if parameter is locked, else AXIS2_FALSE */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL axis2_conf_is_param_locked( const axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * param_name); /** * Gets in transport corresponding to the given transport QName. * @param conf pointer to conf struct * @param env pointer to environment struct * @param qname QName of transport * @return pointer to transport in description if exists, * else NULL. Returns a reference, not a cloned copy */ AXIS2_EXTERN axis2_transport_in_desc_t *AXIS2_CALL axis2_conf_get_transport_in( const axis2_conf_t * conf, const axutil_env_t * env, const AXIS2_TRANSPORT_ENUMS trans_enum); /** * Adds a transport in description. * @param conf pointer to conf struct * @param env pointer to environment struct * @param transport pointer to transport in description. conf assumes * ownership of the struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_transport_in( axis2_conf_t * conf, const axutil_env_t * env, axis2_transport_in_desc_t * transport, const AXIS2_TRANSPORT_ENUMS trans_enum); /** * Gets out transport corresponding to the given transport QName. * @param conf pointer to conf struct * @param env pointer to environment strcut * @param qname pointer to transport qname * @return pointer to transport out description if exists, * else NULL. Returns a reference, not a cloned copy */ AXIS2_EXTERN axis2_transport_out_desc_t *AXIS2_CALL axis2_conf_get_transport_out( const axis2_conf_t * conf, const axutil_env_t * env, const AXIS2_TRANSPORT_ENUMS trans_enum); /** * Adds a transport out description. * @param conf pointer to conf struct * @param env pointer to environment struct * @param transport pointer to transport out description. conf assumes * ownership of the struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_transport_out( axis2_conf_t * conf, const axutil_env_t * env, axis2_transport_out_desc_t * transport, const AXIS2_TRANSPORT_ENUMS trans_enum); /** * Gets all in transports. * @param conf pointer to conf struct * @param env pointer to environment struct * @return hash table containing all transport in descriptions. * Returns a reference, not a cloned copy */ AXIS2_EXTERN axis2_transport_in_desc_t **AXIS2_CALL axis2_conf_get_all_in_transports( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets all out transports. * @param conf pointer to conf struct * @param env pointer to environment struct * @return hash table containing all transport out descriptions. * Returns a reference, not a cloned copy */ AXIS2_EXTERN axis2_transport_out_desc_t **AXIS2_CALL axis2_conf_get_all_out_transports( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets a module with given QName. * @param conf pointer to conf struct * @param env pointer to environment struct * @param qname pointer to qname * @return module description corresponding to the given qname */ AXIS2_EXTERN struct axis2_module_desc *AXIS2_CALL axis2_conf_get_module( const axis2_conf_t * conf, const axutil_env_t * env, const axutil_qname_t * qname); /** * Gets the list of engaged modules. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the array list of engaged modules. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_all_engaged_modules( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets the in phases up to and including port dispatch phase. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the array list of in phases up to post dispatch * inclusive. Returns a reference, not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_in_phases_upto_and_including_post_dispatch( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets the out flow. Out flow is a list of phases invoked in the out * path of execution of the engine. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the array list of out flow phases. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_out_flow( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets the in fault flow. In fault flow is a list of phases invoked in * the in path of execution, if some fault happens. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the array list of in fault flow phases. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_in_fault_flow( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets the out fault flow. Out fault flow is a list of phases invoked in * the out path of execution, if some fault happens. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the array list of out fault flow phases. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_out_fault_flow( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets faulty services. A faulty service is a service that does not * meet the service configuration criteria or a service with errors in * the service dynamic link library. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the hash table of faulty services. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL axis2_conf_get_all_faulty_svcs( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets faulty modules. A faulty module is a module that does not * meet the module configuration criteria or a module with errors in * the service dynamic link library. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the hash table of faulty modules. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL axis2_conf_get_all_faulty_modules( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets all the list of services loaded into configuration. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the hash table of services. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL axis2_conf_get_all_svcs( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets all the list of services that need to be loaded into configuration * at the start up of the axis2 engine. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the hash table of services. Returns a * reference, not a cloned copy */ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL axis2_conf_get_all_svcs_to_load( const axis2_conf_t * conf, const axutil_env_t * env); /** * Checks is the named module is engaged. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module_name pointer to QName representing the module name * @return AXIS2_TRUE if named module is engaged, else AXIS2_FALSE */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL axis2_conf_is_engaged( axis2_conf_t * conf, const axutil_env_t * env, const axutil_qname_t * module_name); /** * Gets phases information struct. * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to the struct containing phases information. * Returns a reference, not a cloned copy */ AXIS2_EXTERN struct axis2_phases_info *AXIS2_CALL axis2_conf_get_phases_info( const axis2_conf_t * conf, const axutil_env_t * env); /** * Sets phases information struct. * @param conf pointer to conf struct * @param env pointer to environment struct * @param phases_info pointer to phases_info struct. conf assumes * ownership of the struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_phases_info( axis2_conf_t * conf, const axutil_env_t * env, struct axis2_phases_info *phases_info); /** * Adds message receiver with the given key. * @param conf pointer to conf struct * @param env pointer to environment struct * @param key key string with which the message receive is to be added * @param msg_recv pointer to message receiver * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_msg_recv( axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * key, struct axis2_msg_recv *msg_recv); /** * Gets message receiver with the given key. * @param conf pointer to conf struct * @param env pointer to environment struct * @param key key string corresponding to the message receiver to * be retrieved * @return pointer to the message receiver with the given key if it * exists, else null. Returns a reference, not a cloned copy */ AXIS2_EXTERN struct axis2_msg_recv *AXIS2_CALL axis2_conf_get_msg_recv( const axis2_conf_t * conf, const axutil_env_t * env, axis2_char_t * key); /** * Sets the list of out phases. * @param conf pointer to conf struct * @param env pointer to environment struct * @param out_phases pointer to array list of the phases. conf assumes * ownership of the struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_out_phases( axis2_conf_t * conf, const axutil_env_t * env, axutil_array_list_t * out_phases); /** * Gets the list of out phases. * @param conf pointer to conf struct * @param env pointer to environment struct * @return pointer to array list of out phases. Returns a reference, * not a cloned copy */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL axis2_conf_get_out_phases( const axis2_conf_t * conf, const axutil_env_t * env); /** * Sets fault phases for in path. * @param conf pointer to conf struct * @param env pointer to environment struct * @param list pointer to array list of phases * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_in_fault_phases( axis2_conf_t * conf, const axutil_env_t * env, axutil_array_list_t * list); /** * Sets fault phases for out path. * @param conf pointer to conf struct * @param env pointer to environment struct * @param list pointer to array list of phases * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_out_fault_phases( axis2_conf_t * conf, const axutil_env_t * env, axutil_array_list_t * list); /** * Gets all modules configured, * @param conf pointer to conf struct * @param env pointer to environment struct * @return a pointer to hash table containing the list of modules. * Returns a reference, not a cloned copy */ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL axis2_conf_get_all_modules( const axis2_conf_t * conf, const axutil_env_t * env); /** * Adds a module. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module pointer to module struct to be added * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_module( axis2_conf_t * conf, const axutil_env_t * env, struct axis2_module_desc *module); /** * Sets the default dispatchers. * @param conf pointer to conf struct * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_default_dispatchers( axis2_conf_t * conf, const axutil_env_t * env); /** * Sets a custom dispatching phase. * @param conf pointer to conf struct * @param env pointer to environment struct * @param dispatch pointer to phase to be dispatched * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_dispatch_phase( axis2_conf_t * conf, const axutil_env_t * env, axis2_phase_t * dispatch); /** * Gets the repository location. * @param conf pointer to conf struct * @param env pointer to environment struct * @return returns repository location as a string */ AXIS2_EXTERN const axis2_char_t *AXIS2_CALL axis2_conf_get_repo( const axis2_conf_t * conf, const axutil_env_t * env); /** * Sets the repository location. * @param conf pointer to conf struct * @param env pointer to environment struct * @param axis2_repo repository location as a string * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_repo( axis2_conf_t * conf, const axutil_env_t * env, axis2_char_t * axis2_repo); /** * Gets the axis2.xml location. * @param conf pointer to conf struct * @param env pointer to environment struct * @return returns repository location as a string */ AXIS2_EXTERN const axis2_char_t *AXIS2_CALL axis2_conf_get_axis2_xml( const axis2_conf_t * conf, const axutil_env_t * env); /** * Sets the axis2.xml location. * @param conf pointer to conf struct * @param env pointer to environment struct * @param axis2_xml repository location as a string * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_axis2_xml( axis2_conf_t * conf, const axutil_env_t * env, axis2_char_t * axis2_xml); /** * Engages the named module. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module_ref pointer to the QName of the module to be engaged * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_engage_module( axis2_conf_t * conf, const axutil_env_t * env, const axutil_qname_t * module_ref); /** * Sets the deployment engine. * @param conf pointer to conf struct * @param env pointer to environment struct * @param dep_engine pointer to dep_engine struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_dep_engine( axis2_conf_t * conf, const axutil_env_t * env, struct axis2_dep_engine *dep_engine); /** * Gets the deployment engine. * @param conf pointer to conf struct * @param env pointer to environment struct * @return dep_engine pointer to dep_engine struct */ AXIS2_EXTERN struct axis2_dep_engine * AXIS2_CALL axis2_conf_get_dep_engine( axis2_conf_t * conf, const axutil_env_t * env); /** * Gets the default module version for the named module. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module_name module name string * @return default module version as a string */ AXIS2_EXTERN const axis2_char_t *AXIS2_CALL axis2_conf_get_default_module_version( const axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * module_name); /** * Gets the default module reference for the named module. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module_name module name string * @return pointer to the module description struct corresponding to * the given name */ AXIS2_EXTERN struct axis2_module_desc *AXIS2_CALL axis2_conf_get_default_module( const axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * module_name); /** * Adds a default module version for the named module. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module_name name of the module * @param module_version default version for the module * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_add_default_module_version( axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * module_name, const axis2_char_t * module_version); /** * Engages the module with the given version. * @param conf pointer to conf struct * @param env pointer to environment struct * @param module_name name of the module to be engaged * @param version_id version of the module to be engaged * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_engage_module_with_version( axis2_conf_t * conf, const axutil_env_t * env, const axis2_char_t * module_name, const axis2_char_t * version_id); /** * Creates configuration struct. * @param env pointer to environment struct * @return pointer to newly created configuration */ AXIS2_EXTERN axis2_conf_t *AXIS2_CALL axis2_conf_create( const axutil_env_t * env); AXIS2_EXTERN axis2_bool_t AXIS2_CALL axis2_conf_get_enable_mtom( axis2_conf_t * conf, const axutil_env_t * env); AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_enable_mtom( axis2_conf_t * conf, const axutil_env_t * env, axis2_bool_t enable_mtom); /** * set a flag to mark conf created by axis2.xml */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL axis2_conf_get_axis2_flag( axis2_conf_t * conf, const axutil_env_t * env); AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_axis2_flag( axis2_conf_t * conf, const axutil_env_t * env, axis2_bool_t axis2_flag); /*The following two methods are used in Rampart to *check whether security is engaed. */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL axis2_conf_get_enable_security( axis2_conf_t * conf, const axutil_env_t * env); AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_enable_security( axis2_conf_t * conf, const axutil_env_t * env, axis2_bool_t enable_security); AXIS2_EXTERN void *AXIS2_CALL axis2_conf_get_security_context( axis2_conf_t * conf, const axutil_env_t * env); AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_set_security_context( axis2_conf_t * conf, const axutil_env_t * env, void *security_context); AXIS2_EXTERN axutil_param_container_t *AXIS2_CALL axis2_conf_get_param_container( const axis2_conf_t * conf, const axutil_env_t * env); /** * Gets base description. * @param conf pointer to message * @param env pointer to environment struct * @return pointer to base description struct */ AXIS2_EXTERN axis2_desc_t *AXIS2_CALL axis2_conf_get_base( const axis2_conf_t * conf, const axutil_env_t * env); AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL axis2_conf_get_handlers(const axis2_conf_t * conf, const axutil_env_t * env); /** * Disengage a module * @param * */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_conf_disengage_module( const axis2_conf_t *conf, const axutil_env_t *env, const axutil_qname_t *module_ref ); #ifdef __cplusplus } #endif #endif /* AXIS2_CONFIG_H */