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 na...@apache.org on 2006/05/08 10:47:39 UTC

svn commit: r404969 - in /webservices/axis2/trunk/c: include/xml_schema/axis2_xml_schema_redefine.h modules/xml/xml_schema/xml_schema_redefine.c

Author: nandika
Date: Mon May  8 01:47:36 2006
New Revision: 404969

URL: http://svn.apache.org/viewcvs?rev=404969&view=rev
Log:
xml xchema redefine added 

Added:
    webservices/axis2/trunk/c/include/xml_schema/axis2_xml_schema_redefine.h
    webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_redefine.c

Added: webservices/axis2/trunk/c/include/xml_schema/axis2_xml_schema_redefine.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/xml_schema/axis2_xml_schema_redefine.h?rev=404969&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/xml_schema/axis2_xml_schema_redefine.h (added)
+++ webservices/axis2/trunk/c/include/xml_schema/axis2_xml_schema_redefine.h Mon May  8 01:47:36 2006
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIS2_XML_SCHEMA_REDEFINE_H
+#define AXIS2_XML_SCHEMA_REDEFINE_H
+
+/**
+ * @file axis2_xml_schema_redefine.h
+ * @brief Axis2 Xml Schema Particle Interface
+ *          Base class for all redefine types.
+ */
+
+#include <axis2_xml_schema_external.h>
+#include <axis2_hash.h>
+#include <axis2_xml_schema_obj_table.h>
+#include <axis2_xml_schema_obj_collection.h>
+
+/** @defgroup axis2_xml_schema_include Xml Schema Particle
+  * @ingroup axis2_xml_schema
+  * @{
+  */
+
+typedef struct axis2_xml_schema_redefine 
+                    axis2_xml_schema_redefine_t;
+typedef struct axis2_xml_schema_redefine_ops 
+                    axis2_xml_schema_redefine_ops_t;
+                    
+struct axis2_xml_schema;                    
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct axis2_xml_schema_redefine_ops
+{
+	/** 
+     * Deallocate memory
+     * @return status code
+     */
+    axis2_status_t (AXIS2_CALL *
+    free) (void *redefine,
+            axis2_env_t **env);
+            
+            
+    axis2_xml_schema_external_t* (AXIS2_CALL *
+    get_base_impl)(void *redefine,
+                   axis2_env_t **env);            
+
+    axis2_xml_schema_obj_table_t* (AXIS2_CALL *
+    get_attribute_group)(void *redefine,
+                axis2_env_t **env);
+                
+    axis2_status_t (AXIS2_CALL *
+    set_attribute_group)(void *redefine,
+                axis2_env_t **env,
+                axis2_xml_schema_obj_table_t *group);
+
+   
+                   
+    axis2_xml_schema_obj_collection_t* (AXIS2_CALL *
+    get_items)(void *redefine,
+               axis2_env_t **env);
+               
+    axis2_xml_schema_obj_table_t* (AXIS2_CALL *
+    get_schema_types)(void *redefine,
+                      axis2_env_t **env);
+                      
+    axis2_xml_schema_obj_table_t* (AXIS2_CALL *
+    get_group)(void *redefine, 
+               axis2_env_t **env);                      
+                      
+                                       
+                       
+};
+
+struct axis2_xml_schema_redefine
+{
+    axis2_xml_schema_external_t base;
+    axis2_xml_schema_redefine_ops_t *ops;
+};
+
+/**
+ * Creates new Xml Schema redefine
+ */
+AXIS2_DECLARE(axis2_xml_schema_redefine_t *)
+axis2_xml_schema_redefine_create(axis2_env_t **env);
+
+/**
+ * This method is internal to Axis2 C. It is called from Child Constructor
+ */
+AXIS2_DECLARE(axis2_status_t)
+axis2_xml_schema_redefine_resolve_methods(
+                                axis2_xml_schema_redefine_t *redefine,
+                                axis2_env_t **env,
+                                axis2_xml_schema_redefine_t *redefine_impl,
+                                axis2_hash_t *methods);
+
+#define AXIS2_XML_SCHEMA_REDEFINE_FREE(redefine, env) \
+		(((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            free(redefine, env))
+
+#define AXIS2_XML_SCHEMA_REDEFINE_GET_BASE_IMPL(redefine, env) \
+		(((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            get_base_impl(redefine, env))
+
+#define AXIS2_XML_SCHEMA_REDEFINE_GET_ATTRIBUTE_GROUP(redefine, env) \
+		(((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            get_attribute_group(redefine, env))
+
+#define AXIS2_XML_SCHEMA_REDEFINE_SET_ATTRIBUTE_GROUP(redefine, env, group) \
+		(((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            set_attribute_group(redefine, env, group))
+            
+#define AXIS2_XML_SCHEMA_REDEFINE_GET_ITEMS(redefine, env) \
+        (((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            get_items(redefine, env))
+            
+#define AXIS2_XML_SCHEMA_REDEFINE_GET_GROUP(redefine, env) \
+        (((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            get_group(redefine, env))                       
+
+#define AXIS2_XML_SCHEMA_REDEFINE_GET_SCHEMA_TYPES(redefine, env) \
+        (((axis2_xml_schema_redefine_t *) redefine)->ops->\
+            get_schema_types(redefine, env))
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_XML_SCHEMA_REDEFINE_H */

Added: webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_redefine.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_redefine.c?rev=404969&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_redefine.c (added)
+++ webservices/axis2/trunk/c/modules/xml/xml_schema/xml_schema_redefine.c Mon May  8 01:47:36 2006
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include  <axis2_xml_schema_redefine.h>
+#include  <axis2_xml_schema.h>
+
+/** 
+ * @brief Other Extension Struct Impl
+ *	Axis2 Other Extension  
+ */ 
+typedef struct axis2_xml_schema_redefine_impl
+{
+    axis2_xml_schema_redefine_t redefine;
+    
+    axis2_xml_schema_external_t *external;
+        
+    axis2_xml_schema_obj_collection_t *items;
+    
+    axis2_xml_schema_obj_table_t *attr_groups;
+    
+    axis2_xml_schema_obj_table_t *groups;
+    
+    axis2_xml_schema_obj_table_t *schema_types;
+        
+    axis2_hash_t *methods;
+
+}axis2_xml_schema_redefine_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(redefine) \
+        ((axis2_xml_schema_redefine_impl_t *) redefine)
+
+/********************* function prototypes ***********************************/
+
+axis2_status_t AXIS2_CALL 
+axis2_xml_schema_redefine_free(void *redefine,
+                        axis2_env_t **env);
+
+axis2_xml_schema_external_t *AXIS2_CALL
+axis2_xml_schema_redefine_get_base_impl(void *redefine,
+                                        axis2_env_t **env);
+
+axis2_xml_schema_obj_table_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_attribute_group(void *redefine,
+                                              axis2_env_t **env);
+                
+axis2_status_t AXIS2_CALL
+axis2_xml_schema_redefine_set_attribute_group(void *redefine,
+                axis2_env_t **env,
+                axis2_xml_schema_obj_table_t *group);
+
+   
+                   
+axis2_xml_schema_obj_collection_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_items(void *redefine,
+               axis2_env_t **env);
+               
+axis2_xml_schema_obj_table_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_schema_types(void *redefine,
+                      axis2_env_t **env);
+                      
+axis2_xml_schema_obj_table_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_group(void *redefine, 
+               axis2_env_t **env);                      
+                      
+    
+/********************* end function prototypes ********************************/
+
+AXIS2_DECLARE(axis2_xml_schema_redefine_t *)
+axis2_xml_schema_redefine_create(axis2_env_t **env)
+{
+    axis2_xml_schema_redefine_impl_t *redefine_impl = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
+
+    redefine_impl = AXIS2_MALLOC((*env)->allocator, 
+                    sizeof(axis2_xml_schema_redefine_impl_t));
+    if(!redefine_impl)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    redefine_impl->external = NULL;
+    redefine_impl->methods = NULL;
+    redefine_impl->redefine.ops = NULL;
+    redefine_impl->redefine.base.ops = NULL;
+    redefine_impl->attr_groups = NULL;
+    redefine_impl->groups = NULL;
+    redefine_impl->schema_types = NULL;
+    redefine_impl->items = NULL;
+    
+    redefine_impl->redefine.ops = AXIS2_MALLOC((*env)->allocator, 
+                    sizeof(axis2_xml_schema_redefine_ops_t));
+
+    if(!redefine_impl->redefine.ops)
+    {
+        axis2_xml_schema_redefine_free(&(redefine_impl->redefine), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    
+    redefine_impl->redefine.ops->free = 
+        axis2_xml_schema_redefine_free;
+    redefine_impl->redefine.ops->get_base_impl = 
+        axis2_xml_schema_redefine_get_base_impl;
+        
+    redefine_impl->redefine.ops->get_items = 
+            axis2_xml_schema_redefine_get_items;
+            
+    redefine_impl->redefine.ops->get_group = 
+            axis2_xml_schema_redefine_get_group;
+
+    redefine_impl->methods = axis2_hash_make(env);
+    if(!redefine_impl->methods)
+    {
+        axis2_xml_schema_redefine_free(&(redefine_impl->redefine), env);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+
+    axis2_hash_set(redefine_impl->methods, "free", AXIS2_HASH_KEY_STRING, 
+            axis2_xml_schema_redefine_free);
+
+    axis2_hash_set(redefine_impl->methods, "get_items", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_redefine_get_items);
+    axis2_hash_set(redefine_impl->methods, "get_group", 
+            AXIS2_HASH_KEY_STRING, axis2_xml_schema_redefine_get_group);
+
+    redefine_impl->external = axis2_xml_schema_external_create(env);
+     if(!redefine_impl->external)
+    {
+        axis2_xml_schema_redefine_free(&(redefine_impl->redefine), env);
+        return NULL;
+    }
+    status = axis2_xml_schema_external_resolve_methods(
+            &(redefine_impl->redefine.base), env, redefine_impl->external, 
+            redefine_impl->methods);
+
+    return &(redefine_impl->redefine);
+}
+
+axis2_status_t AXIS2_CALL
+axis2_xml_schema_redefine_free(void *redefine,
+                                    axis2_env_t **env)
+{
+    axis2_xml_schema_redefine_impl_t *redefine_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    redefine_impl = AXIS2_INTF_TO_IMPL(redefine);
+
+    if(NULL != redefine_impl->methods)
+    {
+        axis2_hash_free(redefine_impl->methods, env);
+        redefine_impl->methods = NULL;
+    }
+
+    if(NULL != redefine_impl->external)
+    {
+        AXIS2_XML_SCHEMA_EXTERNAL_FREE(redefine_impl->external, env);
+        redefine_impl->external = NULL;
+    }
+    
+    if(NULL != redefine_impl->redefine.ops)
+    {
+        AXIS2_FREE((*env)->allocator, redefine_impl->redefine.ops);
+        redefine_impl->redefine.ops = NULL;
+    }
+    if(NULL != redefine_impl->redefine.base.ops)
+    {
+        AXIS2_FREE((*env)->allocator, redefine_impl->redefine.base.ops);
+        redefine_impl->redefine.base.ops = NULL;        
+    }
+    AXIS2_FREE((*env)->allocator, redefine_impl);
+    redefine_impl = NULL;
+    return AXIS2_SUCCESS;
+}
+
+axis2_xml_schema_external_t *AXIS2_CALL
+axis2_xml_schema_redefine_get_base_impl(void *redefine,
+                                axis2_env_t **env)
+{
+    axis2_xml_schema_redefine_impl_t *redefine_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    redefine_impl = AXIS2_INTF_TO_IMPL(redefine);
+
+    return redefine_impl->external;
+}
+
+AXIS2_DECLARE(axis2_status_t)
+axis2_xml_schema_redefine_resolve_methods(
+                                axis2_xml_schema_redefine_t *redefine,
+                                axis2_env_t **env,
+                                axis2_xml_schema_redefine_t *redefine_impl,
+                                axis2_hash_t *methods)
+{
+    axis2_xml_schema_redefine_impl_t *redefine_impl_l = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, redefine_impl, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, methods, AXIS2_FAILURE);
+    
+    redefine_impl_l = (axis2_xml_schema_redefine_impl_t *) redefine_impl;
+    
+    redefine->ops = AXIS2_MALLOC((*env)->allocator, 
+            sizeof(axis2_xml_schema_redefine_ops_t));
+            
+    redefine->ops->free = axis2_hash_get(methods, "free", 
+            AXIS2_HASH_KEY_STRING);
+            
+    redefine->ops->get_base_impl = 
+        redefine_impl_l->redefine.ops->get_base_impl;
+    redefine->ops->get_group = 
+        redefine_impl_l->redefine.ops->get_group;
+    redefine->ops->get_items = 
+        redefine_impl_l->redefine.ops->get_items;
+        
+    return axis2_xml_schema_external_resolve_methods(&(redefine->base), 
+            env, redefine_impl_l->external, methods);
+}
+
+axis2_xml_schema_obj_table_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_attribute_group(void *redefine,
+                                              axis2_env_t **env){}
+                
+axis2_status_t AXIS2_CALL
+axis2_xml_schema_redefine_set_attribute_group(void *redefine,
+                axis2_env_t **env,
+                axis2_xml_schema_obj_table_t *group){}
+
+   
+                   
+axis2_xml_schema_obj_collection_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_items(void *redefine,
+               axis2_env_t **env){}
+               
+axis2_xml_schema_obj_table_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_schema_types(void *redefine,
+                      axis2_env_t **env){}
+                      
+axis2_xml_schema_obj_table_t* AXIS2_CALL
+axis2_xml_schema_redefine_get_group(void *redefine, 
+               axis2_env_t **env){}
\ No newline at end of file