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/07/06 08:02:31 UTC
svn commit: r419452 [46/46] - in /webservices/axis2/trunk/c/woden: ./
include/ samples/ samples/wsdl10/ src/ src/builder/ src/builder/wsdl10/
src/schema/ src/types/ src/util/ src/wsdl/ src/wsdl/enumeration/
src/wsdl10/ src/wsdl10/enumeration/ src/wsdl1...
Added: webservices/axis2/trunk/c/woden/src/xml/qname_list_or_token_any_attr.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/xml/qname_list_or_token_any_attr.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/src/xml/qname_list_or_token_any_attr.c (added)
+++ webservices/axis2/trunk/c/woden/src/xml/qname_list_or_token_any_attr.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,371 @@
+/*
+ * 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_qname_list_or_token_any_attr.h>
+#include <woden_xml_attr.h>
+#include <axiom_element.h>
+#include <axiom_node.h>
+
+typedef struct woden_qname_list_or_token_any_attr_impl
+ woden_qname_list_or_token_any_attr_impl_t;
+
+/**
+ * @brief QName List or Token Any Attribute Struct Impl
+ * Axis2 QName List or Token Any Attribute
+ */
+struct woden_qname_list_or_token_any_attr_impl
+{
+ woden_qname_list_or_token_any_attr_t list_token_attr;
+ woden_xml_attr_t *xml_attr;
+ woden_obj_types_t obj_type;
+ axis2_hash_t *methods;
+ axis2_bool_t is_token;
+};
+
+#define INTF_TO_IMPL(list_token_attr) \
+ ((woden_qname_list_or_token_any_attr_impl_t *) \
+ list_token_attr)
+
+axis2_status_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_free(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+woden_obj_types_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_type(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+woden_xml_attr_t *AXIS2_CALL
+woden_qname_list_or_token_any_attr_get_base_impl(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+axis2_bool_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_is_qname_list(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+axis2_bool_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_is_token(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+axis2_array_list_t *AXIS2_CALL
+woden_qname_list_or_token_any_attr_get_qnames(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+axis2_char_t *AXIS2_CALL
+woden_qname_list_or_token_any_attr_get_token(
+ void *list_token_attr,
+ const axis2_env_t *env);
+
+void *AXIS2_CALL
+woden_qname_list_or_token_any_attr_convert(
+ void *list_token_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value);
+
+/*
+ * TODO This constructor is not used for extension attributes, but may be useful if
+ * parsing of native WSDL attributes is changed to use the XMLAttr interface.
+ */
+AXIS2_EXTERN woden_qname_list_or_token_any_attr_t * AXIS2_CALL
+woden_qname_list_or_token_any_attr_create(
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ list_token_attr_impl = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_qname_list_or_token_any_attr_impl_t));
+
+ list_token_attr_impl->obj_type = WODEN_QNAME_LIST_OR_TOKEN_ANY_ATTR;
+ list_token_attr_impl->xml_attr = NULL;
+ list_token_attr_impl->methods = NULL;
+ list_token_attr_impl->list_token_attr.ops =
+ AXIS2_MALLOC(env->allocator,
+ sizeof(woden_qname_list_or_token_any_attr_ops_t));
+
+ list_token_attr_impl->list_token_attr.ops->free =
+ woden_qname_list_or_token_any_attr_free;
+ list_token_attr_impl->list_token_attr.ops->type =
+ woden_qname_list_or_token_any_attr_type;
+ list_token_attr_impl->list_token_attr.ops->get_base_impl =
+ woden_qname_list_or_token_any_attr_get_base_impl;
+ list_token_attr_impl->list_token_attr.ops->is_qname_list =
+ woden_qname_list_or_token_any_attr_is_qname_list;
+ list_token_attr_impl->list_token_attr.ops->is_token =
+ woden_qname_list_or_token_any_attr_is_token;
+ list_token_attr_impl->list_token_attr.ops->get_qnames =
+ woden_qname_list_or_token_any_attr_get_qnames;
+ list_token_attr_impl->list_token_attr.ops->get_token =
+ woden_qname_list_or_token_any_attr_get_token;
+ list_token_attr_impl->list_token_attr.ops->convert =
+ woden_qname_list_or_token_any_attr_convert;
+
+
+ list_token_attr_impl->methods = axis2_hash_make(env);
+ if(!list_token_attr_impl->methods)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(list_token_attr_impl->methods, "free",
+ AXIS2_HASH_KEY_STRING, woden_qname_list_or_token_any_attr_free);
+ axis2_hash_set(list_token_attr_impl->methods, "type",
+ AXIS2_HASH_KEY_STRING, woden_qname_list_or_token_any_attr_type);
+ axis2_hash_set(list_token_attr_impl->methods, "is_qname_list",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_list_or_token_any_attr_is_qname_list);
+ axis2_hash_set(list_token_attr_impl->methods, "is_token",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_list_or_token_any_attr_is_token);
+ axis2_hash_set(list_token_attr_impl->methods, "get_qnames",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_list_or_token_any_attr_get_qnames);
+ axis2_hash_set(list_token_attr_impl->methods, "get_token",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_list_or_token_any_attr_get_token);
+ axis2_hash_set(list_token_attr_impl->methods, "convert",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_list_or_token_any_attr_convert);
+
+ list_token_attr_impl->xml_attr = woden_xml_attr_create(
+ env, owner_el, owner_node, attr_type, attr_value);
+
+ return &(list_token_attr_impl->list_token_attr);
+}
+
+woden_obj_types_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_type(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+
+ return list_token_attr_impl->obj_type;
+}
+
+axis2_status_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_free(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+
+ if(list_token_attr_impl->methods)
+ {
+ axis2_hash_free(list_token_attr_impl->methods, env);
+ list_token_attr_impl->methods = NULL;
+ }
+
+ if(list_token_attr_impl->xml_attr)
+ {
+ WODEN_XML_ATTR_FREE(list_token_attr_impl->xml_attr,
+ env);
+ list_token_attr_impl->xml_attr = NULL;
+ }
+
+ if((&(list_token_attr_impl->list_token_attr))->ops)
+ {
+ AXIS2_FREE(env->allocator, (&(list_token_attr_impl->
+ list_token_attr))->ops);
+ (&(list_token_attr_impl->list_token_attr))->ops =
+ NULL;
+ }
+
+ if(list_token_attr_impl)
+ {
+ AXIS2_FREE(env->allocator, list_token_attr_impl);
+ list_token_attr_impl = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+woden_xml_attr_t *AXIS2_CALL
+woden_qname_list_or_token_any_attr_get_base_impl(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ list_token_attr_impl =
+ INTF_TO_IMPL(list_token_attr);
+
+ return list_token_attr_impl->xml_attr;
+}
+
+axis2_status_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_resolve_methods(
+ woden_qname_list_or_token_any_attr_t *list_token_attr,
+ const axis2_env_t *env,
+ axis2_hash_t *methods)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, methods, AXIS2_FAILURE);
+
+ list_token_attr->ops->free = axis2_hash_get(methods,
+ "free", AXIS2_HASH_KEY_STRING);
+ list_token_attr->ops->to_qname_list_or_token_any_attr_free =
+ axis2_hash_get(methods, "to_qname_list_or_token_any_attr_free",
+ AXIS2_HASH_KEY_STRING);
+ list_token_attr->ops->type = axis2_hash_get(methods,
+ "type", AXIS2_HASH_KEY_STRING);
+
+ list_token_attr->ops->is_qname_list = axis2_hash_get(methods,
+ "is_qname_list", AXIS2_HASH_KEY_STRING);
+ list_token_attr->ops->is_token = axis2_hash_get(methods,
+ "is_token", AXIS2_HASH_KEY_STRING);
+ list_token_attr->ops->get_qnames = axis2_hash_get(methods,
+ "get_qnames", AXIS2_HASH_KEY_STRING);
+ list_token_attr->ops->get_token = axis2_hash_get(methods,
+ "get_token", AXIS2_HASH_KEY_STRING);
+ list_token_attr->ops->convert = axis2_hash_get(methods,
+ "convert", AXIS2_HASH_KEY_STRING);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_bool_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_is_qname_list(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+ axis2_generic_obj_t *content = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+
+ content = WODEN_XML_ATTR_GET_CONTENT(list_token_attr_impl->xml_attr,
+ env);
+ if(AXIS2_QNAME_LIST == AXIS2_GENERIC_OBJ_GET_TYPE(content, env))
+ return AXIS2_TRUE;
+ return AXIS2_FALSE;
+}
+
+axis2_bool_t AXIS2_CALL
+woden_qname_list_or_token_any_attr_is_token(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+
+ if(AXIS2_TRUE != woden_qname_list_or_token_any_attr_is_qname_list(
+ list_token_attr, env) && AXIS2_TRUE ==
+ WODEN_XML_ATTR_IS_VALID(list_token_attr_impl->xml_attr, env))
+ {
+ return AXIS2_TRUE;
+ } else
+ {
+ return AXIS2_FALSE;
+ }
+}
+
+axis2_array_list_t *AXIS2_CALL
+woden_qname_list_or_token_any_attr_get_qnames(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+ return (axis2_array_list_t *) WODEN_XML_ATTR_GET_CONTENT(
+ list_token_attr_impl->xml_attr, env);
+}
+
+axis2_char_t *AXIS2_CALL
+woden_qname_list_or_token_any_attr_get_token(
+ void *list_token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+ if(AXIS2_TRUE ==
+ woden_qname_list_or_token_any_attr_is_token(list_token_attr,
+ env))
+ {
+ return (axis2_char_t *) WODEN_XML_ATTR_GET_CONTENT(
+ list_token_attr_impl->xml_attr, env);
+ } else
+ {
+ return NULL;
+ }
+}
+
+void *AXIS2_CALL
+woden_qname_list_or_token_any_attr_convert(
+ void *list_token_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value)
+{
+ woden_qname_list_or_token_any_attr_impl_t *
+ list_token_attr_impl = NULL;
+ axis2_array_list_t *qn_array = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ list_token_attr_impl = INTF_TO_IMPL(list_token_attr);
+
+ /* First, check if the attribute contains the xs:token '#any'.*/
+ if(0 == AXIS2_STRCMP("#any", attr_value)) return attr_value;
+
+ /* Second, assume the attribute contains a list of xs:QName. */
+ if(attr_value)
+ {
+ /* TODO */
+ }
+
+ if(!qn_array)
+ {
+ WODEN_XML_ATTR_SET_VALID(list_token_attr_impl->
+ xml_attr, env, AXIS2_FALSE);
+ /* TODO handler error */
+ }
+
+ return qn_array;
+}
+
Added: webservices/axis2/trunk/c/woden/src/xml/qname_or_token_any_attr.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/xml/qname_or_token_any_attr.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/src/xml/qname_or_token_any_attr.c (added)
+++ webservices/axis2/trunk/c/woden/src/xml/qname_or_token_any_attr.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,379 @@
+/*
+ * 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_qname_or_token_any_attr.h>
+#include <woden_xml_attr.h>
+#include <axiom_element.h>
+#include <axiom_node.h>
+
+typedef struct woden_qname_or_token_any_attr_impl
+ woden_qname_or_token_any_attr_impl_t;
+
+/**
+ * @brief QName or Token Any Attribute Struct Impl
+ * Axis2 QName or Token Any Attribute
+ */
+struct woden_qname_or_token_any_attr_impl
+{
+ woden_qname_or_token_any_attr_t token_attr;
+ woden_xml_attr_t *xml_attr;
+ woden_obj_types_t obj_type;
+ axis2_hash_t *methods;
+};
+
+#define INTF_TO_IMPL(token_attr) \
+ ((woden_qname_or_token_any_attr_impl_t *) \
+ token_attr)
+
+axis2_status_t AXIS2_CALL
+woden_qname_or_token_any_attr_free(
+ void *token_attr,
+ const axis2_env_t *env);
+
+woden_obj_types_t AXIS2_CALL
+woden_qname_or_token_any_attr_type(
+ void *token_attr,
+ const axis2_env_t *env);
+
+woden_xml_attr_t *AXIS2_CALL
+woden_qname_or_token_any_attr_get_base_impl(
+ void *token_attr,
+ const axis2_env_t *env);
+
+axis2_bool_t AXIS2_CALL
+woden_qname_or_token_any_attr_is_qname(
+ void *token_attr,
+ const axis2_env_t *env);
+
+axis2_bool_t AXIS2_CALL
+woden_qname_or_token_any_attr_is_token(
+ void *token_attr,
+ const axis2_env_t *env);
+
+axis2_qname_t *AXIS2_CALL
+woden_qname_or_token_any_attr_get_qname(
+ void *token_attr,
+ const axis2_env_t *env);
+
+axis2_char_t *AXIS2_CALL
+woden_qname_or_token_any_attr_get_token(
+ void *token_attr,
+ const axis2_env_t *env);
+
+void *AXIS2_CALL
+woden_qname_or_token_any_attr_convert(
+ void *token_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value);
+
+/*
+ * TODO This constructor is not used for extension attributes, but may be useful if
+ * parsing of native WSDL attributes is changed to use the XMLAttr interface.
+ */
+AXIS2_EXTERN woden_qname_or_token_any_attr_t * AXIS2_CALL
+woden_qname_or_token_any_attr_create(const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ token_attr_impl = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_qname_or_token_any_attr_impl_t));
+
+ token_attr_impl->obj_type = WODEN_QNAME_OR_TOKEN_ANY_ATTR;
+ token_attr_impl->xml_attr = NULL;
+ token_attr_impl->methods = NULL;
+
+ token_attr_impl->token_attr.ops =
+ AXIS2_MALLOC(env->allocator,
+ sizeof(woden_qname_or_token_any_attr_ops_t));
+
+ token_attr_impl->token_attr.ops->free =
+ woden_qname_or_token_any_attr_free;
+ token_attr_impl->token_attr.ops->type =
+ woden_qname_or_token_any_attr_type;
+ token_attr_impl->token_attr.ops->get_base_impl =
+ woden_qname_or_token_any_attr_get_base_impl;
+
+ token_attr_impl->token_attr.ops->is_qname =
+ woden_qname_or_token_any_attr_is_qname;
+ token_attr_impl->token_attr.ops->is_token =
+ woden_qname_or_token_any_attr_is_token;
+ token_attr_impl->token_attr.ops->get_qname =
+ woden_qname_or_token_any_attr_get_qname;
+ token_attr_impl->token_attr.ops->get_token =
+ woden_qname_or_token_any_attr_get_token;
+ token_attr_impl->token_attr.ops->convert =
+ woden_qname_or_token_any_attr_convert;
+
+
+ token_attr_impl->methods = axis2_hash_make(env);
+ if(!token_attr_impl->methods)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(token_attr_impl->methods, "free",
+ AXIS2_HASH_KEY_STRING, woden_qname_or_token_any_attr_free);
+ axis2_hash_set(token_attr_impl->methods, "type",
+ AXIS2_HASH_KEY_STRING, woden_qname_or_token_any_attr_type);
+
+ axis2_hash_set(token_attr_impl->methods, "is_qname",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_or_token_any_attr_is_qname);
+ axis2_hash_set(token_attr_impl->methods, "is_token",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_or_token_any_attr_is_token);
+ axis2_hash_set(token_attr_impl->methods, "get_qname",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_or_token_any_attr_get_qname);
+ axis2_hash_set(token_attr_impl->methods, "get_token",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_or_token_any_attr_get_token);
+ axis2_hash_set(token_attr_impl->methods, "convert",
+ AXIS2_HASH_KEY_STRING,
+ woden_qname_or_token_any_attr_convert);
+
+ token_attr_impl->xml_attr = woden_xml_attr_create(
+ env, owner_el, owner_node, attr_type, attr_value);
+
+ return &(token_attr_impl->token_attr);
+}
+
+woden_obj_types_t AXIS2_CALL
+woden_qname_or_token_any_attr_type(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+
+ return token_attr_impl->obj_type;
+}
+
+axis2_status_t AXIS2_CALL
+woden_qname_or_token_any_attr_free(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+
+ if(token_attr_impl->methods)
+ {
+ axis2_hash_free(token_attr_impl->methods, env);
+ token_attr_impl->methods = NULL;
+ }
+
+ if(token_attr_impl->xml_attr)
+ {
+ WODEN_XML_ATTR_FREE(token_attr_impl->xml_attr,
+ env);
+ token_attr_impl->xml_attr = NULL;
+ }
+
+ if((&(token_attr_impl->token_attr))->ops)
+ {
+ AXIS2_FREE(env->allocator, (&(token_attr_impl->
+ token_attr))->ops);
+ (&(token_attr_impl->token_attr))->ops =
+ NULL;
+ }
+
+ if(token_attr_impl)
+ {
+ AXIS2_FREE(env->allocator, token_attr_impl);
+ token_attr_impl = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+woden_xml_attr_t *AXIS2_CALL
+woden_qname_or_token_any_attr_get_base_impl(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ token_attr_impl =
+ INTF_TO_IMPL(token_attr);
+
+ return token_attr_impl->xml_attr;
+}
+
+axis2_status_t AXIS2_CALL
+woden_qname_or_token_any_attr_resolve_methods(
+ woden_qname_or_token_any_attr_t *
+ token_attr,
+ const axis2_env_t *env,
+ axis2_hash_t *methods)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, methods, AXIS2_FAILURE);
+
+ token_attr->ops->free = axis2_hash_get(methods,
+ "free", AXIS2_HASH_KEY_STRING);
+ token_attr->ops->type = axis2_hash_get(methods,
+ "type", AXIS2_HASH_KEY_STRING);
+
+ token_attr->ops->is_qname = axis2_hash_get(methods,
+ "is_qname", AXIS2_HASH_KEY_STRING);
+ token_attr->ops->is_token = axis2_hash_get(methods,
+ "is_token", AXIS2_HASH_KEY_STRING);
+ token_attr->ops->get_qname = axis2_hash_get(methods,
+ "get_qname", AXIS2_HASH_KEY_STRING);
+ token_attr->ops->get_token = axis2_hash_get(methods,
+ "get_token", AXIS2_HASH_KEY_STRING);
+ token_attr->ops->convert = axis2_hash_get(methods,
+ "convert", AXIS2_HASH_KEY_STRING);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_bool_t AXIS2_CALL
+woden_qname_or_token_any_attr_is_qname(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+ axis2_generic_obj_t *content = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+ /* TODO Check this. We need to check whether the
+ * f_content is an instance of qname
+ */
+ if(AXIS2_FALSE == woden_qname_or_token_any_attr_is_token(token_attr,
+ env))
+ return AXIS2_TRUE;
+ content = WODEN_XML_ATTR_GET_CONTENT(token_attr_impl->xml_attr, env);
+ if(AXIS2_QNAME == AXIS2_GENERIC_OBJ_GET_TYPE(content, env))
+ return AXIS2_TRUE;
+ return AXIS2_FALSE;
+}
+
+axis2_bool_t AXIS2_CALL
+woden_qname_or_token_any_attr_is_token(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+
+ if(AXIS2_TRUE != woden_qname_or_token_any_attr_is_qname(token_attr,
+ env) && AXIS2_TRUE == WODEN_XML_ATTR_IS_VALID(
+ token_attr_impl->xml_attr, env))
+ {
+ return AXIS2_TRUE;
+ } else
+ {
+ return AXIS2_FALSE;
+ }
+}
+
+axis2_qname_t *AXIS2_CALL
+woden_qname_or_token_any_attr_get_qname(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+
+ if(AXIS2_TRUE == woden_qname_or_token_any_attr_is_qname(token_attr,
+ env))
+ return (axis2_qname_t *) WODEN_XML_ATTR_GET_CONTENT(
+ token_attr_impl->xml_attr, env);
+ else
+ return NULL;
+}
+
+axis2_char_t *AXIS2_CALL
+woden_qname_or_token_any_attr_get_token(
+ void *token_attr,
+ const axis2_env_t *env)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+ if(AXIS2_TRUE == woden_qname_or_token_any_attr_is_qname(token_attr,
+ env) && AXIS2_TRUE == WODEN_XML_ATTR_IS_VALID(
+ token_attr_impl->xml_attr, env) )
+ {
+ return (axis2_char_t *) WODEN_XML_ATTR_GET_CONTENT(
+ token_attr_impl->xml_attr, env);
+ } else
+ {
+ return NULL;
+ }
+}
+
+void *AXIS2_CALL
+woden_qname_or_token_any_attr_convert(
+ void *token_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value)
+{
+ woden_qname_or_token_any_attr_impl_t *
+ token_attr_impl = NULL;
+ axis2_qname_t *qn = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ token_attr_impl = INTF_TO_IMPL(token_attr);
+
+ /* First, check if the attribute contains the xs:token '#any'.*/
+ if(0 == AXIS2_STRCMP("#any", attr_value)) return attr_value;
+
+ /* Second, assume the attribute contains a list of xs:QName. */
+ if(attr_value)
+ {
+ /* TODO */
+ }
+
+ if(!qn)
+ {
+ WODEN_XML_ATTR_SET_VALID(token_attr_impl->
+ xml_attr, env, AXIS2_FALSE);
+ /* TODO handler error */
+ }
+
+ return qn;
+}
+
Added: webservices/axis2/trunk/c/woden/src/xml/string_attr.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/xml/string_attr.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/src/xml/string_attr.c (added)
+++ webservices/axis2/trunk/c/woden/src/xml/string_attr.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,256 @@
+/*
+ * 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_string_attr.h>
+#include <woden_xml_attr.h>
+#include <axis2_uri.h>
+#include <axiom_element.h>
+#include <axiom_node.h>
+
+typedef struct woden_string_attr_impl woden_string_attr_impl_t;
+
+/**
+ * @brief String Attribute Struct Impl
+ * Axis2 String Attribute
+ */
+struct woden_string_attr_impl
+{
+ woden_string_attr_t string_attr;
+ woden_xml_attr_t *xml_attr;
+ woden_obj_types_t obj_type;
+ axis2_hash_t *methods;
+};
+
+#define INTF_TO_IMPL(string_attr) \
+ ((woden_string_attr_impl_t *) string_attr)
+
+axis2_status_t AXIS2_CALL
+woden_string_attr_free(
+ void *string_attr,
+ const axis2_env_t *env);
+
+woden_obj_types_t AXIS2_CALL
+woden_string_attr_type(
+ void *string_attr,
+ const axis2_env_t *env);
+
+woden_xml_attr_t *AXIS2_CALL
+woden_string_attr_get_base_impl(
+ void *string_attr,
+ const axis2_env_t *env);
+
+axis2_char_t *AXIS2_CALL
+woden_string_attr_get_string(
+ void *string_attr,
+ const axis2_env_t *env);
+
+void *AXIS2_CALL
+woden_string_attr_convert(
+ void *string_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value);
+
+/*
+ * TODO This constructor is not used for extension attributes, but may be useful if
+ * parsing of native WSDL attributes is changed to use the XMLAttr interface.
+ */
+AXIS2_EXTERN woden_string_attr_t * AXIS2_CALL
+woden_string_attr_create(
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value)
+{
+ woden_string_attr_impl_t *string_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ string_attr_impl = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_string_attr_impl_t));
+
+ string_attr_impl->obj_type = WODEN_STRING_ATTR;
+ string_attr_impl->xml_attr = NULL;
+ string_attr_impl->methods = NULL;
+ string_attr_impl->string_attr.ops =
+ AXIS2_MALLOC(env->allocator,
+ sizeof(woden_string_attr_ops_t));
+
+ string_attr_impl->string_attr.ops->free =
+ woden_string_attr_free;
+ string_attr_impl->string_attr.ops->type =
+ woden_string_attr_type;
+ string_attr_impl->string_attr.ops->get_base_impl =
+ woden_string_attr_get_base_impl;
+ string_attr_impl->string_attr.ops->get_string =
+ woden_string_attr_get_string;
+ string_attr_impl->string_attr.ops->convert =
+ woden_string_attr_convert;
+
+
+ string_attr_impl->methods = axis2_hash_make(env);
+ if(!string_attr_impl->methods)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(string_attr_impl->methods, "free",
+ AXIS2_HASH_KEY_STRING, woden_string_attr_free);
+ axis2_hash_set(string_attr_impl->methods, "type",
+ AXIS2_HASH_KEY_STRING, woden_string_attr_type);
+ axis2_hash_set(string_attr_impl->methods, "get_string",
+ AXIS2_HASH_KEY_STRING, woden_string_attr_get_string);
+ axis2_hash_set(string_attr_impl->methods, "convert",
+ AXIS2_HASH_KEY_STRING, woden_string_attr_convert);
+
+ string_attr_impl->xml_attr = woden_xml_attr_create(env, owner_el,
+ owner_node, attr_type, attr_value);
+
+ return &(string_attr_impl->string_attr);
+}
+
+axis2_status_t AXIS2_CALL
+woden_string_attr_free(
+ void *string_attr,
+ const axis2_env_t *env)
+{
+ woden_string_attr_impl_t *string_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ string_attr_impl = INTF_TO_IMPL(string_attr);
+
+ if(string_attr_impl->methods)
+ {
+ axis2_hash_free(string_attr_impl->methods, env);
+ string_attr_impl->methods = NULL;
+ }
+
+ if(string_attr_impl->xml_attr)
+ {
+ WODEN_XML_ATTR_FREE(string_attr_impl->xml_attr, env);
+ string_attr_impl->xml_attr = NULL;
+ }
+
+ if((&(string_attr_impl->string_attr))->ops)
+ {
+ AXIS2_FREE(env->allocator, (&(string_attr_impl->string_attr))->ops);
+ (&(string_attr_impl->string_attr))->ops = NULL;
+ }
+
+ if(string_attr_impl)
+ {
+ AXIS2_FREE(env->allocator, string_attr_impl);
+ string_attr_impl = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+woden_obj_types_t AXIS2_CALL
+woden_string_attr_type(
+ void *string_attr,
+ const axis2_env_t *env)
+{
+ woden_string_attr_impl_t *string_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ string_attr_impl = INTF_TO_IMPL(string_attr);
+
+ return string_attr_impl->obj_type;
+}
+
+woden_xml_attr_t *AXIS2_CALL
+woden_string_attr_get_base_impl(
+ void *string_attr,
+ const axis2_env_t *env)
+{
+ woden_string_attr_impl_t *string_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ string_attr_impl = INTF_TO_IMPL(string_attr);
+
+ return string_attr_impl->xml_attr;
+}
+
+axis2_status_t AXIS2_CALL
+woden_string_attr_resolve_methods(
+ woden_string_attr_t *string_attr,
+ const axis2_env_t *env,
+ axis2_hash_t *methods)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, methods, AXIS2_FAILURE);
+
+ string_attr->ops->free =
+ axis2_hash_get(methods, "free", AXIS2_HASH_KEY_STRING);
+ string_attr->ops->to_string_attr_free = axis2_hash_get(methods,
+ "to_string_attr_free", AXIS2_HASH_KEY_STRING);
+ string_attr->ops->type = axis2_hash_get(methods,
+ "type", AXIS2_HASH_KEY_STRING);
+ string_attr->ops->get_string = axis2_hash_get(methods,
+ "get_string", AXIS2_HASH_KEY_STRING);
+ string_attr->ops->convert = axis2_hash_get(methods,
+ "convert", AXIS2_HASH_KEY_STRING);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_char_t *AXIS2_CALL
+woden_string_attr_get_string(
+ void *string_attr,
+ const axis2_env_t *env)
+{
+ woden_string_attr_impl_t *string_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ string_attr_impl = INTF_TO_IMPL(string_attr);
+ return (axis2_char_t *) WODEN_XML_ATTR_GET_CONTENT(
+ string_attr_impl->xml_attr, env);
+}
+
+void *AXIS2_CALL
+woden_string_attr_convert(
+ void *string_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value)
+{
+ woden_string_attr_impl_t *string_attr_impl = NULL;
+ axis2_char_t *str = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ string_attr_impl = INTF_TO_IMPL(string_attr);
+
+ if(attr_value)
+ {
+ str = AXIS2_STRDUP(attr_value, env);
+ if(!str)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ }
+
+ if(!str)
+ {
+ WODEN_XML_ATTR_SET_VALID(string_attr_impl->xml_attr, env, AXIS2_FALSE);
+ /* TODO handler error */
+ }
+
+ return str;
+}
+
Added: webservices/axis2/trunk/c/woden/src/xml/uri_attr.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/xml/uri_attr.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/src/xml/uri_attr.c (added)
+++ webservices/axis2/trunk/c/woden/src/xml/uri_attr.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,251 @@
+/*
+ * 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_uri_attr.h>
+#include <woden_xml_attr.h>
+#include <axis2_uri.h>
+#include <axiom_element.h>
+#include <axiom_node.h>
+
+typedef struct woden_uri_attr_impl woden_uri_attr_impl_t;
+
+/**
+ * @brief URI Attribute Struct Impl
+ * Axis2 URI Attribute
+ */
+struct woden_uri_attr_impl
+{
+ woden_uri_attr_t uri_attr;
+ woden_xml_attr_t *xml_attr;
+ woden_obj_types_t obj_type;
+ axis2_hash_t *methods;
+};
+
+#define INTF_TO_IMPL(uri_attr) \
+ ((woden_uri_attr_impl_t *) uri_attr)
+
+axis2_status_t AXIS2_CALL
+woden_uri_attr_free(
+ void *uri_attr,
+ const axis2_env_t *env);
+
+woden_obj_types_t AXIS2_CALL
+woden_uri_attr_type(
+ void *uri_attr,
+ const axis2_env_t *env);
+
+woden_xml_attr_t *AXIS2_CALL
+woden_uri_attr_get_base_impl(
+ void *uri_attr,
+ const axis2_env_t *env);
+
+axis2_uri_t *AXIS2_CALL
+woden_uri_attr_get_uri(
+ void *uri_attr,
+ const axis2_env_t *env);
+
+void *AXIS2_CALL
+woden_uri_attr_convert(
+ void *uri_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value);
+
+/*
+ * TODO This constructor is not used for extension attributes, but may be useful if
+ * parsing of native WSDL attributes is changed to use the XMLAttr interface.
+ */
+AXIS2_EXTERN woden_uri_attr_t * AXIS2_CALL
+woden_uri_attr_create(
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value)
+{
+ woden_uri_attr_impl_t *uri_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ uri_attr_impl = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_uri_attr_impl_t));
+
+ uri_attr_impl->obj_type = WODEN_URI_ATTR;
+ uri_attr_impl->xml_attr = NULL;
+ uri_attr_impl->methods = NULL;
+ uri_attr_impl->uri_attr.ops =
+ AXIS2_MALLOC(env->allocator,
+ sizeof(woden_uri_attr_ops_t));
+
+ uri_attr_impl->uri_attr.ops->free =
+ woden_uri_attr_free;
+ uri_attr_impl->uri_attr.ops->type =
+ woden_uri_attr_type;
+ uri_attr_impl->uri_attr.ops->get_base_impl =
+ woden_uri_attr_get_base_impl;
+ uri_attr_impl->uri_attr.ops->get_uri =
+ woden_uri_attr_get_uri;
+ uri_attr_impl->uri_attr.ops->convert =
+ woden_uri_attr_convert;
+
+
+ uri_attr_impl->methods = axis2_hash_make(env);
+ if(!uri_attr_impl->methods)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_hash_set(uri_attr_impl->methods, "free",
+ AXIS2_HASH_KEY_STRING, woden_uri_attr_free);
+ axis2_hash_set(uri_attr_impl->methods, "type",
+ AXIS2_HASH_KEY_STRING, woden_uri_attr_type);
+ axis2_hash_set(uri_attr_impl->methods, "get_uri",
+ AXIS2_HASH_KEY_STRING, woden_uri_attr_get_uri);
+ axis2_hash_set(uri_attr_impl->methods, "convert",
+ AXIS2_HASH_KEY_STRING, woden_uri_attr_convert);
+
+ uri_attr_impl->xml_attr = woden_xml_attr_create(env, owner_el,
+ owner_node, attr_type, attr_value);
+
+ return &(uri_attr_impl->uri_attr);
+}
+
+woden_obj_types_t AXIS2_CALL
+woden_uri_attr_type(
+ void *uri_attr,
+ const axis2_env_t *env)
+{
+ woden_uri_attr_impl_t *uri_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ uri_attr_impl = INTF_TO_IMPL(uri_attr);
+
+ return uri_attr_impl->obj_type;
+}
+
+axis2_status_t AXIS2_CALL
+woden_uri_attr_free(
+ void *uri_attr,
+ const axis2_env_t *env)
+{
+ woden_uri_attr_impl_t *uri_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ uri_attr_impl = INTF_TO_IMPL(uri_attr);
+
+ if(uri_attr_impl->methods)
+ {
+ axis2_hash_free(uri_attr_impl->methods, env);
+ uri_attr_impl->methods = NULL;
+ }
+
+ if(uri_attr_impl->xml_attr)
+ {
+ WODEN_XML_ATTR_FREE(uri_attr_impl->xml_attr, env);
+ uri_attr_impl->xml_attr = NULL;
+ }
+
+ if((&(uri_attr_impl->uri_attr))->ops)
+ {
+ AXIS2_FREE(env->allocator, (&(uri_attr_impl->uri_attr))->ops);
+ (&(uri_attr_impl->uri_attr))->ops = NULL;
+ }
+
+ if(uri_attr_impl)
+ {
+ AXIS2_FREE(env->allocator, uri_attr_impl);
+ uri_attr_impl = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+woden_xml_attr_t *AXIS2_CALL
+woden_uri_attr_get_base_impl(
+ void *uri_attr,
+ const axis2_env_t *env)
+{
+ woden_uri_attr_impl_t *uri_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ uri_attr_impl = INTF_TO_IMPL(uri_attr);
+
+ return uri_attr_impl->xml_attr;
+}
+
+axis2_status_t AXIS2_CALL
+woden_uri_attr_resolve_methods(
+ woden_uri_attr_t *uri_attr,
+ const axis2_env_t *env,
+ axis2_hash_t *methods)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, methods, AXIS2_FAILURE);
+
+ uri_attr->ops->free = axis2_hash_get(methods,
+ "free", AXIS2_HASH_KEY_STRING);
+ uri_attr->ops->to_uri_attr_free = axis2_hash_get(methods,
+ "to_uri_attr_free", AXIS2_HASH_KEY_STRING);
+ uri_attr->ops->type = axis2_hash_get(methods,
+ "type", AXIS2_HASH_KEY_STRING);
+ uri_attr->ops->get_uri = axis2_hash_get(methods,
+ "get_uri", AXIS2_HASH_KEY_STRING);
+ uri_attr->ops->convert = axis2_hash_get(methods,
+ "convert", AXIS2_HASH_KEY_STRING);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_uri_t *AXIS2_CALL
+woden_uri_attr_get_uri(
+ void *uri_attr,
+ const axis2_env_t *env)
+{
+ woden_uri_attr_impl_t *uri_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ uri_attr_impl = INTF_TO_IMPL(uri_attr);
+ return (axis2_uri_t *) WODEN_XML_ATTR_GET_CONTENT(
+ uri_attr_impl->xml_attr, env);
+}
+
+void *AXIS2_CALL
+woden_uri_attr_convert(
+ void *uri_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_char_t *attr_value)
+{
+ woden_uri_attr_impl_t *uri_attr_impl = NULL;
+ axis2_uri_t *url = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ uri_attr_impl = INTF_TO_IMPL(uri_attr);
+
+ if(attr_value)
+ {
+ /* TODO url = axis2_uri_create(env, attr_value);*/
+ }
+
+ if(!url)
+ {
+ WODEN_XML_ATTR_SET_VALID(uri_attr_impl->xml_attr, env, AXIS2_FALSE);
+ /* TODO handler error */
+ }
+
+ return url;
+}
+
Added: webservices/axis2/trunk/c/woden/src/xml/xml_attr.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/xml/xml_attr.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/src/xml/xml_attr.c (added)
+++ webservices/axis2/trunk/c/woden/src/xml/xml_attr.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,285 @@
+/*
+ * 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_xml_attr.h>
+#include <axis2_uri.h>
+#include <axis2_hash.h>
+#include <axiom_element.h>
+#include <axiom_node.h>
+
+typedef struct woden_xml_attr_impl woden_xml_attr_impl_t;
+
+/**
+ * @brief Xml Attribute Struct Impl
+ * Axis2 Xml Attribute
+ */
+struct woden_xml_attr_impl
+{
+ woden_xml_attr_t xml_attr;
+ axis2_qname_t *f_attr_type;
+ axis2_generic_obj_t *f_content;
+ axis2_char_t *f_external_form;
+ axis2_bool_t f_valid;
+};
+
+#define INTF_TO_IMPL(xml_attr) ((woden_xml_attr_impl_t *) xml_attr)
+
+axis2_status_t AXIS2_CALL
+woden_xml_attr_free(
+ void *xml_attr,
+ const axis2_env_t *envv);
+
+axis2_status_t AXIS2_CALL
+woden_xml_attr_init(
+ void *xml_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value);
+
+axis2_qname_t *AXIS2_CALL
+woden_xml_attr_get_attribute_type(
+ void *xml_attr,
+ const axis2_env_t *env);
+
+axis2_generic_obj_t *AXIS2_CALL
+woden_xml_attr_get_content(
+ void *xml_attr,
+ const axis2_env_t *env);
+
+axis2_char_t *AXIS2_CALL
+woden_xml_attr_to_external_form(
+ void *xml_attr,
+ const axis2_env_t *env);
+
+axis2_bool_t AXIS2_CALL
+woden_xml_attr_is_valid(
+ void *xml_attr,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+woden_xml_attr_set_valid(
+ void *xml_attr,
+ const axis2_env_t *env,
+ axis2_bool_t validity);
+
+AXIS2_EXTERN woden_xml_attr_t * AXIS2_CALL
+woden_xml_attr_create(
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ xml_attr_impl = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_xml_attr_impl_t));
+
+ xml_attr_impl->f_attr_type = NULL;
+ xml_attr_impl->f_content = NULL;
+ xml_attr_impl->f_external_form = NULL;
+ xml_attr_impl->f_valid = AXIS2_TRUE;
+
+ xml_attr_impl->xml_attr.ops = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_xml_attr_ops_t));
+
+ woden_xml_attr_init(&(xml_attr_impl->xml_attr), env, owner_el,
+ owner_node, attr_type, attr_value);
+
+ xml_attr_impl->xml_attr.ops->free = woden_xml_attr_free;
+ xml_attr_impl->xml_attr.ops->init = woden_xml_attr_init;
+ xml_attr_impl->xml_attr.ops->get_attribute_type =
+ woden_xml_attr_get_attribute_type;
+ xml_attr_impl->xml_attr.ops->get_content = woden_xml_attr_get_content;
+ xml_attr_impl->xml_attr.ops->to_external_form =
+ woden_xml_attr_to_external_form;
+ xml_attr_impl->xml_attr.ops->is_valid = woden_xml_attr_is_valid;
+ xml_attr_impl->xml_attr.ops->set_valid = woden_xml_attr_set_valid;
+
+ return &(xml_attr_impl->xml_attr);
+}
+
+axis2_status_t AXIS2_CALL
+woden_xml_attr_free(
+ void *xml_attr,
+ const axis2_env_t *env)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+
+ if(xml_attr_impl->f_attr_type)
+ {
+ AXIS2_QNAME_FREE(xml_attr_impl->f_attr_type, env);
+ xml_attr_impl->f_attr_type = NULL;
+ }
+
+ if(xml_attr_impl->f_external_form)
+ {
+ AXIS2_FREE(env->allocator, xml_attr_impl->f_external_form);
+ xml_attr_impl->f_external_form = NULL;
+ }
+
+ if((&(xml_attr_impl->xml_attr))->ops)
+ {
+ AXIS2_FREE(env->allocator, (&(xml_attr_impl->xml_attr))->ops);
+ (&(xml_attr_impl->xml_attr))->ops = NULL;
+ }
+
+ if(xml_attr_impl)
+ {
+ AXIS2_FREE(env->allocator, xml_attr_impl);
+ xml_attr_impl = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+woden_xml_attr_resolve_methods(
+ woden_xml_attr_t *xml_attr,
+ const axis2_env_t *env,
+ axis2_hash_t *methods)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, methods, AXIS2_FAILURE);
+
+ xml_attr->ops = AXIS2_MALLOC(env->allocator,
+ sizeof(woden_xml_attr_ops_t));
+ xml_attr->ops->free = axis2_hash_get(methods, "free", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->type = axis2_hash_get(methods, "type", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->init = axis2_hash_get(methods,
+ "init", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->get_attribute_type = axis2_hash_get(methods,
+ "get_attribute_type", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->get_content = axis2_hash_get(methods,
+ "get_content", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->to_external_form = axis2_hash_get(methods,
+ "to_external_form", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->is_valid = axis2_hash_get(methods,
+ "is_valid", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->convert = axis2_hash_get(methods,
+ "convert", AXIS2_HASH_KEY_STRING);
+ xml_attr->ops->set_valid = axis2_hash_get(methods,
+ "set_valid", AXIS2_HASH_KEY_STRING);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+woden_xml_attr_init(
+ void *xml_attr,
+ const axis2_env_t *env,
+ axiom_element_t *owner_el,
+ axiom_node_t *owner_node,
+ axis2_qname_t *attr_type,
+ axis2_char_t *attr_value)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, owner_el, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, owner_node, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, attr_type, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, attr_value, AXIS2_FAILURE);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+
+ if(xml_attr_impl->f_attr_type)
+ {
+ AXIS2_QNAME_FREE(xml_attr_impl->f_attr_type, env);
+ xml_attr_impl->f_attr_type = NULL;
+ }
+ xml_attr_impl->f_attr_type = AXIS2_QNAME_CLONE(attr_type, env);
+ if(xml_attr_impl->f_attr_type)
+ {
+ AXIS2_QNAME_FREE(xml_attr_impl->f_attr_type, env);
+ xml_attr_impl->f_attr_type = NULL;
+ }
+ xml_attr_impl->f_external_form = AXIS2_STRDUP(attr_value, env);
+ xml_attr_impl->f_content = xml_attr_impl->xml_attr.ops->
+ convert(&(xml_attr_impl->xml_attr), env, owner_el, owner_node,
+ attr_value);
+ if(!xml_attr_impl->f_content)
+ xml_attr_impl->f_valid = AXIS2_FALSE;
+ return AXIS2_SUCCESS;
+}
+
+axis2_qname_t *AXIS2_CALL
+woden_xml_attr_get_attribute_type(
+ void *xml_attr,
+ const axis2_env_t *env)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+
+ return xml_attr_impl->f_attr_type;
+}
+
+axis2_generic_obj_t *AXIS2_CALL
+woden_xml_attr_get_content(
+ void *xml_attr,
+ const axis2_env_t *env)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+ return xml_attr_impl->f_content;
+}
+
+axis2_char_t *AXIS2_CALL
+woden_xml_attr_to_external_form(
+ void *xml_attr,
+ const axis2_env_t *env)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+ return xml_attr_impl->f_external_form;
+}
+
+axis2_bool_t AXIS2_CALL
+woden_xml_attr_is_valid(
+ void *xml_attr,
+ const axis2_env_t *env)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+ return xml_attr_impl->f_valid;
+}
+
+axis2_status_t AXIS2_CALL
+ woden_xml_attr_set_valid(
+ void *xml_attr,
+ const axis2_env_t *env,
+ axis2_bool_t validity)
+{
+ woden_xml_attr_impl_t *xml_attr_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ xml_attr_impl = INTF_TO_IMPL(xml_attr);
+ xml_attr_impl->f_valid = validity;
+ return AXIS2_SUCCESS;
+}
+
Added: webservices/axis2/trunk/c/woden/test/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/test/Makefile.am?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/test/Makefile.am (added)
+++ webservices/axis2/trunk/c/woden/test/Makefile.am Wed Jul 5 23:02:19 2006
@@ -0,0 +1,29 @@
+TESTS = woden_test
+lib_LTLIBRARIES = libtest_woden.la
+libtest_woden_la_SOURCES = \
+ woden_test.c
+
+noinst_HEADERS= \
+ $(top_builddir)/test/*.h
+
+INCLUDES = -I$(top_builddir)/include \
+ -I${CUTEST_HOME}/include \
+ @AXIOMINC@ \
+ @UTILINC@ \
+ @XMLSCHEMAINC@
+
+noinst_PROGRAMS = woden_test
+check_PROGRAMS = woden_test
+woden_test_SOURCES = main.c
+woden_test_LDADD = \
+ libtest_woden.la \
+ ../src/wsdl20/libwoden_wsdl20.la \
+ -L$(CUTEST_HOME)/lib \
+ -lcutest \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_xml_schema \
+ -laxis2_parser \
+ $(GUTHTHILA_LIBS) \
+ $(LIBXML2_LIBS)
+
Added: webservices/axis2/trunk/c/woden/test/main.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/test/main.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/test/main.c (added)
+++ webservices/axis2/trunk/c/woden/test/main.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,36 @@
+/*
+ * 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_test.h"
+
+void RunAllTests(
+ void)
+{
+ CuString *output = CuStringNew();
+ CuSuite* suite = woden_GetSuite();
+ CuSuiteRun(suite);
+ CuSuiteSummary(suite, output);
+ CuSuiteDetails(suite, output);
+ printf("%s", output->buffer);
+}
+
+int main(void)
+{
+ RunAllTests();
+ getchar();
+ return 0;
+}
+
Added: webservices/axis2/trunk/c/woden/test/resources/primer-hotelReservationService.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/test/resources/primer-hotelReservationService.wsdl?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/test/resources/primer-hotelReservationService.wsdl (added)
+++ webservices/axis2/trunk/c/woden/test/resources/primer-hotelReservationService.wsdl Wed Jul 5 23:02:19 2006
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<description
+ xmlns="http://www.w3.org/2006/01/wsdl"
+ targetNamespace= "http://greath.example.com/2004/wsdl/resSvc"
+ xmlns:tns= "http://greath.example.com/2004/wsdl/resSvc"
+ xmlns:ghns = "http://greath.example.com/2004/schemas/resSvc"
+ xmlns:wsoap= "http://www.w3.org/2004/08/wsdl/soap12"
+ xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
+
+ <documentation>
+ This document describes the GreatH Web service. Additional
+ application-level requirements for use of this service --
+ beyond what WSDL 2.0 is able to describe -- are available
+ at http://greath.example.com/2004/reservation-documentation.html
+ </documentation>
+
+ <types>
+ <xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://greath.example.com/2004/schemas/resSvc"
+ xmlns="http://greath.example.com/2004/schemas/resSvc">
+
+ <xs:element name="checkAvailability" type="tCheckAvailability"/>
+ <xs:complexType name="tCheckAvailability">
+ <xs:sequence>
+ <xs:element name="checkInDate" type="xs:date"/>
+ <xs:element name="checkOutDate" type="xs:date"/>
+ <xs:element name="roomType" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="checkAvailabilityResponse" type="xs:double"/>
+
+ <xs:element name="invalidDataError" type="xs:string"/>
+
+ </xs:schema>
+ </types>
+
+ <interface name = "reservationInterface" >
+
+ <fault name = "invalidDataFault"
+ element = "ghns:invalidDataError"/>
+
+ <operation name="opCheckAvailability"
+ pattern="http://www.w3.org/2004/03/wsdl/in-out" >
+ <input messageLabel="In"
+ element="ghns:checkAvailability" />
+ <output messageLabel="Out"
+ element="ghns:checkAvailabilityResponse" />
+ <outfault ref="tns:invalidDataFault" messageLabel="Out"/>
+ </operation>
+
+ </interface>
+
+ <binding name="reservationSOAPBinding"
+ interface="tns:reservationInterface"
+ type="http://www.w3.org/2004/08/wsdl/soap12"
+ wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">
+
+ <operation ref="tns:opCheckAvailability"
+ wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response"/>
+
+ <fault ref="tns:invalidDataFault"
+ wsoap:code="soap:Sender"/>
+
+ </binding>
+
+ <service name="reservationService"
+ interface="tns:reservationInterface">
+
+ <endpoint name="reservationEndpoint"
+ binding="tns:reservationSOAPBinding"
+ address ="http://greath.example.com/2004/reservation"/>
+
+ </service>
+
+</description>
Added: webservices/axis2/trunk/c/woden/test/woden_test.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/test/woden_test.c?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/test/woden_test.c (added)
+++ webservices/axis2/trunk/c/woden/test/woden_test.c Wed Jul 5 23:02:19 2006
@@ -0,0 +1,98 @@
+/*
+ * 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 <CuTest.h>
+#include <stdio.h>
+#include <axiom.h>
+#include <axiom_xml_reader.h>
+#include <axis2_env.h>
+#include <axis2_utils.h>
+#include <platforms/axis2_platform_auto_sense.h>
+#include <woden_reader.h>
+#include <woden_desc.h>
+#include <woden_interface.h>
+
+#include <axiom.h>
+#include "woden_test.h"
+
+
+static axiom_document_t*
+get_root_element_from_filename(
+ const axis2_env_t *env,
+ axis2_char_t *filename);
+
+void test_read_wsdl(
+ CuTest *tc);
+
+CuSuite* woden_GetSuite()
+{
+ CuSuite* suite = CuSuiteNew();
+
+ SUITE_ADD_TEST(suite, test_read_wsdl);
+
+ return suite;
+}
+
+void test_read_wsdl(
+ CuTest *tc)
+{
+ axis2_env_t *env = NULL;
+ axiom_document_t *om_doc = NULL;
+ axis2_char_t *doc_base_uri = NULL;
+ axis2_char_t *axis2c_home = NULL;
+ void *reader = NULL;
+ void *desc = NULL;
+ void *intface = NULL;
+ axis2_array_list_t *intfaces = NULL;
+ axis2_qname_t *intface_qname = NULL;
+
+
+ axis2_char_t *filename = "./resources/Calculator.wsdl";
+
+ env = axis2_env_create_all("test.log", 1);
+
+ om_doc = get_root_element_from_filename(env, filename);
+ axis2c_home = AXIS2_GETENV("AXIS2C_HOME");
+ doc_base_uri = AXIS2_STRACAT (axis2c_home, "/woden", env);
+ reader = (void *)woden_reader_create(env);
+
+ desc = (void *)WODEN_READER_READ_WSDL(reader, env, om_doc, doc_base_uri);
+ CuAssertPtrNotNull(tc, desc);
+ intfaces = WODEN_DESC_GET_INTERFACES(desc, env);
+ CuAssertPtrNotNull(tc, intfaces);
+ intface = AXIS2_ARRAY_LIST_GET(intfaces, env, 0);
+ CuAssertPtrNotNull(tc, intface);
+ intface_qname = WODEN_INTERFACE_GET_QNAME(intface, env);
+ CuAssertPtrNotNull(tc, intface_qname);
+}
+
+static axiom_document_t*
+get_root_element_from_filename(
+ const axis2_env_t *env,
+ axis2_char_t *filename)
+{
+ axiom_xml_reader_t *reader = NULL;
+ axiom_stax_builder_t *om_builder = NULL;
+ axiom_document_t *doc = NULL;
+
+ reader = axiom_xml_reader_create_for_file(env, filename, NULL);
+ om_builder = axiom_stax_builder_create(env, reader);
+ doc = axiom_document_create(env, NULL, om_builder);
+ AXIOM_DOCUMENT_BUILD_ALL(doc, env);
+
+ return doc;
+}
+
Added: webservices/axis2/trunk/c/woden/test/woden_test.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/test/woden_test.h?rev=419452&view=auto
==============================================================================
--- webservices/axis2/trunk/c/woden/test/woden_test.h (added)
+++ webservices/axis2/trunk/c/woden/test/woden_test.h Wed Jul 5 23:02:19 2006
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WODEN_TEST_H
+#define WODEN_TEST_H
+
+#include <CuTest.h>
+#include <stdio.h>
+
+CuSuite* woden_GetSuite();
+
+void test_read_wsdl(CuTest *tc);
+
+#endif /* WODEN_TEST_H */
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org