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