woden_desc_element.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef WODEN_DESC_ELEMENT_H
00019 #define WODEN_DESC_ELEMENT_H
00020 
00035 #include <axis2_allocator.h>
00036 #include <axis2_env.h>
00037 #include <axis2_error.h>
00038 #include <axis2_string.h>
00039 #include <axis2_utils.h>
00040 #include <axis2_hash.h>
00041 #include <axis2_qname.h>
00042 #include <axis2_uri.h>
00043 #include <woden.h>
00044 #include <woden_documentable_element.h>
00045 #include <woden_nested_element.h>
00046 
00047 #ifdef __cplusplus
00048 extern "C"
00049 {
00050 #endif
00051 
00052 typedef struct woden_desc_element woden_desc_element_t;
00053 typedef struct woden_desc_element_ops woden_desc_element_ops_t;
00054 typedef union woden_desc_element_base woden_desc_element_base_t;
00055 
00061 struct woden_desc_element_ops
00062 {
00067     axis2_status_t (AXIS2_CALL *
00068     free) (
00069             void *desc_el,
00070             const axis2_env_t *env);
00071     
00072     woden_obj_types_t (AXIS2_CALL *
00073     type) (void *desc_el,
00074             const axis2_env_t *env);
00075     
00076     axis2_status_t (AXIS2_CALL *
00077     set_document_base_uri) (
00078             void *desc_ele,
00079             const axis2_env_t *env,
00080             axis2_uri_t *document_base_uri);
00081 
00082     axis2_uri_t *(AXIS2_CALL *
00083     get_document_base_uri) (
00084             void *desc_ele,
00085             const axis2_env_t *env);
00086     
00087     /*
00088      * Attributes and namespaces
00089      */
00090     axis2_status_t (AXIS2_CALL *
00091     set_target_namespace) (
00092             void *desc_ele,
00093             const axis2_env_t *env,
00094             axis2_uri_t *namespace_uri);
00095 
00096     axis2_uri_t *(AXIS2_CALL *
00097     get_target_namespace) (
00098             void *desc_ele,
00099             const axis2_env_t *env);
00100 
00114     axis2_status_t (AXIS2_CALL *
00115     add_namespace) (
00116             void *desc_el,
00117             const axis2_env_t *env,
00118             axis2_char_t *prefix,
00119             axis2_uri_t *namespc);
00120     
00121     axis2_status_t (AXIS2_CALL *
00122     remove_namespace) (
00123             void *desc_el,
00124             const axis2_env_t *env,
00125             axis2_char_t *prefix);
00126     
00135     axis2_uri_t *(AXIS2_CALL * 
00136     get_namespace) (
00137             void *desc_el,
00138             const axis2_env_t *env,
00139             axis2_char_t *prefix);
00140     
00141     axis2_hash_t *(AXIS2_CALL * 
00142     get_namespaces) (
00143             void *desc_el,
00144             const axis2_env_t *env);/* TODO return arrays instead of Map? */
00145     
00146     /*
00147      * Element factory methods
00148      */
00149     
00150     void *(AXIS2_CALL *
00151     create_documentation_element) (
00152             void *desc_el,
00153             const axis2_env_t *env);
00154     
00155     void *(AXIS2_CALL *
00156     create_import_element) (
00157             void *desc_el,
00158             const axis2_env_t *env);
00159     
00160     void *(AXIS2_CALL *
00161     create_include_element) (
00162             void *desc_el,
00163             const axis2_env_t *env);
00164     
00165     void *(AXIS2_CALL *
00166     create_types_element) (
00167             void *desc_el,
00168             const axis2_env_t *env);
00169 
00170     void *(AXIS2_CALL *
00171     create_interface_element) (
00172             void *desc_el,
00173             const axis2_env_t *env);
00174 
00175     void *(AXIS2_CALL *
00176     create_interface_fault_element) (
00177             void *desc_el,
00178             const axis2_env_t *env);
00179 
00180     void *(AXIS2_CALL *
00181     create_interface_op_element) (
00182             void *desc_el,
00183             const axis2_env_t *env);
00184 
00185     void *(AXIS2_CALL *
00186     create_interface_fault_ref_element) (
00187             void *desc_el,
00188             const axis2_env_t *env);
00189 
00190     void *(AXIS2_CALL *
00191     create_interface_msg_ref_element) (
00192             void *desc_el,
00193             const axis2_env_t *env);
00194     
00195     void *(AXIS2_CALL *
00196     create_binding_element) (
00197             void *desc_el,
00198             const axis2_env_t *env);
00199 
00200     void *(AXIS2_CALL *
00201     create_binding_fault_element) (
00202             void *desc_el,
00203             const axis2_env_t *env);
00204 
00205     void *(AXIS2_CALL *
00206     create_binding_op_element) (
00207             void *desc_el,
00208             const axis2_env_t *env);
00209 
00210     void *(AXIS2_CALL *
00211     create_binding_fault_ref_element) (
00212             void *desc_el,
00213             const axis2_env_t *env);
00214 
00215     void *(AXIS2_CALL *
00216     create_binding_msg_ref_element) (
00217             void *desc_el,
00218             const axis2_env_t *env);
00219 
00220     void *(AXIS2_CALL *
00221     create_feature_element) (
00222             void *desc_el,
00223             const axis2_env_t *env);
00224 
00225     void *(AXIS2_CALL *
00226     create_svc_element) (
00227             void *desc_el,
00228             const axis2_env_t *env);
00229 
00230     void *(AXIS2_CALL *
00231     create_endpoint_element) (
00232             void *desc_el,
00233             const axis2_env_t *env);
00234 
00235     void *(AXIS2_CALL *
00236     create_property_element) (
00237             void *desc_el,
00238             const axis2_env_t *env);
00239     
00240     /*
00241      * Element accessor and modifier methods
00242      * 
00243      * TODO removeXXX(obj), getXXX(key) methods
00244      * 
00245      */
00246     axis2_status_t (AXIS2_CALL *
00247     add_import_element) (
00248             void *desc_ele,
00249             const axis2_env_t *env,
00250             void *import_el);
00251     
00252     axis2_array_list_t *(AXIS2_CALL *
00253     get_import_elements) (
00254             void *desc_ele,
00255             const axis2_env_t *env);
00256     
00257     axis2_status_t (AXIS2_CALL *
00258     add_include_element) (
00259             void *desc_ele,
00260             const axis2_env_t *env,
00261             void *include_el);
00262     
00263     axis2_array_list_t *(AXIS2_CALL *
00264     get_include_elements) (
00265             void *desc_ele,
00266             const axis2_env_t *env);
00267     
00268     axis2_status_t (AXIS2_CALL *
00269     set_types_element) (
00270             void *desc_ele,
00271             const axis2_env_t *env,
00272             void *types_el);
00273     
00274     void *(AXIS2_CALL *
00275     get_types_element) (
00276             void *desc_ele,
00277             const axis2_env_t *env);
00278     
00279     axis2_status_t (AXIS2_CALL *
00280     add_interface_element) (
00281             void *desc_ele,
00282             const axis2_env_t *env,
00283             void *interface_el);
00284     
00285     axis2_array_list_t *(AXIS2_CALL *
00286     get_interface_elements) (
00287             void *desc_ele,
00288             const axis2_env_t *env);
00289     
00290     axis2_status_t (AXIS2_CALL *
00291     add_binding_element) (
00292             void *desc_ele,
00293             const axis2_env_t *env,
00294             void *binding_el);
00295     
00296     axis2_array_list_t *(AXIS2_CALL *
00297     get_binding_elements) (
00298             void *desc_ele,
00299             const axis2_env_t *env);
00300     
00301     axis2_status_t (AXIS2_CALL *
00302     add_svc_element) (
00303             void *desc_ele,
00304             const axis2_env_t *env,
00305             void *svc_el);
00306     
00307     axis2_array_list_t *(AXIS2_CALL *
00308     get_svc_elements) (
00309             void *desc_ele,
00310             const axis2_env_t *env);
00311 
00312     axis2_status_t (AXIS2_CALL *
00313     set_ext_registry) (
00314             void *desc_ele,
00315             const axis2_env_t *env,
00316             void *ext_reg);
00317     
00318     void *(AXIS2_CALL *
00319     get_ext_registry) (
00320             void *desc_ele,
00321             const axis2_env_t *env);
00322 
00326     void *(AXIS2_CALL *
00327     to_component) (
00328             void *desc_ele,
00329             const axis2_env_t *env);
00330     
00331 
00332 };
00333 
00334 struct woden_desc_element
00335 {
00336     woden_documentable_element_t documentable_element;
00337     woden_desc_element_ops_t *ops;
00338 };
00339 
00340 /************************Woden C Internal Methods******************************/
00341 axis2_status_t AXIS2_CALL
00342 woden_desc_element_resolve_methods(
00343         woden_desc_element_t *desc_element,
00344         const axis2_env_t *env,
00345         axis2_hash_t *methods);
00346 /************************End of Woden C Internal Methods***********************/
00347 
00348 #define WODEN_DESC_ELEMENT_FREE(desc_el, env) \
00349       (((woden_desc_element_t *) desc_el)->ops->\
00350          free (desc_el, env))
00351 
00352 #define WODEN_DESC_ELEMENT_TYPE(desc_el, env) \
00353       (((woden_desc_element_t *) desc_el)->ops->\
00354          type (desc_el, env))
00355 
00356 #define WODEN_DESC_ELEMENT_SET_DOCUMENT_BASE_URI(desc_el, env, document_base_uri) \
00357       (((woden_desc_element_t *) desc_el)->ops->\
00358          set_document_base_uri(desc_el, env, document_base_uri))
00359 
00360 #define WODEN_DESC_ELEMENT_GET_DOCUMENT_BASE_URI(desc_el, env) \
00361       (((woden_desc_element_t *) desc_el)->ops->\
00362          get_document_base_uri(desc_el, env))
00363 
00364 #define WODEN_DESC_ELEMENT_SET_TARGET_NAMESPACE(desc_el, env, namespc_uri) \
00365       (((woden_desc_element_t *) desc_el)->ops->\
00366          set_target_namespace(desc_el, env, namespc_uri))
00367 
00368 #define WODEN_DESC_ELEMENT_GET_TARGET_NAMESPACE(desc_el, env) \
00369       (((woden_desc_element_t *) desc_el)->ops->\
00370          get_target_namespace(desc_el, env))
00371 
00372 #define WODEN_DESC_ELEMENT_ADD_NAMESPACE(desc_el, env, prefix, namespc) \
00373       (((woden_desc_element_t *) desc_el)->ops->\
00374         add_namespace (desc_el, env, prefix, namespc))
00375 
00376 #define WODEN_DESC_ELEMENT_REMOVE_NAMESPACE(desc_el, env, prefix) \
00377       (((woden_desc_element_t *) desc_el)->ops->\
00378         remove_namespace (desc_el, env, prefix))
00379 
00380 #define WODEN_DESC_ELEMENT_GET_NAMESPACE(desc_el, env, prefix) \
00381       (((woden_desc_element_t *) desc_el)->ops->\
00382         get_namespace (desc_el, env, prefix))
00383 
00384 #define WODEN_DESC_ELEMENT_GET_NAMESPACES(desc_el, env) \
00385       (((woden_desc_element_t *) desc_el)->ops->\
00386         get_namespaces (desc_el, env))
00387 
00388 #define WODEN_DESC_ELEMENT_CREATE_DOCUMENTATION_ELEMENT(desc_el, env) \
00389       (((woden_desc_element_t *) desc_el)->ops->\
00390         create_documentation_element (desc_el, env))
00391 
00392 #define WODEN_DESC_ELEMENT_CREATE_IMPORT_ELEMENT(desc_el, env) \
00393       (((woden_desc_element_t *) desc_el)->ops->\
00394         create_import_element (desc_el, env))
00395 
00396 #define WODEN_DESC_ELEMENT_CREATE_INCLUDE_ELEMENT(desc_el, env) \
00397       (((woden_desc_element_t *) desc_el)->ops->\
00398         create_include_element (desc_el, env))
00399 
00400 #define WODEN_DESC_ELEMENT_CREATE_TYPES_ELEMENT(desc_el, env) \
00401       (((woden_desc_element_t *) desc_el)->ops->\
00402         create_types_element (desc_el, env))
00403 
00404 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_ELEMENT(desc_el, env) \
00405       (((woden_desc_element_t *) desc_el)->ops->\
00406         create_interface_element (desc_el, env))
00407 
00408 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_FAULT_ELEMENT(desc_el, env) \
00409       (((woden_desc_element_t *) desc_el)->ops->\
00410         create_interface_fault_element (desc_el, env))
00411 
00412 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_OP_ELEMENT(desc_el, env) \
00413       (((woden_desc_element_t *) desc_el)->ops->\
00414         create_interface_op_element (desc_el, env))
00415 
00416 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_FAULT_REF_ELEMENT(desc_el, env) \
00417       (((woden_desc_element_t *) desc_el)->ops->\
00418         create_interface_fault_ref_element (desc_el, env))
00419 
00420 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_MSG_REF_ELEMENT(desc_el, env) \
00421       (((woden_desc_element_t *) desc_el)->ops->\
00422         create_interface_msg_ref_element (desc_el, env))
00423 
00424 #define WODEN_DESC_ELEMENT_CREATE_BINDING_ELEMENT(desc_el, env) \
00425       (((woden_desc_element_t *) desc_el)->ops->\
00426         create_binding_element (desc_el, env))
00427 
00428 #define WODEN_DESC_ELEMENT_CREATE_BINDING_FAULT_ELEMENT(desc_el, env) \
00429       (((woden_desc_element_t *) desc_el)->ops->\
00430         create_binding_fault_element (desc_el, env))
00431 
00432 #define WODEN_DESC_ELEMENT_CREATE_BINDING_OP_ELEMENT(desc_el, env) \
00433       (((woden_desc_element_t *) desc_el)->ops->\
00434         create_binding_op_element (desc_el, env))
00435 
00436 #define WODEN_DESC_ELEMENT_CREATE_BINDING_FAULT_REF_ELEMENT(desc_el, env) \
00437       (((woden_desc_element_t *) desc_el)->ops->\
00438         create_binding_fault_ref_element (desc_el, env))
00439 
00440 #define WODEN_DESC_ELEMENT_CREATE_BINDING_MSG_REF_ELEMENT(desc_el, env) \
00441       (((woden_desc_element_t *) desc_el)->ops->\
00442         create_binding_msg_ref_element (desc_el, env))
00443 
00444 #define WODEN_DESC_ELEMENT_CREATE_FEATURE_ELEMENT(desc_el, env) \
00445       (((woden_desc_element_t *) desc_el)->ops->\
00446         create_feature_element (desc_el, env))
00447 
00448 #define WODEN_DESC_ELEMENT_CREATE_SVC_ELEMENT(desc_el, env) \
00449       (((woden_desc_element_t *) desc_el)->ops->\
00450         create_svc_element (desc_el, env))
00451 
00452 #define WODEN_DESC_ELEMENT_CREATE_ENDPOINT_ELEMENT(desc_el, env) \
00453       (((woden_desc_element_t *) desc_el)->ops->\
00454         create_endpoint_element (desc_el, env))
00455 
00456 #define WODEN_DESC_ELEMENT_CREATE_PROPERTY_ELEMENT(desc_el, env) \
00457       (((woden_desc_element_t *) desc_el)->ops->\
00458         create_property_element (desc_el, env))
00459 
00460 #define WODEN_DESC_ELEMENT_ADD_IMPORT_ELEMENT(desc_el, env, import_el) \
00461       (((woden_desc_element_t *) desc_el)->ops->\
00462         add_import_element (desc_el, env, import_el))
00463 
00464 #define WODEN_DESC_ELEMENT_GET_IMPORT_ELEMENTS(desc_el, env) \
00465       (((woden_desc_element_t *) desc_el)->ops->\
00466         get_import_elements (desc_el, env))
00467 
00468 #define WODEN_DESC_ELEMENT_ADD_INCLUDE_ELEMENT(desc_el, env, include_el) \
00469       (((woden_desc_element_t *) desc_el)->ops->\
00470         add_include_element (desc_el, env, include_el))
00471 
00472 #define WODEN_DESC_ELEMENT_GET_INCLUDE_ELEMENTS(desc_el, env) \
00473       (((woden_desc_element_t *) desc_el)->ops->\
00474         get_include_elements (desc_el, env))
00475 
00476 #define WODEN_DESC_ELEMENT_SET_TYPES_ELEMENT(desc_el, env, types_el) \
00477       (((woden_desc_element_t *) desc_el)->ops->\
00478         set_types_element (desc_el, env, types_el))
00479 
00480 #define WODEN_DESC_ELEMENT_GET_TYPES_ELEMENT(desc_el, env) \
00481       (((woden_desc_element_t *) desc_el)->ops->\
00482         get_types_element (desc_el, env))
00483 
00484 #define WODEN_DESC_ELEMENT_ADD_INTERFACE_ELEMENT(desc_el, env, interface_el) \
00485       (((woden_desc_element_t *) desc_el)->ops->\
00486         add_interface_element (desc_el, env, interface_el))
00487 
00488 #define WODEN_DESC_ELEMENT_GET_INTERFACE_ELEMENTS(desc_el, env) \
00489       (((woden_desc_element_t *) desc_el)->ops->\
00490         get_interface_elements (desc_el, env))
00491 
00492 #define WODEN_DESC_ELEMENT_ADD_BINDING_ELEMENT(desc_el, env, binding_el) \
00493       (((woden_desc_element_t *) desc_el)->ops->\
00494         add_binding_element (desc_el, env, binding_el))
00495 
00496 #define WODEN_DESC_ELEMENT_GET_BINDING_ELEMENTS(desc_el, env) \
00497       (((woden_desc_element_t *) desc_el)->ops->\
00498         get_binding_elements (desc_el, env))
00499 
00500 #define WODEN_DESC_ELEMENT_ADD_SVC_ELEMENT(desc_el, env, svc_el) \
00501       (((woden_desc_element_t *) desc_el)->ops->\
00502         add_svc_element (desc_el, env, svc_el))
00503 
00504 #define WODEN_DESC_ELEMENT_GET_SVC_ELEMENTS(desc_el, env) \
00505       (((woden_desc_element_t *) desc_el)->ops->\
00506         get_svc_elements (desc_el, env))
00507 
00508 #define WODEN_DESC_ELEMENT_SET_EXT_REGISTRY(desc_el, env, ext_reg) \
00509       (((woden_desc_element_t *) desc_el)->ops->\
00510         set_ext_registry (desc_el, env, ext_reg))
00511 
00512 #define WODEN_DESC_ELEMENT_GET_EXT_REGISTRY(desc_el, env) \
00513       (((woden_desc_element_t *) desc_el)->ops->\
00514         get_ext_registry (desc_el, env))
00515 
00516 #define WODEN_DESC_ELEMENT_TO_COMPONENT(desc_el, env) \
00517       (((woden_desc_element_t *) desc_el)->ops->\
00518         to_component (desc_el, env))
00519 
00520 
00522 #ifdef __cplusplus
00523 }
00524 #endif
00525 #endif /* WODEN_DESC_ELEMENT_H */
00526 

Generated on Wed Dec 20 20:14:10 2006 for Axis2/C by  doxygen 1.5.1