You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2006/03/29 11:46:23 UTC

svn commit: r389730 - in /webservices/axis2/trunk/c: include/axis2_endpoint_ref.h modules/core/addr/endpoint_ref.c modules/mod_addr/addr_out_handler.c

Author: samisa
Date: Wed Mar 29 01:46:21 2006
New Revision: 389730

URL: http://svn.apache.org/viewcvs?rev=389730&view=rev
Log:
More addressing fixes for interop to work

Modified:
    webservices/axis2/trunk/c/include/axis2_endpoint_ref.h
    webservices/axis2/trunk/c/modules/core/addr/endpoint_ref.c
    webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c

Modified: webservices/axis2/trunk/c/include/axis2_endpoint_ref.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_endpoint_ref.h?rev=389730&r1=389729&r2=389730&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_endpoint_ref.h (original)
+++ webservices/axis2/trunk/c/include/axis2_endpoint_ref.h Wed Mar 29 01:46:21 2006
@@ -29,6 +29,7 @@
 #include <axis2_any_content_type.h>
 #include <axis2_svc_name.h>
 #include <axis2_om_node.h>
+#include <axis2_om_attribute.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -103,6 +104,18 @@
         get_meta_data_list)(struct axis2_endpoint_ref *endpoint_ref,
                                   axis2_env_t **env);
 
+        axis2_array_list_t* (AXIS2_CALL *
+        get_ref_attribute_list)(struct axis2_endpoint_ref *endpoint_ref,
+                                          axis2_env_t **env);
+
+        axis2_array_list_t* (AXIS2_CALL *
+        get_meta_attribute_list)(struct axis2_endpoint_ref *endpoint_ref,
+                                          axis2_env_t **env);
+
+        axis2_array_list_t* (AXIS2_CALL *
+        get_extension_list)(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env);
+
         axis2_status_t (AXIS2_CALL *
         add_ref_param)(struct axis2_endpoint_ref *endpoint_ref,
                                   axis2_env_t **env,
@@ -113,19 +126,34 @@
                                   axis2_env_t **env,
                                   axis2_om_node_t* meta_data_node);
 
+        axis2_status_t (AXIS2_CALL *
+        add_ref_attribute)(struct axis2_endpoint_ref *endpoint_ref,
+                                          axis2_env_t **env,
+                                          axis2_om_attribute_t* attr);
+
+        axis2_status_t (AXIS2_CALL *
+        add_meta_attribute)(struct axis2_endpoint_ref *endpoint_ref,
+                                          axis2_env_t **env,
+                                          axis2_om_attribute_t* attr);
+
+        axis2_status_t (AXIS2_CALL *
+        add_extension)(struct axis2_endpoint_ref *endpoint_ref,
+                                          axis2_env_t **env, 
+                                          axis2_om_node_t* extension_node);
+
         /**
          * Method get_ref_params
          */
-        axis2_any_content_type_t* (AXIS2_CALL *
+ /*       axis2_any_content_type_t* (AXIS2_CALL *
 		get_ref_params)(struct axis2_endpoint_ref *endpoint_ref, 
-                        axis2_env_t **env);
+                        axis2_env_t **env);*/
         /**
          * Method set_ref_params
          */
-        axis2_status_t (AXIS2_CALL *
+/*        axis2_status_t (AXIS2_CALL *
 		set_ref_params)(struct axis2_endpoint_ref *endpoint_ref,
                         axis2_env_t **env,
-                        axis2_any_content_type_t* any_content_type);
+                        axis2_any_content_type_t* any_content_type);*/
         /**
          * Method get_svc_name
          */
@@ -143,7 +171,7 @@
 					  axis2_svc_name_t *svc_name);
 		
 		
-        axis2_om_node_t* (AXIS2_CALL *
+/*        axis2_om_node_t* (AXIS2_CALL *
 		get_policies)(struct axis2_endpoint_ref *endpoint_ref, 
                       axis2_env_t **env);
 		
@@ -151,8 +179,8 @@
 		set_policies)(struct axis2_endpoint_ref *endpoint_ref, 
                       axis2_env_t **env, 
 					  axis2_om_node_t *policies);
-		
-        axis2_any_content_type_t* (AXIS2_CALL *
+*/		
+/*        axis2_any_content_type_t* (AXIS2_CALL *
 		get_metadata)(struct axis2_endpoint_ref *endpoint_ref, 
                       axis2_env_t **env);
 		
@@ -160,7 +188,7 @@
 		set_metadata)(struct axis2_endpoint_ref *endpoint_ref, 
                       axis2_env_t **env, 
 					  axis2_any_content_type_t *metadata);
-		
+**/		
 	/*	
         axis2_status_t (AXIS2_CALL *
 		add_ref_param)(struct axis2_endpoint_ref *endpoint_ref, 
@@ -213,11 +241,11 @@
 #define AXIS2_ENDPOINT_REF_SET_REF_PROPERTIES(endpoint_ref, env, ref_properties)\
 		((endpoint_ref)->ops->set_ref_properties(endpoint_ref, env, ref_properties))
 		
-#define AXIS2_ENDPOINT_REF_GET_REF_PARAMS(endpoint_ref, env) \
+/*#define AXIS2_ENDPOINT_REF_GET_REF_PARAMS(endpoint_ref, env) \
 		((endpoint_ref)->ops->get_ref_params(endpoint_ref, env))
 		
 #define AXIS2_ENDPOINT_REF_SET_REF_PARAMS(endpoint_ref, env, any_content_type) \
-		((endpoint_ref)->ops->set_ref_params(endpoint_ref, env, any_content_type))
+		((endpoint_ref)->ops->set_ref_params(endpoint_ref, env, any_content_type))*/
 		
 #define AXIS2_ENDPOINT_REF_GET_SVC_NAME(endpoint_ref, env) \
 		((endpoint_ref)->ops->get_svc_name(endpoint_ref, env))
@@ -225,17 +253,17 @@
 #define AXIS2_ENDPOINT_REF_SET_SVC_NAME(endpoint_ref, env, svc_name) \
 		((endpoint_ref)->ops->set_svc_name(endpoint_ref, env, svc_name))
 		
-#define AXIS2_ENDPOINT_REF_GET_POLICIES(endpoint_ref, env) \
+/*#define AXIS2_ENDPOINT_REF_GET_POLICIES(endpoint_ref, env) \
 		((endpoint_ref)->ops->get_policies(endpoint_ref, env))
 		
 #define AXIS2_ENDPOINT_REF_SET_POLICIES(endpoint_ref, env, policies) \
-		((endpoint_ref)->ops->set_policies(endpoint_ref, env, policies))
+		((endpoint_ref)->ops->set_policies(endpoint_ref, env, policies))*/
 		
-#define AXIS2_ENDPOINT_REF_GET_METADATA(endpoint_ref, env) \
+/*#define AXIS2_ENDPOINT_REF_GET_METADATA(endpoint_ref, env) \
 		((endpoint_ref)->ops->get_metadata(endpoint_ref, env))
 		
 #define AXIS2_ENDPOINT_REF_SET_METADATA(endpoint_ref, env, metadata) \
-		((endpoint_ref)->ops->set_metadata(endpoint_ref, env, metadata))
+		((endpoint_ref)->ops->set_metadata(endpoint_ref, env, metadata))*/
 		
 #define AXIS2_ENDPOINT_REF_GET_REF_PARAM_LIST(endpoint_ref, env) \
 		((endpoint_ref)->ops->get_ref_param_list(endpoint_ref, env))
@@ -251,6 +279,24 @@
 		
 #define AXIS2_ENDPOINT_REF_FREE(endpoint_ref, env) \
 		((endpoint_ref)->ops->free(endpoint_ref, env))
+
+#define AXIS2_ENDPOINT_REF_GET_REF_ATTRIBUTE_LIST(endpoint_ref, env) \
+        ((endpoint_ref)->ops->get_ref_attribute_list(endpoint_ref, env))
+
+#define AXIS2_ENDPOINT_REF_GET_META_ATTRIBUTE_LIST(endpoint_ref, env) \
+        ((endpoint_ref)->ops->get_meta_attribute_list(endpoint_ref, env))
+
+#define AXIS2_ENDPOINT_REF_GET_REF_EXTENTION_LIST(endpoint_ref, env) \
+        ((endpoint_ref)->ops->get_extension_list(endpoint_ref, env))
+
+#define AXIS2_ENDPOINT_REF_ADD_REF_ATTRIBUTE(endpoint_ref, env, attr) \
+        ((endpoint_ref)->ops->add_ref_attribute(endpoint_ref, env, attr))
+
+#define AXIS2_ENDPOINT_REF_ADD_META_ATTRIBUTE(endpoint_ref, env, attr) \
+        ((endpoint_ref)->ops->add_meta_attribute(endpoint_ref, env, attr))
+
+#define AXIS2_ENDPOINT_REF_ADD_EXTENSION(endpoint_ref, env, node) \
+        ((endpoint_ref)->ops->add_extension(endpoint_ref, env, node))
 
 
 /** @} */

Modified: webservices/axis2/trunk/c/modules/core/addr/endpoint_ref.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/addr/endpoint_ref.c?rev=389730&r1=389729&r2=389730&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/addr/endpoint_ref.c (original)
+++ webservices/axis2/trunk/c/modules/core/addr/endpoint_ref.c Wed Mar 29 01:46:21 2006
@@ -28,19 +28,25 @@
     /** interface qname */
     axis2_qname_t *interface_qname;
     /** reference properties */
-    axis2_any_content_type_t *ref_properties;
+    /*axis2_any_content_type_t *ref_properties;*/
     /** reference parameters */
-    axis2_any_content_type_t *ref_params;
+    /*axis2_any_content_type_t *ref_params;*/
     /** reference parameters */
     axis2_array_list_t *ref_param_list;
     /** meta data */
     axis2_array_list_t *meta_data_list;
+    /** reference parameter attribute list */
+    axis2_array_list_t *ref_attribute_list;
+    /** meta data attribute list */
+    axis2_array_list_t *meta_attribute_list;
+    /** extensible element list */
+    axis2_array_list_t *extension_list;
     /** service name */
     axis2_svc_name_t *svc_name;
     /** policies represented as an OM node */
-    axis2_om_node_t *policies;
+    /*axis2_om_node_t *policies;*/
     /** meta data */
-    axis2_any_content_type_t *metadata;
+    /*axis2_any_content_type_t *metadata;*/
 } axis2_endpoint_ref_impl_t;
 
 /** Interface to implementation conversion macro */
@@ -66,7 +72,7 @@
                                        axis2_env_t **env, 
                                        axis2_qname_t *interface_qname);
                                        
-axis2_any_content_type_t* AXIS2_CALL 
+/*axis2_any_content_type_t* AXIS2_CALL 
 axis2_endpoint_ref_get_ref_properties(struct axis2_endpoint_ref *endpoint_ref, 
                                       axis2_env_t **env);
                                       
@@ -74,6 +80,7 @@
 axis2_endpoint_ref_set_ref_properties(struct axis2_endpoint_ref *endpoint_ref, 
                                       axis2_env_t **env, 
                                       axis2_any_content_type_t *ref_properties);
+*/
 
 axis2_array_list_t* AXIS2_CALL
 axis2_endpoint_ref_get_ref_param_list(struct axis2_endpoint_ref *endpoint_ref,
@@ -84,7 +91,19 @@
                                   axis2_env_t **env);
 
                                       
-axis2_any_content_type_t* AXIS2_CALL 
+axis2_array_list_t* AXIS2_CALL
+axis2_endpoint_ref_get_ref_attribute_list(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env);
+
+axis2_array_list_t* AXIS2_CALL
+axis2_endpoint_ref_get_meta_attribute_list(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env);
+
+axis2_array_list_t* AXIS2_CALL
+axis2_endpoint_ref_get_extension_list(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env);
+
+/*axis2_any_content_type_t* AXIS2_CALL 
 axis2_endpoint_ref_get_ref_params(struct axis2_endpoint_ref *endpoint_ref, 
                                   axis2_env_t **env);
                                   
@@ -92,7 +111,7 @@
 axis2_endpoint_ref_set_ref_params(struct axis2_endpoint_ref *endpoint_ref,
                                   axis2_env_t **env,
                                   axis2_any_content_type_t* any_content_type);
-                                  
+*/                                  
 axis2_status_t AXIS2_CALL 
 axis2_endpoint_ref_add_ref_param(struct axis2_endpoint_ref *endpoint_ref,
                                   axis2_env_t **env,
@@ -103,6 +122,21 @@
                                   axis2_env_t **env,
                                   axis2_om_node_t* meta_data_node);
 
+axis2_status_t AXIS2_CALL
+axis2_endpoint_ref_add_ref_attribute(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env,
+                                  axis2_om_attribute_t* attr);
+
+axis2_status_t AXIS2_CALL
+axis2_endpoint_ref_add_meta_attribute(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env,
+                                  axis2_om_attribute_t* attr);
+
+axis2_status_t AXIS2_CALL
+axis2_endpoint_ref_add_extension(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env, 
+                                  axis2_om_node_t* extension_node);
+
 axis2_svc_name_t* AXIS2_CALL 
 axis2_endpoint_ref_get_svc_name(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env);
@@ -112,7 +146,7 @@
                                 axis2_env_t **env, 
                                 axis2_svc_name_t *svc_name);
                                 
-axis2_om_node_t* AXIS2_CALL 
+/*axis2_om_node_t* AXIS2_CALL 
 axis2_endpoint_ref_get_policies(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env);
                                 
@@ -120,8 +154,8 @@
 axis2_endpoint_ref_set_policies(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env, 
                                 axis2_om_node_t *policies);
-                                
-axis2_any_content_type_t* AXIS2_CALL 
+*/                                
+/*axis2_any_content_type_t* AXIS2_CALL 
 axis2_endpoint_ref_get_metadata(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env);
                                 
@@ -129,7 +163,7 @@
 axis2_endpoint_ref_set_metadata(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env, 
                                 axis2_any_content_type_t *metadata);
-                                
+*/                                
 /*axis2_status_t AXIS2_CALL 
 axis2_endpoint_ref_add_ref_param(struct axis2_endpoint_ref *endpoint_ref, 
                                  axis2_env_t **env, 
@@ -162,13 +196,16 @@
     endpoint_ref_impl->endpoint_ref.ops = NULL;
     endpoint_ref_impl->address = NULL;
     endpoint_ref_impl->interface_qname = NULL;
-    endpoint_ref_impl->ref_properties = NULL;
-    endpoint_ref_impl->ref_params = NULL;
+    /*endpoint_ref_impl->ref_properties = NULL;*/
+    /*endpoint_ref_impl->ref_params = NULL;*/
     endpoint_ref_impl->ref_param_list = NULL;
     endpoint_ref_impl->meta_data_list = NULL;
+    endpoint_ref_impl->ref_attribute_list = NULL;
+    endpoint_ref_impl->meta_attribute_list = NULL;
+    endpoint_ref_impl->extension_list = NULL;
     endpoint_ref_impl->svc_name = NULL;
-    endpoint_ref_impl->policies = NULL;
-    endpoint_ref_impl->metadata = NULL;
+    /*endpoint_ref_impl->policies = NULL;*/
+    /*endpoint_ref_impl->metadata = NULL;*/
     
     if (address)
     {
@@ -197,6 +234,30 @@
         return NULL;        
     }
 
+    endpoint_ref_impl->ref_attribute_list = axis2_array_list_create(env, 0);
+    if (!(endpoint_ref_impl->ref_attribute_list))
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        axis2_endpoint_ref_free(&(endpoint_ref_impl->endpoint_ref), env);
+        return NULL;        
+    }
+
+    endpoint_ref_impl->meta_attribute_list = axis2_array_list_create(env, 0);
+    if (!(endpoint_ref_impl->meta_attribute_list))
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        axis2_endpoint_ref_free(&(endpoint_ref_impl->endpoint_ref), env);
+        return NULL;        
+    }
+    
+    endpoint_ref_impl->extension_list = axis2_array_list_create(env, 0);
+    if (!(endpoint_ref_impl->extension_list))
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        axis2_endpoint_ref_free(&(endpoint_ref_impl->endpoint_ref), env);
+        return NULL;        
+    }
+
     /* initialize ops */
     endpoint_ref_impl->endpoint_ref.ops  = 
             AXIS2_MALLOC( (*env)->allocator, sizeof(axis2_endpoint_ref_ops_t) );
@@ -219,35 +280,53 @@
     endpoint_ref_impl->endpoint_ref.ops->set_interface_qname = 
         axis2_endpoint_ref_set_interface_qname;
     
-    endpoint_ref_impl->endpoint_ref.ops->get_ref_properties = 
+    endpoint_ref_impl->endpoint_ref.ops->get_ref_attribute_list =
+        axis2_endpoint_ref_get_ref_attribute_list;
+
+    endpoint_ref_impl->endpoint_ref.ops->get_meta_attribute_list =
+        axis2_endpoint_ref_get_meta_attribute_list;
+
+    endpoint_ref_impl->endpoint_ref.ops->get_extension_list = 
+        axis2_endpoint_ref_get_extension_list;
+
+    endpoint_ref_impl->endpoint_ref.ops->add_ref_attribute = 
+        axis2_endpoint_ref_add_ref_attribute;
+
+    endpoint_ref_impl->endpoint_ref.ops->add_meta_attribute = 
+        axis2_endpoint_ref_add_meta_attribute;
+
+    endpoint_ref_impl->endpoint_ref.ops->add_extension = 
+        axis2_endpoint_ref_add_extension;
+
+/*    endpoint_ref_impl->endpoint_ref.ops->get_ref_properties = 
         axis2_endpoint_ref_get_ref_properties;
         
     endpoint_ref_impl->endpoint_ref.ops->set_ref_properties = 
         axis2_endpoint_ref_set_ref_properties;
-        
-    endpoint_ref_impl->endpoint_ref.ops->get_ref_params = 
+*/        
+/*    endpoint_ref_impl->endpoint_ref.ops->get_ref_params = 
         axis2_endpoint_ref_get_ref_params;
         
     endpoint_ref_impl->endpoint_ref.ops->set_ref_params = 
         axis2_endpoint_ref_set_ref_params;
-        
+*/        
     endpoint_ref_impl->endpoint_ref.ops->get_svc_name = 
         axis2_endpoint_ref_get_svc_name;
         
     endpoint_ref_impl->endpoint_ref.ops->set_svc_name = 
         axis2_endpoint_ref_set_svc_name;
         
-    endpoint_ref_impl->endpoint_ref.ops->get_policies = 
+/*    endpoint_ref_impl->endpoint_ref.ops->get_policies = 
         axis2_endpoint_ref_get_policies;
         
     endpoint_ref_impl->endpoint_ref.ops->set_policies = 
         axis2_endpoint_ref_set_policies;
-        
-    endpoint_ref_impl->endpoint_ref.ops->get_metadata = 
+*/        
+/*    endpoint_ref_impl->endpoint_ref.ops->get_metadata = 
         axis2_endpoint_ref_get_metadata;
         
     endpoint_ref_impl->endpoint_ref.ops->set_metadata = 
-        axis2_endpoint_ref_set_metadata;
+        axis2_endpoint_ref_set_metadata;*/
     
     endpoint_ref_impl->endpoint_ref.ops->get_ref_param_list =
     axis2_endpoint_ref_get_ref_param_list;
@@ -330,20 +409,20 @@
 /**
  * Method get_ref_properties
  */
-axis2_any_content_type_t* AXIS2_CALL 
+/*axis2_any_content_type_t* AXIS2_CALL 
 axis2_endpoint_ref_get_ref_properties(struct axis2_endpoint_ref *endpoint_ref, 
                                       axis2_env_t **env) 
 {
     AXIS2_ENV_CHECK(env, NULL);
     return AXIS2_INTF_TO_IMPL(endpoint_ref)->ref_properties;
-}
+}*/
 
 /**
  * Method set_ref_properties
  *
  * @param ref_properties
  */
-axis2_status_t AXIS2_CALL 
+/*axis2_status_t AXIS2_CALL 
 axis2_endpoint_ref_set_ref_properties(struct axis2_endpoint_ref *endpoint_ref, 
                                       axis2_env_t **env, 
                                       axis2_any_content_type_t *ref_properties) 
@@ -351,12 +430,12 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_INTF_TO_IMPL(endpoint_ref)->ref_properties = ref_properties;
     return AXIS2_SUCCESS;    
-}
+}*/
 
 /**
  * Method get_ref_params
  */
-axis2_any_content_type_t* AXIS2_CALL 
+/*axis2_any_content_type_t* AXIS2_CALL 
 axis2_endpoint_ref_get_ref_params(struct axis2_endpoint_ref *endpoint_ref, 
                                   axis2_env_t **env) 
 {
@@ -372,7 +451,7 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_INTF_TO_IMPL(endpoint_ref)->ref_params = any_content_type;
     return AXIS2_SUCCESS;
-}
+}*/
 
 /**
  * Method get_svc_name
@@ -400,7 +479,7 @@
     return AXIS2_SUCCESS;
 }
 
-axis2_om_node_t* AXIS2_CALL 
+/*axis2_om_node_t* AXIS2_CALL 
 axis2_endpoint_ref_get_policies(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env) 
 {
@@ -416,9 +495,9 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_INTF_TO_IMPL(endpoint_ref)->policies = policies;
     return AXIS2_SUCCESS;
-}
+}*/
 
-axis2_any_content_type_t* AXIS2_CALL 
+/*axis2_any_content_type_t* AXIS2_CALL 
 axis2_endpoint_ref_get_metadata(struct axis2_endpoint_ref *endpoint_ref, 
                                 axis2_env_t **env) 
 {
@@ -434,7 +513,7 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_INTF_TO_IMPL(endpoint_ref)->metadata = metadata;
     return AXIS2_SUCCESS;
-}
+}*/
 
 /*axis2_status_t AXIS2_CALL 
 axis2_endpoint_ref_add_ref_param(struct axis2_endpoint_ref *endpoint_ref, 
@@ -480,11 +559,11 @@
         endpoint_ref_impl->address = NULL;
     }    
     
-    if (endpoint_ref_impl->ref_params)
+    /*if (endpoint_ref_impl->ref_params)
     {
         AXIS2_ANY_CONTENT_TYPE_FREE(endpoint_ref_impl->ref_params, env);
         endpoint_ref_impl->ref_params = NULL;
-    }
+    }*/
 
     if (endpoint_ref_impl->ref_param_list)
     {
@@ -498,6 +577,25 @@
         endpoint_ref_impl->meta_data_list = NULL;
     }
 
+    if (endpoint_ref_impl->ref_attribute_list)
+    {
+        AXIS2_ARRAY_LIST_FREE(endpoint_ref_impl->ref_attribute_list, env);
+        endpoint_ref_impl->ref_attribute_list = NULL;
+    }
+
+    if (endpoint_ref_impl->meta_attribute_list)
+    {
+        AXIS2_ARRAY_LIST_FREE(endpoint_ref_impl->meta_attribute_list, env);
+        endpoint_ref_impl->meta_attribute_list = NULL;
+    }
+
+    if (endpoint_ref_impl->extension_list)
+    {
+        AXIS2_ARRAY_LIST_FREE(endpoint_ref_impl->extension_list, env);
+        endpoint_ref_impl->extension_list = NULL;
+    }
+            
+
     AXIS2_FREE((*env)->allocator, endpoint_ref_impl);
     endpoint_ref_impl = NULL;
     
@@ -570,3 +668,98 @@
 }
 
 
+axis2_array_list_t* AXIS2_CALL
+axis2_endpoint_ref_get_ref_attribute_list(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+
+    return endpoint_ref_impl->ref_attribute_list;
+}
+
+axis2_array_list_t* AXIS2_CALL
+axis2_endpoint_ref_get_meta_attribute_list(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+
+    return endpoint_ref_impl->meta_attribute_list;
+}
+
+axis2_array_list_t* AXIS2_CALL
+axis2_endpoint_ref_get_extension_list(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+
+    return endpoint_ref_impl->extension_list;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_endpoint_ref_add_ref_attribute(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env,
+                                  axis2_om_attribute_t* attr)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+
+    if (endpoint_ref_impl->ref_attribute_list && attr)
+    {
+        return AXIS2_ARRAY_LIST_ADD(endpoint_ref_impl->ref_attribute_list, env, attr);
+    }
+
+    return AXIS2_FAILURE;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_endpoint_ref_add_meta_attribute(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env,
+                                  axis2_om_attribute_t* attr)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+
+    if (endpoint_ref_impl->meta_attribute_list && attr)
+    {
+        return AXIS2_ARRAY_LIST_ADD(endpoint_ref_impl->meta_attribute_list, env, attr);
+    }
+
+    return AXIS2_FAILURE;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_endpoint_ref_add_extension(struct axis2_endpoint_ref *endpoint_ref,
+                                  axis2_env_t **env, 
+                                  axis2_om_node_t* extension_node)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+
+    if (endpoint_ref_impl->extension_list && extension_node)
+    {
+        return AXIS2_ARRAY_LIST_ADD(endpoint_ref_impl->extension_list, env, extension_node);
+    }
+
+    return AXIS2_FAILURE;
+}

Modified: webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c?rev=389730&r1=389729&r2=389730&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c (original)
+++ webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c Wed Mar 29 01:46:21 2006
@@ -276,7 +276,7 @@
             }
 
 
-            reference_parameters = AXIS2_ENDPOINT_REF_GET_REF_PARAMS (epr, env);
+            /*reference_parameters = AXIS2_ENDPOINT_REF_GET_REF_PARAMS (epr, env);
             if (reference_parameters)
             {
 
@@ -286,7 +286,7 @@
                                                                  addr_ns);
                 axis2_addr_out_handler_add_to_header (env, epr, &soap_header_node,
                                                       addr_ns);
-            }
+            }*/
 
         }
 
@@ -331,7 +331,7 @@
         if (svc_group_context_id
             && AXIS2_STRCMP (svc_group_context_id, "") != 0)
         {
-            axis2_any_content_type_t *any_content = NULL;
+            /*axis2_any_content_type_t *any_content = NULL;
             axis2_qname_t *svc_qn = NULL;
             if (!AXIS2_ENDPOINT_REF_GET_REF_PARAMS (epr, env))
             {
@@ -345,7 +345,7 @@
                                     AXIS2_NAMESPACE_URI,
                                     AXIS2_NAMESPACE_PREFIX);
             AXIS2_ANY_CONTENT_TYPE_ADD_VALUE (any_content, env, svc_qn,
-                                              svc_group_context_id);
+                                              svc_group_context_id);*/
         }
 
         axis2_addr_out_handler_add_to_soap_header (env, epr,
@@ -640,6 +640,7 @@
     {
         axis2_om_node_t *reference_node = NULL;
         axis2_om_element_t *reference_ele = NULL;
+        axis2_array_list_t *ref_attribute_list = NULL;
         int i = 0;
         
         addr_ns_obj = axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
@@ -649,7 +650,22 @@
                                                  EPR_REFERENCE_PARAMETERS,
                                                  addr_ns_obj,
                                                  &reference_node);
-        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(ref_param_list, env); i ++)
+        
+        ref_attribute_list = AXIS2_ENDPOINT_REF_GET_REF_ATTRIBUTE_LIST(endpoint_ref, env);
+        if (ref_attribute_list)
+        {
+            int j = 0;
+            for (j = 0; j < AXIS2_ARRAY_LIST_SIZE(ref_attribute_list, env); j++)
+            {
+                axis2_om_attribute_t *attr = (axis2_om_attribute_t *)AXIS2_ARRAY_LIST_GET(ref_attribute_list, env, j);
+                if (attr)
+                {
+                    AXIS2_OM_ELEMENT_ADD_ATTRIBUTE(reference_ele, env, attr, reference_node);
+                }
+            }
+        }
+        
+        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(ref_param_list, env); i++)
         {
             axis2_om_node_t *ref_node = (axis2_om_node_t *)AXIS2_ARRAY_LIST_GET(ref_param_list, env, i);
             if (ref_node)
@@ -657,6 +673,7 @@
                 AXIS2_OM_NODE_ADD_CHILD(reference_node, env, ref_node);
             }
         }
+
     }
     
     meta_data_list = AXIS2_ENDPOINT_REF_GET_META_DATA_LIST(endpoint_ref, env);
@@ -664,6 +681,7 @@
     {
         axis2_om_node_t *reference_node = NULL;
         axis2_om_element_t *reference_ele = NULL;
+        axis2_array_list_t *meta_attribute_list = NULL;
         int i = 0;
         
         if (!reference_node) /* may be we alredy created this in ref params block */
@@ -677,6 +695,20 @@
                                                  &reference_node);
         }
         
+        meta_attribute_list = AXIS2_ENDPOINT_REF_GET_META_ATTRIBUTE_LIST(endpoint_ref, env);
+        if (meta_attribute_list)
+        {
+            int j = 0;
+            for (j = 0; j < AXIS2_ARRAY_LIST_SIZE(meta_attribute_list, env); j++)
+            {
+                axis2_om_attribute_t *attr = (axis2_om_attribute_t *)AXIS2_ARRAY_LIST_GET(meta_attribute_list, env, j);
+                if (attr)
+                {
+                    AXIS2_OM_ELEMENT_ADD_ATTRIBUTE(reference_ele, env, attr, reference_node);
+                }
+            }
+        }
+        
         for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(meta_data_list, env); i ++)
         {
             axis2_om_node_t *ref_node = (axis2_om_node_t *)AXIS2_ARRAY_LIST_GET(meta_data_list, env, i);
@@ -685,6 +717,7 @@
                 AXIS2_OM_NODE_ADD_CHILD(reference_node, env, ref_node);
             }
         }
+        
     }
     
     if (AXIS2_STRCMP (AXIS2_WSA_NAMESPACE_SUBMISSION, addr_ns) == 0)