You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by da...@apache.org on 2006/05/09 13:57:32 UTC

svn commit: r405399 - in /webservices/axis2/trunk/c/modules/xml/xml_schema: ./ include/xml_schema/

Author: damitha
Date: Tue May  9 04:57:30 2006
New Revision: 405399

URL: http://svn.apache.org/viewcvs?rev=405399&view=rev
Log:
Fixing a bug found in casting

Modified:
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_all.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotated.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_defines.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_all.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotated.c

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema.h?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema.h Tue May  9 04:57:30 2006
@@ -25,6 +25,7 @@
  *          Represents the World Wide Web Consortium (W3C) schema element
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_annotated.h>
 #include <axis2_om_element.h>
 #include <axis2_om_node.h>
@@ -63,6 +64,14 @@
     free) (void *schema,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (void *schema,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (void *schema,
+            axis2_env_t **env);
+    
     axis2_xml_schema_annotated_t *(AXIS2_CALL *
     get_base_impl) (void *schema,
                     axis2_env_t **env);
@@ -224,6 +233,14 @@
 #define AXIS2_XML_SCHEMA_FREE(schema, env) \
 		(((axis2_xml_schema_t *) schema)->ops->\
             free(schema, env))
+
+#define AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env) \
+		(((axis2_xml_schema_t *) schema)->ops->\
+            super_objs(schema, env))
+
+#define AXIS2_XML_SCHEMA_TYPE(schema, env) \
+		(((axis2_xml_schema_t *) schema)->ops->\
+            type(schema, env))
 
 #define AXIS2_XML_SCHEMA_GET_BASE_IMPL(schema, env) \
 		(((axis2_xml_schema_t *) schema)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_all.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_all.h?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_all.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_all.h Tue May  9 04:57:30 2006
@@ -25,6 +25,7 @@
  *          Wide Web Consortium (W3C) all element (compositor).
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_group_base.h>
 #include <axis2_hash.h>
 
@@ -50,9 +51,20 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *all,
+    free) (
+            void *all,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *all,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *all,
+            axis2_env_t **env);
+    
     struct axis2_xml_schema_group_base *(AXIS2_CALL *
     get_base_impl) (void *all,
                     axis2_env_t **env);
@@ -88,6 +100,14 @@
 #define AXIS2_XML_SCHEMA_ALL_FREE(all, env) \
 		(((axis2_xml_schema_all_t *) all)->ops->\
             free(all, env))
+
+#define AXIS2_XML_SCHEMA_ALL_SUPER_OBJS(all, env) \
+		(((axis2_xml_schema_all_t *) all)->ops->\
+            super_objs(all, env))
+
+#define AXIS2_XML_SCHEMA_ALL_TYPE(all, env) \
+		(((axis2_xml_schema_all_t *) all)->ops->\
+            type(all, env))
 
 #define AXIS2_XML_SCHEMA_ALL_GET_BASE_IMPL(all, env) \
 		(((axis2_xml_schema_all_t *) all)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotated.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotated.h?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotated.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotated.h Tue May  9 04:57:30 2006
@@ -22,6 +22,7 @@
  * @brief Axis2 Xml Schema Annotated Interface
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_obj.h>
 
 /** @defgroup axis2_xml_schema_annotated Xml Schema Annotated
@@ -65,6 +66,16 @@
     free)(void *annotated,
             axis2_env_t **env);
     
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs)(
+            void *annotated,
+            axis2_env_t **env);
+    
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type)(
+            void *annotated,
+            axis2_env_t **env);
+
     axis2_xml_schema_obj_t *(AXIS2_CALL *
     get_base_impl) (void *annotated,
                     axis2_env_t **env);
@@ -120,6 +131,14 @@
 
 #define AXIS2_XML_SCHEMA_ANNOTATED_FREE(annotated, env) \
 		(((axis2_xml_schema_annotated_t *) annotated)->ops->free(\
+            annotated, env))
+
+#define AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env) \
+		(((axis2_xml_schema_annotated_t *) annotated)->ops->super_objs(\
+            annotated, env))
+
+#define AXIS2_XML_SCHEMA_ANNOTATED_TYPE(annotated, env) \
+		(((axis2_xml_schema_annotated_t *) annotated)->ops->type(\
             annotated, env))
 
 #define AXIS2_XML_SCHEMA_ANNOTATED_GET_BASE_IMPL(annotated, env) \

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_defines.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_defines.h?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_defines.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_defines.h Tue May  9 04:57:30 2006
@@ -46,22 +46,10 @@
     typedef enum axis2_xml_schema_types
     {
         AXIS2_XML_SCHEMA = 0,
-        AXIS2_XML_SCHEMA_IMPORTED,
-        AXIS2_XML_SCHEMA_INLINED_SCHEMA,
-        AXIS2_XML_SCHEMA_XML_ATTR,
-        AXIS2_XML_SCHEMA_QNAME_ATTR,
-        AXIS2_XML_SCHEMA_URI_ATTR,
-        AXIS2_XML_SCHEMA_QNAME_LIST_ATTR,
-        AXIS2_XML_SCHEMA_STRING_ATTR,
-        AXIS2_XML_SCHEMA_QNAME_LIST_OR_TOKEN_ANY_ATTR,
-        AXIS2_XML_SCHEMA_QNAME_OR_TOKEN_ANY_ATTR,
-        AXIS2_XML_SCHEMA_BOOL_ATTR,
-        AXIS2_XML_SCHEMA_WSDL_ELEMENT,
-        AXIS2_XML_SCHEMA_ATTR_EXTENSIBLE,
-        AXIS2_XML_SCHEMA_ELEMENT_EXTENSIBLE,
-        AXIS2_XML_SCHEMA_FEATURE,
-        AXIS2_XML_SCHEMA_TYPES,
-        AXIS2_XML_SCHEMA_DOCUMENTATION
+        AXIS2_XML_SCHEMA_ALL,
+        AXIS2_XML_SCHEMA_GROUP_BASE,
+        AXIS2_XML_SCHEMA_ANNOTATED,
+        AXIS2_XML_SCHEMA_OBJ
     } axis2_xml_schema_types_t;
 
 /** @} */

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema.c?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema.c Tue May  9 04:57:30 2006
@@ -33,6 +33,8 @@
 {
     axis2_xml_schema_t schema;
     axis2_xml_schema_annotated_t *annotated;
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     axis2_xml_schema_form_t *attr_form_default;
     axis2_xml_schema_form_t *element_form_default;
@@ -60,6 +62,14 @@
 axis2_xml_schema_free(void *schema,
                         axis2_env_t **env);
 
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_super_objs(void *schema,
+                        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_type(void *schema,
+                        axis2_env_t **env);
+
 axis2_xml_schema_annotated_t *AXIS2_CALL
 axis2_xml_schema_get_base_impl(void *schema,
                                         axis2_env_t **env);
@@ -180,6 +190,7 @@
 
 static axis2_status_t 
 serialize_internal(void *schema,
+                    axis2_env_t **env,
                     void *writer);
 
 axis2_hash_t *AXIS2_CALL 
@@ -208,6 +219,8 @@
                     sizeof(axis2_xml_schema_impl_t));
 
     schema_impl->annotated = NULL;
+    schema_impl->super = NULL;
+    schema_impl->obj_type = AXIS2_XML_SCHEMA;
     schema_impl->methods = NULL;
     schema_impl->parent = parent;
     schema_impl->attr_form_default = NULL;
@@ -228,6 +241,8 @@
                     sizeof(axis2_xml_schema_ops_t));
 
     schema_impl->schema.ops->free = axis2_xml_schema_free;
+    schema_impl->schema.ops->super_objs = axis2_xml_schema_super_objs;
+    schema_impl->schema.ops->type = axis2_xml_schema_type;
     schema_impl->schema.ops->get_base_impl = 
             axis2_xml_schema_get_base_impl;
     schema_impl->schema.ops->get_namespace = 
@@ -297,6 +312,10 @@
     }
     axis2_hash_set(schema_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_free);
+    axis2_hash_set(schema_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_super_objs);
+    axis2_hash_set(schema_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_type);
     axis2_hash_set(schema_impl->methods, "get_namespace", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_get_namespace);
     axis2_hash_set(schema_impl->methods, "get_attr_form_default", 
@@ -357,6 +376,16 @@
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_add_type);
     
     schema_impl->annotated = axis2_xml_schema_annotated_create(env);
+
+    schema_impl->super = axis2_hash_make(env);
+    if(!schema_impl->super)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(schema_impl->super, "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING, 
+            &(schema_impl->schema));
+
     status = axis2_xml_schema_annotated_resolve_methods(
             &(schema_impl->schema.base), env, schema_impl->annotated, 
             schema_impl->methods);
@@ -379,6 +408,12 @@
         schema_impl->methods = NULL;
     }
 
+    if(schema_impl->super)
+    {
+        axis2_hash_free(schema_impl->super, env);
+        schema_impl->super = NULL;
+    }
+
     if(schema_impl->annotated)
     {
         AXIS2_XML_SCHEMA_OBJ_FREE(schema_impl->annotated, env);
@@ -399,6 +434,30 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_type(void *schema,
+                                axis2_env_t **env)
+{
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    schema_impl = AXIS2_INTF_TO_IMPL(schema);
+
+    return schema_impl->obj_type;
+}
+
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_super_objs(void *schema,
+                                axis2_env_t **env)
+{
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    schema_impl = AXIS2_INTF_TO_IMPL(schema);
+
+    return schema_impl->super;
+}
+
 axis2_xml_schema_annotated_t *AXIS2_CALL
 axis2_xml_schema_get_base_impl(void *schema,
                                 axis2_env_t **env)
@@ -430,65 +489,182 @@
             sizeof(axis2_xml_schema_ops_t));
     schema->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    schema->ops->get_base_impl = 
-            schema_impl_l->schema.ops->get_base_impl;
-    schema->ops->get_namespace = 
+    schema->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    schema->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+
+    schema->ops->get_namespace = axis2_hash_get(methods, "get_namespace",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_namespace)
+            schema->ops->get_namespace = 
             schema_impl_l->schema.ops->get_namespace;
-    schema->ops->get_attr_form_default = 
+    
+    schema->ops->get_attr_form_default = axis2_hash_get(methods, 
+            "get_attr_form_default", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_attr_form_default)
+            schema->ops->get_attr_form_default = 
             schema_impl_l->schema.ops->get_attr_form_default;
-    schema->ops->set_attr_form_default = 
+    
+    schema->ops->set_attr_form_default = axis2_hash_get(methods, 
+            "set_attr_form_default", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->set_attr_form_default)
+            schema->ops->set_attr_form_default = 
             schema_impl_l->schema.ops->set_attr_form_default;
-    schema->ops->get_attr_groups = 
+    
+    schema->ops->get_attr_groups = axis2_hash_get(methods, 
+            "get_attr_groups", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_attr_groups)
+            schema->ops->get_attr_groups = 
             schema_impl_l->schema.ops->get_attr_groups;
-    schema->ops->get_attrs = 
+    
+    schema->ops->get_attrs = axis2_hash_get(methods, "get_attrs",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_attrs)
+            schema->ops->get_attrs = 
             schema_impl_l->schema.ops->get_attrs;
-    schema->ops->get_block_default = 
+    
+    schema->ops->get_block_default = axis2_hash_get(methods, "get_block_default",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_block_default)
+            schema->ops->get_block_default = 
             schema_impl_l->schema.ops->get_block_default;
-    schema->ops->set_block_default = 
+    
+    schema->ops->set_block_default = axis2_hash_get(methods, "set_block_default",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->set_block_default)
+            schema->ops->set_block_default = 
             schema_impl_l->schema.ops->set_block_default;
-    schema->ops->get_element_form_default = 
+    
+    schema->ops->get_element_form_default = axis2_hash_get(methods, 
+            "get_element_form_default", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_element_form_default)
+            schema->ops->get_element_form_default = 
             schema_impl_l->schema.ops->get_element_form_default;
-    schema->ops->set_element_form_default = 
+    
+    schema->ops->set_element_form_default = axis2_hash_get(methods, 
+            "set_element_form_default", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->set_element_form_default)
+            schema->ops->set_element_form_default = 
             schema_impl_l->schema.ops->set_element_form_default;
-    schema->ops->get_elements = 
-            schema_impl_l->schema.ops->get_elements;
+    
+    schema->ops->get_elements = axis2_hash_get(methods, "get_elements",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_elements)
+            schema->ops->get_elements = schema_impl_l->schema.ops->get_elements;
+    
+    schema->ops->get_element_by_qname = axis2_hash_get(methods, 
+            "get_element_by_qname", AXIS2_HASH_KEY_STRING);        
+    if(!schema->ops->get_element_by_qname)
     schema->ops->get_element_by_qname = 
             schema_impl_l->schema.ops->get_element_by_qname;
-    schema->ops->get_type_by_qname = 
+    
+    schema->ops->get_type_by_qname = axis2_hash_get(methods, 
+            "get_type_by_qname", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_type_by_qname)
+            schema->ops->get_type_by_qname = 
             schema_impl_l->schema.ops->get_type_by_qname;
-    schema->ops->get_final_default = 
+    
+    schema->ops->get_final_default = axis2_hash_get(methods, "get_final_default",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_final_default)
+            schema->ops->get_final_default = 
             schema_impl_l->schema.ops->get_final_default;
-    schema->ops->set_final_default = 
+    
+    schema->ops->set_final_default = axis2_hash_get(methods, "set_final_default",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->set_final_default)
+            schema->ops->set_final_default = 
             schema_impl_l->schema.ops->set_final_default;
-    schema->ops->get_groups = 
+    
+    schema->ops->get_groups = axis2_hash_get(methods, "get_groups",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_groups)
+            schema->ops->get_groups = 
             schema_impl_l->schema.ops->get_groups;
-    schema->ops->get_includes = 
+    
+    schema->ops->get_includes = axis2_hash_get(methods, "get_includes",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_includes)
+            schema->ops->get_includes = 
             schema_impl_l->schema.ops->get_includes;
-    schema->ops->is_compiled = 
+    
+    schema->ops->is_compiled = axis2_hash_get(methods, "is_compiled",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->is_compiled)
+            schema->ops->is_compiled = 
             schema_impl_l->schema.ops->is_compiled;
-    schema->ops->get_items = 
+    
+    schema->ops->get_items = axis2_hash_get(methods, "get_items",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_items)
+            schema->ops->get_items = 
             schema_impl_l->schema.ops->get_items;
-    schema->ops->get_notations = 
+    
+    schema->ops->get_notations = axis2_hash_get(methods, "get_notations",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_notations)
+            schema->ops->get_notations = 
             schema_impl_l->schema.ops->get_notations;
-    schema->ops->get_schema_types = 
+    
+    schema->ops->get_schema_types = axis2_hash_get(methods, "get_schema_types",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_schema_types)
+            schema->ops->get_schema_types = 
             schema_impl_l->schema.ops->get_schema_types;
-    schema->ops->get_target_namespace = 
+    
+    schema->ops->get_target_namespace = axis2_hash_get(methods, 
+            "get_target_namespace", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_target_namespace)
+            schema->ops->get_target_namespace = 
             schema_impl_l->schema.ops->get_target_namespace;
-    schema->ops->set_target_namespace = 
+    
+    schema->ops->set_target_namespace = axis2_hash_get(methods, 
+            "set_target_namespace", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->set_target_namespace)
+            schema->ops->set_target_namespace = 
             schema_impl_l->schema.ops->set_target_namespace;
-    schema->ops->get_version = 
+    
+    schema->ops->get_version = axis2_hash_get(methods, "get_version",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_version)
+            schema->ops->get_version = 
             schema_impl_l->schema.ops->get_version;
-    schema->ops->compile = 
+    
+    schema->ops->compile = axis2_hash_get(methods, "compile",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->compile)
+            schema->ops->compile = 
             schema_impl_l->schema.ops->compile;
-    schema->ops->write_with_out = 
+    
+    schema->ops->write_with_out = axis2_hash_get(methods, "write_with_out",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->write_with_out)
+            schema->ops->write_with_out = 
             schema_impl_l->schema.ops->write_with_out;
-    schema->ops->write_with_writer = 
+    
+    schema->ops->write_with_writer = axis2_hash_get(methods, "write_with_writer",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->write_with_writer)
+            schema->ops->write_with_writer = 
             schema_impl_l->schema.ops->write_with_writer;
-    schema->ops->get_prefix_to_namespace_map = 
+    
+    schema->ops->get_prefix_to_namespace_map = axis2_hash_get(methods, 
+            "get_prefix_to_namespace_map", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->get_prefix_to_namespace_map)
+            schema->ops->get_prefix_to_namespace_map = 
             schema_impl_l->schema.ops->get_prefix_to_namespace_map;
-    schema->ops->set_prefix_to_namespace_map = 
+    
+    schema->ops->set_prefix_to_namespace_map = axis2_hash_get(methods, 
+            "set_prefix_to_namespace_map", AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->set_prefix_to_namespace_map)
+            schema->ops->set_prefix_to_namespace_map = 
             schema_impl_l->schema.ops->set_prefix_to_namespace_map;
-    schema->ops->add_type = 
+    
+    schema->ops->add_type = axis2_hash_get(methods, "add_type",
+            AXIS2_HASH_KEY_STRING);
+    if(!schema->ops->add_type)
+            schema->ops->add_type = 
             schema_impl_l->schema.ops->add_type;
     
     return axis2_xml_schema_annotated_resolve_methods(&(schema->base), 
@@ -500,7 +676,14 @@
                                  axis2_env_t **env,
                                  axis2_char_t *prefix)
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+
     return NULL;
 }
 
@@ -509,9 +692,12 @@
                                  axis2_env_t **env)
 {
     axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
-    schema_impl = AXIS2_INTF_TO_IMPL(schema);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
     
     return NULL;
 }
@@ -522,9 +708,12 @@
                                  axis2_xml_schema_form_t *value)
 {
     axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    schema_impl = AXIS2_INTF_TO_IMPL(schema);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
     
     return AXIS2_SUCCESS;
 }
@@ -534,9 +723,12 @@
                                  axis2_env_t **env)
 {
     axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
-    schema_impl = AXIS2_INTF_TO_IMPL(schema);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
     
     return NULL;
 }
@@ -546,9 +738,12 @@
                                  axis2_env_t **env)
 {
     axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
-    schema_impl = AXIS2_INTF_TO_IMPL(schema);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
     
     return NULL;
 }
@@ -557,6 +752,14 @@
 axis2_xml_schema_get_block_default(void *schema,
                                     axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -565,6 +768,14 @@
                         axis2_env_t **env,
                         axis2_xml_schema_derivation_method_t *block_default) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -572,6 +783,14 @@
 axis2_xml_schema_get_element_form_default(void *schema,
                                             axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -580,6 +799,14 @@
                             axis2_env_t **env,
                             axis2_xml_schema_form_t *element_form_default) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -587,6 +814,14 @@
 axis2_xml_schema_get_elements(void *schema,
                                 axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -595,6 +830,14 @@
                                         axis2_env_t **env,
                                         axis2_qname_t *qname) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -603,6 +846,14 @@
                                     axis2_env_t **env,
                                     axis2_qname_t *qname) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -610,6 +861,14 @@
 axis2_xml_schema_get_final_default(void *schema,
                                     axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -618,6 +877,14 @@
                         axis2_env_t **env,
                         axis2_xml_schema_derivation_method_t *final_default) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -625,6 +892,14 @@
 axis2_xml_schema_get_groups(void *schema,
                             axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -632,6 +907,14 @@
 axis2_xml_schema_get_includes(void *schema,
                                 axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -646,6 +929,14 @@
 axis2_xml_schema_get_items(void *schema,
                            axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
     
 }
@@ -654,6 +945,14 @@
 axis2_xml_schema_get_notations(void *schema,
                                 axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -661,6 +960,14 @@
 axis2_xml_schema_get_schema_types(void *schema,
                                     axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -668,6 +975,14 @@
 axis2_xml_schema_get_target_namespace(void *schema,
                                         axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -676,6 +991,14 @@
                                         axis2_env_t **env,
                                         axis2_char_t *target_namespc) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -683,6 +1006,14 @@
 axis2_xml_schema_get_version(void *schema,
                                 axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -691,6 +1022,14 @@
                             axis2_env_t **env,
                             axis2_validation_event_handler_t *veh) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 
 }
@@ -700,6 +1039,14 @@
                                 axis2_env_t **env,
                                 void *outstream) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -712,8 +1059,17 @@
 
 static axis2_status_t 
 serialize_internal(void *schema,
+                    axis2_env_t **env,
                     void *writer)
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -721,6 +1077,14 @@
 axis2_xml_schema_get_prefix_to_namespace_map(void *schema,
                                                 axis2_env_t **env) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  NULL);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return NULL;
 }
 
@@ -729,6 +1093,14 @@
                                                 axis2_env_t **env,
                                                 axis2_hash_t *map) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }
 
@@ -737,5 +1109,13 @@
                             axis2_env_t **env,
                             axis2_xml_schema_type_t *type) 
 {
+    axis2_xml_schema_impl_t *schema_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env,  AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_SUPER_OBJS(schema, env);
+    schema_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_SUCCESS;
 }

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_all.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_all.c?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_all.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_all.c Tue May  9 04:57:30 2006
@@ -27,6 +27,8 @@
 {
     axis2_xml_schema_all_t all;
     axis2_xml_schema_group_base_t *base;
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     axis2_xml_schema_obj_collection_t *items;
 };
@@ -34,12 +36,24 @@
 #define AXIS2_INTF_TO_IMPL(all) ((axis2_xml_schema_all_impl_t *) all)
 
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_all_free(void *all,
-                        axis2_env_t **env);
+axis2_xml_schema_all_free(
+        void *all,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_all_super_objs(
+        void *all,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_all_type(
+        void *all,
+        axis2_env_t **env);
 
 axis2_xml_schema_group_base_t *AXIS2_CALL
-axis2_xml_schema_all_get_base_impl(void *all,
-                                        axis2_env_t **env);
+axis2_xml_schema_all_get_base_impl(
+        void *all,
+        axis2_env_t **env);
 
 axis2_xml_schema_obj_collection_t *AXIS2_CALL
 axis2_xml_schema_all_get_items(void *all,
@@ -56,6 +70,8 @@
                     sizeof(axis2_xml_schema_all_impl_t));
 
     all_impl->base = NULL;
+    all_impl->super = NULL;
+    all_impl->obj_type = AXIS2_XML_SCHEMA_ALL;
     all_impl->methods = NULL;
     all_impl->items = NULL;
     all_impl->all.ops = AXIS2_MALLOC((*env)->allocator, 
@@ -75,10 +91,26 @@
     }
     axis2_hash_set(all_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_all_free);
+    axis2_hash_set(all_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_all_super_objs);
+    axis2_hash_set(all_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_all_type);
     axis2_hash_set(all_impl->methods, "get_items", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_all_get_items);
     
     all_impl->base = axis2_xml_schema_group_base_create(env);
+    
+    all_impl->super = axis2_hash_make(env);
+    if(!all_impl->super)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(all_impl->super, "AXIS2_XML_SCHEMA_GROUP_BASE", AXIS2_HASH_KEY_STRING, 
+            all_impl->base);
+    axis2_hash_set(all_impl->super, "AXIS2_XML_SCHEMA_ALL", AXIS2_HASH_KEY_STRING, 
+            &(all_impl->all));
+
     status = axis2_xml_schema_group_base_resolve_methods(
             &(all_impl->all.base), env, all_impl->base, 
             all_impl->methods);
@@ -106,6 +138,12 @@
         axis2_hash_free(all_impl->methods, env);
         all_impl->methods = NULL;
     }
+    
+    if(all_impl->super)
+    {
+        axis2_hash_free(all_impl->super, env);
+        all_impl->super = NULL;
+    }
 
     if(all_impl->base)
     {
@@ -127,16 +165,30 @@
     return AXIS2_SUCCESS;
 }
 
-axis2_xml_schema_group_base_t *AXIS2_CALL
-axis2_xml_schema_all_get_base_impl(void *all,
-                                axis2_env_t **env)
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_all_super_objs(
+        void *all,
+        axis2_env_t **env)
 {
     axis2_xml_schema_all_impl_t *all_impl = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
     all_impl = AXIS2_INTF_TO_IMPL(all);
 
-    return all_impl->base;
+    return all_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_all_type(
+        void *all,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_all_impl_t *all_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    all_impl = AXIS2_INTF_TO_IMPL(all);
+
+    return all_impl->obj_type;
 }
 
 AXIS2_DECLARE(axis2_status_t)
@@ -158,9 +210,15 @@
             sizeof(axis2_xml_schema_all_ops_t));
     all->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    all->ops->get_base_impl = 
-            all_impl_l->all.ops->get_base_impl;
-    all->ops->get_items = 
+    all->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    all->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+
+    all->ops->get_items = axis2_hash_get(methods, "get_items",
+            AXIS2_HASH_KEY_STRING);
+    if(!all->ops->get_items)
+            all->ops->get_items = 
             all_impl_l->all.ops->get_items;
     
     return axis2_xml_schema_group_base_resolve_methods(&(all->base), 
@@ -171,7 +229,14 @@
 axis2_xml_schema_all_get_items(void *all,
                                     axis2_env_t **env)
 {
+    axis2_xml_schema_all_impl_t *all_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(all)->items;
+    super = AXIS2_XML_SCHEMA_ALL_SUPER_OBJS(all, env);
+    all_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ALL", AXIS2_HASH_KEY_STRING));
+
+    return all_impl->items;
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotated.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotated.c?rev=405399&r1=405398&r2=405399&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotated.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotated.c Tue May  9 04:57:30 2006
@@ -29,7 +29,11 @@
     axis2_xml_schema_annotated_t annotated;
     
     axis2_xml_schema_obj_t *schema_obj;
-    
+   
+    axis2_xml_schema_types_t obj_type;
+
+    axis2_hash_t *super;
+
     axis2_hash_t *methods;
     
     axis2_xml_schema_annotation_t *annotation;
@@ -45,8 +49,19 @@
 /*************** function prototypes *****************************************/
 
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_annotated_free(void *annotated,
-                        axis2_env_t **env);
+axis2_xml_schema_annotated_free(
+        void *annotated,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_annotated_super_objs(
+        void *annotated,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_annotated_type(
+        void *annotated,
+        axis2_env_t **env);
 
 axis2_xml_schema_obj_t *AXIS2_CALL
 axis2_xml_schema_annotated_get_base_impl(void *annotated,
@@ -97,6 +112,8 @@
     }
     
     annotated_impl->schema_obj = NULL;
+    annotated_impl->obj_type = AXIS2_XML_SCHEMA_ANNOTATED;
+    annotated_impl->super = NULL;
     annotated_impl->methods = NULL;
     annotated_impl->id = NULL;
     annotated_impl->annotation = NULL;
@@ -115,6 +132,10 @@
     
     annotated_impl->annotated.ops->free = 
             axis2_xml_schema_annotated_free;
+    annotated_impl->annotated.ops->super_objs = 
+            axis2_xml_schema_annotated_super_objs;
+    annotated_impl->annotated.ops->type = 
+            axis2_xml_schema_annotated_type;
     annotated_impl->annotated.ops->get_base_impl = 
             axis2_xml_schema_annotated_get_base_impl;
     annotated_impl->annotated.ops->get_id = 
@@ -138,6 +159,10 @@
     }
     axis2_hash_set(annotated_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_annotated_free);
+    axis2_hash_set(annotated_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_annotated_super_objs);
+    axis2_hash_set(annotated_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_annotated_type);
     axis2_hash_set(annotated_impl->methods, "get_id", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_annotated_get_id);
     axis2_hash_set(annotated_impl->methods, "set_id", AXIS2_HASH_KEY_STRING, 
@@ -157,6 +182,18 @@
         axis2_xml_schema_annotated_free(&(annotated_impl->annotated), env);
         return NULL;
     }
+
+    annotated_impl->super = axis2_hash_make(env);
+    if(!annotated_impl->super)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(annotated_impl->super, "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING, 
+           &(annotated_impl->annotated) );
+    axis2_hash_set(annotated_impl->super, "AXIS2_XML_SCHEMA_OBJ", AXIS2_HASH_KEY_STRING, 
+           annotated_impl->schema_obj );
+
     status = axis2_xml_schema_obj_resolve_methods(
             &(annotated_impl->annotated.base), env, annotated_impl->schema_obj, 
             annotated_impl->methods);
@@ -192,6 +229,12 @@
         annotated_impl->unhandled_attrs = NULL;
     }  
 
+    if(NULL != annotated_impl->super)
+    {
+        axis2_hash_free(annotated_impl->super, env);
+        annotated_impl->super = NULL;
+    }
+
     if(NULL != annotated_impl->methods)
     {
         axis2_hash_free(annotated_impl->methods, env);
@@ -220,6 +263,28 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_annotated_super_objs(
+        void *annotated,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    annotated_impl = AXIS2_INTF_TO_IMPL(annotated);
+
+    return annotated_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_annotated_type(
+        void *annotated,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    annotated_impl = AXIS2_INTF_TO_IMPL(annotated);
+
+    return annotated_impl->obj_type;
+}
+
 axis2_xml_schema_obj_t *AXIS2_CALL
 axis2_xml_schema_annotated_get_base_impl(void *annotated,
                                 axis2_env_t **env)
@@ -254,19 +319,45 @@
     }
     annotated->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    annotated->ops->get_base_impl = 
-            annotated_impl_l->annotated.ops->get_base_impl;
-    annotated->ops->get_id = 
+    annotated->ops->super_objs = 
+            annotated_impl_l->annotated.ops->super_objs;
+    annotated->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+
+    annotated->ops->get_id = axis2_hash_get(methods, "get_id", 
+            AXIS2_HASH_KEY_STRING);
+    if(!annotated->ops->get_id)
+            annotated->ops->get_id = 
             annotated_impl_l->annotated.ops->get_id;
-    annotated->ops->set_id = 
+    
+    annotated->ops->set_id = axis2_hash_get(methods, "set_id", 
+            AXIS2_HASH_KEY_STRING);
+    if(!annotated->ops->set_id)
+            annotated->ops->set_id = 
             annotated_impl_l->annotated.ops->set_id;
-    annotated->ops->get_annotation = 
+
+    annotated->ops->get_annotation = axis2_hash_get(methods, "get_annotation", 
+            AXIS2_HASH_KEY_STRING);
+    if(!annotated->ops->get_annotation)
+            annotated->ops->get_annotation = 
             annotated_impl_l->annotated.ops->get_annotation;
-    annotated->ops->set_annotation = 
+    
+    annotated->ops->set_annotation = axis2_hash_get(methods, "set_annotation", 
+            AXIS2_HASH_KEY_STRING);
+    if(!annotated->ops->set_annotation)
+            annotated->ops->set_annotation = 
             annotated_impl_l->annotated.ops->set_annotation;
-    annotated->ops->get_unhandled_attrs = 
+    
+    annotated->ops->get_unhandled_attrs = axis2_hash_get(methods, 
+            "get_unhandled_attrs", AXIS2_HASH_KEY_STRING);
+    if(!annotated->ops->get_unhandled_attrs)
+            annotated->ops->get_unhandled_attrs = 
             annotated_impl_l->annotated.ops->get_unhandled_attrs;
-    annotated->ops->set_unhandled_attrs = 
+    
+    annotated->ops->set_unhandled_attrs = axis2_hash_get(methods, 
+            "set_unhandled_attrs", AXIS2_HASH_KEY_STRING);
+    if(!annotated->ops->set_unhandled_attrs)
+            annotated->ops->set_unhandled_attrs = 
             annotated_impl_l->annotated.ops->set_unhandled_attrs;
 
     return axis2_xml_schema_obj_resolve_methods(&(annotated->base), 
@@ -277,8 +368,14 @@
 axis2_xml_schema_annotated_get_id(void *annotated,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(annotated)->id;
+    super = AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env);
+    annotated_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING));
+    return annotated_impl->id;
 }
 
 axis2_status_t AXIS2_CALL
@@ -287,9 +384,12 @@
                                             axis2_char_t *id)
 {
     axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
-    
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    annotated_impl = AXIS2_INTF_TO_IMPL(annotated);
+    super = AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env);
+    annotated_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING));
     if(annotated_impl->id)
     {
         AXIS2_FREE((*env)->allocator, annotated_impl->id);
@@ -304,8 +404,14 @@
 axis2_xml_schema_annotated_get_annotation(void *annotated,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(annotated)->annotation;
+    super = AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env);
+    annotated_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING));
+    return annotated_impl->annotation;
 }
 
 axis2_status_t AXIS2_CALL
@@ -315,9 +421,12 @@
                                                 annotation)
 {
     axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    annotated_impl = AXIS2_INTF_TO_IMPL(annotated);
+    super = AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env);
+    annotated_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING));
     if(NULL != annotated_impl->annotation)
     {
         /* TODO Free annotation */
@@ -332,8 +441,14 @@
 axis2_xml_schema_annotated_get_unhandled_attrs(void *annotated,
                                                 axis2_env_t **env)
 {
+    axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(annotated)->unhandled_attrs;
+    super = AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env);
+    annotated_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING));
+    return annotated_impl->unhandled_attrs;
 }
 
 axis2_status_t AXIS2_CALL
@@ -343,9 +458,12 @@
                                                     unhandled_attrs)
 {
     axis2_xml_schema_annotated_impl_t *annotated_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    annotated_impl = AXIS2_INTF_TO_IMPL(annotated);
+    super = AXIS2_XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env);
+    annotated_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+        "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING));
     if(annotated_impl->unhandled_attrs)
     {
         /* TODO Free unhandled_attrs */