00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef WODEN_EXT_REGISTRY_H
00018 #define WODEN_EXT_REGISTRY_H
00019
00026 #include <axis2_allocator.h>
00027 #include <axis2_env.h>
00028 #include <axis2_error.h>
00029 #include <axis2_string.h>
00030 #include <axis2_utils.h>
00031 #include <axis2_hash.h>
00032 #include <axis2_qname.h>
00033 #include <axis2_uri.h>
00034 #include <axis2_array_list.h>
00035 #include <woden.h>
00036
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041
00042 typedef struct woden_ext_registry woden_ext_registry_t;
00043 typedef struct woden_ext_registry_ops woden_ext_registry_ops_t;
00044 struct woden_wsdl_element;
00045
00051 struct woden_ext_registry_ops
00052 {
00057 axis2_status_t (AXIS2_CALL *
00058 free) (
00059 void *ext_registry,
00060 const axis2_env_t *env);
00061
00077 axis2_status_t (AXIS2_CALL *
00078 register_deserializer) (
00079 void *registry,
00080 const axis2_env_t *env,
00081 axis2_char_t *parent_type,
00082 axis2_qname_t *element_qtype,
00083 void *ed);
00084
00101 void *(AXIS2_CALL *
00102 query_deserializer) (
00103 void *registry,
00104 const axis2_env_t *env,
00105 axis2_char_t *parent_type,
00106 axis2_qname_t *element_type);
00107
00121 void *(AXIS2_CALL *
00122 query_ext_element_type) (
00123 void *registry,
00124 const axis2_env_t *env,
00125 axis2_char_t *parent_class,
00126 axis2_qname_t *elem_qn);
00127
00136 axis2_array_list_t *(AXIS2_CALL *
00137 get_allowable_exts) (
00138 void *registry,
00139 const axis2_env_t *env,
00140 axis2_char_t *parent_type);
00141
00158 axis2_status_t (AXIS2_CALL *
00159 register_ext_element_type) (
00160 void *registry,
00161 const axis2_env_t *env,
00162 axis2_char_t *parent_type,
00163 axis2_qname_t *element_qtype,
00164 void *element);
00165
00166
00180 axis2_status_t (AXIS2_CALL *
00181 register_ext_attr_type) (
00182 void *registry,
00183 const axis2_env_t *env,
00184 axis2_char_t *owner_class,
00185 axis2_qname_t *attr_qname,
00186 void *attr);
00187
00200 void *(AXIS2_CALL *
00201 query_ext_attr_type) (
00202 void *registry,
00203 const axis2_env_t *env,
00204 axis2_char_t *parent_class,
00205 axis2_qname_t *attr_qn);
00206
00215 axis2_status_t (AXIS2_CALL *
00216 register_component_ext) (
00217 void *registry,
00218 const axis2_env_t *env,
00219 axis2_char_t *parent_class,
00220 axis2_uri_t *ext_namespc,
00221 void *comp_ext);
00222
00231 void *(AXIS2_CALL *
00232 query_component_ext) (
00233 void *registry,
00234 const axis2_env_t *env,
00235 axis2_char_t *parent_class,
00236 axis2_uri_t *ext_namespc);
00237
00244 axis2_array_list_t *(AXIS2_CALL *
00245 query_component_ext_namespaces) (
00246 void *registry,
00247 const axis2_env_t *env,
00248 axis2_char_t *parent_class);
00249 };
00250
00251 struct woden_ext_registry
00252 {
00253 woden_ext_registry_ops_t *ops;
00254 };
00255
00256 AXIS2_EXTERN woden_ext_registry_t * AXIS2_CALL
00257 woden_ext_registry_create(const axis2_env_t *env);
00258
00259 #define WODEN_EXT_REGISTRY_FREE(ext_registry, env) \
00260 (((woden_ext_registry_t *) ext_registry)->ops->\
00261 free (ext_registry, env))
00262
00263 #define WODEN_EXT_REGISTRY_REGISTER_DESERIALIZER(ext_registry, env, parent_type, element_qtype, ed) \
00264 (((woden_ext_registry_t *) ext_registry)->ops->\
00265 register_deserializer (ext_registry, env, parent_type, element_qtype, ed))
00266
00267 #define WODEN_EXT_REGISTRY_QUERY_DESERIALIZER(ext_registry, env, parent_type, element_type) \
00268 (((woden_ext_registry_t *) ext_registry)->ops->\
00269 query_deserializer (ext_registry, env, parent_type, element_type))
00270
00271 #define WODEN_EXT_REGISTRY_QUERY_EXT_ELEMENT_TYPE(ext_registry, env, parent_class, elem_qn) \
00272 (((woden_ext_registry_t *) ext_registry)->ops->\
00273 query_ext_element_type (ext_registry, env, parent_class, elem_qn))
00274
00275 #define WODEN_EXT_REGISTRY_GET_ALLOWABLE_EXTS(ext_registry, env, parent_type) \
00276 (((woden_ext_registry_t *) ext_registry)->ops->\
00277 get_allowable_exts (ext_registry, env, parent_type))
00278
00279 #define WODEN_EXT_REGISTRY_REGISTER_EXT_ELEMENT_TYPE(ext_registry, env, parent_type, element_qtype, element) \
00280 (((woden_ext_registry_t *) ext_registry)->ops->\
00281 register_ext_element_type (ext_registry, env, parent_type, element_qtype, element))
00282
00283 #define WODEN_EXT_REGISTRY_REGISTER_EXT_ATTR_TYPE(ext_registry, env, owner_class, attr_qname, attr) \
00284 (((woden_ext_registry_t *) ext_registry)->ops->\
00285 register_ext_attr_type (ext_registry, env, owner_class, attr_qname, attr))
00286
00287 #define WODEN_EXT_REGISTRY_QUERY_EXT_ATTR_TYPE(ext_registry, env, parent_class, attr_qn) \
00288 (((woden_ext_registry_t *) ext_registry)->ops->\
00289 query_ext_attr_type (ext_registry, env, parent_class, attr_qn))
00290
00291 #define WODEN_EXT_REGISTRY_REGISTER_COMPONENT_EXT(ext_registry, env, parent_class, ext_namespc, comp_ext) \
00292 (((woden_ext_registry_t *) ext_registry)->ops->\
00293 register_component_ext (ext_registry, env, parent_class, ext_namespc, comp_ext))
00294
00295 #define WODEN_EXT_REGISTRY_QUERY_COMPONENT_EXT(ext_registry, env, parent_class, ext_namespc) \
00296 (((woden_ext_registry_t *) ext_registry)->ops->\
00297 query_component_ext (ext_registry, env, parent_class, ext_namespc))
00298
00299 #define WODEN_EXT_REGISTRY_QUERY_COMPONENT_EXT_NAMESPACES(ext_registry, env, parent_class) \
00300 (((woden_ext_registry_t *) ext_registry)->ops->\
00301 query_component_ext_namespaces (ext_registry, env, parent_class))
00302
00303
00305 #ifdef __cplusplus
00306 }
00307 #endif
00308 #endif