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/10 08:39:36 UTC

svn commit: r405653 [1/2] - in /webservices/axis2/trunk/c/modules/xml/xml_schema: ./ include/xml_schema/

Author: damitha
Date: Tue May  9 23:39:32 2006
New Revision: 405653

URL: http://svn.apache.org/viewcvs?rev=405653&view=rev
Log:
More fixes

Modified:
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotation.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_any.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_app_info.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_content_processing.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/include/xml_schema/axis2_xml_schema_enum.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_base.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_ref.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_obj.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_particle.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_use.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotation.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_any.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_app_info.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_content_processing.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_enum.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_base.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_ref.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_obj.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_obj_collection.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_particle.c
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_use.c

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotation.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotation.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotation.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_annotation.h Tue May  9 23:39:32 2006
@@ -22,6 +22,7 @@
  * @brief Axis2 Xml Schema Annotation Interface
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_obj.h>
 #include <axis2_hash.h>
 
@@ -47,6 +48,16 @@
     axis2_status_t (AXIS2_CALL *
     free) (void *annotation,
             axis2_env_t **env);
+    
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *annotation,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *annotation,
+            axis2_env_t **env);
 
     axis2_xml_schema_obj_t *(AXIS2_CALL *
     get_base_impl) (void *annotation,
@@ -80,6 +91,14 @@
 #define AXIS2_XML_SCHEMA_ANNOTATION_FREE(annotation, env) \
 		(((axis2_xml_schema_annotation_t *) annotation)->ops->\
             free(annotation, env))
+
+#define AXIS2_XML_SCHEMA_ANNOTATION_SUPER_OBJS(annotation, env) \
+		(((axis2_xml_schema_annotation_t *) annotation)->ops->\
+            super_objs(annotation, env))
+
+#define AXIS2_XML_SCHEMA_ANNOTATION_TYPE(annotation, env) \
+		(((axis2_xml_schema_annotation_t *) annotation)->ops->\
+            type(annotation, env))
 
 #define AXIS2_XML_SCHEMA_ANNOTATION_GET_ITEMS(annotation, env) \
 		(((axis2_xml_schema_annotation_t *) annotation)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_any.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_any.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_any.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_any.h Tue May  9 23:39:32 2006
@@ -26,6 +26,7 @@
  *
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_particle.h>
 #include <xml_schema/axis2_xml_schema_content_processing.h>
 
@@ -50,7 +51,18 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *any,
+    free) (
+            void *any,
+            axis2_env_t **env);
+
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *any,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *any,
             axis2_env_t **env);
 
     axis2_xml_schema_particle_t *(AXIS2_CALL *
@@ -90,13 +102,19 @@
  */
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_any_resolve_methods(
-                                axis2_xml_schema_any_t *any,
-                                axis2_env_t **env,
-                                axis2_xml_schema_any_t *any_impl,
-                                axis2_hash_t *methods);
+           axis2_xml_schema_any_t *any,
+           axis2_env_t **env,
+           axis2_xml_schema_any_t *any_impl,
+           axis2_hash_t *methods);
 
 #define AXIS2_XML_SCHEMA_ANY_FREE(any, env) \
 		(((axis2_xml_schema_any_t *) any)->ops->free(any, env))
+
+#define AXIS2_XML_SCHEMA_ANY_SUPER_OBJS(any, env) \
+		(((axis2_xml_schema_any_t *) any)->ops->super_objs(any, env))
+
+#define AXIS2_XML_SCHEMA_ANY_TYPE(any, env) \
+		(((axis2_xml_schema_any_t *) any)->ops->type(any, env))
 
 #define AXIS2_XML_SCHEMA_ANY_GET_BASE_IMPL(any, env) \
 		(((axis2_xml_schema_any_t *) any)->ops->get_base_impl(any, env))

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_app_info.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_app_info.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_app_info.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_app_info.h Tue May  9 23:39:32 2006
@@ -25,6 +25,7 @@
  *
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_obj.h>
 #include <axis2_hash.h>
 
@@ -48,7 +49,18 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *app_info,
+    free) (
+            void *app_info,
+            axis2_env_t **env);
+
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *app_info,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *app_info,
             axis2_env_t **env);
 
     axis2_xml_schema_obj_t *(AXIS2_CALL *
@@ -91,14 +103,22 @@
  */
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_app_info_resolve_methods(
-                                axis2_xml_schema_app_info_t *app_info,
-                                axis2_env_t **env,
-                                axis2_xml_schema_app_info_t *app_info_impl,
-                                axis2_hash_t *methods);
+       axis2_xml_schema_app_info_t *app_info,
+       axis2_env_t **env,
+       axis2_xml_schema_app_info_t *app_info_impl,
+       axis2_hash_t *methods);
 
 #define AXIS2_XML_SCHEMA_APP_INFO_FREE(app_info, env) \
 		(((axis2_xml_schema_app_info_t *) app_info)->ops->\
             free(app_info, env))
+
+#define AXIS2_XML_SCHEMA_APP_INFO_SUPER_OBJS(app_info, env) \
+		(((axis2_xml_schema_app_info_t *) app_info)->ops->\
+            super_objs(app_info, env))
+
+#define AXIS2_XML_SCHEMA_APP_INFO_TYPE(app_info, env) \
+		(((axis2_xml_schema_app_info_t *) app_info)->ops->\
+            type(app_info, env))
 
 #define AXIS2_XML_SCHEMA_APP_INFO_GET_SOURCE(app_info, env) \
 		(((axis2_xml_schema_app_info_t *) app_info)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_content_processing.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_content_processing.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_content_processing.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_content_processing.h Tue May  9 23:39:32 2006
@@ -24,6 +24,7 @@
  *
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_enum.h>
 
 /** @defgroup axis2_xml_schema_content_processing Xml Schema Content Processing
@@ -52,6 +53,14 @@
     free) (void *content_processing,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (void *content_processing,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (void *content_processing,
+            axis2_env_t **env);
+
     axis2_xml_schema_enum_t *(AXIS2_CALL *
     get_base_impl) (void *content_processing,
                     axis2_env_t **env);
@@ -85,6 +94,14 @@
 #define AXIS2_XML_SCHEMA_CONTENT_PROCESSING_FREE(content_processing, env) \
 		(((axis2_xml_schema_content_processing_t *) content_processing)->ops->\
          free(content_processing, env))
+
+#define AXIS2_XML_SCHEMA_CONTENT_PROCESSING_SUPER_OBJS(content_processing, env) \
+		(((axis2_xml_schema_content_processing_t *) content_processing)->ops->\
+         super_objs(content_processing, env))
+
+#define AXIS2_XML_SCHEMA_CONTENT_PROCESSING_TYPE(content_processing, env) \
+		(((axis2_xml_schema_content_processing_t *) content_processing)->ops->\
+         type(content_processing, env))
 
 
 #define AXIS2_XML_SCHEMA_CONTENT_PROCESSING_GET_BASE_IMPL(content_processing, 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=405653&r1=405652&r2=405653&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 23:39:32 2006
@@ -47,9 +47,18 @@
     {
         AXIS2_XML_SCHEMA = 0,
         AXIS2_XML_SCHEMA_ALL,
-        AXIS2_XML_SCHEMA_GROUP_BASE,
         AXIS2_XML_SCHEMA_ANNOTATED,
-        AXIS2_XML_SCHEMA_OBJ
+        AXIS2_XML_SCHEMA_ANNOTATION,
+        AXIS2_XML_SCHEMA_OBJ,
+        AXIS2_XML_SCHEMA_PARTICLE,
+        AXIS2_XML_SCHEMA_ENUM,
+        AXIS2_XML_SCHEMA_USE,
+        AXIS2_XML_SCHEMA_ANY,
+        AXIS2_XML_SCHEMA_CONTENT_PROCESSING,
+        AXIS2_XML_SCHEMA_APP_INFO,
+        AXIS2_XML_SCHEMA_GROUP,
+        AXIS2_XML_SCHEMA_GROUP_BASE,
+        AXIS2_XML_SCHEMA_GROUP_REF
     } axis2_xml_schema_types_t;
 
 /** @} */

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_enum.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_enum.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_enum.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_enum.h Tue May  9 23:39:32 2006
@@ -29,6 +29,7 @@
 #include <axis2_const.h>
 #include <axis2_array_list.h>
 #include <axis2_hash.h>
+#include <xml_schema/axis2_xml_schema_defines.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -50,7 +51,18 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *schema_enum,
+    free) (
+            void *schema_enum,
+            axis2_env_t **env);
+
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *schema_enum,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *schema_enum,
             axis2_env_t **env);
 
     axis2_char_t * (AXIS2_CALL *
@@ -100,6 +112,12 @@
 
 #define AXIS2_XML_SCHEMA_ENUM_FREE(schema_enum, env) \
 		(((axis2_xml_schema_enum_t *) schema_enum)->ops->free (schema_enum, env))
+
+#define AXIS2_XML_SCHEMA_ENUM_SUPER_OBJS(schema_enum, env) \
+		(((axis2_xml_schema_enum_t *) schema_enum)->ops->super_objs (schema_enum, env))
+
+#define AXIS2_XML_SCHEMA_ENUM_TYPE(schema_enum, env) \
+		(((axis2_xml_schema_enum_t *) schema_enum)->ops->type (schema_enum, env))
 
 #define AXIS2_XML_SCHEMA_ENUM_GET_VALUE(schema_enum, env) \
 		(((axis2_xml_schema_enum_t *) schema_enum)->ops->get_value \

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group.h Tue May  9 23:39:32 2006
@@ -26,6 +26,7 @@
  *          Represents the World Wide Web Consortium (W3C) group element.
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_annotated.h>
 #include <axis2_hash.h>
 
@@ -53,6 +54,14 @@
     free) (void *group,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (void *group,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (void *group,
+            axis2_env_t **env);
+
     axis2_xml_schema_annotated_t *(AXIS2_CALL *
     get_base_impl) (void *group,
                     axis2_env_t **env);
@@ -101,6 +110,14 @@
 #define AXIS2_XML_SCHEMA_GROUP_FREE(group, env) \
 		(((axis2_xml_schema_group_t *) group)->ops->\
             free(group, env))
+
+#define AXIS2_XML_SCHEMA_GROUP_SUPER_OBJS(group, env) \
+		(((axis2_xml_schema_group_t *) group)->ops->\
+            super_objs(group, env))
+
+#define AXIS2_XML_SCHEMA_GROUP_TYPE(group, env) \
+		(((axis2_xml_schema_group_t *) group)->ops->\
+            type(group, env))
 
 #define AXIS2_XML_SCHEMA_GROUP_GET_BASE_IMPL(group, env) \
 		(((axis2_xml_schema_group_t *) group)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_base.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_base.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_base.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_base.h Tue May  9 23:39:32 2006
@@ -25,6 +25,7 @@
  *
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_particle.h>
 #include <xml_schema/axis2_xml_schema_obj_collection.h>
 
@@ -53,6 +54,14 @@
     free) (void *group_base,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (void *group_base,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (void *group_base,
+            axis2_env_t **env);
+
     axis2_xml_schema_particle_t *(AXIS2_CALL *
     get_base_impl) (void *group_base,
                     axis2_env_t **env);
@@ -84,6 +93,12 @@
 
 #define AXIS2_XML_SCHEMA_GROUP_BASE_FREE(group_base, env) \
 		(((axis2_xml_schema_group_base_t *) group_base)->ops->free(group_base, env))
+
+#define AXIS2_XML_SCHEMA_GROUP_BASE_SUPER_OBJS(group_base, env) \
+		(((axis2_xml_schema_group_base_t *) group_base)->ops->super_objs(group_base, env))
+
+#define AXIS2_XML_SCHEMA_GROUP_BASE_TYPE(group_base, env) \
+		(((axis2_xml_schema_group_base_t *) group_base)->ops->type(group_base, env))
 
 #define AXIS2_XML_SCHEMA_GROUP_BASE_GET_BASE_IMPL(group_base, env) \
 		(((axis2_xml_schema_group_base_t *) group_base)->ops->get_base_impl(group_base, env))

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_ref.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_ref.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_ref.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_group_ref.h Tue May  9 23:39:32 2006
@@ -25,6 +25,7 @@
  *          Web Consortium (W3C) group element with ref attribute.
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_particle.h>
 #include <axis2_hash.h>
 #include <axis2_qname.h>
@@ -53,6 +54,16 @@
     free) (void *group_ref,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *group_ref,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *group_ref,
+            axis2_env_t **env);
+
     axis2_xml_schema_particle_t *(AXIS2_CALL *
     get_base_impl) (void *group_ref,
                     axis2_env_t **env);
@@ -97,6 +108,12 @@
 #define AXIS2_XML_SCHEMA_GROUP_REF_FREE(group_ref, env) \
 		(((axis2_xml_schema_group_ref_t *) group_ref)->ops->\
             free(group_ref, env))
+
+#define AXIS2_XML_SCHEMA_GROUP_REF_SUPER_OBJS(group_ref, env) \
+		(((axis2_xml_schema_group_ref_t *) group_ref)->ops->super_objs(group_ref, env))
+
+#define AXIS2_XML_SCHEMA_GROUP_REF_TYPE(group_ref, env) \
+		(((axis2_xml_schema_group_ref_t *) group_ref)->ops->type(group_ref, env))
 
 #define AXIS2_XML_SCHEMA_GROUP_REF_GET_BASE_IMPL(group_ref, env) \
 		(((axis2_xml_schema_group_ref_t *) group_ref)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_obj.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_obj.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_obj.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_obj.h Tue May  9 23:39:32 2006
@@ -29,6 +29,7 @@
 #include <axis2_const.h>
 #include <axis2_array_list.h>
 #include <axis2_hash.h>
+#include <xml_schema/axis2_xml_schema_defines.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -50,7 +51,18 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *obj,
+    free) (
+            void *obj,
+            axis2_env_t **env);
+    
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *obj,
+            axis2_env_t **env);
+    
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *obj,
             axis2_env_t **env);
 
     int (AXIS2_CALL *
@@ -106,6 +118,12 @@
 
 #define AXIS2_XML_SCHEMA_OBJ_FREE(obj, env) \
 		(((axis2_xml_schema_obj_t *) obj)->ops->free (obj, env))
+
+#define AXIS2_XML_SCHEMA_OBJ_SUPER_OBJS(obj, env) \
+		(((axis2_xml_schema_obj_t *) obj)->ops->super_objs (obj, env))
+
+#define AXIS2_XML_SCHEMA_OBJ_TYPE(obj, env) \
+		(((axis2_xml_schema_obj_t *) obj)->ops->type (obj, env))
 
 #define AXIS2_XML_SCHEMA_OBJ_GET_LINE_NUM(obj, env) \
 		(((axis2_xml_schema_obj_t *) obj)->ops->get_line_num (obj, env))

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_particle.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_particle.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_particle.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_particle.h Tue May  9 23:39:32 2006
@@ -23,6 +23,7 @@
  *          Base class for all particle types.
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_annotated.h>
 #include <axis2_hash.h>
 
@@ -48,7 +49,18 @@
      * @return status code
      */
     axis2_status_t (AXIS2_CALL *
-    free) (void *particle,
+    free) (
+            void *particle,
+            axis2_env_t **env);
+
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *particle,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *particle,
             axis2_env_t **env);
 
     axis2_xml_schema_annotated_t *(AXIS2_CALL *
@@ -104,6 +116,14 @@
 #define AXIS2_XML_SCHEMA_PARTICLE_FREE(particle, env) \
 		(((axis2_xml_schema_particle_t *) particle)->ops->\
             free(particle, env))
+
+#define AXIS2_XML_SCHEMA_PARTICLE_SUPER_OBJS(particle, env) \
+		(((axis2_xml_schema_particle_t *) particle)->ops->\
+            super_objs(particle, env))
+
+#define AXIS2_XML_SCHEMA_PARTICLE_TYPE(particle, env) \
+		(((axis2_xml_schema_particle_t *) particle)->ops->\
+            type(particle, env))
 
 #define AXIS2_XML_SCHEMA_PARTICLE_GET_BASE_IMPL(particle, env) \
 		(((axis2_xml_schema_particle_t *) particle)->ops->\

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_use.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_use.h?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_use.h (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/include/xml_schema/axis2_xml_schema_use.h Tue May  9 23:39:32 2006
@@ -24,6 +24,7 @@
  *
  */
 
+#include <xml_schema/axis2_xml_schema_defines.h>
 #include <xml_schema/axis2_xml_schema_enum.h>
 
 /** @defgroup axis2_xml_schema_use Xml Schema Use
@@ -49,6 +50,16 @@
     free) (void *use,
             axis2_env_t **env);
 
+    axis2_hash_t *(AXIS2_CALL *
+    super_objs) (
+            void *use,
+            axis2_env_t **env);
+
+    axis2_xml_schema_types_t (AXIS2_CALL *
+    type) (
+            void *use,
+            axis2_env_t **env);
+
     axis2_xml_schema_enum_t *(AXIS2_CALL *
     get_base_impl) (void *use,
                     axis2_env_t **env);
@@ -74,13 +85,19 @@
  */
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_use_resolve_methods(
-                                axis2_xml_schema_use_t *use,
-                                axis2_env_t **env,
-                                axis2_xml_schema_use_t *use_impl,
-                                axis2_hash_t *methods);
+           axis2_xml_schema_use_t *use,
+           axis2_env_t **env,
+           axis2_xml_schema_use_t *use_impl,
+           axis2_hash_t *methods);
 
 #define AXIS2_XML_SCHEMA_USE_FREE(use, env) \
 		(((axis2_xml_schema_use_t *) use)->ops->free(use, env))
+
+#define AXIS2_XML_SCHEMA_USE_SUPER_OBJS(use, env) \
+		(((axis2_xml_schema_use_t *) use)->ops->super_objs(use, env))
+
+#define AXIS2_XML_SCHEMA_USE_TYPE(use, env) \
+		(((axis2_xml_schema_use_t *) use)->ops->type(use, env))
 
 #define AXIS2_XML_SCHEMA_USE_GET_BASE_IMPL(use, env) \
 		(((axis2_xml_schema_use_t *) use)->ops->get_base_impl(use, env))

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotation.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotation.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotation.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_annotation.c Tue May  9 23:39:32 2006
@@ -26,12 +26,14 @@
 struct axis2_xml_schema_annotation_impl
 {
     axis2_xml_schema_annotation_t annotation;
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
+    axis2_hash_t *methods;
     
     axis2_xml_schema_obj_t *schema_obj;
     
     axis2_hash_t *items;
     
-    axis2_hash_t *methods;
 };
 
 #define AXIS2_INTF_TO_IMPL(annotation) \
@@ -39,8 +41,19 @@
 
 /*************** function prototypes *****************************************/
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_annotation_free(void *annotation,
-                        axis2_env_t **env);
+axis2_xml_schema_annotation_free(
+        void *annotation,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_annotation_super_objs(
+        void *annotation,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_annotation_type(
+        void *annotation,
+        axis2_env_t **env);
 
 axis2_xml_schema_obj_t *AXIS2_CALL
 axis2_xml_schema_annotation_get_base_impl(void *annotation,
@@ -66,6 +79,8 @@
         return NULL;
     }
     annotation_impl->schema_obj = NULL;
+    annotation_impl->obj_type = AXIS2_XML_SCHEMA_ANNOTATION;
+    annotation_impl->super = NULL;
     annotation_impl->methods = NULL;
     annotation_impl->items = NULL;
     annotation_impl->annotation.base.ops = NULL;
@@ -82,6 +97,10 @@
     
     annotation_impl->annotation.ops->free = 
         axis2_xml_schema_annotation_free;
+    annotation_impl->annotation.ops->super_objs = 
+        axis2_xml_schema_annotation_super_objs;
+    annotation_impl->annotation.ops->type = 
+        axis2_xml_schema_annotation_type;
     annotation_impl->annotation.ops->get_base_impl = 
         axis2_xml_schema_annotation_get_base_impl;
     annotation_impl->annotation.ops->get_items = 
@@ -104,6 +123,10 @@
     }
     axis2_hash_set(annotation_impl->methods, "free", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_annotation_free);
+    axis2_hash_set(annotation_impl->methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_annotation_super_objs);
+    axis2_hash_set(annotation_impl->methods, "type", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_annotation_type);
     axis2_hash_set(annotation_impl->methods, "get_items", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_annotation_get_items);
 
@@ -115,6 +138,19 @@
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
+
+    annotation_impl->super = axis2_hash_make(env);
+    if(!annotation_impl->super) 
+    {
+        axis2_xml_schema_annotation_free(&(annotation_impl->annotation), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(annotation_impl->methods, "AXIS2_XML_SCHEMA_ANNOTATION", 
+            AXIS2_HASH_KEY_STRING, &(annotation_impl->annotation));
+    axis2_hash_set(annotation_impl->methods, "AXIS2_XML_SCHEMA_OBJ", 
+            AXIS2_HASH_KEY_STRING, annotation_impl->schema_obj);
+    
     status =  axis2_xml_schema_obj_resolve_methods(&(annotation_impl->annotation.base), 
             env, annotation_impl->schema_obj, annotation_impl->methods);
     return &(annotation_impl->annotation);
@@ -135,6 +171,12 @@
         annotation_impl->items = NULL;
     }
     
+    if(NULL != annotation_impl->super)
+    {
+        axis2_hash_free(annotation_impl->super, env);
+        annotation_impl->super = NULL;
+    }
+    
     if(NULL != annotation_impl->methods)
     {
         axis2_hash_free(annotation_impl->methods, env);
@@ -179,10 +221,10 @@
 
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_annotation_resolve_methods(
-                                axis2_xml_schema_annotation_t *annotation,
-                                axis2_env_t **env,
-                                axis2_xml_schema_annotation_t *annotation_impl,
-                                axis2_hash_t *methods)
+        axis2_xml_schema_annotation_t *annotation,
+        axis2_env_t **env,
+        axis2_xml_schema_annotation_t *annotation_impl,
+        axis2_hash_t *methods)
 {
     axis2_xml_schema_annotation_impl_t *annotation_impl_l = NULL;
 
@@ -196,10 +238,15 @@
             sizeof(axis2_xml_schema_annotation_ops_t));
     annotation->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
+    annotation->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    annotation->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
             
-    annotation->ops->get_base_impl = 
-            annotation_impl_l->annotation.ops->get_base_impl;
-    annotation->ops->get_items = 
+    annotation->ops->get_items = axis2_hash_get(methods, "get_items", 
+            AXIS2_HASH_KEY_STRING);
+    if(!annotation->ops->get_items)
+            annotation->ops->get_items = 
             annotation_impl_l->annotation.ops->get_items;
     
     return axis2_xml_schema_obj_resolve_methods(&(annotation->base), 
@@ -210,6 +257,13 @@
 axis2_xml_schema_annotation_get_items(void *annotation,
                                         axis2_env_t **env)
 {
-    return AXIS2_INTF_TO_IMPL(annotation)->items;
+    axis2_xml_schema_annotation_impl_t *annotation_impl = NULL;
+    axis2_hash_t *super = NULL;
+    
+    super = AXIS2_XML_SCHEMA_ANNOTATION_SUPER_OBJS(annotation, env);
+    annotation_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+            "AXIS2_XML_SCHEMA_ANNOTATION", AXIS2_HASH_KEY_STRING));
+    
+    return annotation_impl->items;
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_any.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_any.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_any.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_any.c Tue May  9 23:39:32 2006
@@ -26,9 +26,9 @@
 struct axis2_xml_schema_any_impl
 {
     axis2_xml_schema_any_t any;
-    
     axis2_xml_schema_particle_t *particle;
-    
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     
     axis2_xml_schema_content_processing_t *process_content;
@@ -42,8 +42,19 @@
 
 /******************* function prototypes **********************************/
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_any_free(void *any,
-                        axis2_env_t **env);
+axis2_xml_schema_any_free(
+        void *any,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_any_super_objs(
+        void *any,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_any_type(
+        void *any,
+        axis2_env_t **env);
 
 axis2_xml_schema_particle_t *AXIS2_CALL
 axis2_xml_schema_any_get_base_impl(void *any,
@@ -86,9 +97,10 @@
     any_impl->any.base.ops = NULL;
     any_impl->any.ops = NULL;
     any_impl->ns = NULL;
+    any_impl->obj_type = AXIS2_XML_SCHEMA_ANY;
+    any_impl->super = NULL;
     any_impl->particle = NULL;
     any_impl->process_content = NULL;
-    any_impl->methods = NULL;
     any_impl->any.ops = AXIS2_MALLOC((*env)->allocator, 
                     sizeof(axis2_xml_schema_any_ops_t));
 
@@ -108,6 +120,10 @@
     }            
     any_impl->any.ops->free = 
         axis2_xml_schema_any_free;
+    any_impl->any.ops->super_objs = 
+        axis2_xml_schema_any_super_objs;
+    any_impl->any.ops->type = 
+        axis2_xml_schema_any_type;
     any_impl->any.ops->get_base_impl = 
         axis2_xml_schema_any_get_base_impl;
     any_impl->any.ops->get_namespace = 
@@ -126,7 +142,11 @@
         return NULL;
     }
     axis2_hash_set(any_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_any_super_objs);
+    axis2_hash_set(any_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_any_free);
+    axis2_hash_set(any_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_any_type);
     axis2_hash_set(any_impl->methods, "get_namespace", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_any_get_namespace);
     axis2_hash_set(any_impl->methods, "set_namespace", AXIS2_HASH_KEY_STRING, 
@@ -137,12 +157,23 @@
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_any_set_process_content);
     
     any_impl->particle = axis2_xml_schema_particle_create(env);
-    if(!any_impl->methods)
+    if(!any_impl->particle)
     {
         axis2_xml_schema_any_free(&(any_impl->any), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
+    any_impl->super = axis2_hash_make(env);
+    if(!any_impl->super)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(any_impl->super, "AXIS_XML_SCHEMA_ANY", AXIS2_HASH_KEY_STRING, 
+            &(any_impl->any));
+    axis2_hash_set(any_impl->super, "AXIS_XML_SCHEMA_PARTICLE", AXIS2_HASH_KEY_STRING, 
+            any_impl->particle);
+
     status = axis2_xml_schema_particle_resolve_methods(
             &(any_impl->any.base), env, any_impl->particle, 
             any_impl->methods); 
@@ -170,6 +201,12 @@
         any_impl->process_content = NULL;
     }
  
+    if(NULL != any_impl->super)
+    {
+        axis2_hash_free(any_impl->super, env);
+        any_impl->super = NULL;
+    }
+ 
     if(NULL != any_impl->methods)
     {
         axis2_hash_free(any_impl->methods, env);
@@ -198,6 +235,29 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_any_type(void *any,
+                                axis2_env_t **env)
+{
+    axis2_xml_schema_any_impl_t *any_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    any_impl = AXIS2_INTF_TO_IMPL(any);
+    return any_impl->obj_type;
+}
+
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_any_super_objs(
+        void *any,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_any_impl_t *any_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    any_impl = AXIS2_INTF_TO_IMPL(any);
+    return any_impl->super;
+}
+
 axis2_xml_schema_particle_t *AXIS2_CALL
 axis2_xml_schema_any_get_base_impl(void *any,
                                 axis2_env_t **env)
@@ -211,10 +271,10 @@
 
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_any_resolve_methods(
-                                axis2_xml_schema_any_t *any,
-                                axis2_env_t **env,
-                                axis2_xml_schema_any_t *any_impl,
-                                axis2_hash_t *methods)
+        axis2_xml_schema_any_t *any,
+        axis2_env_t **env,
+        axis2_xml_schema_any_t *any_impl,
+        axis2_hash_t *methods)
 {
     axis2_xml_schema_any_impl_t *any_impl_l = NULL;
 
@@ -228,14 +288,32 @@
             sizeof(axis2_xml_schema_any_ops_t));
     any->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    any->ops->get_base_impl = 
-            any_impl_l->any.ops->get_base_impl;
-    any->ops->get_namespace = 
+    any->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    any->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+    
+    any->ops->get_namespace = axis2_hash_get(methods, 
+            "get_namespace", AXIS2_HASH_KEY_STRING);
+    if(!any->ops->get_namespace)
+            any->ops->get_namespace = 
             any_impl_l->any.ops->get_namespace;
+    
+    any->ops->set_namespace = axis2_hash_get(methods, 
+            "set_namespace", AXIS2_HASH_KEY_STRING);
+    if(!any->ops->set_namespace)
     any->ops->set_namespace = 
             any_impl_l->any.ops->set_namespace;
+    
+    any->ops->get_process_content = axis2_hash_get(methods, 
+            "get_process_content", AXIS2_HASH_KEY_STRING);
+    if(!any->ops->get_process_content)
     any->ops->get_process_content = 
             any_impl_l->any.ops->get_process_content;
+    
+    any->ops->set_process_content = axis2_hash_get(methods, 
+            "set_process_content", AXIS2_HASH_KEY_STRING);
+    if(!any->ops->set_process_content)
     any->ops->set_process_content = 
             any_impl_l->any.ops->set_process_content;
     
@@ -247,7 +325,14 @@
 axis2_xml_schema_any_get_namespace(void *any,
                                     axis2_env_t **env)
 {
-    return AXIS2_INTF_TO_IMPL(any)->ns;
+    axis2_xml_schema_any_impl_t *any_impl = NULL;
+    axis2_hash_t *super = NULL;
+    
+    super = AXIS2_XML_SCHEMA_ANY_SUPER_OBJS(any, env);
+    any_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ANY", AXIS2_HASH_KEY_STRING));
+
+    return any_impl->ns;
 }
 
 axis2_status_t AXIS2_CALL
@@ -256,9 +341,12 @@
                                             axis2_char_t *namespc)
 {
     axis2_xml_schema_any_impl_t *any_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    any_impl = AXIS2_INTF_TO_IMPL(any);
+    super = AXIS2_XML_SCHEMA_ANY_SUPER_OBJS(any, env);
+    any_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ANY", AXIS2_HASH_KEY_STRING));
     
     if(!any_impl->ns)
     {
@@ -273,7 +361,13 @@
 axis2_xml_schema_any_get_process_content(void *any,
                                             axis2_env_t **env)
 {
-    return AXIS2_INTF_TO_IMPL(any)->process_content;
+    axis2_xml_schema_any_impl_t *any_impl = NULL;
+    axis2_hash_t *super = NULL;
+    super = AXIS2_XML_SCHEMA_ANY_SUPER_OBJS(any, env);
+    any_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ANY", AXIS2_HASH_KEY_STRING));
+
+    return any_impl->process_content;
 }
 
 axis2_status_t AXIS2_CALL
@@ -283,9 +377,12 @@
                                                 process_content)
 {
     axis2_xml_schema_any_impl_t *any_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    any_impl = AXIS2_INTF_TO_IMPL(any);
+    super = AXIS2_XML_SCHEMA_ANY_SUPER_OBJS(any, env);
+    any_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ANY", AXIS2_HASH_KEY_STRING));
     
     if(!any_impl->process_content)
     {

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_app_info.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_app_info.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_app_info.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_app_info.c Tue May  9 23:39:32 2006
@@ -27,7 +27,8 @@
     axis2_xml_schema_app_info_t app_info;
     
     axis2_xml_schema_obj_t *schema_obj;
-    
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     /**
      * Provides the source of the application information.
@@ -41,8 +42,19 @@
         ((axis2_xml_schema_app_info_impl_t *) app_info)
 
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_app_info_free(void *app_info,
-                        axis2_env_t **env);
+axis2_xml_schema_app_info_free(
+        void *app_info,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_app_info_super_objs(
+        void *app_info,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_app_info_type(
+        void *app_info,
+        axis2_env_t **env);
 
 axis2_xml_schema_obj_t *AXIS2_CALL
 axis2_xml_schema_app_info_get_base_impl(void *app_info,
@@ -85,6 +97,8 @@
     app_info_impl->schema_obj = NULL;
     app_info_impl->app_info.base.ops = NULL;
     app_info_impl->app_info.ops = NULL;
+    app_info_impl->obj_type = AXIS2_XML_SCHEMA_APP_INFO;
+    app_info_impl->super = NULL;
     app_info_impl->methods = NULL;
     app_info_impl->source = NULL;
     app_info_impl->markup = NULL;
@@ -100,6 +114,10 @@
     }
     app_info_impl->app_info.ops->free = 
         axis2_xml_schema_app_info_free;
+    app_info_impl->app_info.ops->super_objs = 
+        axis2_xml_schema_app_info_super_objs;
+    app_info_impl->app_info.ops->type = 
+        axis2_xml_schema_app_info_type;
     app_info_impl->app_info.ops->get_base_impl = 
         axis2_xml_schema_app_info_get_base_impl;
     app_info_impl->app_info.ops->get_source = 
@@ -120,6 +138,10 @@
     }
     axis2_hash_set(app_info_impl->methods, "free", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_app_info_free);
+    axis2_hash_set(app_info_impl->methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_app_info_super_objs);
+    axis2_hash_set(app_info_impl->methods, "type", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_app_info_type);
     axis2_hash_set(app_info_impl->methods, "get_source", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_app_info_get_source);
     axis2_hash_set(app_info_impl->methods, "set_source", 
@@ -135,6 +157,19 @@
         axis2_xml_schema_app_info_free(&(app_info_impl->app_info), env);
         return NULL;
     }
+
+    app_info_impl->super = axis2_hash_make(env);
+    if(!app_info_impl->super) 
+    {
+        axis2_xml_schema_app_info_free(&(app_info_impl->app_info), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(app_info_impl->super, "AXIS2_XML_SCHEMA_APP_INFO", 
+            AXIS2_HASH_KEY_STRING, &(app_info_impl->app_info));
+    axis2_hash_set(app_info_impl->super, "AXIS2_XML_SCHEMA_OBJ", 
+            AXIS2_HASH_KEY_STRING, app_info_impl->schema_obj);
+
     status = 
         axis2_xml_schema_obj_resolve_methods(&(app_info_impl->app_info.base), 
             env, app_info_impl->schema_obj, app_info_impl->methods);
@@ -158,6 +193,12 @@
 
     /* TODO Free markup */
     
+    if(NULL != app_info_impl->super)
+    {
+        axis2_hash_free(app_info_impl->super, env);
+        app_info_impl->super = NULL;
+    }
+    
     if(NULL != app_info_impl->methods)
     {
         axis2_hash_free(app_info_impl->methods, env);
@@ -188,9 +229,36 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_app_info_super_objs(
+        void *app_info,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    app_info_impl = AXIS2_INTF_TO_IMPL(app_info);
+
+    return app_info_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_app_info_type(
+        void *app_info,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    app_info_impl = AXIS2_INTF_TO_IMPL(app_info);
+
+    return app_info_impl->obj_type;
+}
+
 axis2_xml_schema_obj_t *AXIS2_CALL
-axis2_xml_schema_app_info_get_base_impl(void *app_info,
-                                axis2_env_t **env)
+axis2_xml_schema_app_info_get_base_impl(
+        void *app_info,
+        axis2_env_t **env)
 {
     axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
 
@@ -202,10 +270,10 @@
 
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_app_info_resolve_methods(
-                                axis2_xml_schema_app_info_t *app_info,
-                                axis2_env_t **env,
-                                axis2_xml_schema_app_info_t *app_info_impl,
-                                axis2_hash_t *methods)
+         axis2_xml_schema_app_info_t *app_info,
+         axis2_env_t **env,
+         axis2_xml_schema_app_info_t *app_info_impl,
+         axis2_hash_t *methods)
 {
     axis2_xml_schema_app_info_impl_t *app_info_impl_l = NULL;
 
@@ -225,15 +293,34 @@
     }        
     app_info->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    app_info->ops->get_base_impl = 
-            app_info_impl_l->app_info.ops->get_base_impl;
-    app_info->ops->get_source = 
+    app_info->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    app_info->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+
+    app_info->ops->get_source = axis2_hash_get(methods, 
+            "get_source", AXIS2_HASH_KEY_STRING);
+    
+    if(!app_info->ops->get_source)
+            app_info->ops->get_source = 
             app_info_impl_l->app_info.ops->get_source;
-    app_info->ops->set_source = 
+    
+    app_info->ops->set_source = axis2_hash_get(methods, 
+            "set_source", AXIS2_HASH_KEY_STRING);
+    if(!app_info->ops->set_source)
+            app_info->ops->set_source = 
             app_info_impl_l->app_info.ops->set_source;
-    app_info->ops->get_markup = 
+    
+    app_info->ops->get_markup = axis2_hash_get(methods, 
+            "get_markup", AXIS2_HASH_KEY_STRING);
+    if(!app_info->ops->get_markup)
+            app_info->ops->get_markup = 
             app_info_impl_l->app_info.ops->get_markup;
-    app_info->ops->set_markup = 
+    
+    app_info->ops->set_markup = axis2_hash_get(methods, 
+            "set_markup", AXIS2_HASH_KEY_STRING);
+    if(!app_info->ops->set_markup)
+            app_info->ops->set_markup = 
             app_info_impl_l->app_info.ops->set_markup;
     
     return axis2_xml_schema_obj_resolve_methods(&(app_info->base), 
@@ -244,8 +331,15 @@
 axis2_xml_schema_app_info_get_source(void *app_info,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(app_info)->source;
+    super = AXIS2_XML_SCHEMA_USE_SUPER_OBJS(app_info, env);
+    app_info_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, "AXIS2_XML_SCHEMA_USE",
+                AXIS2_HASH_KEY_STRING));
+    
+    return app_info_impl->source;
 }
 
 axis2_status_t AXIS2_CALL
@@ -254,9 +348,14 @@
                                         axis2_char_t *source)
 {
     axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
+    axis2_hash_t *super = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, source, AXIS2_FAILURE);
-    app_info_impl = AXIS2_INTF_TO_IMPL(app_info);
+    super = AXIS2_XML_SCHEMA_USE_SUPER_OBJS(app_info, env);
+    app_info_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, "AXIS2_XML_SCHEMA_USE",
+                AXIS2_HASH_KEY_STRING));
+    
     
     if(NULL != app_info_impl->source)
     {
@@ -277,8 +376,15 @@
 axis2_xml_schema_app_info_get_markup(void *app_info,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(app_info)->markup;
+    super = AXIS2_XML_SCHEMA_USE_SUPER_OBJS(app_info, env);
+    app_info_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, "AXIS2_XML_SCHEMA_USE",
+                AXIS2_HASH_KEY_STRING));
+    
+    return app_info_impl->markup;
 }
 
 /* TODO replace (void *) mark up with node list */
@@ -288,9 +394,14 @@
                                         void *markup)
 {
     axis2_xml_schema_app_info_impl_t *app_info_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, markup, AXIS2_FAILURE);
-    app_info_impl = AXIS2_INTF_TO_IMPL(app_info);
+    super = AXIS2_XML_SCHEMA_USE_SUPER_OBJS(app_info, env);
+    app_info_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, "AXIS2_XML_SCHEMA_USE",
+                AXIS2_HASH_KEY_STRING));
+    
     
     app_info_impl->markup = markup;
     return AXIS2_SUCCESS;

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_content_processing.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_content_processing.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_content_processing.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_content_processing.c Tue May  9 23:39:32 2006
@@ -28,7 +28,8 @@
     axis2_xml_schema_content_processing_t content_processing;
     
     axis2_xml_schema_enum_t *schema_enum;
-    
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     
     axis2_array_list_t *members;
@@ -38,8 +39,19 @@
         ((axis2_xml_schema_content_processing_impl_t *) content_processing)
 
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_content_processing_free(void *content_processing,
-                        axis2_env_t **env);
+axis2_xml_schema_content_processing_free(
+        void *content_processing,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_content_processing_super_objs(
+        void *content_processing,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_content_processing_type(
+        void *content_processing,
+        axis2_env_t **env);
 
 axis2_xml_schema_enum_t *AXIS2_CALL
 axis2_xml_schema_content_processing_get_base_impl(void *content_processing,
@@ -67,6 +79,8 @@
     
     content_processing_impl->schema_enum = NULL;
     content_processing_impl->content_processing.base.ops = NULL;
+    content_processing_impl->obj_type = AXIS2_XML_SCHEMA_CONTENT_PROCESSING;
+    content_processing_impl->super = NULL;
     content_processing_impl->methods = NULL;
     content_processing_impl->members = NULL;
     content_processing_impl->content_processing.ops = NULL;
@@ -84,6 +98,10 @@
     
     content_processing_impl->content_processing.ops->free = 
             axis2_xml_schema_content_processing_free;
+    content_processing_impl->content_processing.ops->super_objs = 
+            axis2_xml_schema_content_processing_super_objs;
+    content_processing_impl->content_processing.ops->type = 
+            axis2_xml_schema_content_processing_type;
     content_processing_impl->content_processing.ops->get_base_impl = 
             axis2_xml_schema_content_processing_get_base_impl;
             
@@ -113,12 +131,31 @@
 
     axis2_hash_set(content_processing_impl->methods, "free", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_content_processing_free);
+    axis2_hash_set(content_processing_impl->methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_content_processing_super_objs);
+    axis2_hash_set(content_processing_impl->methods, "type", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_content_processing_type);
             
     axis2_hash_set(content_processing_impl->methods, "get_values", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_content_processing_get_values);
     
     content_processing_impl->schema_enum = axis2_xml_schema_enum_create(env, NULL);
     
+    content_processing_impl->super = axis2_hash_make(env);
+    if(!content_processing_impl->super)
+    {
+         axis2_xml_schema_content_processing_free(
+            &(content_processing_impl->content_processing), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+
+    axis2_hash_set(content_processing_impl->super, "AXIS2_XML_SCHEMA_CONTENT_PROCESSING", 
+            AXIS2_HASH_KEY_STRING, &(content_processing_impl->content_processing));
+    
+    axis2_hash_set(content_processing_impl->super, "AXIS2_XML_SCHEMA_ENUM", 
+            AXIS2_HASH_KEY_STRING, content_processing_impl->schema_enum);
+
     status = axis2_xml_schema_enum_resolve_methods(
             &(content_processing_impl->content_processing.base), env, 
             content_processing_impl->schema_enum, 
@@ -156,11 +193,18 @@
         content_processing_impl->members = NULL;
     }
     
+    if(NULL != content_processing_impl->super)
+    {
+        axis2_hash_free(content_processing_impl->super, env);
+        content_processing_impl->super = NULL;
+    }
+    
     if(NULL != content_processing_impl->methods)
     {
         axis2_hash_free(content_processing_impl->methods, env);
         content_processing_impl->methods = NULL;
     }
+
     if(NULL != content_processing_impl->schema_enum)
     {
         AXIS2_XML_SCHEMA_ENUM_FREE(content_processing_impl->schema_enum, env);
@@ -185,9 +229,36 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_content_processing_super_objs(
+        void *content_processing,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_content_processing_impl_t *content_processing_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    content_processing_impl = AXIS2_INTF_TO_IMPL(content_processing);
+
+    return content_processing_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_content_processing_type(
+        void *content_processing,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_content_processing_impl_t *content_processing_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    content_processing_impl = AXIS2_INTF_TO_IMPL(content_processing);
+
+    return content_processing_impl->obj_type;
+}
+
 axis2_xml_schema_enum_t *AXIS2_CALL
-axis2_xml_schema_content_processing_get_base_impl(void *content_processing,
-                                axis2_env_t **env)
+axis2_xml_schema_content_processing_get_base_impl(
+        void *content_processing,
+        axis2_env_t **env)
 {
     axis2_xml_schema_content_processing_impl_t *content_processing_impl = NULL;
 
@@ -199,10 +270,10 @@
 
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_content_processing_resolve_methods(
-                axis2_xml_schema_content_processing_t *content_processing,
-                axis2_env_t **env,
-                axis2_xml_schema_content_processing_t *content_processing_impl,
-                axis2_hash_t *methods)
+       axis2_xml_schema_content_processing_t *content_processing,
+       axis2_env_t **env,
+       axis2_xml_schema_content_processing_t *content_processing_impl,
+       axis2_hash_t *methods)
 {
     axis2_xml_schema_content_processing_impl_t *content_processing_impl_l = NULL;
 
@@ -217,9 +288,12 @@
             sizeof(axis2_xml_schema_content_processing_ops_t));
     content_processing->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    content_processing->ops->get_base_impl = 
-            content_processing_impl_l->content_processing.ops->get_base_impl;
-    content_processing->ops->get_values = 
+
+
+    content_processing->ops->get_values = axis2_hash_get(methods, "get_values", 
+            AXIS2_HASH_KEY_STRING);
+    if(!content_processing->ops->get_values)
+            content_processing->ops->get_values = 
             content_processing_impl_l->content_processing.ops->get_values;
     
     return axis2_xml_schema_enum_resolve_methods(
@@ -231,6 +305,13 @@
 axis2_xml_schema_content_processing_get_values(void *content_processing,
                                         axis2_env_t **env)
 {
-    return AXIS2_INTF_TO_IMPL(content_processing)->members;
+    axis2_xml_schema_content_processing_impl_t *content_processing_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    super = AXIS2_XML_SCHEMA_USE_SUPER_OBJS(content_processing, env);
+    content_processing_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_CONTENT_PROCESSING", AXIS2_HASH_KEY_STRING));
+
+    return content_processing_impl->members;
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_enum.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_enum.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_enum.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_enum.c Tue May  9 23:39:32 2006
@@ -27,6 +27,8 @@
 struct axis2_xml_schema_enum_impl
 {
     axis2_xml_schema_enum_t schema_enum;
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     
     axis2_array_list_t *values;
     
@@ -37,8 +39,19 @@
         ((axis2_xml_schema_enum_impl_t *) schema_enum)
 
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_enum_free(void *schema_enum,
-                axis2_env_t **envv);
+axis2_xml_schema_enum_free(
+        void *schema_enum,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_enum_super_objs(
+        void *schema_enum,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_enum_type(
+        void *schema_enum,
+        axis2_env_t **env);
 
 axis2_char_t * AXIS2_CALL
 axis2_xml_schema_enum_get_value(void *schema_enum,
@@ -72,6 +85,8 @@
         return NULL;
     }
     
+    schema_enum_impl->obj_type = AXIS2_XML_SCHEMA_ENUM;
+    schema_enum_impl->super = NULL;
     schema_enum_impl->values = NULL;
     schema_enum_impl->value = NULL;
     schema_enum_impl->schema_enum.ops = NULL;
@@ -91,6 +106,12 @@
 
     schema_enum_impl->schema_enum.ops->free = 
             axis2_xml_schema_enum_free;
+
+    schema_enum_impl->schema_enum.ops->super_objs = 
+            axis2_xml_schema_enum_super_objs;
+
+    schema_enum_impl->schema_enum.ops->type = 
+            axis2_xml_schema_enum_type;
             
     schema_enum_impl->schema_enum.ops->get_value = 
             axis2_xml_schema_enum_get_value;
@@ -104,6 +125,16 @@
     schema_enum_impl->schema_enum.ops->get_values = 
             axis2_xml_schema_enum_get_values;
 
+    schema_enum_impl->super = axis2_hash_make(env);
+    if(!schema_enum_impl->super)
+    {
+        axis2_xml_schema_enum_free(&(schema_enum_impl->schema_enum), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(schema_enum_impl->super, "AXIS2_XML_SCHEMA_ENUM", 
+            AXIS2_HASH_KEY_STRING, &(schema_enum_impl->schema_enum));
+
     return &(schema_enum_impl->schema_enum);
 }
 
@@ -127,6 +158,12 @@
         schema_enum_impl->values = NULL;
     }
 
+    if(NULL != schema_enum_impl->super)
+    {
+        axis2_hash_free(schema_enum_impl->super, env);
+        schema_enum_impl->super = NULL;
+    }
+
     if(NULL != (&(schema_enum_impl->schema_enum))->ops)
     {
         AXIS2_FREE((*env)->allocator, ((&(schema_enum_impl->schema_enum))->ops));
@@ -141,11 +178,38 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_enum_super_objs(
+        void *schema_enum,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_enum_impl_t *schema_enum_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    schema_enum_impl = AXIS2_INTF_TO_IMPL(schema_enum);
+
+    return schema_enum_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_enum_type(
+        void *schema_enum,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_enum_impl_t *schema_enum_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    schema_enum_impl = AXIS2_INTF_TO_IMPL(schema_enum);
+
+    return schema_enum_impl->obj_type;
+}
+
 AXIS2_DECLARE(axis2_status_t)
-axis2_xml_schema_enum_resolve_methods(axis2_xml_schema_enum_t *schema_enum,
-                                        axis2_env_t **env,
-                                        axis2_xml_schema_enum_t *schema_enum_impl,
-                                        axis2_hash_t *methods)
+axis2_xml_schema_enum_resolve_methods(
+        axis2_xml_schema_enum_t *schema_enum,
+        axis2_env_t **env,
+        axis2_xml_schema_enum_t *schema_enum_impl,
+        axis2_hash_t *methods)
 {    
     axis2_xml_schema_enum_impl_t *schema_enum_impl_l = NULL;
 
@@ -165,14 +229,35 @@
     }
     schema_enum->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    schema_enum->ops->get_value = 
+    schema_enum->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    schema_enum->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+    
+    schema_enum->ops->get_value = axis2_hash_get(methods, 
+            "get_value", AXIS2_HASH_KEY_STRING);
+    if(!schema_enum->ops->get_value)
+            schema_enum->ops->get_value = 
             schema_enum_impl_l->schema_enum.ops->get_value;
+    
+    schema_enum->ops->set_value = axis2_hash_get(methods, 
+            "set_value", AXIS2_HASH_KEY_STRING);
+    if(!schema_enum->ops->set_value)
     schema_enum->ops->set_value = 
             schema_enum_impl_l->schema_enum.ops->set_value; 
+    
+    schema_enum->ops->equals = axis2_hash_get(methods, 
+            "equals", AXIS2_HASH_KEY_STRING);
+    if(!schema_enum->ops->equals)
     schema_enum->ops->equals = 
             schema_enum_impl_l->schema_enum.ops->equals;
+    
+    schema_enum->ops->get_values = axis2_hash_get(methods, 
+            "get_values", AXIS2_HASH_KEY_STRING);
+    if(!schema_enum->ops->get_values)
     schema_enum->ops->get_values = 
             schema_enum_impl_l->schema_enum.ops->get_values;
+
     return AXIS2_SUCCESS;    
 
 }
@@ -183,8 +268,12 @@
                         axis2_env_t **env)
 {
     axis2_xml_schema_enum_impl_t *schema_enum_impl = NULL;
+    axis2_hash_t *super = NULL;
     
-    schema_enum_impl = AXIS2_INTF_TO_IMPL(schema_enum);
+    super = AXIS2_XML_SCHEMA_ENUM_SUPER_OBJS(schema_enum, env);
+    schema_enum_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ENUM", AXIS2_HASH_KEY_STRING));
+
     return schema_enum_impl->value;
 }
 
@@ -194,8 +283,11 @@
                         axis2_char_t *value)
 {
     axis2_xml_schema_enum_impl_t *schema_enum_impl = NULL;
-
-    schema_enum_impl = AXIS2_INTF_TO_IMPL(schema_enum);
+    axis2_hash_t *super = NULL;
+ 
+    super = AXIS2_XML_SCHEMA_ENUM_SUPER_OBJS(schema_enum, env);
+    schema_enum_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ENUM", AXIS2_HASH_KEY_STRING));
 
     if(NULL != schema_enum_impl->value)
     {
@@ -217,8 +309,12 @@
                                 void *obj)
 {
     axis2_xml_schema_enum_impl_t *schema_enum_impl = NULL;
+    axis2_hash_t *super = NULL;
+    
+    super = AXIS2_XML_SCHEMA_ENUM_SUPER_OBJS(schema_enum, env);
+    schema_enum_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ENUM", AXIS2_HASH_KEY_STRING));
 
-    schema_enum_impl = AXIS2_INTF_TO_IMPL(schema_enum);
     
     /** TODO */
     return AXIS2_TRUE;
@@ -229,7 +325,12 @@
                                 axis2_env_t **env)
 {
     axis2_xml_schema_enum_impl_t *schema_enum_impl = NULL;
-    schema_enum_impl = AXIS2_INTF_TO_IMPL(schema_enum);
+    axis2_hash_t *super = NULL;
+    
+    super = AXIS2_XML_SCHEMA_ENUM_SUPER_OBJS(schema_enum, env);
+    schema_enum_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_ENUM", AXIS2_HASH_KEY_STRING));
+
     return schema_enum_impl->values; 
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group.c Tue May  9 23:39:32 2006
@@ -27,6 +27,8 @@
 {
     axis2_xml_schema_group_t group;
     axis2_xml_schema_annotated_t *annotated;
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     axis2_char_t *name;
     axis2_xml_schema_group_base_t *particle;
@@ -35,8 +37,19 @@
 #define AXIS2_INTF_TO_IMPL(group) ((axis2_xml_schema_group_impl_t *) group)
 
 axis2_status_t AXIS2_CALL 
-axis2_xml_schema_group_free(void *group,
-                        axis2_env_t **env);
+axis2_xml_schema_group_free(
+        void *group,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL 
+axis2_xml_schema_group_super_objs(
+        void *group,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL 
+axis2_xml_schema_group_type(
+        void *group,
+        axis2_env_t **env);
 
 axis2_xml_schema_annotated_t *AXIS2_CALL
 axis2_xml_schema_group_get_base_impl(void *group,
@@ -75,6 +88,8 @@
     }
     
     group_impl->annotated = NULL;
+    group_impl->obj_type = AXIS2_XML_SCHEMA_GROUP;
+    group_impl->super = NULL;
     group_impl->methods = NULL;
     group_impl->name = NULL;
     group_impl->particle = NULL;
@@ -93,6 +108,10 @@
 
     group_impl->group.ops->free = 
             axis2_xml_schema_group_free;
+    group_impl->group.ops->super_objs = 
+            axis2_xml_schema_group_super_objs;
+    group_impl->group.ops->type = 
+            axis2_xml_schema_group_type;
     group_impl->group.ops->get_base_impl = 
             axis2_xml_schema_group_get_base_impl;
     group_impl->group.ops->get_name = 
@@ -113,6 +132,10 @@
     }
     axis2_hash_set(group_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_group_free);
+    axis2_hash_set(group_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_group_super_objs);
+    axis2_hash_set(group_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_group_type);
     axis2_hash_set(group_impl->methods, "get_name", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_group_get_name);
     axis2_hash_set(group_impl->methods, "set_name", 
@@ -128,6 +151,18 @@
         axis2_xml_schema_group_free(&(group_impl->group), env);
         return NULL;
     }
+    group_impl->super = axis2_hash_make(env);
+    if(!group_impl->super)
+    {
+        axis2_xml_schema_group_free(&(group_impl->group), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(group_impl->super, "AXIS2_XML_SCHEMA_GROUP", AXIS2_HASH_KEY_STRING, 
+            &(group_impl->group));
+    axis2_hash_set(group_impl->super, "AXIS2_XML_SCHEMA_ANNOTATED", AXIS2_HASH_KEY_STRING, 
+            group_impl->annotated);
+
     status = axis2_xml_schema_annotated_resolve_methods(
             &(group_impl->group.base), env, group_impl->annotated, 
             group_impl->methods);
@@ -156,6 +191,12 @@
         group_impl->particle = NULL;
     }
     
+    if(NULL != group_impl->super)
+    {
+        axis2_hash_free(group_impl->super, env);
+        group_impl->super = NULL;
+    }
+    
     if(NULL != group_impl->methods)
     {
         axis2_hash_free(group_impl->methods, env);
@@ -183,6 +224,28 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_group_super_objs(void *group,
+                                axis2_env_t **env)
+{
+    axis2_xml_schema_group_impl_t *group_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    group_impl = AXIS2_INTF_TO_IMPL(group);
+    return group_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_group_type(void *group,
+                                axis2_env_t **env)
+{
+    axis2_xml_schema_group_impl_t *group_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    group_impl = AXIS2_INTF_TO_IMPL(group);
+    return group_impl->obj_type;
+}
+
 axis2_xml_schema_annotated_t *AXIS2_CALL
 axis2_xml_schema_group_get_base_impl(void *group,
                                 axis2_env_t **env)
@@ -219,14 +282,32 @@
     }
     group->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    group->ops->get_base_impl = 
-            group_impl_l->group.ops->get_base_impl;
-    group->ops->get_name = 
+    group->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    group->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+
+    group->ops->get_name = axis2_hash_get(methods, "name", 
+            AXIS2_HASH_KEY_STRING);
+    if(!group->ops->get_name)
+            group->ops->get_name = 
             group_impl_l->group.ops->get_name;
-    group->ops->set_name = 
+
+    group->ops->set_name = axis2_hash_get(methods, "set_name", 
+            AXIS2_HASH_KEY_STRING);
+    if(!group->ops->set_name)
+            group->ops->set_name = 
             group_impl_l->group.ops->set_name;
+
+    group->ops->get_particle = axis2_hash_get(methods, "get_particle", 
+            AXIS2_HASH_KEY_STRING);
+    if(!group->ops->get_particle)
     group->ops->get_particle = 
             group_impl_l->group.ops->get_particle;
+
+    group->ops->set_particle = axis2_hash_get(methods, "set_particle", 
+            AXIS2_HASH_KEY_STRING);
+    if(!group->ops->set_particle)
     group->ops->set_particle = 
             group_impl_l->group.ops->set_particle;
     
@@ -248,9 +329,12 @@
                                 axis2_char_t *name)
 {
     axis2_xml_schema_group_impl_t *group_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    group_impl = AXIS2_INTF_TO_IMPL(group);
+    super = AXIS2_XML_SCHEMA_GROUP_SUPER_OBJS(group, env); 
+    group_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP", AXIS2_HASH_KEY_STRING));
 
     if(NULL != group_impl->name)
     {
@@ -270,8 +354,15 @@
 axis2_xml_schema_group_get_particle(void *group,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_group_impl_t *group_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(group)->particle;
+    super = AXIS2_XML_SCHEMA_GROUP_SUPER_OBJS(group, env); 
+    group_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP", AXIS2_HASH_KEY_STRING));
+
+    return group_impl->particle;
 }
 
 axis2_status_t AXIS2_CALL
@@ -280,10 +371,15 @@
                                     axis2_xml_schema_group_base_t *particle)
 {
     axis2_xml_schema_group_impl_t *group_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     group_impl = AXIS2_INTF_TO_IMPL(group);
     AXIS2_PARAM_CHECK((*env)->error , particle, AXIS2_FAILURE);
+    super = AXIS2_XML_SCHEMA_GROUP_SUPER_OBJS(group, env); 
+    group_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP", AXIS2_HASH_KEY_STRING));
+
     if(NULL != group_impl->particle)
     {
         /** TODO Free particle */

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_base.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_base.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_base.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_base.c Tue May  9 23:39:32 2006
@@ -29,6 +29,8 @@
     
     axis2_xml_schema_particle_t *particle;
     
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     
     axis2_xml_schema_obj_collection_t *items;
@@ -39,8 +41,19 @@
 
 /****************** *****************************************************/
 axis2_status_t AXIS2_CALL
-axis2_xml_schema_group_base_free(void *group_base,
-                        axis2_env_t **env);
+axis2_xml_schema_group_base_free(
+        void *group_base,
+        axis2_env_t **env);
+
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_group_base_super_objs(
+        void *group_base,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_group_base_type(
+        void *group_base,
+        axis2_env_t **env);
 
 axis2_xml_schema_particle_t *AXIS2_CALL
 axis2_xml_schema_group_base_get_base_impl(void *group_base,
@@ -67,6 +80,8 @@
     }                    
 
     group_base_impl->particle = NULL;
+    group_base_impl->obj_type = AXIS2_XML_SCHEMA_GROUP_BASE;
+    group_base_impl->super = NULL;
     group_base_impl->methods = NULL;
     group_base_impl->items = NULL;
     group_base_impl->group_base.ops = NULL;
@@ -83,6 +98,10 @@
 
     group_base_impl->group_base.ops->free = 
         axis2_xml_schema_group_base_free;
+    group_base_impl->group_base.ops->super_objs = 
+        axis2_xml_schema_group_base_super_objs;
+    group_base_impl->group_base.ops->type = 
+        axis2_xml_schema_group_base_type;
     group_base_impl->group_base.ops->get_base_impl = 
         axis2_xml_schema_group_base_get_base_impl;
     group_base_impl->group_base.ops->get_items = 
@@ -97,6 +116,10 @@
     }
     axis2_hash_set(group_base_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_group_base_free);
+    axis2_hash_set(group_base_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_group_base_type);
+    axis2_hash_set(group_base_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_group_base_super_objs);
     axis2_hash_set(group_base_impl->methods, "get_items", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_group_base_get_items);
     
@@ -107,6 +130,19 @@
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
+
+    group_base_impl->super = axis2_hash_make(env);
+    if(!group_base_impl->super)
+    {
+        axis2_xml_schema_group_base_free(&(group_base_impl->group_base), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(group_base_impl->super, "AXIS2_XML_SCHEMA_GROUP_BASE", 
+            AXIS2_HASH_KEY_STRING, &(group_base_impl->group_base) );
+    axis2_hash_set(group_base_impl->super, "AXIS2_XML_SCHEMA_PARTICLE", 
+            AXIS2_HASH_KEY_STRING, group_base_impl->particle );
+ 
     status = axis2_xml_schema_particle_resolve_methods(
             &(group_base_impl->group_base.base), env, group_base_impl->particle, 
             group_base_impl->methods); 
@@ -128,6 +164,12 @@
         group_base_impl->items = NULL;
     }
  
+    if(NULL != group_base_impl->super)
+    {
+        axis2_hash_free(group_base_impl->super, env);
+        group_base_impl->super = NULL;
+    }
+ 
     if(NULL != group_base_impl->methods)
     {
         axis2_hash_free(group_base_impl->methods, env);
@@ -158,9 +200,36 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_group_base_super_objs(
+        void *group_base,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_group_base_impl_t *group_base_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    group_base_impl = AXIS2_INTF_TO_IMPL(group_base);
+
+    return group_base_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_group_base_type(
+        void *group_base,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_group_base_impl_t *group_base_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    group_base_impl = AXIS2_INTF_TO_IMPL(group_base);
+
+    return group_base_impl->obj_type;
+}
+
 axis2_xml_schema_particle_t *AXIS2_CALL
-axis2_xml_schema_group_base_get_base_impl(void *group_base,
-                                axis2_env_t **env)
+axis2_xml_schema_group_base_get_base_impl(
+        void *group_base,
+        axis2_env_t **env)
 {
     axis2_xml_schema_group_base_impl_t *group_base_impl = NULL;
 
@@ -172,10 +241,10 @@
 
 AXIS2_DECLARE(axis2_status_t)
 axis2_xml_schema_group_base_resolve_methods(
-                                axis2_xml_schema_group_base_t *group_base,
-                                axis2_env_t **env,
-                                axis2_xml_schema_group_base_t *group_base_impl,
-                                axis2_hash_t *methods)
+       axis2_xml_schema_group_base_t *group_base,
+       axis2_env_t **env,
+       axis2_xml_schema_group_base_t *group_base_impl,
+       axis2_hash_t *methods)
 {
     axis2_xml_schema_group_base_impl_t *group_base_impl_l = NULL;
 
@@ -195,10 +264,16 @@
             
     group_base->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    group_base->ops->get_base_impl = 
-            group_base_impl_l->group_base.ops->get_base_impl;
+    group_base->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    group_base->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+    
     group_base->ops->get_items = axis2_hash_get(methods, "get_items", 
             AXIS2_HASH_KEY_STRING);
+    if(!group_base->ops->get_items)
+            group_base->ops->get_items = 
+            group_base_impl_l->group_base.ops->get_items;
     
     return axis2_xml_schema_particle_resolve_methods(&(group_base->base), 
             env, group_base_impl_l->particle, methods);
@@ -208,7 +283,14 @@
 axis2_xml_schema_group_base_get_items(void *group_base,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_group_base_impl_t *group_base_impl = NULL;
+    axis2_hash_t *super = NULL;
+    
     AXIS2_ENV_CHECK(env, NULL);
+    super = AXIS2_XML_SCHEMA_GROUP_BASE_SUPER_OBJS(group_base, env); 
+    group_base_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP_BASE", AXIS2_HASH_KEY_STRING));
+    
     return AXIS2_INTF_TO_IMPL(group_base)->items;
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_ref.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_ref.c?rev=405653&r1=405652&r2=405653&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_ref.c (original)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_group_ref.c Tue May  9 23:39:32 2006
@@ -30,6 +30,8 @@
     
     axis2_xml_schema_particle_t *base;
     
+    axis2_xml_schema_types_t obj_type;
+    axis2_hash_t *super;
     axis2_hash_t *methods;
     
     axis2_qname_t *ref_qname;
@@ -44,6 +46,16 @@
 axis2_xml_schema_group_ref_free(void *group_ref,
                         axis2_env_t **env);
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_group_ref_super_objs(
+        void *group_ref,
+        axis2_env_t **env);
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_group_ref_type(
+        void *group_ref,
+        axis2_env_t **env);
+
 axis2_xml_schema_particle_t *AXIS2_CALL
 axis2_xml_schema_group_ref_get_base_impl(void *group_ref,
                                         axis2_env_t **env);
@@ -82,6 +94,8 @@
     
     group_ref_impl->group_ref.base.ops = NULL;
     group_ref_impl->base = NULL;
+    group_ref_impl->obj_type = AXIS2_XML_SCHEMA_GROUP_REF;
+    group_ref_impl->super = NULL;
     group_ref_impl->methods = NULL;
     group_ref_impl->ref_qname = NULL;
     group_ref_impl->particle = NULL;
@@ -99,6 +113,10 @@
     
     group_ref_impl->group_ref.ops->free = 
             axis2_xml_schema_group_ref_free;
+    group_ref_impl->group_ref.ops->super_objs = 
+            axis2_xml_schema_group_ref_super_objs;
+    group_ref_impl->group_ref.ops->type = 
+            axis2_xml_schema_group_ref_type;
     group_ref_impl->group_ref.ops->get_base_impl = 
             axis2_xml_schema_group_ref_get_base_impl;
     group_ref_impl->group_ref.ops->get_ref_qname = 
@@ -117,6 +135,10 @@
     }
     axis2_hash_set(group_ref_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
             axis2_xml_schema_group_ref_free);
+    axis2_hash_set(group_ref_impl->methods, "super_objs", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_group_ref_super_objs);
+    axis2_hash_set(group_ref_impl->methods, "type", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_group_ref_type);
     axis2_hash_set(group_ref_impl->methods, "get_ref_qname", 
             AXIS2_HASH_KEY_STRING, axis2_xml_schema_group_ref_get_ref_qname);
     axis2_hash_set(group_ref_impl->methods, "set_ref_qname", 
@@ -130,6 +152,18 @@
         axis2_xml_schema_group_ref_free(&(group_ref_impl->group_ref), env);
         return NULL;
     }
+    group_ref_impl->super = axis2_hash_make(env);
+    if(!group_ref_impl->super)
+    {
+        axis2_xml_schema_group_ref_free(&(group_ref_impl->group_ref), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    axis2_hash_set(group_ref_impl->super, "AXIS2_XML_SCHEMA_GROUP_REF", 
+            AXIS2_HASH_KEY_STRING, &(group_ref_impl->group_ref) );
+    axis2_hash_set(group_ref_impl->super, "AXIS2_XML_SCHEMA_PARTICLE", 
+            AXIS2_HASH_KEY_STRING, group_ref_impl->particle );
+ 
     status = axis2_xml_schema_particle_resolve_methods(
             &(group_ref_impl->group_ref.base), env, group_ref_impl->base, 
             group_ref_impl->methods);
@@ -157,6 +191,12 @@
         AXIS2_XML_SCHEMA_GROUP_BASE_FREE(group_ref_impl->particle, env);
         group_ref_impl->particle = NULL;
     }
+ 
+    if(NULL != group_ref_impl->super)
+    {
+        axis2_hash_free(group_ref_impl->super, env);
+        group_ref_impl->super = NULL;
+    }
     
     if(NULL != group_ref_impl->methods)
     {
@@ -185,6 +225,32 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_hash_t *AXIS2_CALL
+axis2_xml_schema_group_ref_super_objs(
+        void *group_ref,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_group_ref_impl_t *group_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    group_ref_impl = AXIS2_INTF_TO_IMPL(group_ref);
+
+    return group_ref_impl->super;
+}
+
+axis2_xml_schema_types_t AXIS2_CALL
+axis2_xml_schema_group_ref_type(
+        void *group_ref,
+        axis2_env_t **env)
+{
+    axis2_xml_schema_group_ref_impl_t *group_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    group_ref_impl = AXIS2_INTF_TO_IMPL(group_ref);
+
+    return group_ref_impl->obj_type;
+}
+
 axis2_xml_schema_particle_t *AXIS2_CALL
 axis2_xml_schema_group_ref_get_base_impl(void *group_ref,
                                 axis2_env_t **env)
@@ -216,12 +282,26 @@
             sizeof(axis2_xml_schema_group_ref_ops_t));
     group_ref->ops->free = axis2_hash_get(methods, "free", 
             AXIS2_HASH_KEY_STRING);
-    group_ref->ops->get_base_impl = 
-            group_ref_impl_l->group_ref.ops->get_base_impl;
+    group_ref->ops->super_objs = axis2_hash_get(methods, "super_objs", 
+            AXIS2_HASH_KEY_STRING);
+    group_ref->ops->type = axis2_hash_get(methods, "type", 
+            AXIS2_HASH_KEY_STRING);
+    
+    group_ref->ops->get_ref_qname = axis2_hash_get(methods, "get_ref_qname", 
+            AXIS2_HASH_KEY_STRING);
+    if(!group_ref->ops->get_ref_qname)
     group_ref->ops->get_ref_qname = 
             group_ref_impl_l->group_ref.ops->get_ref_qname;
+    
+    group_ref->ops->set_ref_qname = axis2_hash_get(methods, "set_ref_qname", 
+            AXIS2_HASH_KEY_STRING); 
+    if(!group_ref->ops->set_ref_qname)
     group_ref->ops->set_ref_qname = 
             group_ref_impl_l->group_ref.ops->set_ref_qname;
+    
+    group_ref->ops->get_particle = axis2_hash_get(methods, "get_particle", 
+            AXIS2_HASH_KEY_STRING);
+    if(!group_ref->ops->get_particle)
     group_ref->ops->get_particle = 
             group_ref_impl_l->group_ref.ops->get_particle;
     
@@ -233,8 +313,15 @@
 axis2_xml_schema_group_ref_get_ref_qname(void *group_ref,
                                 axis2_env_t **env)
 {
+    axis2_xml_schema_group_ref_impl_t *group_ref_impl = NULL;
+    axis2_hash_t *super = NULL;
+    
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(group_ref)->ref_qname;
+    super = AXIS2_XML_SCHEMA_GROUP_REF_SUPER_OBJS(group_ref, env); 
+    group_ref_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP_REF", AXIS2_HASH_KEY_STRING));
+    
+    return group_ref_impl->ref_qname;
 }
 
 axis2_status_t AXIS2_CALL
@@ -243,9 +330,13 @@
                                 axis2_qname_t *ref_qname)
 {
     axis2_xml_schema_group_ref_impl_t *group_ref_impl = NULL;
+    axis2_hash_t *super = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    group_ref_impl = AXIS2_INTF_TO_IMPL(group_ref);
+    super = AXIS2_XML_SCHEMA_GROUP_REF_SUPER_OBJS(group_ref, env); 
+    group_ref_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP_REF", AXIS2_HASH_KEY_STRING));
+    
 
     if(group_ref_impl->ref_qname)
     {
@@ -265,7 +356,14 @@
 axis2_xml_schema_group_ref_get_particle(void *group_ref,
                                         axis2_env_t **env)
 {
+    axis2_xml_schema_group_ref_impl_t *group_ref_impl = NULL;
+    axis2_hash_t *super = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
-    return AXIS2_INTF_TO_IMPL(group_ref)->particle;
+    super = AXIS2_XML_SCHEMA_GROUP_REF_SUPER_OBJS(group_ref, env); 
+    group_ref_impl = AXIS2_INTF_TO_IMPL(axis2_hash_get(super, 
+                "AXIS2_XML_SCHEMA_GROUP_REF", AXIS2_HASH_KEY_STRING));
+    
+    return group_ref_impl->particle;
 }