You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by da...@apache.org on 2006/05/15 05:32:56 UTC
svn commit: r406516 [4/8] - in
/webservices/axis2/trunk/c/modules/wsdl/woden: include/woden/
include/woden/wsdl20/ include/woden/wsdl20/extensions/
include/woden/wsdl20/xml/ src/wsdl20/ src/wsdl20/extensions/ src/wsdl20/xml/
Modified: webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/feature.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/feature.c?rev=406516&r1=406515&r2=406516&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/feature.c (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/feature.c Sun May 14 20:32:53 2006
@@ -32,6 +32,7 @@
axis2_woden_feature_t feature;
axis2_woden_obj_types_t obj_type;
axis2_woden_documentable_t *documentable;
+ axis2_hash_t *super;
axis2_hash_t *methods;
axis2_url_t *f_ref;
axis2_bool_t f_required;
@@ -45,6 +46,11 @@
void *feature,
axis2_env_t **env);
+axis2_hash_t *AXIS2_CALL
+axis2_woden_feature_super_objs(
+ void *feature,
+ axis2_env_t **env);
+
axis2_woden_obj_types_t AXIS2_CALL
axis2_woden_feature_type(
void *feature,
@@ -78,19 +84,6 @@
axis2_env_t **env);
axis2_status_t AXIS2_CALL
-axis2_woden_feature_set_component_exts(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc,
- axis2_woden_component_exts_t *exts);
-
-void *AXIS2_CALL
-axis2_woden_feature_get_component_exts_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc);
-
-axis2_status_t AXIS2_CALL
axis2_woden_feature_set_parent_element(
void *feature,
axis2_env_t **env,
@@ -111,105 +104,6 @@
void *feature,
axis2_env_t **env);
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_add_documentation_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_documentation_element_t *documentation);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_documentation_elements(
- void *feature,
- axis2_env_t **env);
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_set_ext_attr(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *attr_type,
- axis2_woden_xml_attr_t *attr);
-
-void *AXIS2_CALL
-axis2_woden_feature_get_ext_attr(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *attr_type);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_attrs(
- void *feature,
- axis2_env_t **env);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_attrs_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc);
-
-axis2_bool_t AXIS2_CALL
-axis2_woden_feature_has_ext_attrs_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc);
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_add_ext_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_ext_element_t *ext_el);
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_remove_ext_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_ext_element_t *ext_el);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_elements(
- void *feature,
- axis2_env_t **env);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_elements_of_type(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *elem_type);
-
-axis2_bool_t AXIS2_CALL
-axis2_woden_feature_has_ext_elements_for_namespace(
-void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc);
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_add_ext_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_ext_element_t *ext_el);
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_remove_ext_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_ext_element_t *ext_el);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_elements(
- void *feature,
- axis2_env_t **env);
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_elements_of_type(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *ext_type);
-
-axis2_bool_t AXIS2_CALL
-axis2_woden_feature_has_ext_elements_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc);
-
static axis2_woden_feature_t *
create(axis2_env_t **env);
@@ -362,7 +256,8 @@
AXIS2_MALLOC((*env)->allocator,
sizeof(axis2_woden_documentable_ops_t));
axis2_woden_documentable_resolve_methods(&(feature_impl->feature.base.
- documentable), env, feature_impl->methods);
+ documentable), env, feature_impl->documentable,
+ feature_impl->methods);
return feature;
}
@@ -391,6 +286,7 @@
axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ void *wsdl_obj = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
if(!feature)
@@ -403,8 +299,10 @@
feature_impl->feature.base.documentable.base.wsdl_obj.ops =
AXIS2_MALLOC((*env)->allocator,
sizeof(axis2_woden_wsdl_obj_ops_t));
+ wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(
+ feature_impl->documentable, env);
axis2_woden_wsdl_obj_resolve_methods(&(feature_impl->feature.base.
- documentable.base.wsdl_obj), env, feature_impl->methods);
+ documentable.base.wsdl_obj), env, wsdl_obj, feature_impl->methods);
return feature;
}
@@ -533,7 +431,7 @@
sizeof(axis2_woden_attr_extensible_ops_t));
axis2_woden_attr_extensible_resolve_methods(&(feature_impl->feature.base.
documentable.base.wsdl_obj.base.wsdl_element.base.attr_extensible),
- env, feature_impl->methods);
+ env, NULL, feature_impl->methods);
return feature;
}
@@ -579,7 +477,7 @@
sizeof(axis2_woden_element_extensible_ops_t));
axis2_woden_element_extensible_resolve_methods(&(feature_impl->feature.base.
documentable.base.wsdl_obj.base.wsdl_element.base.element_extensible),
- env, feature_impl->methods);
+ env, NULL, feature_impl->methods);
return feature;
}
@@ -616,6 +514,7 @@
sizeof(axis2_woden_feature_impl_t));
feature_impl->obj_type= AXIS2_WODEN_FEATURE;
+ feature_impl->super = NULL;
feature_impl->methods = NULL;
feature_impl->f_parent = NULL;
feature_impl->f_ref = NULL;
@@ -638,6 +537,7 @@
sizeof(axis2_woden_feature_ops_t));
feature_impl->feature.ops->free = axis2_woden_feature_free;
+ feature_impl->feature.ops->super_objs = axis2_woden_feature_super_objs;
feature_impl->feature.ops->type = axis2_woden_feature_type;
feature_impl->feature.ops->get_base_impl = axis2_woden_feature_get_base_impl;
feature_impl->feature.ops->get_ref = axis2_woden_feature_get_ref;
@@ -682,6 +582,8 @@
axis2_hash_set(feature_impl->methods, "to_element_extensible_free",
AXIS2_HASH_KEY_STRING,
axis2_woden_feature_to_element_extensible_free);
+ axis2_hash_set(feature_impl->methods, "super_objs",
+ AXIS2_HASH_KEY_STRING, axis2_woden_feature_super_objs);
axis2_hash_set(feature_impl->methods, "type",
AXIS2_HASH_KEY_STRING, axis2_woden_feature_type);
@@ -706,46 +608,9 @@
axis2_hash_set(feature_impl->methods, "is_required",
AXIS2_HASH_KEY_STRING,
axis2_woden_feature_is_required);
- axis2_hash_set(feature_impl->methods, "get_component_exts_for_namespace",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_get_component_exts_for_namespace);
- axis2_hash_set(feature_impl->methods, "set_component_exts",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_set_component_exts);
axis2_hash_set(feature_impl->methods, "to_element",
AXIS2_HASH_KEY_STRING,
axis2_woden_feature_to_element);
- axis2_hash_set(feature_impl->methods, "add_documentation_element",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_add_documentation_element);
- axis2_hash_set(feature_impl->methods, "get_documentation_elements",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_get_documentation_elements);
- axis2_hash_set(feature_impl->methods, "set_ext_attr",
- AXIS2_HASH_KEY_STRING, axis2_woden_feature_set_ext_attr);
- axis2_hash_set(feature_impl->methods, "get_ext_attr",
- AXIS2_HASH_KEY_STRING, axis2_woden_feature_get_ext_attr);
- axis2_hash_set(feature_impl->methods, "get_ext_attrs",
- AXIS2_HASH_KEY_STRING, axis2_woden_feature_get_ext_attrs);
- axis2_hash_set(feature_impl->methods, "get_ext_attrs_for_namespace",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_get_ext_attrs_for_namespace);
- axis2_hash_set(feature_impl->methods, "has_ext_attrs_for_namespace",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_has_ext_attrs_for_namespace);
- axis2_hash_set(feature_impl->methods, "add_ext_element",
- AXIS2_HASH_KEY_STRING, axis2_woden_feature_add_ext_element);
- axis2_hash_set(feature_impl->methods, "remove_ext_element",
- AXIS2_HASH_KEY_STRING, axis2_woden_feature_remove_ext_element);
- axis2_hash_set(feature_impl->methods, "get_ext_elements",
- AXIS2_HASH_KEY_STRING, axis2_woden_feature_get_ext_elements);
- axis2_hash_set(feature_impl->methods, "get_ext_elements_of_type",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_get_ext_elements_of_type);
- axis2_hash_set(feature_impl->methods, "has_ext_elements_for_namespace",
- AXIS2_HASH_KEY_STRING,
- axis2_woden_feature_has_ext_elements_for_namespace);
-
return &(feature_impl->feature);
}
@@ -760,6 +625,17 @@
feature_impl->documentable = axis2_woden_documentable_create(env);
+ feature_impl->super = axis2_hash_make(env);
+ if(!feature_impl->super)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(feature_impl->super, "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING,
+ &(feature_impl->feature));
+ axis2_hash_set(feature_impl->super, "AXIS2_WODEN_DOCUMENTABLE", AXIS2_HASH_KEY_STRING,
+ feature_impl->documentable);
+
return &(feature_impl->feature);
}
@@ -780,6 +656,12 @@
/* TODO free f_parent */
+ if(feature_impl->super)
+ {
+ axis2_hash_free(feature_impl->super, env);
+ feature_impl->super = NULL;
+ }
+
if(feature_impl->methods)
{
axis2_hash_free(feature_impl->methods, env);
@@ -877,6 +759,19 @@
return AXIS2_SUCCESS;
}
+axis2_hash_t *AXIS2_CALL
+axis2_woden_feature_super_objs(
+ void *feature,
+ axis2_env_t **env)
+{
+ axis2_woden_feature_impl_t *feature_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ feature_impl = INTF_TO_IMPL(feature);
+
+ return feature_impl->super;
+}
+
axis2_woden_obj_types_t AXIS2_CALL
axis2_woden_feature_type(
void *feature,
@@ -891,8 +786,9 @@
}
axis2_woden_documentable_t *AXIS2_CALL
-axis2_woden_feature_get_base_impl(void *feature,
- axis2_env_t **env)
+axis2_woden_feature_get_base_impl(
+ void *feature,
+ axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
@@ -903,70 +799,67 @@
}
axis2_status_t AXIS2_CALL
-axis2_woden_feature_resolve_methods(axis2_woden_feature_t *feature,
- axis2_env_t **env,
- axis2_hash_t *methods)
+axis2_woden_feature_resolve_methods(
+ axis2_woden_feature_t *feature,
+ axis2_env_t **env,
+ axis2_woden_feature_t *feature_impl,
+ axis2_hash_t *methods)
{
+ axis2_woden_feature_impl_t *feature_impl_l = NULL;
+
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK((*env)->error, methods, AXIS2_FAILURE);
+ feature_impl_l = INTF_TO_IMPL(feature_impl);
feature->ops->free = axis2_hash_get(methods, "free",
AXIS2_HASH_KEY_STRING);
feature->ops->to_feature_free = axis2_hash_get(methods, "to_feature_free",
AXIS2_HASH_KEY_STRING);
+ feature->ops->super_objs = axis2_hash_get(methods, "super_objs",
+ AXIS2_HASH_KEY_STRING);
feature->ops->type = axis2_hash_get(methods, "type",
AXIS2_HASH_KEY_STRING);
+
feature->ops->get_ref = axis2_hash_get(methods,
"get_ref", AXIS2_HASH_KEY_STRING);
+ if(!feature->ops->get_ref && feature_impl_l)
+ feature->ops->get_ref =
+ feature_impl_l->feature.ops->get_ref;
+
feature->ops->is_required = axis2_hash_get(methods,
"is_required", AXIS2_HASH_KEY_STRING);
+ if(!feature->ops->is_required && feature_impl_l)
+ feature->ops->is_required =
+ feature_impl_l->feature.ops->is_required;
+
feature->ops->get_parent = axis2_hash_get(methods,
"get_parent", AXIS2_HASH_KEY_STRING);
+ if(!feature->ops->get_parent && feature_impl_l)
+ feature->ops->get_parent =
+ feature_impl_l->feature.ops->get_parent;
+
feature->ops->to_element = axis2_hash_get(methods,
"to_element", AXIS2_HASH_KEY_STRING);
+ if(!feature->ops->to_element && feature_impl_l)
+ feature->ops->to_element =
+ feature_impl_l->feature.ops->to_element;
return AXIS2_SUCCESS;
}
axis2_status_t AXIS2_CALL
-axis2_woden_feature_add_documentation_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_documentation_element_t *documentation)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK((*env)->error, documentation, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
-
- return AXIS2_WODEN_DOCUMENTABLE_ADD_DOCUMENTATION_ELEMENT(
- feature_impl->documentable, env, documentation);
-}
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_documentation_elements(
- void *feature,
- axis2_env_t **env)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
-
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
-
- return AXIS2_WODEN_DOCUMENTABLE_GET_DOCUMENTATION_ELEMENTS(
- feature_impl->documentable, env);
-}
-
-axis2_status_t AXIS2_CALL
axis2_woden_feature_set_ref(
void *feature,
axis2_env_t **env,
axis2_url_t *ref)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
if(feature_impl->f_ref)
{
@@ -982,9 +875,12 @@
axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, NULL);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
return feature_impl->f_ref;
}
@@ -996,9 +892,12 @@
axis2_bool_t required)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
feature_impl->f_required = required;
return AXIS2_SUCCESS;
@@ -1010,59 +909,29 @@
axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
return feature_impl->f_required;
}
axis2_status_t AXIS2_CALL
-axis2_woden_feature_set_component_exts(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc,
- axis2_woden_component_exts_t *exts)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
-
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- return AXIS2_WODEN_WSDL_OBJ_SET_COMPONENT_EXTS(wsdl_obj, env, namespc, exts);
-}
-
-void *AXIS2_CALL
-axis2_woden_feature_get_component_exts_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
-
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- return AXIS2_WODEN_WSDL_OBJ_GET_COMPONENT_EXTS_FOR_NAMESPACE(wsdl_obj, env,
- namespc);
-
-}
-axis2_status_t AXIS2_CALL
axis2_woden_feature_set_parent_element(
void *feature,
axis2_env_t **env,
axis2_woden_wsdl_element_t *parent)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
if(feature_impl->f_parent)
{
@@ -1078,9 +947,12 @@
axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
return feature_impl->f_parent;
}
@@ -1091,9 +963,12 @@
axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
/* TODO complete this */
return NULL;
@@ -1105,241 +980,13 @@
axis2_env_t **env)
{
axis2_woden_feature_impl_t *feature_impl = NULL;
+ axis2_hash_t *super = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- feature_impl = INTF_TO_IMPL(feature);
+ super = AXIS2_WODEN_FEATURE_SUPER_OBJS(feature, env);
+ feature_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_FEATURE", AXIS2_HASH_KEY_STRING));
return &(feature_impl->feature);
}
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_set_ext_attr(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *attr_type,
- axis2_woden_xml_attr_t *attr)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- axis2_status_t status = AXIS2_FAILURE;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_attr_extensible(wsdl_element, env);
- status = AXIS2_WODEN_ATTR_EXTENSIBLE_SET_EXT_ATTR(wsdl_element, env, attr_type,
- attr);
- AXIS2_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(wsdl_element, env);
- return status;
-}
-
-void *AXIS2_CALL
-axis2_woden_feature_get_ext_attr(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *attr_type)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- void *ret = NULL;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_attr_extensible(wsdl_element, env);
- ret = AXIS2_WODEN_ATTR_EXTENSIBLE_GET_EXT_ATTR(wsdl_element, env, attr_type);
- AXIS2_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_attrs(
- void *feature,
- axis2_env_t **env)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- void *ret = NULL;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_attr_extensible(wsdl_element, env);
- ret = AXIS2_WODEN_ATTR_EXTENSIBLE_GET_EXT_ATTRS(wsdl_element, env);
- AXIS2_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_attrs_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- void *ret = NULL;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_attr_extensible(wsdl_element, env);
- ret = AXIS2_WODEN_ATTR_EXTENSIBLE_GET_EXT_ATTRS_FOR_NAMESPACE(
- wsdl_element, env, namespc);
- AXIS2_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
-axis2_bool_t AXIS2_CALL
-axis2_woden_feature_has_ext_attrs_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- axis2_bool_t ret = AXIS2_FALSE;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_attr_extensible(wsdl_element, env);
- ret = AXIS2_WODEN_ATTR_EXTENSIBLE_HAS_EXT_ATTRS_FOR_NAMESPACE(
- wsdl_element, env, namespc);
- AXIS2_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_add_ext_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_ext_element_t *ext_el)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- axis2_status_t status = AXIS2_FAILURE;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_element_extensible(wsdl_element,
- env);
- status = AXIS2_WSDL_ELEMENT_ADD_EXT_ELEMENT(wsdl_element, env, ext_el);
- AXIS2_ELEMENT_EXTENSIBLE_TO_ELEMENT_EXTENSIBLE_FREE(wsdl_element, env);
- return status;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_woden_feature_remove_ext_element(
- void *feature,
- axis2_env_t **env,
- axis2_woden_ext_element_t *ext_el)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- axis2_status_t status = AXIS2_FAILURE;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_element_extensible(wsdl_element,
- env);
- status = AXIS2_WSDL_ELEMENT_REMOVE_EXT_ELEMENT(wsdl_element, env, ext_el);
- AXIS2_ELEMENT_EXTENSIBLE_TO_ELEMENT_EXTENSIBLE_FREE(wsdl_element, env);
- return status;
-}
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_elements(
- void *feature,
- axis2_env_t **env)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- void *ret = NULL;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_element_extensible(wsdl_element,
- env);
- ret = (axis2_array_list_t *) AXIS2_WSDL_ELEMENT_GET_EXT_ELEMENTS(
- wsdl_element, env);
- AXIS2_ELEMENT_EXTENSIBLE_TO_ELEMENT_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
-axis2_array_list_t *AXIS2_CALL
-axis2_woden_feature_get_ext_elements_of_type(
- void *feature,
- axis2_env_t **env,
- axis2_qname_t *ext_type)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- void *ret = NULL;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_element_extensible(wsdl_element,
- env);
- ret = (axis2_array_list_t *) AXIS2_WSDL_ELEMENT_GET_EXT_ELEMENTS_OF_TYPE(
- wsdl_element, env, ext_type);
- AXIS2_ELEMENT_EXTENSIBLE_TO_ELEMENT_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
-axis2_bool_t AXIS2_CALL
-axis2_woden_feature_has_ext_elements_for_namespace(
- void *feature,
- axis2_env_t **env,
- axis2_url_t *namespc)
-{
- axis2_woden_feature_impl_t *feature_impl = NULL;
- void *wsdl_obj = NULL;
- void *wsdl_element = NULL;
- axis2_bool_t ret = AXIS2_FALSE;
-
- feature_impl = INTF_TO_IMPL(feature);
-
- wsdl_obj = AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(feature_impl->documentable,
- env);
- wsdl_element = AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env);
- wsdl_element = axis2_woden_wsdl_element_to_element_extensible(wsdl_element,
- env);
- ret = AXIS2_WSDL_ELEMENT_HAS_EXT_ELEMENTS_FOR_NAMESPACE(wsdl_element, env,
- namespc);
- AXIS2_ELEMENT_EXTENSIBLE_TO_ELEMENT_EXTENSIBLE_FREE(wsdl_element, env);
- return ret;
-}
-
Added: webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/interface.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/interface.c?rev=406516&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/interface.c (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/interface.c Sun May 14 20:32:53 2006
@@ -0,0 +1,1048 @@
+/*
+ * 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.
+ */
+
+#include <woden/axis2_woden_wsdl_obj.h>
+#include <woden/wsdl20/axis2_woden_interface.h>
+#include <woden/wsdl20/extensions/axis2_woden_ext_element.h>
+#include <woden/wsdl20/extensions/axis2_woden_component_exts.h>
+#include <woden/xml/axis2_woden_xml_attr.h>
+#include <woden/wsdl20/xml/axis2_woden_documentation_element.h>
+#include <woden/wsdl20/axis2_woden_interface_fault.h>
+
+typedef struct axis2_woden_interface_impl axis2_woden_interface_impl_t;
+
+/**
+ * @brief Interface Struct Impl
+ * Axis2 Interface
+ */
+struct axis2_woden_interface_impl
+{
+ axis2_woden_interface_t interface;
+ axis2_woden_configurable_t *configurable;
+ axis2_woden_obj_types_t obj_type;
+ axis2_hash_t *super;
+ axis2_hash_t *methods;
+ axis2_array_list_t *f_extended_interfaces;
+ axis2_qname_t *f_qname;
+ axis2_array_list_t *f_extends_qnames;
+ axis2_array_list_t *f_style_default;
+ axis2_array_list_t *f_interface_fault_elements;
+ axis2_array_list_t *f_interface_op_elements;
+};
+
+#define INTF_TO_IMPL(interface) ((axis2_woden_interface_impl_t *) interface)
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_free(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL
+axis2_woden_interface_super_objs(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_woden_obj_types_t AXIS2_CALL
+axis2_woden_interface_type(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_woden_configurable_t *AXIS2_CALL
+axis2_woden_interface_get_base_impl(
+ void *interface,
+ axis2_env_t **env);
+
+/* ************************************************************
+ * Interface interface methods (the WSDL Component model)
+ * ************************************************************/
+axis2_qname_t *AXIS2_CALL
+axis2_woden_interface_get_qname(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_extended_interfaces(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_faults(
+ void *interface,
+ axis2_env_t **env);
+
+void *AXIS2_CALL
+axis2_woden_interface_get_interface_fault(
+ void *interface,
+ axis2_env_t **env,
+ axis2_qname_t *qname);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_ops(
+ void *interface,
+ axis2_env_t **env);
+
+void *AXIS2_CALL
+axis2_woden_interface_to_element(
+ void *interface,
+ axis2_env_t **env);
+
+/* ************************************************************
+ * InterfaceElement interface methods (the XML Element model)
+ * ************************************************************/
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_set_qname(
+ void *interface,
+ axis2_env_t **env,
+ axis2_qname_t *qname);
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_style_default_uri(
+ void *interface,
+ axis2_env_t **env,
+ axis2_url_t *uri);
+
+void *AXIS2_CALL
+axis2_woden_interface_get_style_default(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_extended_qname(
+ void *interface,
+ axis2_env_t **env,
+ axis2_woden_wsdl_element_t *qname);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_extends_qnames(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_interface_fault_element(
+ void *interface,
+ axis2_env_t **env,
+ void *fault);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_fault_elements(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_interface_op_element(
+ void *interface,
+ axis2_env_t **env,
+ void *op);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_op_elements(
+ void *interface,
+ axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_extended_interface(
+ void *interface,
+ axis2_env_t **env,
+ void *extended_interface);
+
+
+static axis2_woden_interface_t *
+create(axis2_env_t **env);
+
+/************************Woden C Internal Methods******************************/
+AXIS2_DECLARE(axis2_woden_interface_t *)
+axis2_woden_interface_to_interface_element(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ if(!interface)
+ {
+ interface_impl = (axis2_woden_interface_impl_t *) create(env);
+ }
+ else
+ interface_impl = (axis2_woden_interface_impl_t *) interface;
+
+ interface_impl->interface.base.interface_element.ops =
+ AXIS2_MALLOC((*env)->allocator,
+ sizeof(axis2_woden_interface_element_ops_t));
+ axis2_woden_interface_element_resolve_methods(&(interface_impl->interface.base.
+ interface_element), env, interface_impl->methods);
+ return interface;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_to_interface_element_free(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ if(interface_impl->interface.base.interface_element.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ interface_element.ops);
+ interface_impl->interface.base.interface_element.ops = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_DECLARE(axis2_woden_interface_t *)
+axis2_woden_interface_to_configurable_element(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ if(!interface)
+ {
+ interface_impl = (axis2_woden_interface_impl_t *) create(env);
+ }
+ else
+ interface_impl = (axis2_woden_interface_impl_t *) interface;
+
+ interface_impl->interface.base.interface_element.base.configurable_element.ops =
+ AXIS2_MALLOC((*env)->allocator,
+ sizeof(axis2_woden_configurable_element_ops_t));
+ axis2_woden_configurable_element_resolve_methods(&(interface_impl->interface.base.
+ interface_element.base.configurable_element), env, interface_impl->methods);
+ return interface;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_to_configurable_element_free(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ if(interface_impl->interface.base.interface_element.base.configurable_element.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ interface_element.base.configurable_element.ops);
+ interface_impl->interface.base.interface_element.base.configurable_element.ops =
+ NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_DECLARE(axis2_woden_interface_t *)
+axis2_woden_interface_to_documentable_element(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ if(!interface)
+ {
+ interface_impl = (axis2_woden_interface_impl_t *) create(env);
+ }
+ else
+ interface_impl = (axis2_woden_interface_impl_t *) interface;
+
+ interface_impl->interface.base.interface_element.base.documentable_element.ops =
+ AXIS2_MALLOC((*env)->allocator,
+ sizeof(axis2_woden_documentable_element_ops_t));
+ axis2_woden_documentable_element_resolve_methods(&(interface_impl->interface.base.
+ interface_element.base.documentable_element), env,
+ interface_impl->methods);
+ return interface;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_to_documentable_element_free(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ if(interface_impl->interface.base.interface_element.base.documentable_element.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ interface_element.base.documentable_element.ops);
+ interface_impl->interface.base.interface_element.base.documentable_element.ops =
+ NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_DECLARE(axis2_woden_interface_t *)
+axis2_woden_interface_to_configurable(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ if(!interface)
+ {
+ interface_impl = (axis2_woden_interface_impl_t *) create(env);
+ }
+ else
+ interface_impl = (axis2_woden_interface_impl_t *) interface;
+
+ interface_impl->interface.base.configurable.ops =
+ AXIS2_MALLOC((*env)->allocator,
+ sizeof(axis2_woden_configurable_ops_t));
+ axis2_woden_configurable_resolve_methods(&(interface_impl->interface.base.
+ configurable), env, interface_impl->configurable,
+ interface_impl->methods);
+ return interface;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_to_configurable_free(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ if(interface_impl->interface.base.configurable.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ configurable.ops);
+ interface_impl->interface.base.configurable.ops = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+/************************End of Woden C Internal Methods***********************/
+static axis2_woden_interface_t *
+create(axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = AXIS2_MALLOC((*env)->allocator,
+ sizeof(axis2_woden_interface_impl_t));
+
+ interface_impl->obj_type= AXIS2_WODEN_INTERFACE;
+ interface_impl->super = NULL;
+ interface_impl->methods = NULL;
+ interface_impl->f_qname = NULL;
+ interface_impl->f_extended_interfaces = NULL;
+ interface_impl->f_extends_qnames = NULL;
+ interface_impl->f_style_default = NULL;
+ interface_impl->f_interface_fault_elements = NULL;
+ interface_impl->f_interface_op_elements = NULL;
+
+ interface_impl->interface.base.interface_element.ops = NULL;
+ interface_impl->interface.base.interface_element.base.documentable_element.ops = NULL;
+ interface_impl->interface.base.interface_element.base.configurable_element.ops = NULL;
+ interface_impl->interface.base.configurable.ops = NULL;
+
+ interface_impl->interface.ops = AXIS2_MALLOC((*env)->allocator,
+ sizeof(axis2_woden_interface_ops_t));
+
+ interface_impl->interface.ops->free = axis2_woden_interface_free;
+ interface_impl->interface.ops->super_objs = axis2_woden_interface_super_objs;
+ interface_impl->interface.ops->type = axis2_woden_interface_type;
+ interface_impl->interface.ops->get_base_impl = axis2_woden_interface_get_base_impl;
+
+ interface_impl->interface.ops->get_qname = axis2_woden_interface_get_qname;
+ interface_impl->interface.ops->get_extended_interfaces =
+ axis2_woden_interface_get_extended_interfaces;
+ interface_impl->interface.ops->get_interface_faults =
+ axis2_woden_interface_get_interface_faults;
+ interface_impl->interface.ops->get_interface_fault =
+ axis2_woden_interface_get_interface_fault;
+ interface_impl->interface.ops->get_interface_ops =
+ axis2_woden_interface_get_interface_ops;
+ interface_impl->interface.ops->to_element =
+ axis2_woden_interface_to_element;
+
+ interface_impl->methods = axis2_hash_make(env);
+ if(!interface_impl->methods)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(interface_impl->methods, "free", AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_free);
+ axis2_hash_set(interface_impl->methods, "to_interface_element_free",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_to_interface_element_free);
+ axis2_hash_set(interface_impl->methods, "to_configurable_element_free",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_to_configurable_element_free);
+ axis2_hash_set(interface_impl->methods, "to_documentable_element_free",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_to_documentable_element_free);
+ axis2_hash_set(interface_impl->methods, "to_configurable_free",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_to_configurable_free);
+ axis2_hash_set(interface_impl->methods, "super_objs",
+ AXIS2_HASH_KEY_STRING, axis2_woden_interface_super_objs);
+ axis2_hash_set(interface_impl->methods, "type",
+ AXIS2_HASH_KEY_STRING, axis2_woden_interface_type);
+
+ axis2_hash_set(interface_impl->methods, "get_qname",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_qname);
+ axis2_hash_set(interface_impl->methods, "get_extended_interfaces",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_extended_interfaces);
+ axis2_hash_set(interface_impl->methods, "get_interface_faults",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_interface_faults);
+ axis2_hash_set(interface_impl->methods, "get_interface_fault",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_interface_fault);
+ axis2_hash_set(interface_impl->methods, "get_interface_ops",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_interface_ops);
+ axis2_hash_set(interface_impl->methods, "to_element",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_to_element);
+ axis2_hash_set(interface_impl->methods, "set_qname",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_set_qname);
+ axis2_hash_set(interface_impl->methods, "add_style_default_uri",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_add_style_default_uri);
+ axis2_hash_set(interface_impl->methods, "get_style_default",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_style_default);
+ axis2_hash_set(interface_impl->methods, "add_extends_qnames",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_extends_qnames);
+ axis2_hash_set(interface_impl->methods, "get_extends_qnames",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_extends_qnames);
+ axis2_hash_set(interface_impl->methods, "add_interface_fault_element",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_add_interface_fault_element);
+ axis2_hash_set(interface_impl->methods, "get_interface_fault_elements",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_interface_fault_elements);
+ axis2_hash_set(interface_impl->methods, "add_interface_op_element",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_add_interface_op_element);
+ axis2_hash_set(interface_impl->methods, "get_interface_op_elements",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_get_interface_op_elements);
+ axis2_hash_set(interface_impl->methods, "add_extended_interface",
+ AXIS2_HASH_KEY_STRING,
+ axis2_woden_interface_add_extended_interface);
+
+ return &(interface_impl->interface);
+}
+
+AXIS2_DECLARE(axis2_woden_interface_t *)
+axis2_woden_interface_create(axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = (axis2_woden_interface_impl_t *) create(env);
+
+ interface_impl->configurable = axis2_woden_configurable_create(env);
+
+ interface_impl->super = axis2_hash_make(env);
+ if(!interface_impl->super)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(interface_impl->super, "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING,
+ &(interface_impl->interface));
+ axis2_hash_set(interface_impl->super, "AXIS2_WODEN_CONFIGURABLE", AXIS2_HASH_KEY_STRING,
+ interface_impl->configurable);
+
+ return &(interface_impl->interface);
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_free(void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ if(interface_impl->f_extended_interfaces)
+ {
+ AXIS2_ARRAY_LIST_FREE(interface_impl->f_extended_interfaces, env);
+ interface_impl->f_extended_interfaces = NULL;
+ }
+
+ if(interface_impl->f_qname)
+ {
+ AXIS2_QNAME_FREE(interface_impl->f_qname, env);
+ interface_impl->f_qname = NULL;
+ }
+
+ if(interface_impl->f_extends_qnames)
+ {
+ AXIS2_ARRAY_LIST_FREE(interface_impl->f_extends_qnames, env);
+ interface_impl->f_extends_qnames = NULL;
+ }
+
+ if(interface_impl->f_style_default)
+ {
+ AXIS2_ARRAY_LIST_FREE(interface_impl->f_style_default, env);
+ interface_impl->f_style_default = NULL;
+ }
+
+ if(interface_impl->f_interface_fault_elements)
+ {
+ AXIS2_ARRAY_LIST_FREE(interface_impl->f_interface_fault_elements, env);
+ interface_impl->f_interface_fault_elements = NULL;
+ }
+
+ if(interface_impl->f_interface_op_elements)
+ {
+ AXIS2_ARRAY_LIST_FREE(interface_impl->f_interface_op_elements, env);
+ interface_impl->f_interface_op_elements = NULL;
+ }
+
+ if(interface_impl->super)
+ {
+ axis2_hash_free(interface_impl->super, env);
+ interface_impl->super = NULL;
+ }
+
+ if(interface_impl->methods)
+ {
+ axis2_hash_free(interface_impl->methods, env);
+ interface_impl->methods = NULL;
+ }
+
+ if(interface_impl->configurable)
+ {
+ AXIS2_WODEN_CONFIGURABLE_FREE(interface_impl->configurable, env);
+ interface_impl->configurable = NULL;
+ }
+
+ if(interface_impl->interface.base.interface_element.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ interface_element.ops);
+ interface_impl->interface.base.interface_element.ops = NULL;
+ }
+
+ if(interface_impl->interface.base.interface_element.base.configurable_element.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ interface_element.base.configurable_element.ops);
+ interface_impl->interface.base.interface_element.base.configurable_element.ops =
+ NULL;
+ }
+
+ if(interface_impl->interface.base.interface_element.base.documentable_element.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ interface_element.base.documentable_element.ops);
+ interface_impl->interface.base.interface_element.base.documentable_element.ops =
+ NULL;
+ }
+
+ if(interface_impl->interface.base.configurable.ops)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl->interface.base.
+ configurable.ops);
+ interface_impl->interface.base.configurable.ops =
+ NULL;
+ }
+
+ if((&(interface_impl->interface))->ops)
+ {
+ AXIS2_FREE((*env)->allocator, (&(interface_impl->interface))->ops);
+ (&(interface_impl->interface))->ops = NULL;
+ }
+
+ if(interface_impl)
+ {
+ AXIS2_FREE((*env)->allocator, interface_impl);
+ interface_impl = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+axis2_hash_t *AXIS2_CALL
+axis2_woden_interface_super_objs(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ return interface_impl->super;
+}
+
+axis2_woden_obj_types_t AXIS2_CALL
+axis2_woden_interface_type(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ return interface_impl->obj_type;
+}
+
+axis2_woden_configurable_t *AXIS2_CALL
+axis2_woden_interface_get_base_impl(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ interface_impl = INTF_TO_IMPL(interface);
+
+ return interface_impl->configurable;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_resolve_methods(
+ axis2_woden_interface_t *interface,
+ axis2_env_t **env,
+ axis2_woden_interface_t *interface_impl,
+ axis2_hash_t *methods)
+{
+ axis2_woden_interface_impl_t *interface_impl_l = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, methods, AXIS2_FAILURE);
+ interface_impl_l = INTF_TO_IMPL(interface_impl);
+
+ interface->ops->free = axis2_hash_get(methods, "free",
+ AXIS2_HASH_KEY_STRING);
+ interface->ops->to_interface_free = axis2_hash_get(methods, "to_interface_free",
+ AXIS2_HASH_KEY_STRING);
+ interface->ops->super_objs = axis2_hash_get(methods, "super_objs",
+ AXIS2_HASH_KEY_STRING);
+ interface->ops->type = axis2_hash_get(methods, "type",
+ AXIS2_HASH_KEY_STRING);
+
+ interface->ops->get_qname = axis2_hash_get(methods,
+ "get_qname", AXIS2_HASH_KEY_STRING);
+ if(!interface->ops->get_qname && interface_impl_l)
+ interface->ops->get_qname =
+ interface_impl_l->interface.ops->get_qname;
+
+ interface->ops->get_extended_interfaces = axis2_hash_get(methods,
+ "get_extended_interfaces", AXIS2_HASH_KEY_STRING);
+ if(!interface->ops->get_extended_interfaces && interface_impl_l)
+ interface->ops->get_extended_interfaces =
+ interface_impl_l->interface.ops->get_extended_interfaces;
+
+ interface->ops->get_interface_faults = axis2_hash_get(methods,
+ "get_interface_faults", AXIS2_HASH_KEY_STRING);
+ if(!interface->ops->get_interface_faults && interface_impl_l)
+ interface->ops->get_interface_faults =
+ interface_impl_l->interface.ops->get_interface_faults;
+
+ interface->ops->get_interface_fault = axis2_hash_get(methods,
+ "get_interface_fault", AXIS2_HASH_KEY_STRING);
+ if(!interface->ops->get_interface_fault && interface_impl_l)
+ interface->ops->get_interface_fault =
+ interface_impl_l->interface.ops->get_interface_fault;
+
+ interface->ops->get_interface_ops = axis2_hash_get(methods,
+ "get_interface_ops", AXIS2_HASH_KEY_STRING);
+ if(!interface->ops->get_interface_ops && interface_impl_l)
+ interface->ops->get_interface_ops =
+ interface_impl_l->interface.ops->get_interface_ops;
+
+ interface->ops->to_element = axis2_hash_get(methods,
+ "to_element", AXIS2_HASH_KEY_STRING);
+ if(!interface->ops->to_element && interface_impl_l)
+ interface->ops->to_element =
+ interface_impl_l->interface.ops->to_element;
+
+ return AXIS2_SUCCESS;
+}
+
+/* ************************************************************
+ * Interface interface methods (the WSDL Component model)
+ * ************************************************************/
+axis2_qname_t *AXIS2_CALL
+axis2_woden_interface_get_qname(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_qname;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_extended_interfaces(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_extended_interfaces;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_faults(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_interface_fault_elements;
+}
+
+void *AXIS2_CALL
+axis2_woden_interface_get_interface_fault(
+ void *interface,
+ axis2_env_t **env,
+ axis2_qname_t *qname)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+ int i = 0, size = 0;
+ void *fault;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, qname, NULL);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ size = AXIS2_ARRAY_LIST_SIZE(interface_impl->f_interface_fault_elements, env);
+ for(i = 0; i < size; i++)
+ {
+ void *flt = NULL;
+ axis2_qname_t *qname_l = NULL;
+
+ flt = AXIS2_ARRAY_LIST_GET(interface_impl->f_interface_fault_elements,
+ env, i);
+ qname_l = (axis2_qname_t *) AXIS2_INTERFACE_FAULT_GET_QNAME(flt, env);
+ if(AXIS2_TRUE == AXIS2_QNAME_EQUALS(qname, env, qname_l))
+ {
+ fault = flt;
+ break;
+ }
+ }
+
+ return fault;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_ops(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_interface_op_elements;
+}
+
+void *AXIS2_CALL
+axis2_woden_interface_to_element(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return &(interface_impl->interface);
+}
+
+/* ************************************************************
+ * InterfaceElement interface methods (the XML Element model)
+ * ************************************************************/
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_set_qname(
+ void *interface,
+ axis2_env_t **env,
+ axis2_qname_t *qname)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, qname, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ if(interface_impl->f_qname)
+ {
+ AXIS2_QNAME_FREE(interface_impl->f_qname, env);
+ }
+ interface_impl->f_qname = AXIS2_QNAME_CLONE(qname, env);
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_style_default_uri(
+ void *interface,
+ axis2_env_t **env,
+ axis2_url_t *uri)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, uri, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ if(!interface_impl->f_style_default)
+ {
+ interface_impl->f_style_default = axis2_array_list_create(env, 0);
+ if(!interface_impl->f_style_default)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
+ }
+ AXIS2_ARRAY_LIST_ADD(interface_impl->f_style_default, env, uri);
+
+ return AXIS2_SUCCESS;
+}
+
+void *AXIS2_CALL
+axis2_woden_interface_get_style_default(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_style_default;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_extended_qname(
+ void *interface,
+ axis2_env_t **env,
+ axis2_woden_wsdl_element_t *qname)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, qname, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ if(!interface_impl->f_extends_qnames)
+ {
+ interface_impl->f_extends_qnames = axis2_array_list_create(env, 0);
+ if(!interface_impl->f_extends_qnames)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
+ }
+ AXIS2_ARRAY_LIST_ADD(interface_impl->f_extends_qnames, env, qname);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_extends_qnames(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_extends_qnames;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_interface_fault_element(
+ void *interface,
+ axis2_env_t **env,
+ void *fault)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, fault, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ if(!interface_impl->f_interface_fault_elements)
+ {
+ interface_impl->f_interface_fault_elements = axis2_array_list_create(env, 0);
+ if(!interface_impl->f_interface_fault_elements)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
+ }
+ AXIS2_ARRAY_LIST_ADD(interface_impl->f_interface_fault_elements, env, fault);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_fault_elements(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_interface_fault_elements;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_interface_op_element(
+ void *interface,
+ axis2_env_t **env,
+ void *op)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, op, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ if(!interface_impl->f_interface_op_elements)
+ {
+ interface_impl->f_interface_op_elements = axis2_array_list_create(env, 0);
+ if(!interface_impl->f_interface_op_elements)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
+ }
+ AXIS2_ARRAY_LIST_ADD(interface_impl->f_interface_op_elements, env, op);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_woden_interface_get_interface_op_elements(
+ void *interface,
+ axis2_env_t **env)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ return interface_impl->f_interface_op_elements;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_woden_interface_add_extended_interface(
+ void *interface,
+ axis2_env_t **env,
+ void *extended_interface)
+{
+ axis2_woden_interface_impl_t *interface_impl = NULL;
+ axis2_hash_t *super = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, interface, AXIS2_FAILURE);
+ super = AXIS2_WODEN_INTERFACE_SUPER_OBJS(interface, env);
+ interface_impl = INTF_TO_IMPL(axis2_hash_get(super,
+ "AXIS2_WODEN_INTERFACE", AXIS2_HASH_KEY_STRING));
+
+ if(!interface_impl->f_extended_interfaces)
+ {
+ interface_impl->f_extended_interfaces = axis2_array_list_create(env, 0);
+ if(!interface_impl->f_extended_interfaces)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
+ }
+ AXIS2_ARRAY_LIST_ADD(interface_impl->f_extended_interfaces, env, extended_interface);
+ return AXIS2_SUCCESS;
+}
+
+
+
+
+