You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by da...@apache.org on 2006/05/08 09:21:21 UTC

svn commit: r404947 [1/7] - in /webservices/axis2/trunk/c/modules/wsdl/woden: ./ include/woden/ include/woden/schema/ include/woden/wsdl20/ include/woden/wsdl20/extensions/ include/woden/wsdl20/xml/ include/woden/xml/ src/schema/ src/util/ src/wsdl20/ ...

Author: damitha
Date: Mon May  8 00:21:09 2006
New Revision: 404947

URL: http://svn.apache.org/viewcvs?rev=404947&view=rev
Log:
Added new files

Added:
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentable.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentation.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_feature.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_nested_component.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_types.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_configurable_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_feature_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_property_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_types_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/documentable.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/documentation.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/feature.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/nested_component.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/types.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/wsdl_component.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/Makefile.am
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/configurable_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/documentable_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/documentation_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/feature_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/nested_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/property_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/xml/types_element.c
Modified:
    webservices/axis2/trunk/c/modules/wsdl/woden/build.sh
    webservices/axis2/trunk/c/modules/wsdl/woden/configure.ac
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/axis2_woden_wsdl_obj.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_imported_schema.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_inlined_schema.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_schema.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_wsdl_component.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_attr_extensible.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_component_exts.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_element_extensible.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentable_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentation_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_nested_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_wsdl_element.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_bool_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_qname_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_qname_list_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_qname_list_or_token_any_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_qname_or_token_any_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_string_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_uri_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/xml/axis2_woden_xml_attr.h
    webservices/axis2/trunk/c/modules/wsdl/woden/src/schema/Makefile.am
    webservices/axis2/trunk/c/modules/wsdl/woden/src/schema/imported_schema.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/schema/inlined_schema.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/schema/schema.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/util/om_util.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/Makefile.am
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/extensions/Makefile.am
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/extensions/attr_extensible.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/extensions/component_exts.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/extensions/element_extensible.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/wsdl_element.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/wsdl20/wsdl_obj.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/Makefile.am
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/bool_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/qname_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/qname_list_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/qname_list_or_token_any_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/qname_or_token_any_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/string_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/uri_attr.c
    webservices/axis2/trunk/c/modules/wsdl/woden/src/xml/xml_attr.c

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/build.sh
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/build.sh?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/build.sh (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/build.sh Mon May  8 00:21:09 2006
@@ -1,4 +1,4 @@
 #!/bin/bash
 ./autogen.sh
-./configure
+./configure --enable-static=no
 make

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/configure.ac
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/configure.ac?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/configure.ac (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/configure.ac Mon May  8 00:21:09 2006
@@ -44,6 +44,7 @@
     src/schema/Makefile \
     src/xml/Makefile \
     src/wsdl20/Makefile \
+    src/wsdl20/xml/Makefile \
     src/wsdl20/extensions/Makefile
     ])
     

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/axis2_woden_wsdl_obj.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/axis2_woden_wsdl_obj.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/axis2_woden_wsdl_obj.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/axis2_woden_wsdl_obj.h Mon May  8 00:21:09 2006
@@ -30,8 +30,9 @@
  * 
  */
 
-#include <woden/axis2_woden_wsdl_element.h>
-#include <woden/axis2_woden_wsdl_component.h>
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_wsdl_element.h>
+#include <woden/wsdl20/axis2_woden_wsdl_component.h>
 
 /** @defgroup axis2_woden_wsdl_obj Wsdl Object
   * @ingroup axis2_wsdl
@@ -55,36 +56,46 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *wsdl_obj,
+    free) (
+            void *wsdl_obj,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *wsdl_obj,
             axis2_env_t **env);
 
     /**
      * @return the base implementation class
      */
     axis2_woden_wsdl_element_t *(AXIS2_CALL *
-    get_base_impl) (void *wsdl_obj,
-                    axis2_env_t **env);
+    get_base_impl) (
+            void *wsdl_obj,
+            axis2_env_t **env);
 
     struct axis2_woden_component_exts *(AXIS2_CALL *
-    get_component_exts_for_namespace) (void *wsdl_obj,
-                                            axis2_env_t **env,
-                                            axis2_url_t *namespc);
+    get_component_exts_for_namespace) (
+            void *wsdl_obj,
+            axis2_env_t **env,
+            axis2_url_t *namespc);
+    
     /*
      * Store the extensions in a map using the namespace string as the key.
      * If the extensions value is null, delete any existing entry in the map
      * for this namespace. If the nsmespace string is null, do nothing.
      */
     axis2_status_t (AXIS2_CALL *
-    set_component_exts) (void *wsdl_obj,
-                            axis2_env_t **env,
-                            axis2_url_t *namespc,
-                            struct axis2_woden_component_exts *exts);
+    set_component_exts) (
+            void *wsdl_obj,
+            axis2_env_t **env,
+            axis2_url_t *namespc,
+            struct axis2_woden_component_exts *exts);
 };
 
 union axis2_woden_wsdl_obj_base
 {
-    axis2_woden_wsdl_element_t element_base;
-    axis2_woden_wsdl_component_t component_base;
+    axis2_woden_wsdl_element_t wsdl_element;
+    axis2_woden_wsdl_component_t wsdl_component;
 };
 
 struct axis2_woden_wsdl_obj
@@ -94,25 +105,23 @@
 };
 
 AXIS2_DECLARE(axis2_woden_wsdl_obj_t *)
-axis2_woden_wsdl_obj_create(axis2_env_t **env);
-
-AXIS2_DECLARE(axis2_woden_wsdl_obj_t *)
-axis2_woden_wsdl_obj_create_for_wsdl_component(axis2_env_t **env);
+axis2_woden_wsdl_obj_create(
+        axis2_env_t **env);
 
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
+/************************Woden C Internal Methods******************************/
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_wsdl_obj_resolve_methods(axis2_woden_wsdl_obj_t *wsdl_obj,
-                                axis2_env_t **env,
-                                axis2_woden_wsdl_obj_t *wsdl_obj_impl,
-                                axis2_hash_t *methods);
-
+axis2_woden_wsdl_obj_resolve_methods(
+        axis2_woden_wsdl_obj_t *wsdl_obj,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_WSDL_OBJ_FREE(wsdl_obj, env) \
 		(((axis2_woden_wsdl_obj_t *) wsdl_obj)->ops->free(wsdl_obj, env))
 
+#define AXIS2_WODEN_WSDL_OBJ_TYPE(wsdl_obj, env) \
+		(((axis2_woden_wsdl_obj_t *) wsdl_obj)->ops->type(wsdl_obj, env))
+
 #define AXIS2_WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env) \
 		(((axis2_woden_wsdl_obj_t *) wsdl_obj)->ops->get_base_impl(wsdl_obj, env))
 
@@ -122,8 +131,8 @@
          get_component_exts_for_namespace(wsdl_obj, env, namespc))
 
 #define AXIS2_WODEN_WSDL_OBJ_SET_COMPONENT_EXTS(wsdl_obj, env, namespc, exts) \
-		(((axis2_woden_wsdl_obj_t *) wsdl_obj)->set_component_exts(wsdl_obj, \
-                                                           env, namespc, exts))
+		(((axis2_woden_wsdl_obj_t *) wsdl_obj)->ops->set_component_exts(\
+        wsdl_obj, env, namespc, exts))
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_imported_schema.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_imported_schema.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_imported_schema.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_imported_schema.h Mon May  8 00:21:09 2006
@@ -25,7 +25,7 @@
  *          <code>schemaLocation</code> attribute.
  */
 
-#include <woden/axis2_woden_schema.h>
+#include <woden/schema/axis2_woden_schema.h>
 
 /** @defgroup axis2_woden_imported_schema Imported Schema
   * @ingroup axis2_wsdl
@@ -47,46 +47,63 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *schema,
+    free) (
+            void *schema,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_imported_schema_free) (
+            void *schema,
             axis2_env_t **env);
 
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *schema,
+            axis2_env_t **env);
     /**
      * @return the base implementation class
      */
     axis2_woden_schema_t *(AXIS2_CALL *
-    get_base_impl) (void *schema,
-                    axis2_env_t **env);
+    get_base_impl) (
+            void *schema,
+            axis2_env_t **env);
 
     axis2_status_t (AXIS2_CALL *
-    set_location) (void *schema,
-                    axis2_env_t **env,
-                    struct axis2_url *location);
+    set_location) (
+            void *schema,
+            axis2_env_t **env,
+            struct axis2_url *location);
 
     struct axis2_url *(AXIS2_CALL *
-    get_location) (void *schema,
-                    axis2_env_t **env);
+    get_location) (
+            void *schema,
+            axis2_env_t **env);
 
   
 };
 
 struct axis2_woden_imported_schema
 {
-    axis2_woden_schema_t base;
+    axis2_woden_schema_t schema;
     axis2_woden_imported_schema_ops_t *ops;
 };
 
 AXIS2_DECLARE(axis2_woden_imported_schema_t *)
-axis2_woden_imported_schema_create(axis2_env_t **env);
+axis2_woden_imported_schema_create(
+        axis2_env_t **env);
+
+/************************Woden C Internal Methods******************************/
+AXIS2_DECLARE(axis2_woden_imported_schema_t *)
+axis2_woden_imported_schema_to_schema(
+        void *schema,
+        axis2_env_t **env);
 
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_imported_schema_resolve_methods(axis2_woden_imported_schema_t *schema,
-                                axis2_env_t **env,
-                                axis2_woden_imported_schema_t *schema_impl,
-                                axis2_hash_t *methods);
+axis2_woden_imported_schema_resolve_methods(
+        axis2_woden_imported_schema_t *schema,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_IMPORTED_SCHEMA_FREE(schema, env) \
 		(((axis2_woden_imported_schema_t *) schema)->ops->free(schema, env))

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_inlined_schema.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_inlined_schema.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_inlined_schema.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_inlined_schema.h Mon May  8 00:21:09 2006
@@ -20,12 +20,12 @@
 /**
  * @file axis2_woden_inlined_schema.h
  * @brief Axis2 Inlined Schema Interface
- *          This class represents an inlined schema, &lt;xs:schema&gt;. 
- *          It extends the abstract class SchemaImpl, adding support for the 
- *          <code>id</code> attribute.
+ * This class represents an inlined schema, &lt;xs:schema&gt;. 
+ * It extends the abstract class schema, adding support for the 
+ * <code>id</code> attribute.
  */
 
-#include <woden/axis2_woden_schema.h>
+#include <woden/schema/axis2_woden_schema.h>
 
 /** @defgroup axis2_woden_inlined_schema Inlined Schema
   * @ingroup axis2_wsdl
@@ -47,46 +47,63 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *schema,
+    free) (
+            void *schema,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_inlined_schema_free) (
+            void *schema,
             axis2_env_t **env);
 
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *schema,
+            axis2_env_t **env);
     /**
      * @return the base implementation class
      */
     axis2_woden_schema_t *(AXIS2_CALL *
-    get_base_impl) (void *schema,
-                    axis2_env_t **env);
+    get_base_impl) (
+            void *schema,
+            axis2_env_t **env);
 
     axis2_status_t (AXIS2_CALL *
-    set_id) (void *schema,
-                    axis2_env_t **env,
-                    axis2_char_t *id);
+    set_id) (
+            void *schema,
+            axis2_env_t **env,
+            axis2_char_t *id);
 
     axis2_char_t *(AXIS2_CALL *
-    get_id) (void *schema,
-                    axis2_env_t **env);
+    get_id) (
+            void *schema,
+            axis2_env_t **env);
 
   
 };
 
 struct axis2_woden_inlined_schema
 {
-    axis2_woden_schema_t base;
+    axis2_woden_schema_t schema;
     axis2_woden_inlined_schema_ops_t *ops;
 };
 
 AXIS2_DECLARE(axis2_woden_inlined_schema_t *)
-axis2_woden_inlined_schema_create(axis2_env_t **env);
+axis2_woden_inlined_schema_create(
+        axis2_env_t **env);
+
+/************************Woden C Internal Methods******************************/
+AXIS2_DECLARE(axis2_woden_inlined_schema_t *)
+axis2_woden_inlined_schema_to_schema(
+        void *schema,
+        axis2_env_t **env);
 
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_inlined_schema_resolve_methods(axis2_woden_inlined_schema_t *schema,
-                                axis2_env_t **env,
-                                axis2_woden_inlined_schema_t *schema_impl,
-                                axis2_hash_t *methods);
+axis2_woden_inlined_schema_resolve_methods(
+        axis2_woden_inlined_schema_t *schema,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_INLINED_SCHEMA_FREE(schema, env) \
 		(((axis2_woden_inlined_schema_t *) schema)->ops->free(schema, env))

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_schema.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_schema.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_schema.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/schema/axis2_woden_schema.h Mon May  8 00:21:09 2006
@@ -29,6 +29,8 @@
 #include <axis2_string.h>
 #include <axis2_const.h>
 #include <axis2_hash.h>
+#include <axis2_url.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -38,7 +40,6 @@
 typedef struct axis2_woden_schema axis2_woden_schema_t;
 typedef struct axis2_woden_schema_ops axis2_woden_schema_ops_t;
 struct axis2_xml_schema;
-struct axis2_url;
 
 /** @defgroup axis2_woden_schema Schema
   * @ingroup axis2_wsdl
@@ -52,26 +53,36 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *schema,
+    free) (
+            void *schema,
             axis2_env_t **env);
     
-      axis2_status_t (AXIS2_CALL *
-    set_namespace) (void *schema,
-                        axis2_env_t **env,
-                        struct axis2_url *namespc);
-
-    struct axis2_url *(AXIS2_CALL *
-    get_namespace) (void *schema,
-                        axis2_env_t **env);
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *schema,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    set_namespace) (
+            void *schema,
+            axis2_env_t **env,
+            axis2_url_t *namespc);
+
+    axis2_url_t *(AXIS2_CALL *
+    get_namespace) (
+            void *schema,
+            axis2_env_t **env);
 
     axis2_status_t (AXIS2_CALL *
-    set_schema_def) (void *schema,
-                        axis2_env_t **env,
-                        struct axis2_xml_schema *schema_def);
+    set_schema_def) (
+            void *schema,
+            axis2_env_t **env,
+            struct axis2_xml_schema *schema_def);
 
     struct axis2_xml_schema *(AXIS2_CALL *
-    get_schema_def) (void *schema,
-                        axis2_env_t **env);
+    get_schema_def) (
+            void *schema,
+            axis2_env_t **env);
 
     /* ************************************************************
      *  Non-API implementation methods
@@ -91,17 +102,20 @@
      * is disabled, any inlined or imported schema will be considered referenceable.
      */
     axis2_status_t (AXIS2_CALL *
-    set_referenceable) (void *schema,
-                        axis2_env_t **env,
-                        axis2_bool_t referenceable);
+    set_referenceable) (
+            void *schema,
+            axis2_env_t **env,
+            axis2_bool_t referenceable);
 
     axis2_bool_t (AXIS2_CALL *
-    is_referenceable) (void *schema,
-                        axis2_env_t **env);
+    is_referenceable) (
+            void *schema,
+            axis2_env_t **env);
 
     axis2_char_t *(AXIS2_CALL *
-    get_namespace_as_string) (void *schema,
-                                axis2_env_t **env);
+    get_namespace_as_string) (
+            void *schema,
+            axis2_env_t **env);
 
   
 };
@@ -114,19 +128,20 @@
 AXIS2_DECLARE(axis2_woden_schema_t *)
 axis2_woden_schema_create(axis2_env_t **env);
 
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
+/************************Woden C Internal Methods******************************/
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_schema_resolve_methods(axis2_woden_schema_t *schema,
-                                axis2_env_t **env,
-                                axis2_woden_schema_t *schema_impl,
-                                axis2_hash_t *methods);
+axis2_woden_schema_resolve_methods(
+        axis2_woden_schema_t *schema,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_SCHEMA_FREE(schema, env) \
 		(((axis2_woden_schema_t *) schema)->ops->free (schema, env))
 
+#define AXIS2_WODEN_SCHEMA_TYPE(schema, env) \
+		(((axis2_woden_schema_t *) schema)->ops->type (schema, env))
+
 #define AXIS2_WODEN_SCHEMA_SET_NAMESPACE(schema, env, namespc) \
 		(((axis2_woden_schema_t *) schema)->ops->set_namespace(schema, env, \
                                                                namespc))
@@ -138,7 +153,7 @@
 		(((axis2_woden_schema_t *) schema)->ops->set_schema_def(schema, env, \
                                                                 schema_def))
 
-#define AXIS2_WODEN_SCHEMA_GET_SHCEMA_DEF(schema, env) \
+#define AXIS2_WODEN_SCHEMA_GET_SCHEMA_DEF(schema, env) \
 		(((axis2_woden_schema_t *) schema)->ops->get_schema_def(schema, env))
 
 #define AXIS2_WODEN_SCHEMA_SET_REFERENCEABLE(schema, env, referenceable) \

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentable.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentable.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentable.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentable.h Mon May  8 00:21:09 2006
@@ -0,0 +1,136 @@
+/*
+ * 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 AXIS2_WODEN_DOCUMENTABLE_H
+#define AXIS2_WODEN_DOCUMENTABLE_H
+
+/**
+ * @file axis2_woden_documentable.h
+ * @brief Axis2 Documentable Interface
+ * An abstract superclass for WSDL 2.0 elements which can have &lt;documentation&gt; 
+ * child elements. That is, all WSDL 2.0 elements except the &lt;documentation&gt; 
+ * element itself. Defines accessor methods for manipulating DocumentationElements.
+ * 
+ */
+
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_documentable_element.h>
+#include <woden/axis2_woden_wsdl_obj.h>
+
+/** @defgroup axis2_woden_documentable Documentable
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+typedef union axis2_woden_documentable_base axis2_woden_documentable_base_t;
+typedef struct axis2_woden_documentable axis2_woden_documentable_t;
+typedef struct axis2_woden_documentable_ops axis2_woden_documentable_ops_t;
+struct axis2_woden_documentation_element;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct axis2_woden_documentable_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (
+            void *documentable,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    type) (
+            void *documentable,
+            axis2_env_t **env);
+    
+    /**
+     * @return the base implementation class
+     */
+    axis2_woden_wsdl_obj_t *(AXIS2_CALL *
+    get_base_impl) (
+            void *documentable,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    add_documentation_element) (
+            void *types,
+            axis2_env_t **env,
+            struct axis2_woden_documentation_element *documentation);
+
+    axis2_array_list_t *(AXIS2_CALL *
+    get_documentation_elements) (
+            void *types,
+            axis2_env_t **env);
+
+
+};
+
+union axis2_woden_documentable_base
+{
+    axis2_woden_wsdl_obj_t wsdl_obj;
+    axis2_woden_documentable_element_t documentable_elem;
+};
+
+struct axis2_woden_documentable
+{
+    axis2_woden_documentable_base_t base;
+    axis2_woden_documentable_ops_t *ops;
+};
+
+AXIS2_DECLARE(axis2_woden_documentable_t *)
+axis2_woden_documentable_create(
+        axis2_env_t **env);
+
+/************************Woden C Internal Methods******************************/
+AXIS2_DECLARE(axis2_status_t)
+axis2_woden_documentable_resolve_methods(
+        axis2_woden_documentable_t *documentable,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+
+#define AXIS2_WODEN_DOCUMENTABLE_FREE(documentable, env) \
+		(((axis2_woden_documentable_t *) documentable)->ops->\
+         free(documentable, env))
+
+#define AXIS2_WODEN_DOCUMENTABLE_TYPE(documentable, env) \
+		(((axis2_woden_documentable_t *) documentable)->ops->\
+         type(documentable, env))
+
+#define AXIS2_WODEN_DOCUMENTABLE_GET_BASE_IMPL(documentable, env) \
+		(((axis2_woden_documentable_t *) documentable)->ops->\
+         get_base_impl(documentable, env))
+
+#define AXIS2_WODEN_DOCUMENTABLE_ADD_DOCUMENTATION_ELEMENT(documentable, env, \
+        documentation) \
+		(((axis2_woden_documentable_t *) documentable)->ops->\
+         add_documentation_element(documentable, env, documentation))
+
+#define AXIS2_WODEN_DOCUMENTABLE_GET_DOCUMENTATION_ELEMENTS(documentable, env) \
+		(((axis2_woden_documentable_t *) documentable)->ops->\
+         get_documentation_elements(documentable, env))
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_DOCUMENTABLE_H */

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentation.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentation.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentation.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_documentation.h Mon May  8 00:21:09 2006
@@ -0,0 +1,130 @@
+/*
+ * 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 AXIS2_WODEN_DOCUMENTATION_H
+#define AXIS2_WODEN_DOCUMENTATION_H
+
+/**
+ * @file axis2_woden_documentation.h
+ * @brief Axis2 Documentation Interface
+ * This class implements support for parsing, creating and manipulating a
+ * WSDL 2.0 &lt;wsdl:documentation&gt; XML element.
+ * The &lt;wsdl:documentation&gt; element may contain mixed content, but this 
+ * class does not attempt to understand that content. Instead it just wraps
+ * the &lt;wsdl:documentation&gt; element's content model as a void *. 
+ * 
+ */
+
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_documentation_element.h>
+#include <woden/wsdl20/xml/axis2_woden_wsdl_element.h>
+
+/** @defgroup axis2_woden_documentation Documentation
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+typedef union axis2_woden_documentation_base axis2_woden_documentation_base_t;
+typedef struct axis2_woden_documentation axis2_woden_documentation_t;
+typedef struct axis2_woden_documentation_ops axis2_woden_documentation_ops_t;
+struct axis2_woden_documentation_element;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct axis2_woden_documentation_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (void *documentation,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_documentation_free) (void *documentation,
+            axis2_env_t **env);
+
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (void *documentation,
+            axis2_env_t **env);
+    /**
+     * @return the base implementation class
+     */
+    axis2_woden_wsdl_element_t *(AXIS2_CALL *
+    get_base_impl) (
+            void *documentation,
+            axis2_env_t **env);
+};
+
+union axis2_woden_documentation_base
+{
+    axis2_woden_wsdl_element_t wsdl_element;
+    axis2_woden_documentation_element_t documentation_element;
+};
+
+struct axis2_woden_documentation
+{
+    axis2_woden_documentation_base_t base;
+    axis2_woden_documentation_ops_t *ops;
+};
+
+AXIS2_DECLARE(axis2_woden_documentation_t *)
+axis2_woden_documentation_create(
+        axis2_env_t **env);
+
+/************************Woden C Internal Methods******************************/
+AXIS2_DECLARE(axis2_woden_documentation_t *)
+axis2_woden_documentation_to_documentation_element(
+        void *documentation,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_documentation_t *)
+axis2_woden_documentation_to_attr_extensible(
+        void *documentation,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_documentation_t *)
+axis2_woden_documentation_to_element_extensible(
+        void *documentation,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_status_t)
+axis2_woden_documentation_resolve_methods(
+        axis2_woden_documentation_t *documentation,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+
+#define AXIS2_WODEN_DOCUMENTATION_FREE(documentation, env) \
+		(((axis2_woden_documentation_t *) documentation)->ops->free(documentation, env))
+
+#define AXIS2_WODEN_DOCUMENTATION_TYPE(documentation, env) \
+		(((axis2_woden_documentation_t *) documentation)->ops->type(documentation, env))
+
+#define AXIS2_WODEN_DOCUMENTATION_GET_BASE_IMPL(documentation, env) \
+		(((axis2_woden_documentation_t *) documentation)->ops->get_base_impl(documentation, env))
+
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_DOCUMENTATION_H */

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_feature.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_feature.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_feature.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_feature.h Mon May  8 00:21:09 2006
@@ -0,0 +1,203 @@
+/*
+ * 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 AXIS2_WODEN_FEATURE_H
+#define AXIS2_WODEN_FEATURE_H
+
+/**
+ * @file axis2_woden_feature.h
+ * @brief Axis2 Feature Interface
+ * An abstract superclass for WSDL 2.0 elements which can have &lt;documentation&gt; 
+ * child elements. That is, all WSDL 2.0 elements except the &lt;documentation&gt; 
+ * element itself. Defines accessor methods for manipulating DocumentationElements.
+ * 
+ */
+
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_feature_element.h>
+#include <woden/axis2_woden_wsdl_obj.h>
+#include <woden/wsdl20/axis2_woden_documentable.h>
+#include <woden/wsdl20/axis2_woden_nested_component.h>
+
+/** @defgroup axis2_woden_feature Feature
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+typedef union axis2_woden_feature_base axis2_woden_feature_base_t;
+typedef struct axis2_woden_feature axis2_woden_feature_t;
+typedef struct axis2_woden_feature_ops axis2_woden_feature_ops_t;
+struct axis2_woden_documentation_element;
+struct axis2_woden_wsdl_component;
+struct axis2_woden_documentable;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct axis2_woden_feature_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (void *feature,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    to_feature_free) (void *feature,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (void *feature,
+            axis2_env_t **env);
+    /**
+     * @return the base implementation class
+     */
+    struct axis2_woden_documentable *(AXIS2_CALL *
+    get_base_impl) (
+            void *feature,
+            axis2_env_t **env);
+
+    axis2_url_t *(AXIS2_CALL *
+    get_ref) (
+            void *feature,
+            axis2_env_t **env);
+
+    axis2_bool_t (AXIS2_CALL *
+    is_required) (
+            void *feature,
+            axis2_env_t **env);
+
+    void *(AXIS2_CALL *
+    get_parent) (
+            void *feature,
+            axis2_env_t **env);
+
+    void *(AXIS2_CALL *
+    to_element)  (
+            void *feature,
+            axis2_env_t **env);
+
+};
+
+union axis2_woden_feature_base
+{
+    axis2_woden_documentable_t documentable;
+    axis2_woden_feature_element_t feature_element;
+    axis2_woden_nested_component_t nested_component;
+};
+
+struct axis2_woden_feature
+{
+    axis2_woden_feature_base_t base;
+    axis2_woden_feature_ops_t *ops;
+};
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_create(
+        axis2_env_t **env);
+
+
+/***************************Woden C Internal Methods***************************/
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_feature_element(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_nested_element(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_documentable_element(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_documentable(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_wsdl_obj(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_nested_component(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_wsdl_component(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_element_extensible(
+        void *feature,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_feature_t *)
+axis2_woden_feature_to_attr_extensible(
+        void *feature,
+        axis2_env_t **env);
+
+
+AXIS2_DECLARE(axis2_status_t)
+axis2_woden_feature_resolve_methods(
+        axis2_woden_feature_t *feature,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+#define AXIS2_WODEN_FEATURE_FREE(feature, env) \
+		(((axis2_woden_feature_t *) feature)->ops->free(feature, env))
+
+#define AXIS2_WODEN_FEATURE_TO_FEATURE_FREE(feature, env) \
+		(((axis2_woden_feature_t *) feature)->ops->to_feature_free(feature, env))
+
+#define AXIS2_WODEN_FEATURE_TYPE(feature, env) \
+		(((axis2_woden_feature_t *) feature)->ops->type(feature, env))
+
+#define AXIS2_WODEN_FEATURE_GET_BASE_IMPL(feature, env) \
+		(((axis2_woden_feature_t *) feature)->ops->get_base_impl(feature, env))
+
+#define AXIS2_WODEN_FEATURE_GET_REF(feature, env) \
+		(((axis2_woden_feature_t *) feature)->\
+         get_ref(feature, env))
+
+#define AXIS2_WODEN_FEATURE_IS_REQUIRED(feature, env) \
+		(((axis2_woden_feature_t *) feature)->\
+         is_required(feature, env))
+
+#define AXIS2_WODEN_FEATURE_GET_PARENT(feature, env) \
+		(((axis2_woden_feature_t *) feature)->ops->\
+         get_parent(feature, env))
+
+#define AXIS2_WODEN_FEATURE_TO_ELEMENT(feature, env) \
+		(((axis2_woden_feature_t *) feature)->ops->\
+         to_element(feature, env))
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_FEATURE_H */

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_nested_component.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_nested_component.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_nested_component.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_nested_component.h Mon May  8 00:21:09 2006
@@ -0,0 +1,119 @@
+/*
+ * 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 AXIS2_WODEN_NESTED_COMPONENT_H
+#define AXIS2_WODEN_NESTED_COMPONENT_H
+
+/**
+ * @file axis2_woden_nested_component.h
+ * @brief Axis2 Nested Component Interface
+ * Components which are nested within a 'top-level' component will extend
+ * this interface. These are Property, Feature and the sub components of
+ * Interface, Binding and Service. 
+ * <p>
+ * The components which are not nested are Description, Interface, 
+ * Binding, Service, ElementDeclaration and TypeDefinition.
+ *
+ */
+
+#include <axis2_allocator.h>
+#include <axis2_env.h>
+#include <axis2_error.h>
+#include <axis2_string.h>
+#include <axis2.h>
+#include <axis2_hash.h>
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/axis2_woden_wsdl_component.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_woden_nested_component axis2_woden_nested_component_t;
+typedef struct axis2_woden_nested_component_ops axis2_woden_nested_component_ops_t;
+struct axis2_woden_component_exts;
+
+/** @defgroup axis2_woden_nested_component Nested Component
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+struct axis2_woden_nested_component_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (
+            void *nested_component,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_nested_component_free) (
+            void *nested_component,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *nested_component,
+            axis2_env_t **env);
+
+    void *(AXIS2_CALL *
+    get_parent) (
+            void *nested_component,
+            axis2_env_t **env);
+
+};
+
+struct axis2_woden_nested_component
+{
+    axis2_woden_wsdl_component_t wsdl_component;
+    axis2_woden_nested_component_ops_t *ops;
+};
+
+/************************Woden C Internal Methods******************************/
+axis2_status_t AXIS2_CALL
+axis2_woden_nested_component_resolve_methods(
+        axis2_woden_nested_component_t *nested_component,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+#define AXIS2_WODEN_NESTED_COMPONENT_FREE(nested_component, env) \
+		(((axis2_woden_nested_component_t *) nested_component)->ops->\
+         free (nested_component, env))
+
+#define AXIS2_WODEN_NESTED_COMPONENT_TO_NESTED_COMPONENT_FREE(nested_component, \
+        env) \
+		(((axis2_woden_nested_component_t *) nested_component)->ops->\
+         to_nested_component_free (nested_component, env))
+
+#define AXIS2_WODEN_NESTED_COMPONENT_TYPE(nested_component, env) \
+		(((axis2_woden_nested_component_t *) nested_component)->ops->\
+         type (nested_component, env))
+
+#define AXIS2_WODEN_NESTED_COMPONENT_GET_PARENT(\
+        nested_component, env) \
+		(((axis2_woden_nested_component_t *) nested_component)->ops->\
+         get_parent(nested_component, env))
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_NESTED_COMPONENT_H */

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_types.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_types.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_types.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_types.h Mon May  8 00:21:09 2006
@@ -0,0 +1,298 @@
+/*
+ * 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 AXIS2_WODEN_TYPES_H
+#define AXIS2_WODEN_TYPES_H
+
+/**
+ * @file axis2_woden_types.h
+ * @brief Axis2 Types Interface
+ * An abstract superclass for WSDL 2.0 elements which can have &lt;documentation&gt; 
+ * child elements. That is, all WSDL 2.0 elements except the &lt;documentation&gt; 
+ * element itself. Defines accessor methods for manipulating DocumentationElements.
+ * 
+ */
+
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_types_element.h>
+#include <woden/wsdl20/axis2_woden_documentable.h>
+#include <woden/wsdl20/axis2_woden_nested_component.h>
+#include <woden/axis2_woden_wsdl_obj.h>
+#include <xml_schema/axis2_xml_schema.h>
+#include <xml_schema/axis2_xml_schema_element.h>
+#include <xml_schema/axis2_xml_schema_type.h>
+#include <axis2_array_list.h>
+
+
+/** @defgroup axis2_woden_types Types
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+typedef union axis2_woden_types_base axis2_woden_types_base_t;
+typedef struct axis2_woden_types axis2_woden_types_t;
+typedef struct axis2_woden_types_ops axis2_woden_types_ops_t;
+struct axis2_woden_documentation_element;
+struct axis2_woden_documentation;
+struct axis2_xml_schema;
+struct axis2_xml_schema_element;
+struct axis2_xml_schema_type;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct axis2_woden_types_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (void *types,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    to_types_free) (void *types,
+            axis2_env_t **env);
+
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (void *types,
+            axis2_env_t **env);
+    /**
+     * @return the base implementation class
+     */
+    struct axis2_woden_documentable *(AXIS2_CALL *
+    get_base_impl) (
+            void *types,
+            axis2_env_t **env);
+    
+    /* ************************************************************
+     *  Non-API implementation methods
+     * ************************************************************/
+
+    /* 
+     * 
+     * Returns the schema element declaration identified by the QName,
+     * providing the element declaration is referenceable to the 
+     * WSDL description (i.e. visible). This means it must exist in a
+     * Schema that has been inlined or resolved from a schema import
+     * within the &lt;types&gt; element according to the schema 
+     * referenceability rules in the WSDL 2.0 spec.
+     * If the element declaration is not referenceable, null is returned.
+     * If validation is disabled, the referenceability rules do not apply
+     * so all schemas are considered referenceable by the WSDL. 
+     * 
+     */
+    void *(AXIS2_CALL * 
+    get_element_declaration) (
+            void *types,
+            axis2_env_t **env,
+            axis2_qname_t *qname);
+
+    /*
+     * 
+     * Returns the schema type definition identified by the QName,
+     * providing the type definition is referenceable by the 
+     * WSDL description (i.e. visible). This means it must exist in a
+     * Schema that has been inlined or resolved from a schema import
+     * within the &lt;types&gt; element according to the schema
+     * referenceability rules in the WSDL 2.0 spec.
+     * If the type definition is not referenceable, null is returned.
+     * If validation is disabled, the referenceability rules do not apply
+     * so all schemas are considered referenceable by the WSDL.
+     *  
+     */
+    void *(AXIS2_CALL * 
+    get_type_definition) (
+            void *types,
+            axis2_env_t **env,
+            axis2_qname_t *qname);
+/*
+ * Returns a List of Xml Schema objects for all schemas that are referenceable 
+ * by the containing WSDL. Examples of schemas that are not referenceable include
+ * schemas without a target namespace or schemas resolved from a schema import
+ * whose target namespace does not match the imported namespace. Referenceability
+ * is determined by validation.
+ */
+    axis2_array_list_t *(AXIS2_CALL *
+    get_referenceable_schema_defs) (
+            void *types,
+            axis2_env_t **env);
+
+    /*
+     * Indicates if the namespace represented by the specified URI
+     * is in-scope or referenceable by the WSDL description. 
+     * This means it must be the target namespace of a schema correctly
+     * imported or inlined directly within the &lt;types&gt; element.
+     * 
+     * @return true if the namespace is in-scope, or false if it is not.
+     * 
+     */
+    axis2_bool_t (AXIS2_CALL * 
+    is_namespace_in_scope_with_namespace_uri) (
+            void *types,
+            axis2_env_t **env,
+            axis2_url_t *namespc_uri);
+
+    /*
+     * Indicates if the namespace represented by the specified QName
+     * is in-scope or referenceable by the WSDL description. 
+     * This means it must be the target namespace of a schema correctly
+     * imported or inlined directly within the &lt;types&gt; element.
+     * 
+     */
+    axis2_bool_t (AXIS2_CALL * 
+    is_namespace_in_scope_with_qname) (
+            void *types,
+            axis2_env_t **env,
+            axis2_qname_t *qname);
+
+    /*
+     * 
+     * Indicates if the namespace represented by the specified String
+     * is in-scope or referenceable by the WSDL description. 
+     * This means it must be the target namespace of a schema correctly
+     * imported or inlined directly within the &lt;types&gt; element.
+     * 
+     */
+    axis2_bool_t (AXIS2_CALL * 
+    is_namespace_in_scope_with_namespace) (
+            void *types,
+            axis2_env_t **env,
+            axis2_char_t *namespc);
+
+
+};
+
+union axis2_woden_types_base
+{
+    axis2_woden_documentable_t documentable;
+    axis2_woden_types_element_t types_element;
+    axis2_woden_nested_component_t nested_component;
+};
+
+struct axis2_woden_types
+{
+    axis2_woden_types_base_t base;
+    axis2_woden_types_ops_t *ops;
+};
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_create(
+        axis2_env_t **env);
+
+
+/***************************Woden C Internal Methods***************************/
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_types_element(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_nested_element(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_documentable_element(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_documentable(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_wsdl_obj(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_nested_component(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_wsdl_component(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_element_extensible(
+        void *types,
+        axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_woden_types_t *)
+axis2_woden_types_to_attr_extensible(
+        void *types,
+        axis2_env_t **env);
+
+
+AXIS2_DECLARE(axis2_status_t)
+axis2_woden_types_resolve_methods(
+        axis2_woden_types_t *types,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+#define AXIS2_WODEN_TYPES_FREE(types, env) \
+		(((axis2_woden_types_t *) types)->ops->free(types, env))
+
+#define AXIS2_WODEN_TYPES_TO_TYPES_FREE(types, env) \
+		(((axis2_woden_types_t *) types)->ops->to_types_free(types, env))
+
+#define AXIS2_WODEN_TYPES_TYPE(types, env) \
+		(((axis2_woden_types_t *) types)->ops->type(types, env))
+
+#define AXIS2_WODEN_TYPES_GET_BASE_IMPL(types, env) \
+		(((axis2_woden_types_t *) types)->ops->get_base_impl(types, env))
+
+#define AXIS2_WODEN_TYPES_GET_ELEMENT_DECLARATION(types, env, qname) \
+		(((axis2_woden_types_t *) types)->ops->\
+         get_element_declaration(types, env, qname))
+
+#define AXIS2_WODEN_TYPES_GET_TYPE_DEFINITION(types, env, qname) \
+		(((axis2_woden_types_t *) types)->ops->\
+         get_type_definition(types, env, qname))
+
+#define AXIS2_WODEN_TYPES_GET_REFERENCEABLE_SCHEMA_DEFS(types, env) \
+		(((axis2_woden_types_t *) types)->ops->\
+         get_referenceable_schema_defs(types, env))
+
+#define AXIS2_WODEN_TYPES_GET_REFERENCEABLE_SCHEMA_DEFS_WITH_NAMESPACE(types, env, namespc) \
+		(((axis2_woden_types_t *) types)->ops->\
+         get_referenceable_schema_defs_with_namespace(types, env, namespc))
+
+#define AXIS2_WODEN_TYPES_IS_NAMESPACE_IN_SCOPE_WITH_NAMESPACE_URI(types, env, namespc_uri) \
+		(((axis2_woden_types_t *) types)->ops->\
+         is_namespace_in_scope_with_namespace_uri(types, env, namespc_uri))
+
+#define AXIS2_WODEN_TYPES_IS_NAMESPACE_IN_SCOPE_WITH_QNAME(types, env, qname) \
+		(((axis2_woden_types_t *) types)->ops->\
+         is_namespace_in_scope_with_qname(types, env, qname))
+
+#define AXIS2_WODEN_TYPES_IS_NAMESPACE_IN_SCOPE_WITH_NAMESPACE(types, env, namespc) \
+		(((axis2_woden_types_t *) types)->ops->\
+         is_namespace_in_scope_with_namespace(types, env, namespc))
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_TYPES_H */

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_wsdl_component.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_wsdl_component.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_wsdl_component.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/axis2_woden_wsdl_component.h Mon May  8 00:21:09 2006
@@ -32,6 +32,7 @@
 #include <axis2_const.h>
 #include <axis2_hash.h>
 #include <axis2_url.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -40,7 +41,7 @@
 
 typedef struct axis2_woden_wsdl_component axis2_woden_wsdl_component_t;
 typedef struct axis2_woden_wsdl_component_ops axis2_woden_wsdl_component_ops_t;
-struct axis2_xml_wsdl_component;
+struct axis2_woden_component_exts;
 
 /** @defgroup axis2_woden_wsdl_component Wsdl Component
   * @ingroup axis2_wsdl
@@ -54,13 +55,25 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *wsdl_component,
+    free) (
+            void *wsdl_component,
             axis2_env_t **env);
     
     axis2_status_t (AXIS2_CALL *
-    get_component_exts_for_namespace) (void *wsdl_component,
-                        axis2_env_t **env,
-                        axis2_url_t *namespc);
+    to_wsdl_component_free) (
+            void *wsdl_component,
+            axis2_env_t **env);
+
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *wsdl_component,
+            axis2_env_t **env);
+    
+    void *(AXIS2_CALL *
+    get_component_exts_for_namespace) (
+            void *wsdl_component,
+            axis2_env_t **env,
+            axis2_url_t *namespc);
 
 };
 
@@ -69,21 +82,25 @@
     axis2_woden_wsdl_component_ops_t *ops;
 };
 
-AXIS2_DECLARE(axis2_woden_wsdl_component_t *)
-axis2_woden_wsdl_component_create(axis2_env_t **env);
-
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
-AXIS2_DECLARE(axis2_status_t)
-axis2_woden_wsdl_component_resolve_methods(axis2_woden_wsdl_component_t *wsdl_component,
-                                axis2_env_t **env,
-                                axis2_woden_wsdl_component_t *wsdl_component_impl,
-                                axis2_hash_t *methods);
+/************************Woden C Internal Methods******************************/
+axis2_status_t AXIS2_CALL
+axis2_woden_wsdl_component_resolve_methods(
+        axis2_woden_wsdl_component_t *wsdl_component,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_WSDL_COMPONENT_FREE(wsdl_component, env) \
-		(((axis2_woden_wsdl_component_t *) wsdl_component)->ops->free (wsdl_component, env))
+		(((axis2_woden_wsdl_component_t *) wsdl_component)->ops->\
+         free (wsdl_component, env))
+
+#define AXIS2_WODEN_WSDL_COMPONENT_TO_WSDL_COMPONENT_FREE(wsdl_component, env) \
+		(((axis2_woden_wsdl_component_t *) wsdl_component)->ops->\
+         to_wsdl_component_free (wsdl_component, env))
+
+#define AXIS2_WODEN_WSDL_COMPONENT_TYPE(wsdl_component, env) \
+		(((axis2_woden_wsdl_component_t *) wsdl_component)->ops->\
+         type (wsdl_component, env))
 
 #define AXIS2_WODEN_WSDL_COMPONENT_GET_COMPONENT_EXTS_FOR_NAMESPACE(\
         wsdl_component, env, namespc) \

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_attr_extensible.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_attr_extensible.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_attr_extensible.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_attr_extensible.h Mon May  8 00:21:09 2006
@@ -33,6 +33,7 @@
 #include <axis2_qname.h>
 #include <axis2_url.h>
 #include <axis2_array_list.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -55,33 +56,49 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *attr_extensible,
+    free) (
+            void *attr_extensible,
             axis2_env_t **env);
- 
+    
     axis2_status_t (AXIS2_CALL *
-    set_ext_attr) (void *extensible,
-                    axis2_env_t **env,
-                    axis2_qname_t *attr_type,
-                    struct axis2_woden_xml_attr *attr); 
-
-    struct axis2_woden_xml_attr *(AXIS2_CALL *
-    get_ext_attr) (void *extensible,
-                    axis2_env_t **env,
-                    axis2_qname_t *attr_type); 
+    to_attr_extensible_free) (
+            void *attr_extensible,
+            axis2_env_t **env);
+
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *attr_extensible,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    set_ext_attr) (
+            void *extensible,
+            axis2_env_t **env,
+            axis2_qname_t *attr_type,
+            struct axis2_woden_xml_attr *attr); 
+
+    void *(AXIS2_CALL *
+    get_ext_attr) (
+            void *extensible,
+            axis2_env_t **env,
+            axis2_qname_t *attr_type); 
 
     axis2_array_list_t *(AXIS2_CALL *
-    get_ext_attrs) (void *extensible,
-                        axis2_env_t **env); 
+    get_ext_attrs) (
+            void *extensible,
+            axis2_env_t **env); 
 
     axis2_array_list_t *(AXIS2_CALL *
-    get_ext_attrs_for_namespace) (void *extensible,
-                                    axis2_env_t **env,
-                                    axis2_url_t *namespc);
+    get_ext_attrs_for_namespace) (
+            void *extensible,
+            axis2_env_t **env,
+            axis2_url_t *namespc);
 
     axis2_bool_t (AXIS2_CALL *
-    has_ext_attrs_for_namespace) (void *extensible,
-                                   axis2_env_t **env,
-                                   axis2_url_t *namespc);
+    has_ext_attrs_for_namespace) (
+            void *extensible,
+            axis2_env_t **env,
+            axis2_url_t *namespc);
 
 
 };
@@ -99,13 +116,22 @@
  * of the child class
  */
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_attr_extensible_resolve_methods(axis2_woden_attr_extensible_t *extensible,
-                                axis2_env_t **env,
-                                axis2_woden_attr_extensible_t *extensible_impl,
-                                axis2_hash_t *methods);
+axis2_woden_attr_extensible_resolve_methods(
+        axis2_woden_attr_extensible_t *extensible,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
 
 #define AXIS2_WODEN_ATTR_EXTENSIBLE_FREE(extensible, env) \
-		(((axis2_woden_attr_extensible_t *) extensible)->ops->free (extensible, env))
+		(((axis2_woden_attr_extensible_t *) extensible)->ops->\
+         free (extensible, env))
+
+#define AXIS2_WODEN_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(extensible, env) \
+		(((axis2_woden_attr_extensible_t *) extensible)->ops->\
+         to_attr_extensible_free (extensible, env))
+
+#define AXIS2_WODEN_ATTR_EXTENSIBLE_TYPE(extensible, env) \
+		(((axis2_woden_attr_extensible_t *) extensible)->ops->\
+         type (extensible, env))
 
 #define AXIS2_WODEN_ATTR_EXTENSIBLE_SET_EXT_ATTR(extensible, env, attr_type, \
         attr) \

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_component_exts.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_component_exts.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_component_exts.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_component_exts.h Mon May  8 00:21:09 2006
@@ -20,11 +20,22 @@
 /**
  * @file axis2_woden_component_exts.h
  * @brief Axis2 Component Extensions Interface
- * This class represents group of WSDL extension properties (i.e. extension
- * elements or attributes) related by their non-WSDL namespace. 
- * The only behaviour of this class is to return the namespace.
- * Implementations may extend this class to define behaviour specific to 
- * their required extensions.
+ * This interface represents a group of properties that extend a <code>wsdl_component</code>.
+ * These properties share the same namespace and it is different to the WSDL 2.0 namespace.
+ * The XML representation of these properties are the elements and attributes
+ * from outside the WSDL 2.0 namespace that extend a WSDL element.
+ * For example, the elements and attributes from the SOAP namespace that extend the 
+ * WSDL &lt;binding&gt; element are represented by this interface as extension
+ * properties of the <code>binding</code> component. 
+ * <p>
+ * This interface provides a common point of reference to a WSDL component's extension
+ * properties that belong to a particular namespace. 
+ * The interface does not define any behaviour specific to the individual properties.
+ * Woden implementations that need to support WSDL extensions from a particular namespace
+ * should implement this interface and add support specific to those extensions.
+ * <p>
+ * For example, Woden implements this interface to support the SOAP and HTTP binding
+ * extensions defined in the W3C WSDL 2.0 specification.
  * 
  */
 
@@ -36,6 +47,7 @@
 #include <axis2_hash.h>
 #include <axis2_qname.h>
 #include <axis2_url.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -46,6 +58,13 @@
 typedef struct axis2_woden_component_exts_ops axis2_woden_component_exts_ops_t;
 struct axis2_woden_wsdl_element;
 
+    
+/**
+ * Namespace URIs for extensions defined by WSDL 2.0 Specification.
+ */
+#define AXIS2_WODEN_URI_NS_SOAP "http://www.w3.org/2006/01/wsdl/soap"
+#define AXIS2_WODEN_URI_NS_HTTP "http://www.w3.org/2006/01/wsdl/http"
+    
 /** @defgroup axis2_woden_component_exts Component Extensions
   * @ingroup axis2_wsdl
   * @{
@@ -61,15 +80,25 @@
     free) (void *component_exts,
             axis2_env_t **env);
       
+    axis2_status_t (AXIS2_CALL *
+    to_component_exts_free) (void *component_exts,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (void *component_exts,
+            axis2_env_t **env);
+    
     axis2_url_t *(AXIS2_CALL *
-    get_namespace) (void *component_exts,
-                  axis2_env_t **env);
+    get_namespace) (
+            void *component_exts,
+            axis2_env_t **env);
 
     axis2_status_t (AXIS2_CALL *
-    init) (void *component_exts,
-                axis2_env_t **env,
-                struct axis2_woden_wsdl_element *parent_el,
-                axis2_url_t *namespc);
+    init) (
+            void *component_exts,
+            axis2_env_t **env,
+            struct axis2_woden_wsdl_element *parent_el,
+            axis2_url_t *namespc);
 
 };
 
@@ -86,16 +115,26 @@
  * of the child class
  */
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_component_exts_resolve_methods(axis2_woden_component_exts_t *component_exts,
-                                axis2_env_t **env,
-                                axis2_woden_component_exts_t *component_exts_impl,
-                                axis2_hash_t *methods);
+axis2_woden_component_exts_resolve_methods(
+        axis2_woden_component_exts_t *component_exts,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
 
 #define AXIS2_WODEN_COMPONENT_EXTS_FREE(component_exts, env) \
-		(((axis2_woden_component_exts_t *) component_exts)->ops->free (component_exts, env))
+		(((axis2_woden_component_exts_t *) component_exts)->ops->\
+         free (component_exts, env))
+
+#define AXIS2_WODEN_COMPONENT_EXTS_TO_COMPONENT_EXTS_FREE(component_exts, env) \
+		(((axis2_woden_component_exts_t *) component_exts)->ops->\
+         to_component_exts_free (component_exts, env))
+
+#define AXIS2_WODEN_COMPONENT_EXTS_TYPE(component_exts, env) \
+		(((axis2_woden_component_exts_t *) component_exts)->ops->\
+         type (component_exts, env))
 
 #define AXIS2_WODEN_COMPONENT_EXTS_INIT(component_exts, env, parent_el, namespc) \
-		(((axis2_woden_component_exts_t *) component_exts)->ops->init(component_exts, env, \
+		(((axis2_woden_component_exts_t *) component_exts)->ops->\
+         init(component_exts, env, \
             parent_el, namespc))
 
 #define AXIS2_WODEN_COMPONENT_EXTS_GET_NAMESPACE(component_exts, env) \

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_element_extensible.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_element_extensible.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_element_extensible.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/extensions/axis2_woden_element_extensible.h Mon May  8 00:21:09 2006
@@ -33,6 +33,7 @@
 #include <axis2_qname.h>
 #include <axis2_url.h>
 #include <axis2_array_list.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -42,7 +43,6 @@
 typedef struct axis2_woden_element_extensible axis2_woden_element_extensible_t;
 typedef struct axis2_woden_element_extensible_ops axis2_woden_element_extensible_ops_t;
 struct axis2_woden_ext_element;
-struct axis2_url;
 
 /** @defgroup axis2_woden_element_extensible Element Extensible
   * @ingroup axis2_wsdl
@@ -56,32 +56,50 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *element_extensible,
+    free) (
+            void *
+            element_extensible,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_element_extensible_free) (
+            void *
+            element_extensible,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *element_extensible,
             axis2_env_t **env);
  
     axis2_status_t (AXIS2_CALL *
-    add_ext_element) (void *extensible,
-                      axis2_env_t **env,
-                      struct axis2_woden_ext_element *ext_el); 
+    add_ext_element) (
+            void *extensible,
+            axis2_env_t **env,
+            struct axis2_woden_ext_element *ext_el); 
 
     axis2_status_t (AXIS2_CALL *
-    remove_ext_element) (void *extensible,
-                            axis2_env_t **env,
-                            struct axis2_woden_ext_element *ext_el); 
+    remove_ext_element) (
+            void *extensible,
+            axis2_env_t **env,
+            struct axis2_woden_ext_element *ext_el); 
 
     axis2_array_list_t *(AXIS2_CALL *
-    get_ext_elements) (void *extensible,
-                       axis2_env_t **env); 
+    get_ext_elements) (
+            void *extensible,
+            axis2_env_t **env); 
 
     axis2_array_list_t *(AXIS2_CALL *
-    get_ext_elements_of_type) (void *extensible,
-                               axis2_env_t **env,
-                               axis2_qname_t *ext_type);
+    get_ext_elements_of_type) (
+            void *extensible,
+            axis2_env_t **env,
+            axis2_qname_t *ext_type);
 
     axis2_bool_t (AXIS2_CALL *
-    has_ext_elements_for_namespace) (void *extensible,
-                                           axis2_env_t **env,
-                                           axis2_url_t *namespc);
+    has_ext_elements_for_namespace) (
+            void *extensible,
+            axis2_env_t **env,
+            axis2_url_t *namespc);
  
 };
 
@@ -98,13 +116,23 @@
  * of the child class
  */
 AXIS2_DECLARE(axis2_status_t)
-axis2_woden_element_extensible_resolve_methods(axis2_woden_element_extensible_t *extensible,
-                                axis2_env_t **env,
-                                axis2_woden_element_extensible_t *extensible_impl,
-                                axis2_hash_t *methods);
+axis2_woden_element_extensible_resolve_methods(
+        axis2_woden_element_extensible_t *extensible,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
 
 #define AXIS2_WODEN_ELEMENT_EXTENSIBLE_FREE(extensible, env) \
-		(((axis2_woden_element_extensible_t *) extensible)->ops->free (extensible, env))
+		(((axis2_woden_element_extensible_t *) extensible)->ops->\
+         free (extensible, env))
+
+#define AXIS2_WODEN_ELEMENT_EXTENSIBLE_TO_ELEMENT_EXTENSIBLE_FREE(extensible, \
+        env) \
+		(((axis2_woden_element_extensible_t *) extensible)->ops->\
+         to_element_extensible_free (extensible, env))
+
+#define AXIS2_WODEN_ELEMENT_EXTENSIBLE_TYPE(extensible, env) \
+		(((axis2_woden_element_extensible_t *) extensible)->ops->\
+         type (extensible, env))
 
 #define AXIS2_WODEN_ELEMENT_EXTENSIBLE_ADD_EXT_ELEMENT(extensible, env, ext_el) \
 		(((axis2_woden_element_extensible_t *) extensible)->ops->\

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_configurable_element.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_configurable_element.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_configurable_element.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_configurable_element.h Mon May  8 00:21:09 2006
@@ -0,0 +1,160 @@
+/*
+ * 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 AXIS2_WODEN_CONFIGURABLE_ELEMENT_H
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_H
+
+/**
+ * @file axis2_woden_configurable_element.h
+ * @brief Axis2 Configurable Element Interface
+ * Interfaces for elements which can have &lt;feature&gt; and &lt;property&gt;
+ * child elements will extend this interface. That is, &lt;types&gt;, 
+ * &lt;interface&gt; and its child elements, 
+ * &lt;binding&gt; and its child elements, and
+ * &lt;service&gt; and its child elements.
+ * <p>
+ * The WSDL elements which are not configurable are
+ * &lt;description&gt;, &lt;feature&gt;, &lt;property&gt;, 
+ * &lt;import&gt;, &lt;include&gt; and &lt;documentation&gt;.
+ * 
+ *
+ */
+
+#include <axis2_allocator.h>
+#include <axis2_env.h>
+#include <axis2_error.h>
+#include <axis2_string.h>
+#include <axis2.h>
+#include <axis2_hash.h>
+#include <axis2_qname.h>
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_wsdl_element.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_woden_configurable_element 
+        axis2_woden_configurable_element_t;
+typedef struct axis2_woden_configurable_element_ops 
+        axis2_woden_configurable_element_ops_t;
+struct axis2_woden_feature_element;
+struct axis2_woden_property_element;
+
+/** @defgroup axis2_woden_configurable_element Configurable Element
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+struct axis2_woden_configurable_element_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (
+            void *conf_el,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_configurable_element_free) (
+            void *conf_el,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *conf_el,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    add_feature_element) (
+            void *conf_el,
+            axis2_env_t **env,
+            struct axis2_woden_feature_element *feature);
+
+    axis2_array_list_t *(AXIS2_CALL *
+    get_feature_elements) (
+            void *conf_el,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    add_property_element) (
+            void *conf_el,
+            axis2_env_t **env,
+            struct axis2_woden_property_element *feature);
+
+    axis2_array_list_t *(AXIS2_CALL *
+    get_property_elements) (
+            void *conf_el,
+            axis2_env_t **env);
+
+
+};
+
+struct axis2_woden_configurable_element
+{
+    axis2_woden_wsdl_element_t wsdl_element;
+    axis2_woden_configurable_element_ops_t *ops;
+};
+
+/************************Woden C Internal Methods*****************************/
+axis2_status_t AXIS2_CALL
+axis2_woden_configurable_element_resolve_methods(
+        axis2_woden_configurable_element_t *configurable_element,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_FREE(conf_el, env) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         free (conf_el, env))
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_TO_CONFIGURABLE_ELEMENT_FREE(conf_el, \
+        env) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         to_configurable_element_free (conf_el, env))
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_TYPE(conf_el, env) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         type (conf_el, env))
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_ADD_FEATURE_ELEMENT(conf_el, env, \
+        feature) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         add_feature_element(conf_el, env, feature))
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_GET_FEATURE_ELEMENTS(conf_el, env) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         get_feature_elements(conf_el, env))
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_ADD_PROPERTY_ELEMENT(conf_el, env, \
+        property) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         add_property_element(conf_el, env, property))
+
+#define AXIS2_WODEN_CONFIGURABLE_ELEMENT_GET_PROPERTY_ELEMENTS(conf_el, env) \
+		(((axis2_woden_configurable_element_t *) conf_el)->ops->\
+         get_propertyelements(conf_el, env))
+
+
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_CONFIGURABLE_ELEMENT_H */

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentable_element.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentable_element.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentable_element.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentable_element.h Mon May  8 00:21:09 2006
@@ -33,6 +33,8 @@
 #include <axis2_const.h>
 #include <axis2_hash.h>
 #include <axis2_array_list.h>
+#include <woden/wsdl20/xml/axis2_woden_wsdl_element.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -57,10 +59,21 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *doc_el,
+    free) (
+            void *doc_el,
             axis2_env_t **env);
     
     axis2_status_t (AXIS2_CALL *
+    to_documentable_element_free) (
+            void *doc_el,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (
+            void *doc_el,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
     add_documentation_element) (void *doc_el,
                         axis2_env_t **env,
                         struct axis2_woden_documentation_element *doc_elem);
@@ -73,26 +86,30 @@
 
 struct axis2_woden_documentable_element
 {
+    axis2_woden_wsdl_element_t wsdl_element;
     axis2_woden_documentable_element_ops_t *ops;
 };
 
-AXIS2_DECLARE(axis2_woden_documentable_element_t *)
-axis2_woden_documentable_element_create(axis2_env_t **env);
-
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
-AXIS2_DECLARE(axis2_status_t)
+/************************Woden C Internal Methods******************************/
+axis2_status_t AXIS2_CALL
 axis2_woden_documentable_element_resolve_methods(
-                                axis2_woden_documentable_element_t *doc_el,
-                                axis2_env_t **env,
-                                axis2_woden_documentable_element_t *doc_el_impl,
-                                axis2_hash_t *methods);
+        axis2_woden_documentable_element_t *documentable_element,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_DOCUMENTABLE_ELEMENT_FREE(doc_el, env) \
 		(((axis2_woden_documentable_element_t *) doc_el)->ops->\
          free (doc_el, env))
+
+#define AXIS2_WODEN_DOCUMENTABLE_ELEMENT_TO_DOCUMENTABLE_ELEMENT_FREE(doc_el, \
+        env) \
+		(((axis2_woden_documentable_element_t *) doc_el)->ops->\
+         to_documentable_element_free (doc_el, env))
+
+#define AXIS2_WODEN_DOCUMENTABLE_ELEMENT_TYPE(doc_el, env) \
+		(((axis2_woden_documentable_element_t *) doc_el)->ops->\
+         type (doc_el, env))
 
 #define AXIS2_WODEN_DOCUMENTABLE_ELEMENT_ADD_DOCUMENTATION_ELEMENT(doc_el, env, doc_elem) \
 		(((axis2_woden_documentable_element_t *) doc_el)->ops->\

Modified: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentation_element.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentation_element.h?rev=404947&r1=404946&r2=404947&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentation_element.h (original)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_documentation_element.h Mon May  8 00:21:09 2006
@@ -34,14 +34,18 @@
 #include <axis2_const.h>
 #include <axis2_hash.h>
 #include <axis2_qname.h>
+#include <woden/wsdl20/xml/axis2_woden_wsdl_element.h>
+#include <woden/axis2_woden.h>
 
 #ifdef __cplusplus
 extern "C"
 {
 #endif
 
-typedef struct axis2_woden_documentation_element axis2_woden_documentation_element_t;
-typedef struct axis2_woden_documentation_element_ops axis2_woden_documentation_element_ops_t;
+typedef struct axis2_woden_documentation_element 
+        axis2_woden_documentation_element_t;
+typedef struct axis2_woden_documentation_element_ops 
+        axis2_woden_documentation_element_ops_t;
 
 /** @defgroup axis2_woden_documentation_element Documentation Element
   * @ingroup axis2_wsdl
@@ -55,7 +59,17 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *doc_el,
+    free) (
+            void *doc_el,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_documentation_element_free) (
+            void *doc_el,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (void *doc_el,
             axis2_env_t **env);
     
     axis2_status_t (AXIS2_CALL *
@@ -71,26 +85,30 @@
 
 struct axis2_woden_documentation_element
 {
+    axis2_woden_wsdl_element_t wsdl_element;
     axis2_woden_documentation_element_ops_t *ops;
 };
 
-AXIS2_DECLARE(axis2_woden_documentation_element_t *)
-axis2_woden_documentation_element_create(axis2_env_t **env);
-
-/**
- * This is an Axis2 C internal method. This is used only from constructor
- * of the child class
- */
-AXIS2_DECLARE(axis2_status_t)
+/************************Woden C Internal Methods******************************/
+axis2_status_t AXIS2_CALL
 axis2_woden_documentation_element_resolve_methods(
-                                axis2_woden_documentation_element_t *doc_el,
-                                axis2_env_t **env,
-                                axis2_woden_documentation_element_t *doc_el_impl,
-                                axis2_hash_t *methods);
+        axis2_woden_documentation_element_t *documentation_element,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
 
 #define AXIS2_WODEN_DOCUMENTATION_ELEMENT_FREE(doc_el, env) \
 		(((axis2_woden_documentation_element_t *) doc_el)->ops->\
          free (doc_el, env))
+
+#define AXIS2_WODEN_DOCUMENTATION_ELEMENT_TO_DOCUMENTATION_ELEMENT_FREE(doc_el, \
+        env) \
+		(((axis2_woden_documentation_element_t *) doc_el)->ops->\
+         to_documentation_element_free (doc_el, env))
+
+#define AXIS2_WODEN_DOCUMENTATION_ELEMENT_TYPE(doc_el, env) \
+		(((axis2_woden_documentation_element_t *) doc_el)->ops->\
+         type (doc_el, env))
 
 #define AXIS2_WODEN_DOCUMENTATION_ELEMENT_SET_CONTENT(doc_el, env, doc_elem) \
 		(((axis2_woden_documentation_element_t *) doc_el)->ops->\

Added: webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_feature_element.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_feature_element.h?rev=404947&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_feature_element.h (added)
+++ webservices/axis2/trunk/c/modules/wsdl/woden/include/woden/wsdl20/xml/axis2_woden_feature_element.h Mon May  8 00:21:09 2006
@@ -0,0 +1,145 @@
+/*
+ * 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 AXIS2_WODEN_FEATURE_ELEMENT_H
+#define AXIS2_WODEN_FEATURE_ELEMENT_H
+
+/**
+ * @file axis2_woden_feature_element.h
+ * @brief Axis2 Feature Element Interface
+ * Represents the &lt;feature&gt; element.
+ *
+ */
+
+#include <axis2_allocator.h>
+#include <axis2_env.h>
+#include <axis2_error.h>
+#include <axis2_string.h>
+#include <axis2.h>
+#include <axis2_hash.h>
+#include <axis2_qname.h>
+#include <axis2_url.h>
+#include <woden/axis2_woden.h>
+#include <woden/wsdl20/xml/axis2_woden_documentable_element.h>
+#include <woden/wsdl20/xml/axis2_woden_nested_element.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_woden_feature_element axis2_woden_feature_element_t;
+typedef struct axis2_woden_feature_element_ops axis2_woden_feature_element_ops_t;
+typedef union axis2_woden_feature_element_base axis2_woden_feature_element_base_t;
+
+/** @defgroup axis2_woden_feature_element Feature Element
+  * @ingroup axis2_wsdl
+  * @{
+  */
+
+struct axis2_woden_feature_element_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (
+            void *doc_el,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    to_feature_element_free) (
+            void *doc_el,
+            axis2_env_t **env);
+    
+    axis2_woden_obj_types_t (AXIS2_CALL *
+    type) (void *doc_el,
+            axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    set_ref) (void *doc_el,
+            axis2_env_t **env,
+            axis2_url_t *uri);
+
+    axis2_url_t *(AXIS2_CALL *
+    get_ref) (void *doc_el,
+            axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    set_required) (void *doc_el,
+            axis2_env_t **env,
+            axis2_bool_t required);
+
+    axis2_bool_t (AXIS2_CALL *
+    is_required) (void *doc_el,
+            axis2_env_t **env);
+
+};
+
+union axis2_woden_feature_element_base
+{
+    axis2_woden_documentable_element_t documentable_element;
+    axis2_woden_nested_element_t nested_element;
+};
+
+struct axis2_woden_feature_element
+{
+    axis2_woden_feature_element_base_t base;
+    axis2_woden_feature_element_ops_t *ops;
+};
+
+/************************Woden C Internal Methods******************************/
+axis2_status_t AXIS2_CALL
+axis2_woden_feature_element_resolve_methods(
+        axis2_woden_feature_element_t *feature_element,
+        axis2_env_t **env,
+        axis2_hash_t *methods);
+/************************End of Woden C Internal Methods***********************/
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_FREE(doc_el, env) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         free (doc_el, env))
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_TO_FEATURE_ELEMENT_FREE(doc_el, env) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         to_feature_element_free (doc_el, env))
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_TYPE(doc_el, env) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         type (doc_el, env))
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_SET_REF(doc_el, env, uri) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         set_ref(doc_el, env, uri))
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_GET_REF(doc_el, env) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         get_ref(doc_el, env))
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_SET_REQUIRED(doc_el, env, required) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         set_required(doc_el, env, required))
+
+#define AXIS2_WODEN_FEATURE_ELEMENT_IS_REQUIRED(doc_el, env) \
+		(((axis2_woden_feature_element_t *) doc_el)->ops->\
+         is_required(doc_el, env))
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WODEN_FEATURE_ELEMENT_H */