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 2005/11/16 04:45:14 UTC

svn commit: r344866 [1/2] - in /webservices/axis2/trunk/c: include/ modules/core/description/src/ modules/core/engine/src/ modules/util/src/ modules/util/test/ modules/wsdl/src/

Author: damitha
Date: Tue Nov 15 19:44:41 2005
New Revision: 344866

URL: http://svn.apache.org/viewcvs?rev=344866&view=rev
Log:
work on wsdl

Added:
    webservices/axis2/trunk/c/include/axis2_wsdl_extensible_component.h
    webservices/axis2/trunk/c/include/axis2_wsdl_feature.h
    webservices/axis2/trunk/c/include/axis2_wsdl_interface.h
    webservices/axis2/trunk/c/include/axis2_wsdl_property.h
    webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_component.c
    webservices/axis2/trunk/c/modules/wsdl/src/wsdl_feature.c
    webservices/axis2/trunk/c/modules/wsdl/src/wsdl_interface.c
    webservices/axis2/trunk/c/modules/wsdl/src/wsdl_property.c
Modified:
    webservices/axis2/trunk/c/include/axis2_engine_config.h
    webservices/axis2/trunk/c/include/axis2_error.h
    webservices/axis2/trunk/c/include/axis2_operation.h
    webservices/axis2/trunk/c/include/axis2_param_container.h
    webservices/axis2/trunk/c/include/axis2_svc.h
    webservices/axis2/trunk/c/modules/core/description/src/operation.c
    webservices/axis2/trunk/c/modules/core/description/src/param_container.c
    webservices/axis2/trunk/c/modules/core/description/src/svc.c
    webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c
    webservices/axis2/trunk/c/modules/util/src/Makefile.am
    webservices/axis2/trunk/c/modules/util/src/Makefile.in
    webservices/axis2/trunk/c/modules/util/test/Makefile.am
    webservices/axis2/trunk/c/modules/util/test/Makefile.in
    webservices/axis2/trunk/c/modules/util/test/util_test.c
    webservices/axis2/trunk/c/modules/util/test/util_test.h
    webservices/axis2/trunk/c/modules/wsdl/src/Makefile.am
    webservices/axis2/trunk/c/modules/wsdl/src/Makefile.in

Modified: webservices/axis2/trunk/c/include/axis2_engine_config.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_engine_config.h?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_engine_config.h (original)
+++ webservices/axis2/trunk/c/include/axis2_engine_config.h Tue Nov 15 19:44:41 2005
@@ -72,6 +72,21 @@
 	axis2_status_t (AXIS2_CALL *remove_svc) (axis2_engine_config_t *engine_config, 
                                                 axis2_env_t **env, 
                                                 const axis2_char_t *name);
+    
+    axis2_status_t (AXIS2_CALL *add_param) (axis2_engine_config_t *engine_config, 
+                                                axis2_env_t **env,
+		                                        axis2_param_t *param);
+
+	axis2_param_t *(AXIS2_CALL *get_param) (axis2_engine_config_t *engine_config, 
+                                                axis2_env_t **env,
+		                                        const axis2_char_t *name);
+
+	axis2_array_list_t *(AXIS2_CALL *get_params) (axis2_engine_config_t *engine_config, 
+                                                axis2_env_t **env);
+	
+	axis2_bool_t (AXIS2_CALL *is_param_locked) (axis2_engine_config_t *engine_config, 
+                                                axis2_env_t **env,
+		                                        const axis2_char_t *param_name);
 };
 
 /**
@@ -95,23 +110,35 @@
 
 /************************* Start of function macros	***************************/
 	
-#define AXIS2_ENGINE_CONFIG_free(engine_config, env) \
-		(engine_config->free(engine_config, env);
+#define AXIS2_ENGINE_CONFIG_FREE(engine_config, env) \
+		(engine_config->ops->free(engine_config, env)
 	
-#define AXIS2_ENGINE_CONFIG_add_svc_grp(engine_config, env, svc_grp) \
-        (engine_config->ops->add_svc_grp (engine_config, env, svc_grp));
+#define AXIS2_ENGINE_CONFIG_ADD_SVC_GRP(engine_config, env, svc_grp) \
+        (engine_config->ops->add_svc_grp (engine_config, env, svc_grp))
 
 #define AXIS2_ENGINE_CONFIG_GET_SVC_GRP(engine_config, env, svc_grp_name) \
-        (engine_config->ops->get_svc_grp (engine_config, env, svc_grp_name));
+        (engine_config->ops->get_svc_grp (engine_config, env, svc_grp_name))
 
 #define AXIS2_ENGINE_CONFIG_ADD_SVC(engine_config, env, svc) \
-		(engine_config->ops->get_svc (engine_config, env, svc));
+		(engine_config->ops->get_svc (engine_config, env, svc))
 		
 #define AXIS2_ENGINE_CONFIG_GET_SVC(engine_config, env, svc_name) \
-		(engine_config->ops->get_svc (engine_config, env, svc_name));
+		(engine_config->ops->get_svc (engine_config, env, svc_name))
 
 #define AXIS2_ENGINE_CONFIG_REMOVE_SVC(engine_config, env, svc_name) \
-		(engine_config->ops->remove_svc (engine_config, env, svc_name));
+		(engine_config->ops->remove_svc (engine_config, env, svc_name))
+        
+#define AXIS2_ENGINE_CONFIG_ADD_PARAM(engine_config, env, param) \
+        (engine_config->ops->add_param(engine_config , env, param))
+		
+#define AXIS2_ENGINE_CONFIG_GET_PARAM(engine_config, env, name) \
+        (engine_config->ops->get_param(engine_config , env, name))
+		
+#define AXIS2_ENGINE_CONFIG_GET_PARAMS(engine_config, env) \
+        (engine_config->ops->get_params(engine_config , env))
+		
+#define AXIS2_ENGINE_CONFIG_IS_PARAM_LOCKED(engine_config, env, param_name) \
+        (engine_config->ops->is_parameter_locked(engine_config, env, param_name))
 
 /************************* End of function macros *****************************/
 

Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Tue Nov 15 19:44:41 2005
@@ -157,6 +157,8 @@
         AXIS2_ERROR_PARAMETER_LOCKED_CANNOT_OVERRIDE,
         /** Parameter container not set */
         AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER,
+        /** Parameter not set */
+        AXIS2_ERROR_INVALID_STATE_PARAM,
         /** Operation accessed has invalid state */
         AXIS2_ERROR_INVALID_STATE_OPERATION,
         /** Service accessed has invalid state */
@@ -182,7 +184,9 @@
         /** Invalid handler rules  */
         AXIS2_ERROR_INVALID_HANDLER_RULES,
         /** Invalid handler state */
-        AXIS2_ERROR_INVALID_HANDLER_STATE
+        AXIS2_ERROR_INVALID_HANDLER_STATE,
+        /** No such element */
+        AXIS2_ERROR_NO_SUCH_ELEMENT
     };
 
 /** @} */

Modified: webservices/axis2/trunk/c/include/axis2_operation.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_operation.h?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_operation.h (original)
+++ webservices/axis2/trunk/c/include/axis2_operation.h Tue Nov 15 19:44:41 2005
@@ -27,6 +27,9 @@
 #include <axis2_wsdl_operation.h>
 #include <axis2_svc.h>
 #include <axis2_msg_recv.h>
+#include <axis2_array_list.h>
+
+#include "description.h"
 
 #ifdef __cplusplus
 extern "C"
@@ -74,7 +77,7 @@
                                             const axis2_char_t *name);
 
 
-	axis2_hash_t *(AXIS2_CALL *get_params) (axis2_operation_t *operation, 
+	axis2_array_list_t *(AXIS2_CALL *get_params) (axis2_operation_t *operation, 
                                                 axis2_env_t **env);
 
     /**
@@ -114,6 +117,27 @@
 	struct axis2_msg_recv_s *(AXIS2_CALL *get_msg_recv) (axis2_operation_t *operation, 
                                                     axis2_env_t **env);
     
+    axis2_hash_t * (AXIS2_CALL *get_component_properties) (
+                                                    axis2_operation_t *operation,
+                                                    axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *set_component_properties) (
+                                                    axis2_operation_t *operation,
+                                                    axis2_env_t **env,
+                                                    axis2_hash_t *properties);
+    
+    axis2_wsdl_component_t * (
+            AXIS2_CALL *get_component_property) (
+                                                    axis2_operation_t *operation,
+                                                    axis2_env_t **env,
+                                                    const axis2_char_t *key);
+    
+    axis2_status_t (AXIS2_CALL *set_component_property) (
+                                                    axis2_operation_t *operation,
+                                                    axis2_env_t **env,
+                                                    const void *key,
+                                                    void *value);
+                                        
     axis2_char_t *(AXIS2_CALL *get_style) (axis2_operation_t *operation,
                                             axis2_env_t **env);
 
@@ -147,55 +171,75 @@
 axis2_operation_create_with_name (axis2_env_t **env, 
                                                 axis2_qname_t *name);
 
+/** 
+ * Creates operation struct with wsdl operation
+ * @param wsdl_operation wsdl operation
+ * @return pointer to newly created operation
+ */
+axis2_operation_t * AXIS2_CALL
+axis2_operation_create_with_wsdl_operation (axis2_env_t **env, 
+                                            axis2_wsdl_operation_t *wsdl_operation);
 
 /************************** Start of function macros **************************/
 
 #define AXIS2_OPERATION_FREE(operation, env) \
-        ((operation->ops)->free (operation, env));
+        ((operation->ops)->free (operation, env))
 
 #define AXIS2_OPERATION_ADD_PARAM(operation, env, param) \
-		((operation->ops)->add_param (operation, env, param));
+		((operation->ops)->add_param (operation, env, param))
 
 #define AXIS2_OPERATION_GET_PARAM(operation, env) \
-		((operation->ops)->get_param (operation, env));
+		((operation->ops)->get_param (operation, env))
 
 #define AXIS2_OPERATION_GET_PARAMS(operation, env) \
-		((operation->ops)->get_params (operation, env));
+		((operation->ops)->get_params (operation, env))
 
 #define AXIS2_OPERATION_IS_PARAM_LOCKED(operation, env, param_name) \
-        ((operation->ops)->is_param_locked(operation, env, param_name));
+        ((operation->ops)->is_param_locked(operation, env, param_name))
 
 #define AXIS2_OPERATION_SET_PARENT(operation, env, service_desc) \
-        ((operation->ops)->set_parent (operation, env, service_desc));
+        ((operation->ops)->set_parent (operation, env, service_desc))
 
 #define AXIS2_OPERATION_GET_PARENT(operation, env) \
-		((operation->ops)->get_parent (operation, env));
+		((operation->ops)->get_parent (operation, env))
 
 #define AXIS2_OPERATION_SET_MSG_RECEIVER(operation, env, msg_recv) \
-        ((operation->ops)->set_msg_recv (operation, env, msg_recv));
+        ((operation->ops)->set_msg_recv (operation, env, msg_recv))
 
 #define AXIS2_OPERATION_GET_MSG_RECEIVER(operation, env) \
-		((operation->ops)->get_msg_recv (operation, env));
+		((operation->ops)->get_msg_recv (operation, env))
 
 #define AXIS2_OPERATION_SET_NAME(operation, env, qname) \
-		((operation->ops)->set_name (operation, env, qname));
+		((operation->ops)->set_name (operation, env, qname))
         
 #define AXIS2_OPERATION_GET_NAME(operation, env) \
-		((operation->ops)->get_name (operation, env));
+		((operation->ops)->get_name (operation, env))
 
 #define AXIS2_OPERATION_SET_MSG_EXCHANGE_PATTERN(operation , env, \
         msg_exchange_pattern) \
 		((operation->ops)->set_msg_exchange_pattern (operation, env, \
-        msg_exchange_pattern));
+        msg_exchange_pattern))
 
 #define AXIS2_OPERATION_GET_MSG_EXCHANGE_PATTERN(operation, env) \
-		((operation->ops)->get_msg_exchange_pattern (operation, env));        
+		((operation->ops)->get_msg_exchange_pattern (operation, env))
+
+#define AXIS2_OPERATION_GET_COMPONENT_PROPERTIES(operation, env) \
+		((operation->ops)->get_component_properties (operation, env))
 
+#define AXIS2_OPERATION_SET_COMPONENT_PROPERTIES(operation, env, properties) \
+		((operation->ops)->set_component_properties (operation, env, properties))
+        
+#define AXIS2_OPERATION_GET_COMPONENT_PROPERTY(operation, env, key) \
+		((operation->ops)->get_component_property (operation, env, key))
+
+#define AXIS2_OPERATION_SET_COMPONENT_PROPERTY(operation, env, key, value) \
+		((operation->ops)->set_component_property (operation, env, key, value))
+        
 #define AXIS2_OPERATION_GET_STYLE(operation, env) \
-		((operation->ops)->get_style (operation, env));
+		((operation->ops)->get_style (operation, env))
         
 #define AXIS2_OPERATION_SET_STYLE(operation, env, style) \
-		((operation->ops)->set_style (operation, env, style));        
+		((operation->ops)->set_style (operation, env, style))       
 
 /************************** End of function macros ****************************/
 

Modified: webservices/axis2/trunk/c/include/axis2_param_container.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_param_container.h?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_param_container.h (original)
+++ webservices/axis2/trunk/c/include/axis2_param_container.h Tue Nov 15 19:44:41 2005
@@ -28,6 +28,7 @@
 #include <axis2_env.h>
 #include <axis2_allocator.h>
 #include <axis2_string.h>
+#include <axis2_array_list.h>
 #include <axis2_hash.h>
 
 /*#include <axis2_om_element.h>*/
@@ -81,7 +82,7 @@
 	/** To get all the params in a given description
 	 * @return all the params contained
 	 */
-	axis2_hash_t *(AXIS2_CALL *get_params)
+	axis2_array_list_t *(AXIS2_CALL *get_params)
 									(struct axis2_param_container *param_container, 
 										axis2_env_t **env);
 	

Modified: webservices/axis2/trunk/c/include/axis2_svc.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_svc.h?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_svc.h (original)
+++ webservices/axis2/trunk/c/include/axis2_svc.h Tue Nov 15 19:44:41 2005
@@ -29,6 +29,7 @@
 #include <axis2_svc_grp.h>
 #include <axis2_qname.h>
 #include <axis2_error.h>
+#include <axis2_array_list.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -146,39 +147,47 @@
 axis2_svc_create_with_qname (axis2_env_t **env, 
                                 axis2_qname_t *qname);
 
+/** 
+ * Creates service struct with wsdl service
+ * @param wsdl_svc wsdl service
+ * @return pointer to newly created service
+ */
+axis2_svc_t * AXIS2_CALL
+axis2_svc_create_with_wsdl_svc (axis2_env_t **env, 
+                                axis2_wsdl_svc_t *wsdl_svc);
 
 /**************************** Start of function macros ************************/
 
-#define AXIS2_SVC_FREE(svc, env) (svc->ops->free (svc, env));
+#define AXIS2_SVC_FREE(svc, env) (svc->ops->free (svc, env))
 
 #define AXIS2_SVC_ADD_OPERATION(svc, env, operation) \
-		(svc->ops->add_operation (svc, env, operation));
+		(svc->ops->add_operation (svc, env, operation))
 
 #define AXIS2_SVC_GET_OPERATION_WITH_QNAME(svc, env) \
-		(svc->ops->get_operation_with_qname (svc, env));
+		(svc->ops->get_operation_with_qname (svc, env))
 
 #define AXIS2_SVC_GET_OPERATION_WITH_NAME(svc, env) \
-		(svc->ops->get_operation_with_name (svc, env));
+		(svc->ops->get_operation_with_name (svc, env))
 
-#define AXIS2_SVC_GET_OPERATIONS(svc, env) (svc->ops->get_operations (svc, env));
+#define AXIS2_SVC_GET_OPERATIONS(svc, env) (svc->ops->get_operations (svc, env))
 
 #define AXIS2_SVC_SET_PARENT(svc, env , svc_grp) (svc->ops->set_parent \
-        (svc, env, svc_grp));
+        (svc, env, svc_grp))
 
-#define AXIS2_SVC_GET_PARENT(svc, env) (svc->ops->get_parent (svc, env));
+#define AXIS2_SVC_GET_PARENT(svc, env) (svc->ops->get_parent (svc, env))
 
-#define AXIS2_SVC_SET_NAME(svc, env, qname) (svc->ops->set_name(svc , env, qname));
+#define AXIS2_SVC_SET_NAME(svc, env, qname) (svc->ops->set_name(svc , env, qname))
 
-#define AXIS2_SVC_GET_NAME(svc, env) (svc->ops->get_name(svc , env));
+#define AXIS2_SVC_GET_NAME(svc, env) (svc->ops->get_name(svc , env))
 		
-#define AXIS2_SVC_ADD_PARAM(svc, env, param) (svc->ops->add_param(svc , env, param));
+#define AXIS2_SVC_ADD_PARAM(svc, env, param) (svc->ops->add_param(svc , env, param))
 		
-#define AXIS2_SVC_GET_PARAM(svc, env, name) (svc->ops->get_param(svc , env, name));
+#define AXIS2_SVC_GET_PARAM(svc, env, name) (svc->ops->get_param(svc , env, name))
 		
-#define AXIS2_SVC_GET_PARAMS(svc, env) (svc->ops->get_params(svc , env));
+#define AXIS2_SVC_GET_PARAMS(svc, env) (svc->ops->get_params(svc , env))
 		
 #define AXIS2_SVC_IS_PARAM_LOCKED(svc, env, param_name) \
-        (svc->ops->is_parameter_locked(svc, env, param_name));
+        (svc->ops->is_param_locked(svc, env, param_name))
 				
 #define AXIS2_SVC_GET_COMPONENT_PROPERTIES(svc, env) \
         ((svc->ops)->get_component_properties(svc, env))

Added: webservices/axis2/trunk/c/include/axis2_wsdl_extensible_component.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_wsdl_extensible_component.h?rev=344866&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_wsdl_extensible_component.h (added)
+++ webservices/axis2/trunk/c/include/axis2_wsdl_extensible_component.h Tue Nov 15 19:44:41 2005
@@ -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_WSDL_EXTENSIBLE_COMPONENT_H
+#define AXIS2_WSDL_EXTENSIBLE_COMPONENT_H
+
+/**
+ * @file axis2_wsdl_extensible_component.h
+ * @brief Axis2 Wsdl extensible component interface
+ */
+
+#include <axis2.h>
+#include <axis2_error.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_allocator.h>
+#include <axis2_linked_list.h>
+#include <axis2_wsdl_feature.h>
+#include <axis2_wsdl_property.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_wsdl_extensible_component_s axis2_wsdl_extensible_component_t;
+typedef struct axis2_wsdl_extensible_component_ops_s axis2_wsdl_extensible_component_ops_t;
+
+/** @defgroup axis2_wsdl_extensible_component Wsdl Extensible Component
+ * @ingroup axis2_wsdl
+ * @{
+ */
+
+/** 
+ * @brief Wsdl Extensible Component operations struct
+ * Encapsulator struct for operations of axis2_wsdl_extensible_component
+ */
+AXIS2_DECLARE_DATA struct axis2_wsdl_extensible_component_ops_s
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *free)(
+                    axis2_wsdl_extensible_component_t *wsdl_extensible_component,
+			        axis2_env_t **env);
+
+    /**
+     * Will add a <code>WSDLFeature</code> to the feature list.
+     * If feature is null it will not be added.
+     * <code>ExtensibleComponent</code>
+     *
+     * @param wsdl_feature
+     */
+    axis2_status_t (AXIS2_CALL *
+    add_feature) (axis2_wsdl_extensible_component_t *extensible_component,
+                axis2_env_t **env,
+                axis2_wsdl_feature_t *wsdl_feature);
+        
+    /**
+     * Will return the <code>WSDLFeature</code>s. If there aren't
+     * any features an empty list will be returned.
+     *
+     * @return
+     */
+    axis2_linked_list_t *(AXIS2_CALL *
+    get_features) (axis2_wsdl_extensible_component_t *extensible_component,
+                   axis2_env_t **env);
+        
+    /**
+     * Will add the property to the component properties. If the property is null it will
+     * not be added.
+     *
+     * @param wsdlProperty
+     */
+    axis2_status_t (AXIS2_CALL *
+    add_property) (axis2_wsdl_extensible_component_t *extensible_component,
+                   axis2_env_t **env,
+                   axis2_wsdl_property_t *wsdl_property);
+        
+    /**
+     * Returns the Component Properties. If none exist an empty list will be returned.
+     *
+     * @return
+     */
+    axis2_linked_list_t *(AXIS2_CALL *
+    get_properties) (axis2_wsdl_extensible_component_t *extensible_component,
+                     axis2_env_t **env);
+};
+
+/** 
+ * @brief Wsdl container struct
+ *	Property for params  
+ */  
+AXIS2_DECLARE_DATA struct axis2_wsdl_extensible_component_s
+{
+	axis2_wsdl_extensible_component_ops_t *ops;
+};
+
+/**
+ * Creates wsdl property struct
+ * @return pointer to newly created wsdl property
+ */
+AXIS2_DECLARE(axis2_wsdl_extensible_component_t *) 
+axis2_wsdl_extensible_component_create (axis2_env_t **env);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_WSDL_EXTENSIBLE_COMPONENT_FREE(extensible_component, env) \
+		((extensible_component->ops)->free (extensible_component, env))
+
+#define AXIS2_WSDL_EXTENSIBLE_COMPONENT_ADD_FEATURE(extensible_component, env, feature) \
+		((extensible_component->ops)->add_feature (extensible_component, env, feature))
+
+#define AXIS2_WSDL_EXTENSIBLE_COMPONENT_GET_FEATURES(extensible_component, env) \
+		((extensible_component->ops)->get_features (extensible_component, env))
+
+#define AXIS2_WSDL_EXTENSIBLE_COMPONENT_ADD_PROPERTY(extensible_component, env, property) \
+		((extensible_component->ops)->add_property (extensible_component, env, property))
+
+#define AXIS2_WSDL_EXTENSIBLE_COMPONENT_GET_PROPERTIES(extensible_component, env) \
+		((extensible_component->ops)->get_properties (extensible_component, env))       
+
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_WSDL_EXTENSIBLE_COMPONENT_H */

Added: webservices/axis2/trunk/c/include/axis2_wsdl_feature.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_wsdl_feature.h?rev=344866&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_wsdl_feature.h (added)
+++ webservices/axis2/trunk/c/include/axis2_wsdl_feature.h Tue Nov 15 19:44:41 2005
@@ -0,0 +1,137 @@
+/*
+ * 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_WSDL_FEATURE_H
+#define AXIS2_WSDL_FEATURE_H
+
+/**
+ * @file axis2_wsdl_feature.h
+ * @brief Axis2 Wsdl feature interface
+ */
+
+#include <axis2.h>
+#include <axis2_error.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_allocator.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_wsdl_feature_s axis2_wsdl_feature_t;
+typedef struct axis2_wsdl_feature_ops_s axis2_wsdl_feature_ops_t;
+
+/** @defgroup axis2_wsdl_feature Wsdl Feature
+ * @ingroup axis2_wsdl
+ * @{
+ */
+
+/** 
+ * @brief Wsdl Feature operations struct
+ * Encapsulator struct for operations of axis2_wsdl_feature
+ */
+AXIS2_DECLARE_DATA struct axis2_wsdl_feature_ops_s
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *free)(axis2_wsdl_feature_t *wsdl_feature,
+										axis2_env_t **env);
+                               
+    /**
+     * Method getName
+     *
+     * @return
+     */
+    axis2_char_t *(AXIS2_CALL *
+    get_name) (axis2_wsdl_feature_t *wsdl_feature,
+                                    axis2_env_t **env);
+                                    
+    /**
+     * Method setName
+     *
+     * @param name
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_name) (axis2_wsdl_feature_t *wsdl_feature,
+                                    axis2_env_t **env,
+                                    axis2_char_t *name);
+    
+    
+    /**
+     * Method isRequired
+     *
+     * @return
+     */
+    axis2_bool_t (AXIS2_CALL *
+    is_required) (axis2_wsdl_feature_t *wsdl_feature,
+                                    axis2_env_t **env);
+                                    
+    /**
+     * Method setRequired
+     *
+     * @param required
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_required) (axis2_wsdl_feature_t *wsdl_feature,
+                                    axis2_env_t **env,
+                                    axis2_bool_t required);  
+
+
+};
+
+/** 
+ * @brief Wsdl container struct
+ *	Property for params  
+ */  
+AXIS2_DECLARE_DATA struct axis2_wsdl_feature_s
+{
+	axis2_wsdl_feature_ops_t *ops;
+};
+
+/**
+ * Creates wsdl feature struct
+ * @return pointer to newly created wsdl feature
+ */
+AXIS2_DECLARE(axis2_wsdl_feature_t *) axis2_wsdl_feature_create (axis2_env_t **env);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_WSDL_FEATURE_FREE(wsdl_feature, env) \
+		((wsdl_feature->ops)->free (wsdl_feature, env))
+
+#define AXIS2_WSDL_FEATURE_GET_NAME(wsdl_feature, env) \
+		((wsdl_feature->ops)->get_name (wsdl_feature, env))
+
+#define AXIS2_WSDL_FEATURE_SET_NAME(wsdl_feature, env, name) \
+		((wsdl_feature->ops)->set_name (wsdl_feature, env, name))
+        
+#define AXIS2_WSDL_FEATURE_IS_REQUIRED(wsdl_feature, env) \
+		((wsdl_feature->ops)->is_required (wsdl_feature, env))
+
+#define AXIS2_WSDL_FEATURE_SET_REQUIRED(wsdl_feature, env, required) \
+		((wsdl_feature->ops)->set_required (wsdl_feature, env, required))        
+
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_WSDL_FEATURE_H */

Added: webservices/axis2/trunk/c/include/axis2_wsdl_interface.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_wsdl_interface.h?rev=344866&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_wsdl_interface.h (added)
+++ webservices/axis2/trunk/c/include/axis2_wsdl_interface.h Tue Nov 15 19:44:41 2005
@@ -0,0 +1,278 @@
+/*
+ * 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_WSDL_INTERFACE_H
+#define AXIS2_WSDL_INTERFACE_H
+
+/**
+ * @file axis2_wsdl_interface.h
+ * @brief Axis2 Wsdl interface interface
+ */
+
+#include <axis2.h>
+#include <axis2_error.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_allocator.h>
+#include <axis2_hash.h>
+#include <axis2_wsdl_operation.h>
+#include <axis2_linked_list.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_wsdl_interface_s axis2_wsdl_interface_t;
+typedef struct axis2_wsdl_interface_ops_s axis2_wsdl_interface_ops_t;
+
+/** @defgroup axis2_wsdl_interface Wsdl Interface
+ * @ingroup axis2_wsdl
+ * @{
+ */
+
+/** 
+ * @brief Wsdl Interface operations struct
+ * Encapsulator struct for operations of axis2_wsdl_interface
+ */
+AXIS2_DECLARE_DATA struct axis2_wsdl_interface_ops_s
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *
+    free)(axis2_wsdl_interface_t *wsdl_interface,
+		    axis2_env_t **env);
+
+    /**
+     * Method getDefinedOperations
+     *
+     * @return
+     */
+    axis2_hash_t *(AXIS2_CALL *
+    get_defined_operations) (axis2_wsdl_interface_t *wsdl_interface,
+                                                axis2_env_t **env);
+    
+    /**
+     * @return
+     */
+    axis2_linked_list_t *(AXIS2_CALL *
+    get_faults) (axis2_wsdl_interface_t *wsdl_interface,
+                                        axis2_env_t **env);
+    
+    /**
+     * @return
+     */
+    axis2_qname_t *(AXIS2_CALL *
+    get_name) (axis2_wsdl_interface_t *wsdl_interface,
+                                    axis2_env_t **env);
+                                    
+    /**
+     * @return
+     */
+    axis2_hash_t *(AXIS2_CALL *
+    get_operations) (axis2_wsdl_interface_t *wsdl_interface,
+                                        axis2_env_t **env);
+    
+    /**
+     * Retruns the <code>WSDLOperation</code>
+     *
+     * @param nCName
+     * @return
+     */
+    axis2_wsdl_operation_t *(AXIS2_CALL *
+    get_operation) (axis2_wsdl_interface_t *wsdl_interface,
+                                    axis2_env_t **env,
+                                    axis2_char_t *nc_name);
+                                    
+    /**
+     * @return
+     */
+    axis2_hash_t *(AXIS2_CALL *
+    get_super_interfaces) (axis2_wsdl_interface_t *wsdl_interface,
+                                                axis2_env_t **env);
+    
+    /**
+     * Method getSuperInterface
+     *
+     * @param qName
+     * @return
+     */
+    axis2_wsdl_interface_t *(AXIS2_CALL *
+    get_super_interface) (axis2_wsdl_interface_t *wsdl_interface,
+                                                axis2_env_t **env,
+                                                axis2_qname_t *qname);
+                                                
+    /**
+     * The Targetnamespace is that of the namespace URI of the QName of
+     * this component.
+     *
+     * @return URI as a String if the name is set otherwise will return null.
+     */
+    axis2_char_t *(AXIS2_CALL *
+    get_target_namespace) (axis2_wsdl_interface_t *wsdl_interface,
+                                                axis2_env_t **env);
+    
+    /**
+     * @param list
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_faults) (axis2_wsdl_interface_t *wsdl_interface,
+                                    axis2_env_t **env,
+                                    axis2_linked_list_t *list);
+                                    
+    /**
+     * @param qName
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_name) (axis2_wsdl_interface_t *wsdl_interface,
+                                    axis2_env_t **env,
+                                    axis2_qname_t *qName);
+    
+    /**
+     * @param list
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_operations) (axis2_wsdl_interface_t *wsdl_interface,
+                                        axis2_env_t **env,
+                                        axis2_hash_t *list);
+                                        
+    /**
+     * The operation is added by its ncname. If operation is null
+     * it will not be added. If the Operation name is null a
+     * <code>WSDLProcessingException</code> will be thrown.
+     *
+     * @param operation
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_operation) (axis2_wsdl_interface_t *wsdl_interface,
+                                        axis2_env_t **env,
+                                        axis2_wsdl_operation_t *operation);
+    
+    /**
+     * @param list
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_super_interfaces) (axis2_wsdl_interface_t *wsdl_interface,
+                                                axis2_env_t **env,
+                                                axis2_hash_t *list);
+                                                
+    /**
+     * The Inteface will be added to the list of super interfaces keyed with
+     * the QName.
+     *
+     * @param interfaceComponent WSDLInterface Object
+     */
+    axis2_status_t (AXIS2_CALL *
+    add_super_interface)(axis2_wsdl_interface_t *wsdl_interface,
+                                                axis2_env_t **env,
+                                                axis2_wsdl_interface_t *interface_component);
+    
+    /**
+     * Will return the StyleDefault if exist , otherwise will return null
+     *
+     * @return
+     */
+    axis2_char_t *(AXIS2_CALL *
+    get_style_default)(axis2_wsdl_interface_t *wsdl_interface,
+                                            axis2_env_t **env);
+                                            
+    
+    /**
+     * Method setStyleDefault
+     *
+     * @param styleDefault
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_style_default) (axis2_wsdl_interface_t *wsdl_interface,
+                                            axis2_env_t **env,
+                                            axis2_char_t *style_default);
+
+};
+
+/** 
+ * @brief Wsdl container struct
+ *	Property for params  
+ */  
+AXIS2_DECLARE_DATA struct axis2_wsdl_interface_s
+{
+	axis2_wsdl_interface_ops_t *ops;
+};
+
+/**
+ * Creates wsdl property struct
+ * @return pointer to newly created wsdl property
+ */
+AXIS2_DECLARE(axis2_wsdl_interface_t *) axis2_wsdl_interface_create (axis2_env_t **env);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_WSDL_INTERFACE_FREE(wsdl_interface, env) \
+		((wsdl_interface->ops)->free (wsdl_interface, env))
+
+#define AXIS2_WSDL_INTERFACE_GET_DEFINED_OPERATIONS(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_defined_operations (wsdl_interface, env))
+
+#define AXIS2_WSDL_INTERFACE_GET_FAULTS(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_faults (wsdl_interface, env))
+
+#define AXIS2_WSDL_INTERFACE_GET_NAME(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_name (wsdl_interface, env))
+
+#define AXIS2_WSDL_INTERFACE_GET_OPERATIONS(wsdl_interface, env, name) \
+		((wsdl_interface->ops)->get_operations (wsdl_interface, env, name))
+        
+#define AXIS2_WSDL_INTERFACE_GET_SUPER_INTERFACES(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_super_interfaces (wsdl_interface, env))
+
+#define AXIS2_WSDL_INTERFACE_GET_SUPER_INTERFACE(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_super_interface (wsdl_interface, env))        
+
+#define AXIS2_WSDL_INTERFACE_GET_TARGET_NAMESPACE(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_target_namespace (wsdl_interface, env))
+        
+#define AXIS2_WSDL_INTERFACE_SET_FAULTS(wsdl_interface, env, list) \
+		((wsdl_interface->ops)->set_faults (wsdl_interface, env, list))
+        
+#define AXIS2_WSDL_INTERFACE_SET_NAME(wsdl_interface, env, name) \
+		((wsdl_interface->ops)->set_name (wsdl_interface, env, name))
+        
+#define AXIS2_WSDL_INTERFACE_SET_OPERATIONS(wsdl_interface, env, list) \
+		((wsdl_interface->ops)->set_operations (wsdl_interface, env, list))
+
+#define AXIS2_WSDL_INTERFACE_SET_OPERATION(wsdl_interface, env, operation) \
+		((wsdl_interface->ops)->set_operation (wsdl_interface, env, operation))
+
+#define AXIS2_WSDL_INTERFACE_SET_SUPER_INTERFACES(wsdl_interface, env, list) \
+		((wsdl_interface->ops)->set_super_interfaces (wsdl_interface, env, list))
+        
+#define AXIS2_WSDL_INTERFACE_SET_SUPER_INTERFACE(wsdl_interface, env, interface) \
+		((wsdl_interface->ops)->set_super_interface (wsdl_interface, env, interface))
+        
+#define AXIS2_WSDL_INTERFACE_GET_STYLE_DEFAULT(wsdl_interface, env) \
+		((wsdl_interface->ops)->get_style_default (wsdl_interface, env))
+        
+#define AXIS2_WSDL_INTERFACE_SET_STYLE_DEFAULT(wsdl_interface, env, style_default) \
+		((wsdl_interface->ops)->set_style_default (wsdl_interface, env, style_default))
+	
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_WSDL_INTERFACE_H */

Added: webservices/axis2/trunk/c/include/axis2_wsdl_property.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_wsdl_property.h?rev=344866&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_wsdl_property.h (added)
+++ webservices/axis2/trunk/c/include/axis2_wsdl_property.h Tue Nov 15 19:44:41 2005
@@ -0,0 +1,163 @@
+/*
+ * 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_WSDL_PROPERTY_H
+#define AXIS2_WSDL_PROPERTY_H
+
+/**
+ * @file axis2_wsdl_property.h
+ * @brief Axis2 Wsdl property interface
+ */
+
+#include <axis2.h>
+#include <axis2_error.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_allocator.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_wsdl_property_s axis2_wsdl_property_t;
+typedef struct axis2_wsdl_property_ops_s axis2_wsdl_property_ops_t;
+
+/** @defgroup axis2_wsdl_property Wsdl Property
+ * @ingroup axis2_wsdl
+ * @{
+ */
+
+/** 
+ * @brief Wsdl Property operations struct
+ * Encapsulator struct for operations of axis2_wsdl_property
+ */
+AXIS2_DECLARE_DATA struct axis2_wsdl_property_ops_s
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *free)(axis2_wsdl_property_t *wsdl_property,
+										axis2_env_t **env);
+
+    /**
+     * Method getConstraint
+     *
+     * @return
+     */
+    void * (AXIS2_CALL *
+    get_constraint) (axis2_wsdl_property_t *wsdl_property,
+                                        axis2_env_t **env);
+    
+    /**
+     * Method setConstraint
+     *
+     * @param constraint
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_constraint) (axis2_wsdl_property_t *wsdl_property,
+                                        axis2_env_t **env,
+                                        void *constraint);
+    
+    /**
+     * Method getName
+     *
+     * @return
+     */
+    axis2_char_t *(AXIS2_CALL *
+    get_name) (axis2_wsdl_property_t *wsdl_property,
+                                    axis2_env_t **env);
+                                    
+    /**
+     * Method setName
+     *
+     * @param name
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_name) (axis2_wsdl_property_t *wsdl_property,
+                                    axis2_env_t **env,
+                                    axis2_char_t *name);
+    
+    
+    /**
+     * Method getValue
+     *
+     * @return
+     */
+    void *(AXIS2_CALL *
+    get_value) (axis2_wsdl_property_t *wsdl_property,
+                                    axis2_env_t **env);
+                                    
+    /**
+     * Method setValue
+     *
+     * @param value
+     */
+    axis2_status_t (AXIS2_CALL *
+    set_value) (axis2_wsdl_property_t *wsdl_property,
+                                    axis2_env_t **env,
+                                    void *value);                                
+
+
+
+};
+
+/** 
+ * @brief Wsdl container struct
+ *	Property for params  
+ */  
+AXIS2_DECLARE_DATA struct axis2_wsdl_property_s
+{
+	axis2_wsdl_property_ops_t *ops;
+};
+
+/**
+ * Creates wsdl property struct
+ * @return pointer to newly created wsdl property
+ */
+AXIS2_DECLARE(axis2_wsdl_property_t *) axis2_wsdl_property_create (axis2_env_t **env);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_WSDL_PROPERTY_FREE(wsdl_property, env) \
+		((wsdl_property->ops)->free (wsdl_property, env))
+
+#define AXIS2_WSDL_PROPERTY_GET_CONSTRAINT(wsdl_property, env) \
+		((wsdl_property->ops)->set_constraint (wsdl_property, env))
+
+#define AXIS2_WSDL_PROPERTY_SET_CONSTRAINT(wsdl_property, env, constraint) \
+		((wsdl_property->ops)->get_constraint (wsdl_property, env, constraint))
+
+#define AXIS2_WSDL_PROPERTY_GET_NAME(wsdl_property, env) \
+		((wsdl_property->ops)->get_name (wsdl_property, env))
+
+#define AXIS2_WSDL_PROPERTY_SET_NAME(wsdl_property, env, name) \
+		((wsdl_property->ops)->set_name (wsdl_property, env, name))
+        
+#define AXIS2_WSDL_PROPERTY_GET_VALUE(wsdl_property, env) \
+		((wsdl_property->ops)->get_value (wsdl_property, env))
+
+#define AXIS2_WSDL_PROPERTY_SET_VALUE(wsdl_property, env, value) \
+		((wsdl_property->ops)->set_value (wsdl_property, env, value))        
+
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_WSDL_PROPERTY_H */

Modified: webservices/axis2/trunk/c/modules/core/description/src/operation.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/operation.c?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/operation.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/operation.c Tue Nov 15 19:44:41 2005
@@ -47,7 +47,7 @@
                             axis2_env_t **env,
                             const axis2_char_t *name);
 
-axis2_hash_t * AXIS2_CALL
+axis2_array_list_t * AXIS2_CALL
 axis2_operation_get_params (axis2_operation_t *operation, 
                                 axis2_env_t **env);
 
@@ -92,6 +92,26 @@
 axis2_operation_get_msg_exchange_pattern (axis2_operation_t *operation, 
                                             axis2_env_t **env);
 
+axis2_hash_t * AXIS2_CALL
+axis2_operation_get_component_properties(axis2_operation_t *operation,
+                                        axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_operation_set_component_properties(axis2_operation_t *operation,
+                                        axis2_env_t **env,
+                                        axis2_hash_t *properties);
+
+axis2_wsdl_component_t * AXIS2_CALL
+axis2_operation_get_component_property(axis2_operation_t *operation,
+                                        axis2_env_t **env,
+                                        const axis2_char_t *key);
+
+axis2_status_t AXIS2_CALL
+axis2_operation_set_component_property (axis2_operation_t *operation,
+                                        axis2_env_t **env,
+                                        const void *key,
+                                        void *value);
+
 axis2_char_t * AXIS2_CALL
 axis2_operation_get_style (axis2_operation_t *operation,
                             axis2_env_t **env);
@@ -158,11 +178,27 @@
     
     operation_impl->operation.ops->set_name = axis2_operation_set_name;
 	operation_impl->operation.ops->get_name = axis2_operation_get_name;
+    
 	operation_impl->operation.ops->set_msg_exchange_pattern 
 		= axis2_operation_set_msg_exchange_pattern;
+    
 	operation_impl->operation.ops->get_msg_exchange_pattern
 		= axis2_operation_get_msg_exchange_pattern;
+    
+    operation_impl->operation.ops->get_component_properties = 
+        axis2_operation_get_component_properties;
+        
+    operation_impl->operation.ops->set_component_properties = 
+        axis2_operation_set_component_properties;
+        
+    operation_impl->operation.ops->get_component_property = 
+        axis2_operation_get_component_property;
+        
+    operation_impl->operation.ops->set_component_property = 
+        axis2_operation_set_component_property;
+        
     operation_impl->operation.ops->set_style = axis2_operation_set_style;
+    
 	operation_impl->operation.ops->get_style = axis2_operation_get_style; 
 	
 	operation_impl->parent = NULL;
@@ -184,7 +220,26 @@
 	}
     
     AXIS2_PARAM_CHECK((*env)->error, qname, AXIS2_FAILURE);	
-	AXIS2_WSDL_OPERATION_SET_NAME(operation_impl->wsdl_operation, env, qname);
+	axis2_operation_set_name(&(operation_impl->operation), env, qname);
+       
+	return &(operation_impl->operation);	
+}
+
+axis2_operation_t * AXIS2_CALL
+axis2_operation_create_with_wsdl_operation (axis2_env_t **env, 
+                                            axis2_wsdl_operation_t *wsdl_operation)
+{
+	axis2_operation_impl_t *operation_impl = 
+        AXIS2_INTF_TO_IMPL(axis2_operation_create(env));
+    
+	if(NULL == operation_impl)
+	{
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+	}
+    
+    AXIS2_PARAM_CHECK((*env)->error, wsdl_operation, NULL);	
+	
+    operation_impl->wsdl_operation = wsdl_operation;
        
 	return &(operation_impl->operation);	
 }
@@ -223,47 +278,58 @@
                                 axis2_env_t **env,       
 		                        axis2_param_t *param)
 {
+    axis2_param_container_t *param_container_l = NULL;
     AXIS2_FUNC_PARAM_CHECK(operation, env, AXIS2_FALSE);
-    AXIS2_PARAM_CHECK((*env)->error, AXIS2_INTF_TO_IMPL(operation)->param_container, 
-        AXIS2_FALSE);
     AXIS2_PARAM_CHECK((*env)->error, param, AXIS2_FALSE);
 	
-	axis2_hash_set 
-        (AXIS2_PARAM_CONTAINER_GET_PARAMS(AXIS2_INTF_TO_IMPL(operation)->
-        param_container, env), AXIS2_PARAM_GET_NAME(param, env), 
-        AXIS2_HASH_KEY_STRING, param);	
-	return AXIS2_SUCCESS;
-	
+    if(AXIS2_TRUE == axis2_operation_is_param_locked(operation, env, 
+            AXIS2_PARAM_GET_NAME(param, env)))
+    {
+        AXIS2_ERROR_SET((*env)->error, 
+            AXIS2_ERROR_PARAMETER_LOCKED_CANNOT_OVERRIDE, AXIS2_FAILURE);
+    }
+    else
+    {
+        param_container_l = (axis2_param_container_t *) 
+            axis2_operation_get_component_property(operation, env, 
+                (axis2_char_t *) PARAMETER_KEY);
+        return AXIS2_PARAM_CONTAINER_ADD_PARAM(param_container_l, env, param);
+    }
+    
+    return AXIS2_SUCCESS;
 }
 
 axis2_param_t * AXIS2_CALL
 axis2_operation_get_param (axis2_operation_t *operation, 
                                 axis2_env_t **env,
-		                        const axis2_char_t *name)
+		                        const axis2_char_t *param_name)
 {
+    axis2_param_container_t *param_container_l = NULL;
 	AXIS2_FUNC_PARAM_CHECK(operation, env, AXIS2_FALSE);
-    AXIS2_PARAM_CHECK((*env)->error, AXIS2_INTF_TO_IMPL(operation)->param_container, 
-        AXIS2_FALSE);
+	AXIS2_PARAM_CHECK((*env)->error, param_name, NULL);
+    if(AXIS2_INTF_TO_IMPL(operation)->param_container)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_STATE_OPERATION, NULL);
 	
-	axis2_char_t *tempname = AXIS2_STRDUP(name, env);
-	if(NULL == tempname)
-        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FALSE);
-		
-	return (axis2_param_t *)(axis2_hash_get (
-        AXIS2_PARAM_CONTAINER_GET_PARAMS(AXIS2_INTF_TO_IMPL(operation)->
-        param_container, env), tempname, AXIS2_HASH_KEY_STRING));
+    param_container_l = (axis2_param_container_t *) 
+        axis2_operation_get_component_property(operation, env, (axis2_char_t *) 
+            PARAMETER_KEY);
+	
+	return AXIS2_PARAM_CONTAINER_GET_PARAM(param_container_l, env, param_name);
 }
 
-axis2_hash_t * AXIS2_CALL
+axis2_array_list_t * AXIS2_CALL
 axis2_operation_get_params(axis2_operation_t *operation, 
                                 axis2_env_t **env)
 {
+    axis2_param_container_t *param_container_l = NULL;
 	AXIS2_FUNC_PARAM_CHECK(operation, env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK((*env)->error, AXIS2_INTF_TO_IMPL(operation)->param_container, 
         AXIS2_FALSE);
 	
-	return AXIS2_PARAM_CONTAINER_GET_PARAMS
-        (AXIS2_INTF_TO_IMPL(operation)->param_container, env);
+    param_container_l = (axis2_param_container_t *) 
+        axis2_operation_get_component_property(operation, env, (axis2_char_t *) 
+            PARAMETER_KEY);
+	return AXIS2_PARAM_CONTAINER_GET_PARAMS(param_container_l, env);
 }
 
 axis2_bool_t AXIS2_CALL 
@@ -271,17 +337,31 @@
                                     axis2_env_t **env,
 		                            const axis2_char_t *param_name)
 {
+    axis2_svc_t *parent_l = NULL;
+    axis2_param_t *param_l = NULL;
     AXIS2_FUNC_PARAM_CHECK(operation, env, AXIS2_FALSE);
-    AXIS2_PARAM_CHECK((*env)->error, AXIS2_INTF_TO_IMPL(operation)->param_container, 
-        AXIS2_FALSE);
+    if(AXIS2_INTF_TO_IMPL(operation)->param_container)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_STATE_OPERATION, 
+            AXIS2_FALSE);
 	
-	axis2_char_t *tempname = AXIS2_STRDUP(param_name, env);
-	if(NULL == tempname)
-        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FALSE); 
-		
-	return AXIS2_PARAM_CONTAINER_IS_PARAM_LOCKED
-		(AXIS2_INTF_TO_IMPL(operation)->param_container, env, tempname); 
+    AXIS2_PARAM_CHECK((*env)->error, param_name, AXIS2_FALSE);
 	
+    axis2_bool_t locked = AXIS2_FALSE;
+    /* checking the locked value of parent*/
+    parent_l = axis2_operation_get_parent(operation, env);
+    if(NULL != parent_l)
+    {
+        locked = AXIS2_SVC_IS_PARAM_LOCKED(parent_l, env, param_name);
+    }
+    if(AXIS2_TRUE == locked)
+    {
+        return AXIS2_TRUE;
+    }        
+    else
+    {
+        param_l = axis2_operation_get_param(operation, env, param_name);   
+    }
+	return AXIS2_PARAM_IS_LOCKED(param_l, env);
 }
 
 axis2_status_t AXIS2_CALL 

Modified: webservices/axis2/trunk/c/modules/core/description/src/param_container.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/param_container.c?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/param_container.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/param_container.c Tue Nov 15 19:44:41 2005
@@ -45,7 +45,7 @@
 						axis2_env_t **env, 
 						const axis2_char_t *name);
 
-axis2_hash_t * AXIS2_CALL 
+axis2_array_list_t * AXIS2_CALL 
 axis2_param_container_get_params (axis2_param_container_t *param_container, 
 						axis2_env_t **env);
 
@@ -89,7 +89,11 @@
 				
 	param_container_impl->params = axis2_hash_make (env);
 	if(NULL == param_container_impl->params)
+    {
+        AXIS2_FREE((*env)->allocator, param_container_impl->param_container.ops);
+        AXIS2_FREE((*env)->allocator, param_container_impl);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);	
+    }
 	
 	return &(param_container_impl->param_container);
 }
@@ -142,13 +146,26 @@
 		params, AXIS2_STRDUP(name, env), AXIS2_HASH_KEY_STRING));
 }
 
-axis2_hash_t * AXIS2_CALL 
+axis2_array_list_t * AXIS2_CALL 
 axis2_param_container_get_params (axis2_param_container_t *param_container, 
 		axis2_env_t **env)
 {
+    axis2_hash_index_t *i = 0;
+    axis2_hash_t *hash_l = NULL;
+    /* create an array list with the initial default capacity */
+    axis2_array_list_t *array_list_l = axis2_array_list_create(env, 0);
+    void *value = NULL;
+    
 	AXIS2_FUNC_PARAM_CHECK(param_container, env, NULL);
-	
-	return AXIS2_INTF_TO_IMPL(param_container)->params;
+    
+	hash_l = AXIS2_INTF_TO_IMPL(param_container)->params;
+    for (i = axis2_hash_first (hash_l, env); i; i = axis2_hash_next (env, i))
+    {
+        axis2_hash_this (i, NULL, NULL, &value);
+        AXIS2_ARRAY_LIST_ADD(array_list_l, env, value);
+    }
+    
+	return array_list_l;
 }
 
 axis2_status_t AXIS2_CALL 

Modified: webservices/axis2/trunk/c/modules/core/description/src/svc.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/svc.c?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/svc.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/svc.c Tue Nov 15 19:44:41 2005
@@ -12,8 +12,10 @@
 	axis2_param_container_t *param_container;
     axis2_wsdl_svc_t *wsdl_svc;
 	axis2_svc_grp_t *parent;
-	axis2_hash_t *wasaction_opeartionmap;
-	axis2_qname_t *qname;    
+	axis2_hash_t *wasaction_opeartionmap;  
+    axis2_char_t *axis2_svc_name;
+    axis2_array_list_t *module_list; 
+    long last_update;    
 
 };
 
@@ -122,6 +124,7 @@
 	svc_impl->svc.ops->add_param = axis2_svc_add_param;
 	svc_impl->svc.ops->get_param = axis2_svc_get_param;
 	svc_impl->svc.ops->get_params = axis2_svc_get_params;
+    svc_impl->svc.ops->is_param_locked = axis2_svc_is_param_locked;
     svc_impl->svc.ops->get_component_properties = axis2_svc_get_component_properties;
     svc_impl->svc.ops->set_component_properties = axis2_svc_set_component_properties;
 	svc_impl->svc.ops->get_component_property = axis2_svc_get_component_property;
@@ -139,7 +142,7 @@
     svc_impl->param_container = param_container;
     
     axis2_wsdl_svc_t *wsdl_svc = (axis2_wsdl_svc_t *)
-		axis2_param_container_create(env);		
+		axis2_wsdl_svc_create(env);		
 	if(NULL == wsdl_svc)
 	{
         AXIS2_FREE((*env)->allocator, svc_impl->svc.ops);
@@ -161,7 +164,21 @@
         AXIS2_FREE((*env)->allocator, svc_impl);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);		
 	}
-	svc_impl->qname = NULL;
+    
+    /** Create modle list of default size */
+    svc_impl->module_list = axis2_array_list_create(env, 0);
+    if(NULL == svc_impl->module_list)
+    {
+        AXIS2_FREE((*env)->allocator, svc_impl->svc.ops);
+        AXIS2_PARAM_CONTAINER_FREE(svc_impl->param_container, env);
+        AXIS2_WSDL_SVC_FREE(svc_impl->wsdl_svc, env);
+		axis2_hash_free(svc_impl->wasaction_opeartionmap, env);
+        AXIS2_FREE((*env)->allocator, svc_impl);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    svc_impl->axis2_svc_name = NULL;
+    svc_impl->last_update = 0;
 
 	return &(svc_impl->svc);	
 }
@@ -178,11 +195,30 @@
     
     AXIS2_PARAM_CHECK((*env)->error, qname, AXIS2_FAILURE);
     
-	svc_impl->qname = qname;
+	axis2_svc_set_name(&(svc_impl->svc), env, qname);
 	
 	return &(svc_impl->svc);
 }
 
+axis2_svc_t * AXIS2_CALL
+axis2_svc_create_with_wsdl_svc (axis2_env_t **env, 
+                                axis2_wsdl_svc_t *wsdl_svc)
+{
+	axis2_svc_impl_t *svc_impl = 
+        AXIS2_INTF_TO_IMPL(axis2_svc_create(env));
+    
+	if(NULL == svc_impl)
+	{
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+	}
+    
+    AXIS2_PARAM_CHECK((*env)->error, wsdl_svc, NULL);	
+	
+    svc_impl->wsdl_svc = wsdl_svc;
+       
+	return &(svc_impl->svc);	
+}
+
 /********************** Start of function implementations ********************/
 
 axis2_status_t AXIS2_CALL
@@ -207,8 +243,11 @@
     if(NULL != AXIS2_INTF_TO_IMPL(svc)->wasaction_opeartionmap)
 		axis2_hash_free(AXIS2_INTF_TO_IMPL(svc)->wasaction_opeartionmap, env);
     
-    if(NULL != AXIS2_INTF_TO_IMPL(svc)->qname)
-	    AXIS2_QNAME_FREE(AXIS2_INTF_TO_IMPL(svc)->qname, env);  
+    if(NULL != AXIS2_INTF_TO_IMPL(svc)->module_list)
+	    AXIS2_ARRAY_LIST_FREE(AXIS2_INTF_TO_IMPL(svc)->module_list, env);
+
+    if(NULL != AXIS2_INTF_TO_IMPL(svc)->axis2_svc_name)
+        AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(svc)->axis2_svc_name);        
     
 	AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(svc));
     

Modified: webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c Tue Nov 15 19:44:41 2005
@@ -65,6 +65,25 @@
                                     axis2_env_t **env,
 		                            const axis2_char_t *name);
 
+axis2_status_t AXIS2_CALL
+axis2_engine_config_add_param (axis2_engine_config_t *engine_config, 
+                                axis2_env_t **env, 
+                                axis2_param_t *param);
+
+axis2_param_t * AXIS2_CALL
+axis2_engine_config_get_param (axis2_engine_config_t *engine_config, 
+                                axis2_env_t **env,
+		                        const axis2_char_t *name);
+
+axis2_array_list_t * AXIS2_CALL
+axis2_engine_config_get_params (axis2_engine_config_t *engine_config, 
+                                axis2_env_t **env);
+
+axis2_bool_t AXIS2_CALL
+axis2_engine_config_is_param_locked (axis2_engine_config_t *engine_config, 
+                                        axis2_env_t **env,
+		                                const axis2_char_t *param_name);
+                            
 /**
  * To split a given svc name into it's svc grp name and svc name.
  * if the svc name is foo:bar then svc grp name is "foo" and 
@@ -94,11 +113,22 @@
 	    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
 	
 	engine_config_impl->engine_config.ops->free = axis2_engine_config_free;
-	engine_config_impl->engine_config.ops->add_svc_grp = axis2_engine_config_add_svc_grp;
-	engine_config_impl->engine_config.ops->get_svc_grp = axis2_engine_config_get_svc_grp;
+	engine_config_impl->engine_config.ops->add_svc_grp = 
+        axis2_engine_config_add_svc_grp;
+	engine_config_impl->engine_config.ops->get_svc_grp = 
+        axis2_engine_config_get_svc_grp;
 	engine_config_impl->engine_config.ops->add_svc = axis2_engine_config_add_svc;
 	engine_config_impl->engine_config.ops->get_svc = axis2_engine_config_get_svc;
-	engine_config_impl->engine_config.ops->remove_svc = axis2_engine_config_remove_svc;
+	engine_config_impl->engine_config.ops->remove_svc = 
+        axis2_engine_config_remove_svc;
+    engine_config_impl->engine_config.ops->add_param = 
+        axis2_engine_config_add_param;
+	engine_config_impl->engine_config.ops->get_param = 
+        axis2_engine_config_get_param;
+	engine_config_impl->engine_config.ops->get_params = 
+        axis2_engine_config_get_params;
+    engine_config_impl->engine_config.ops->is_param_locked = 
+            axis2_engine_config_is_param_locked;
 
 	axis2_param_container_t *param_container = (axis2_param_container_t *)
 		axis2_param_container_create(env);		
@@ -256,6 +286,82 @@
 	
 	return AXIS2_SVC_GRP_REMOVE_SVC(sg, env, qname);
 }
+
+axis2_status_t AXIS2_CALL
+axis2_engine_config_add_param (axis2_engine_config_t *engine_config, 
+                        axis2_env_t **env,
+		                axis2_param_t *param)
+{
+    AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, param, AXIS2_FAILURE);
+    
+	if(NULL == AXIS2_INTF_TO_IMPL(engine_config)->param_container)
+	{
+		AXIS2_ERROR_SET((*env)->error, 
+            AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER, AXIS2_FAILURE);
+	}
+	axis2_hash_set (AXIS2_PARAM_CONTAINER_GET_PARAMS(AXIS2_INTF_TO_IMPL(engine_config)->
+        param_container, env), AXIS2_PARAM_GET_NAME(param, env), 
+        AXIS2_HASH_KEY_STRING, param);	
+	return AXIS2_SUCCESS;
+}
+
+axis2_param_t * AXIS2_CALL
+axis2_engine_config_get_param (axis2_engine_config_t *engine_config, 
+                        axis2_env_t **env,
+		                const axis2_char_t *name)
+{
+    AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FAILURE);
+    
+	if(NULL == AXIS2_INTF_TO_IMPL(engine_config)->param_container)
+	{
+		AXIS2_ERROR_SET((*env)->error, 
+            AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER, AXIS2_FAILURE);
+	}
+    
+	axis2_char_t *tempname = AXIS2_STRDUP(name, env);
+	if(NULL == tempname)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_NULL_PARAM,
+        AXIS2_FAILURE);
+		
+	return (axis2_param_t *)(axis2_hash_get 
+		(AXIS2_PARAM_CONTAINER_GET_PARAMS(AXIS2_INTF_TO_IMPL(engine_config)->
+        param_container, env), tempname, AXIS2_HASH_KEY_STRING));
+	
+}
+
+axis2_array_list_t * AXIS2_CALL
+axis2_engine_config_get_params (axis2_engine_config_t *engine_config, 
+                        axis2_env_t **env)
+{
+	AXIS2_FUNC_PARAM_CHECK(engine_config, env, NULL);
+	return AXIS2_PARAM_CONTAINER_GET_PARAMS(AXIS2_INTF_TO_IMPL(engine_config)->
+        param_container, env);
+	
+}
+
+axis2_bool_t AXIS2_CALL
+axis2_engine_config_is_param_locked (axis2_engine_config_t *engine_config, 
+                            axis2_env_t **env,
+		                    const axis2_char_t *param_name)
+{
+    AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FALSE);
+    if(NULL == AXIS2_INTF_TO_IMPL(engine_config)->param_container)
+	{
+		AXIS2_ERROR_SET((*env)->error, 
+            AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER, AXIS2_FALSE);
+	}
+	
+	axis2_char_t *tempname = AXIS2_STRDUP(param_name, env);
+	if(NULL == tempname)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_NULL_PARAM,
+        AXIS2_FAILURE);
+		
+	return AXIS2_PARAM_CONTAINER_IS_PARAM_LOCKED
+		(AXIS2_INTF_TO_IMPL(engine_config)->param_container, env, param_name); 
+	
+}
+
 	
 axis2_status_t 
 split_svc_name (axis2_env_t **env, 

Modified: webservices/axis2/trunk/c/modules/util/src/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/Makefile.am?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/util/src/Makefile.am Tue Nov 15 19:44:41 2005
@@ -9,7 +9,8 @@
                         string.c \
                         file_diff.c \
                         qname.c \
-                        array_list.c
+                        array_list.c \
+                        linked_list.c
 
 libaxis2_util_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I$(top_builddir)/include -I${CUTEST_HOME}/include \

Modified: webservices/axis2/trunk/c/modules/util/src/Makefile.in
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/Makefile.in?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/Makefile.in (original)
+++ webservices/axis2/trunk/c/modules/util/src/Makefile.in Tue Nov 15 19:44:41 2005
@@ -64,7 +64,8 @@
 am__DEPENDENCIES_1 =
 libaxis2_util_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_libaxis2_util_la_OBJECTS = hash.lo allocator.lo env.lo error.lo \
-	stream.lo log.lo string.lo file_diff.lo qname.lo array_list.lo
+	stream.lo log.lo string.lo file_diff.lo qname.lo array_list.lo \
+	linked_list.lo
 libaxis2_util_la_OBJECTS = $(am_libaxis2_util_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
@@ -200,7 +201,8 @@
                         string.c \
                         file_diff.c \
                         qname.c \
-                        array_list.c
+                        array_list.c \
+                        linked_list.c
 
 libaxis2_util_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I$(top_builddir)/include -I${CUTEST_HOME}/include \
@@ -281,6 +283,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_diff.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Plo@am__quote@

Modified: webservices/axis2/trunk/c/modules/util/test/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/test/Makefile.am?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/test/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/util/test/Makefile.am Tue Nov 15 19:44:41 2005
@@ -2,7 +2,14 @@
 prglibdir=$(prefix)/lib/unit_test
 prglib_LTLIBRARIES = libtest_util.la
 AM_CPPFLAGS = $(CPPFLAGS) -g
-libtest_util_la_SOURCES = util_hash_test.c util_stream_test.c util_log_test.c util_error_test.c util_test.c util_array_list_test.c
+libtest_util_la_SOURCES = util_hash_test.c \
+                            util_stream_test.c \
+                            util_log_test.c \
+                            util_error_test.c \
+                            util_test.c \
+                            util_array_list_test.c\
+                            util_linked_list_test.c
+
 include_HEADERS=$(top_builddir)/modules/util/test/*.h
 
 libtest_util_la_LIBADD = $(LDFLAGS) $(top_builddir)/modules/util/src/libaxis2_util.la

Modified: webservices/axis2/trunk/c/modules/util/test/Makefile.in
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/test/Makefile.in?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/test/Makefile.in (original)
+++ webservices/axis2/trunk/c/modules/util/test/Makefile.in Tue Nov 15 19:44:41 2005
@@ -71,7 +71,7 @@
 	$(top_builddir)/modules/util/src/libaxis2_util.la
 am_libtest_util_la_OBJECTS = util_hash_test.lo util_stream_test.lo \
 	util_log_test.lo util_error_test.lo util_test.lo \
-	util_array_list_test.lo
+	util_array_list_test.lo util_linked_list_test.lo
 libtest_util_la_OBJECTS = $(am_libtest_util_la_OBJECTS)
 prgbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(prgbin_PROGRAMS)
@@ -208,7 +208,14 @@
 prglibdir = $(prefix)/lib/unit_test
 prglib_LTLIBRARIES = libtest_util.la
 AM_CPPFLAGS = $(CPPFLAGS) -g
-libtest_util_la_SOURCES = util_hash_test.c util_stream_test.c util_log_test.c util_error_test.c util_test.c util_array_list_test.c
+libtest_util_la_SOURCES = util_hash_test.c \
+                            util_stream_test.c \
+                            util_log_test.c \
+                            util_error_test.c \
+                            util_test.c \
+                            util_array_list_test.c\
+                            util_linked_list_test.c
+
 include_HEADERS = $(top_builddir)/modules/util/test/*.h
 libtest_util_la_LIBADD = $(LDFLAGS) $(top_builddir)/modules/util/src/libaxis2_util.la
 INCLUDES = -I$(top_builddir)/include \
@@ -321,6 +328,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_array_list_test.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_error_test.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_hash_test.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_linked_list_test.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_log_test.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_stream_test.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util_test.Plo@am__quote@

Modified: webservices/axis2/trunk/c/modules/util/test/util_test.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/test/util_test.c?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/test/util_test.c (original)
+++ webservices/axis2/trunk/c/modules/util/test/util_test.c Tue Nov 15 19:44:41 2005
@@ -11,6 +11,7 @@
     SUITE_ADD_TEST(suite, Testaxis2_log_write);
     SUITE_ADD_TEST(suite, Testaxis2_hash_get);
     SUITE_ADD_TEST(suite, Testaxis2_array_list_get);
+    SUITE_ADD_TEST(suite, Testaxis2_linked_list_get);
     return suite;
 }
 

Modified: webservices/axis2/trunk/c/modules/util/test/util_test.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/test/util_test.h?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/test/util_test.h (original)
+++ webservices/axis2/trunk/c/modules/util/test/util_test.h Tue Nov 15 19:44:41 2005
@@ -6,6 +6,7 @@
 #include "util_log_test.h"
 #include "util_hash_test.h"
 #include "util_array_list_test.h"
+#include "util_linked_list_test.h"
 #include "util_error_test.h"
 
 CuSuite* axis2_utilGetSuite();

Modified: webservices/axis2/trunk/c/modules/wsdl/src/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/src/Makefile.am?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/src/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/wsdl/src/Makefile.am Tue Nov 15 19:44:41 2005
@@ -2,7 +2,11 @@
 AM_CPPFLAGS = $(CPPFLAGS)
 libaxis2_wsdl_la_SOURCES = wsdl_operation.c \
                         wsdl_svc.c \
-                        wsdl_component.c
+                        wsdl_component.c \
+                        wsdl_feature.c \
+                        wsdl_property.c \
+                        wsdl_extensible_component.c \
+                        wsdl_interface.c
 
 libaxis2_wsdl_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I$(top_builddir)/include \

Modified: webservices/axis2/trunk/c/modules/wsdl/src/Makefile.in
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/src/Makefile.in?rev=344866&r1=344865&r2=344866&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/src/Makefile.in (original)
+++ webservices/axis2/trunk/c/modules/wsdl/src/Makefile.in Tue Nov 15 19:44:41 2005
@@ -64,7 +64,8 @@
 am__DEPENDENCIES_1 =
 libaxis2_wsdl_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_libaxis2_wsdl_la_OBJECTS = wsdl_operation.lo wsdl_svc.lo \
-	wsdl_component.lo
+	wsdl_component.lo wsdl_feature.lo wsdl_property.lo \
+	wsdl_extensible_component.lo wsdl_interface.lo
 libaxis2_wsdl_la_OBJECTS = $(am_libaxis2_wsdl_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
@@ -193,7 +194,11 @@
 AM_CPPFLAGS = $(CPPFLAGS)
 libaxis2_wsdl_la_SOURCES = wsdl_operation.c \
                         wsdl_svc.c \
-                        wsdl_component.c
+                        wsdl_component.c \
+                        wsdl_feature.c \
+                        wsdl_property.c \
+                        wsdl_extensible_component.c \
+                        wsdl_interface.c
 
 libaxis2_wsdl_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I$(top_builddir)/include \
@@ -270,7 +275,11 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_component.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_extensible_component.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_feature.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_interface.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_operation.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_property.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsdl_svc.Plo@am__quote@
 
 .c.o:

Added: webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_component.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_component.c?rev=344866&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_component.c (added)
+++ webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_component.c Tue Nov 15 19:44:41 2005
@@ -0,0 +1,216 @@
+/*
+ * 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_wsdl_extensible_component.h>
+
+/** 
+ * @brief Wsdl extensible component struct impl
+ *	Wsdl extensible component
+ */ 
+typedef struct axis2_wsdl_extensible_component_impl_s
+{
+	axis2_wsdl_extensible_component_t extensible_component;
+    /**
+     * Field features
+     */
+    axis2_linked_list_t *features;
+
+    /**
+     * Field properties
+     */
+    axis2_linked_list_t *properties;
+    
+} axis2_wsdl_extensible_component_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(extensible_component) \
+		((axis2_wsdl_extensible_component_impl_t *)extensible_component)
+
+/************************* Function prototypes ********************************/
+
+axis2_status_t AXIS2_CALL
+	axis2_wsdl_extensible_component_free (
+                axis2_wsdl_extensible_component_t *extensible_component,
+				axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_component_add_feature(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env,
+                        axis2_wsdl_feature_t *wsdl_feature);
+
+axis2_linked_list_t *AXIS2_CALL
+axis2_wsdl_extensible_component_get_features(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env);
+                        
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_component_add_property(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env,
+                        axis2_wsdl_property_t *wsdl_property);
+
+axis2_linked_list_t *AXIS2_CALL
+axis2_wsdl_extensible_component_get_properties(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env);
+                        
+/************************** End of function prototypes ************************/
+
+axis2_wsdl_extensible_component_t * AXIS2_CALL 
+axis2_wsdl_extensible_component_create (axis2_env_t **env)
+{
+	AXIS2_ENV_CHECK(env, NULL);
+	
+	axis2_wsdl_extensible_component_impl_t *extensible_component_impl = 
+		(axis2_wsdl_extensible_component_impl_t *) AXIS2_MALLOC((*env)->allocator,
+			sizeof(axis2_wsdl_extensible_component_impl_t));
+	
+	
+	if(NULL == extensible_component_impl)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL); 
+	
+	extensible_component_impl->extensible_component.ops = 
+		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_wsdl_extensible_component_ops_t));
+	if(NULL == extensible_component_impl->extensible_component.ops)
+    {
+        AXIS2_FREE((*env)->allocator, extensible_component_impl);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+	extensible_component_impl->extensible_component.ops->free =  
+        axis2_wsdl_extensible_component_free;
+	extensible_component_impl->extensible_component.ops->add_feature =  
+        axis2_wsdl_extensible_component_add_feature;
+	extensible_component_impl->extensible_component.ops->get_features =  
+        axis2_wsdl_extensible_component_get_features;
+	extensible_component_impl->extensible_component.ops->add_property = 
+        axis2_wsdl_extensible_component_add_property;
+    extensible_component_impl->extensible_component.ops->get_properties = 
+        axis2_wsdl_extensible_component_get_properties;
+	
+	extensible_component_impl->features = axis2_linked_list_create(env);
+    if(NULL == extensible_component_impl->features)
+    {
+        AXIS2_FREE((*env)->allocator, extensible_component_impl->extensible_component.ops);
+        AXIS2_FREE((*env)->allocator, extensible_component_impl);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    extensible_component_impl->properties = axis2_linked_list_create(env);
+    if(NULL == extensible_component_impl->properties)
+    {
+        AXIS2_LINKED_LIST_FREE(extensible_component_impl->features, env);
+        AXIS2_FREE((*env)->allocator, extensible_component_impl->
+            extensible_component.ops);
+        AXIS2_FREE((*env)->allocator, extensible_component_impl);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+	
+	return &(extensible_component_impl->extensible_component);
+}
+
+/***************************Function implementation****************************/
+
+axis2_status_t AXIS2_CALL 
+axis2_wsdl_extensible_component_free (
+                        axis2_wsdl_extensible_component_t *extensible_component, 
+                        axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_component, env, AXIS2_FAILURE);
+	if(NULL != extensible_component->ops)
+        AXIS2_FREE((*env)->allocator, extensible_component->ops);
+    
+    if(NULL != AXIS2_INTF_TO_IMPL(extensible_component)->features)
+    {
+        AXIS2_LINKED_LIST_FREE(AXIS2_INTF_TO_IMPL(extensible_component)->
+            features, env);
+    }
+    
+    if(NULL != AXIS2_INTF_TO_IMPL(extensible_component)->properties)
+    {
+        AXIS2_LINKED_LIST_FREE(AXIS2_INTF_TO_IMPL(extensible_component)->
+            properties, env);
+    }
+    
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(extensible_component));
+    
+	return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_component_add_feature(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env,
+                        axis2_wsdl_feature_t *wsdl_feature) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_component, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, wsdl_feature, AXIS2_FAILURE);
+    
+    if (NULL == AXIS2_INTF_TO_IMPL(extensible_component)->features) 
+    {
+        AXIS2_INTF_TO_IMPL(extensible_component)->features = 
+            axis2_linked_list_create(env);
+    }
+    
+    return AXIS2_LINKED_LIST_ADD(AXIS2_INTF_TO_IMPL(extensible_component)->features,
+        env, wsdl_feature);
+}
+
+axis2_linked_list_t *AXIS2_CALL
+axis2_wsdl_extensible_component_get_features(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_component, env, NULL);
+    
+    if (NULL == AXIS2_INTF_TO_IMPL(extensible_component)->features) 
+    {
+        return axis2_linked_list_create(env);
+    }
+    return AXIS2_INTF_TO_IMPL(extensible_component)->features;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_component_add_property(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env,
+                        axis2_wsdl_property_t *wsdl_property) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_component, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, wsdl_property, AXIS2_FAILURE);
+    if (NULL == AXIS2_INTF_TO_IMPL(extensible_component)->properties) 
+    {
+        AXIS2_INTF_TO_IMPL(extensible_component)->properties =
+            axis2_linked_list_create(env);
+    }
+    
+    return  AXIS2_LINKED_LIST_ADD(AXIS2_INTF_TO_IMPL(extensible_component)->
+        features, env, wsdl_property);
+}
+
+axis2_linked_list_t *AXIS2_CALL
+axis2_wsdl_extensible_component_get_properties(
+                        axis2_wsdl_extensible_component_t *extensible_component,
+                        axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_component, env, NULL);
+    
+    if (NULL == AXIS2_INTF_TO_IMPL(extensible_component)->properties) 
+    {
+        return axis2_linked_list_create(env);
+    }
+    return AXIS2_INTF_TO_IMPL(extensible_component)->properties;
+}

Added: webservices/axis2/trunk/c/modules/wsdl/src/wsdl_feature.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/src/wsdl_feature.c?rev=344866&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/src/wsdl_feature.c (added)
+++ webservices/axis2/trunk/c/modules/wsdl/src/wsdl_feature.c Tue Nov 15 19:44:41 2005
@@ -0,0 +1,151 @@
+/*
+ * 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_wsdl_feature.h>
+
+/** 
+ * @brief Wsdl feature struct impl
+ *	Wsdl features  
+ */ 
+typedef struct axis2_wsdl_feature_impl_s
+{
+	axis2_wsdl_feature_t wsdl_feature;
+    axis2_char_t *name;
+    axis2_bool_t required;	
+} axis2_wsdl_feature_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(wsdl_feature) \
+		((axis2_wsdl_feature_impl_t *)wsdl_feature)
+
+/************************* Function prototypes ********************************/
+
+axis2_status_t AXIS2_CALL
+	axis2_wsdl_feature_free (axis2_wsdl_feature_t *wsdl_feature,
+									axis2_env_t **env);
+
+axis2_char_t *AXIS2_CALL
+axis2_wsdl_feature_get_name(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_feature_set_name(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env,
+                                axis2_char_t *name);
+
+axis2_bool_t AXIS2_CALL
+axis2_wsdl_feature_is_required(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_feature_set_required(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env,
+                                axis2_bool_t required);
+                                
+/************************** End of function prototypes ************************/
+
+axis2_wsdl_feature_t * AXIS2_CALL 
+axis2_wsdl_feature_create (axis2_env_t **env)
+{
+	AXIS2_ENV_CHECK(env, NULL);
+	
+	axis2_wsdl_feature_impl_t *wsdl_feature_impl = 
+		(axis2_wsdl_feature_impl_t *) AXIS2_MALLOC((*env)->allocator,
+			sizeof(axis2_wsdl_feature_impl_t));
+	
+	
+	if(NULL == wsdl_feature_impl)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL); 
+	
+	wsdl_feature_impl->wsdl_feature.ops = 
+		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_wsdl_feature_ops_t));
+	if(NULL == wsdl_feature_impl->wsdl_feature.ops)
+    {
+        AXIS2_FREE((*env)->allocator, wsdl_feature_impl);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+	wsdl_feature_impl->wsdl_feature.ops->free =  axis2_wsdl_feature_free;
+	wsdl_feature_impl->wsdl_feature.ops->get_name = 
+        axis2_wsdl_feature_get_name;
+    wsdl_feature_impl->wsdl_feature.ops->set_name = 
+        axis2_wsdl_feature_set_name;
+	wsdl_feature_impl->wsdl_feature.ops->is_required = 
+        axis2_wsdl_feature_is_required;
+    wsdl_feature_impl->wsdl_feature.ops->set_required = 
+        axis2_wsdl_feature_set_required;
+	
+	wsdl_feature_impl->name = NULL;
+    wsdl_feature_impl->required = AXIS2_FALSE;
+	
+	return &(wsdl_feature_impl->wsdl_feature);
+}
+
+/***************************Function implementation****************************/
+
+axis2_status_t AXIS2_CALL 
+axis2_wsdl_feature_free (axis2_wsdl_feature_t *wsdl_feature, 
+                            axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(wsdl_feature, env, AXIS2_FAILURE);
+	if(NULL != wsdl_feature->ops)
+        AXIS2_FREE((*env)->allocator, wsdl_feature->ops);
+    
+    if(NULL != AXIS2_INTF_TO_IMPL(wsdl_feature)->name)
+    {
+        AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(wsdl_feature)->name);
+    }
+    
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(wsdl_feature));
+    
+	return AXIS2_SUCCESS;
+}
+
+axis2_char_t *AXIS2_CALL
+axis2_wsdl_feature_get_name(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(wsdl_feature, env, NULL);
+    return AXIS2_INTF_TO_IMPL(wsdl_feature)->name;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_feature_set_name(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env,
+                                axis2_char_t *name) 
+{
+    AXIS2_FUNC_PARAM_CHECK(wsdl_feature, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, name, AXIS2_FAILURE);
+    AXIS2_INTF_TO_IMPL(wsdl_feature)->name = name;
+    return AXIS2_SUCCESS;
+}
+
+axis2_bool_t AXIS2_CALL
+axis2_wsdl_feature_is_required(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(wsdl_feature, env, AXIS2_FALSE);
+    return AXIS2_INTF_TO_IMPL(wsdl_feature)->required;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_feature_set_required(axis2_wsdl_feature_t *wsdl_feature,
+                                axis2_env_t **env,
+                                axis2_bool_t required) 
+{
+    AXIS2_FUNC_PARAM_CHECK(wsdl_feature, env, AXIS2_FAILURE);
+    AXIS2_INTF_TO_IMPL(wsdl_feature)->required = required;
+    return AXIS2_SUCCESS;
+}