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 2005/12/06 04:23:00 UTC

svn commit: r354268 - in /webservices/axis2/trunk/c: include/axis2_endpoint_ref.h modules/core/addr/src/Makefile.am modules/core/addr/src/endpoint_ref.c

Author: samisa
Date: Mon Dec  5 19:22:42 2005
New Revision: 354268

URL: http://svn.apache.org/viewcvs?rev=354268&view=rev
Log:
Added initial compiling version of endpoint reference

Added:
    webservices/axis2/trunk/c/include/axis2_endpoint_ref.h
    webservices/axis2/trunk/c/modules/core/addr/src/endpoint_ref.c
Modified:
    webservices/axis2/trunk/c/modules/core/addr/src/Makefile.am

Added: 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=354268&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_endpoint_ref.h (added)
+++ webservices/axis2/trunk/c/include/axis2_endpoint_ref.h Mon Dec  5 19:22:42 2005
@@ -0,0 +1,159 @@
+/*
+ * 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_ENDPOINT_REF_H
+#define AXIS2_ENDPOINT_REF_H
+
+/**
+ * @file axis2_endpoint_ref.h
+ * @brief Axis2 core addressing interface
+ */
+
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2.h>
+#include <axis2_any_content_type.h>
+#include <axis2_svc_name.h>
+#include <axis2_om_node.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    struct axis2_endpoint_ref;
+    struct axis2_endpoint_ref_ops;
+    
+/**
+ * @defgroup axis2_endpoint_ref Addressing relates to header
+ * @ingroup axis2_addr
+ * @{
+ */
+
+/**
+ *   \brief Dispatcher operations struct
+ */
+ AXIS2_DECLARE_DATA typedef struct axis2_endpoint_ref_ops
+    { 
+        /**
+         * Method get_address
+         */
+        axis2_char_t* (AXIS2_CALL *get_address)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        /**
+         * Method set_address
+         *
+         * @param address
+         */
+        axis2_status_t (AXIS2_CALL *set_address)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env, axis2_char_t *address);
+        /**
+         * Method get_interface_qname
+         */
+        axis2_qname_t* (AXIS2_CALL *get_interface_qname)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        /**
+         * Method set_interface_qname
+         *
+         * @param interface_qname
+         */
+        axis2_status_t (AXIS2_CALL *set_interface_qname)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env, axis2_qname_t *interface_qname);
+        /**
+         * Method get_ref_properties
+         */
+        axis2_any_content_type_t* (AXIS2_CALL *get_ref_properties)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        /**
+         * Method set_ref_properties
+         *
+         * @param ref_properties
+         */
+        axis2_status_t (AXIS2_CALL *set_ref_properties)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env, axis2_any_content_type_t *ref_properties);
+        /**
+         * Method get_ref_params
+         */
+        axis2_any_content_type_t* (AXIS2_CALL *get_ref_params)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        /**
+         * Method get_svc_name
+         */
+        axis2_svc_name_t* (AXIS2_CALL *get_svc_name)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        /**
+         * Method set_svc_name
+         *
+         * @param svc_name
+         */
+        axis2_status_t (AXIS2_CALL *set_svc_name)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env, axis2_svc_name_t *svc_name);
+        axis2_om_node_t* (AXIS2_CALL *get_policies)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        axis2_status_t (AXIS2_CALL *set_policies)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env, axis2_om_node_t *policies);
+        axis2_any_content_type_t* (AXIS2_CALL *get_metadata)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+        axis2_status_t (AXIS2_CALL *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, 
+                                                       axis2_env_t **env, axis2_qname_t *qname, axis2_char_t *value);
+        axis2_status_t (AXIS2_CALL *free)(struct axis2_endpoint_ref *endpoint_ref, 
+                                                       axis2_env_t **env);
+    } axis2_endpoint_ref_ops_t;
+	
+   /** 
+    * \brief Dispatcher struct
+    */
+    typedef struct axis2_endpoint_ref
+    {
+        /** Dispatcher related operations */
+        axis2_endpoint_ref_ops_t *ops;
+    } axis2_endpoint_ref_t;
+
+
+/**
+ * creates endpoint_ref struct
+ *
+ * @param value
+ * @param relationship_type
+ */
+AXIS2_DECLARE(axis2_endpoint_ref_t*) axis2_endpoint_ref_create(axis2_env_t **env, axis2_char_t *address);
+    
+#define AXIS2_ENDPOINT_REF_GET_ADDRESS(endpoint_ref, env) ((endpoint_ref)->ops->get_address(endpoint_ref, env))
+#define AXIS2_ENDPOINT_REF_SET_ADDRESS(endpoint_ref, env, address) ((endpoint_ref)->ops->set_address(endpoint_ref, env, address))
+#define AXIS2_ENDPOINT_REF_GET_INTERFACE_NAME(endpoint_ref, env) ((endpoint_ref)->ops->get_interface_qname(endpoint_ref, env))
+#define AXIS2_ENDPOINT_REF_SET_INTERFACE_NAME(endpoint_ref, env, interface_qname) ((endpoint_ref)->ops->set_interface_qname(endpoint_ref, env, interface_qname))
+#define AXIS2_ENDPOINT_REF_GET_REF_PROPERTIES(endpoint_ref, env) ((endpoint_ref)->ops->get_ref_properties(endpoint_ref, env))
+#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) ((endpoint_ref)->ops->get_ref_params(endpoint_ref, env))
+#define AXIS2_ENDPOINT_REF_GET_SVC_NAME(endpoint_ref, env) ((endpoint_ref)->ops->get_svc_name(endpoint_ref, env))
+#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) ((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))
+#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))
+#define AXIS2_ENDPOINT_REF_ADD_REF_PARAM(endpoint_ref, env, qname, value) ((endpoint_ref)->ops->add_ref_param(endpoint_ref, env, qname, value))
+#define AXIS2_ENDPOINT_REF_FREE(endpoint_ref, env) ((endpoint_ref)->ops->free(endpoint_ref, env))
+
+
+/** @} */
+    
+#ifdef __cplusplus
+}
+#endif
+
+#endif    /* AXIS2_ENDPOINT_REF_H */

Modified: webservices/axis2/trunk/c/modules/core/addr/src/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/addr/src/Makefile.am?rev=354268&r1=354267&r2=354268&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/addr/src/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/core/addr/src/Makefile.am Mon Dec  5 19:22:42 2005
@@ -1,6 +1,6 @@
 lib_LTLIBRARIES = libaxis2_addr.la
 AM_CPPFLAGS = $(CPPFLAGS)
-libaxis2_addr_la_SOURCES = relates_to.c svc_name.c any_content_type.c
+libaxis2_addr_la_SOURCES = relates_to.c svc_name.c any_content_type.c endpoint_ref.c
 
 libaxis2_addr_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I${CUTEST_HOME}/include \

Added: webservices/axis2/trunk/c/modules/core/addr/src/endpoint_ref.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/addr/src/endpoint_ref.c?rev=354268&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/core/addr/src/endpoint_ref.c (added)
+++ webservices/axis2/trunk/c/modules/core/addr/src/endpoint_ref.c Mon Dec  5 19:22:42 2005
@@ -0,0 +1,321 @@
+/*
+ * 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.
+ */
+ 
+ /** <wsa:RelatesTo RelationshipType="..."?>xs:anyURI</wsa:RelatesTo> */
+
+#include <axis2_endpoint_ref.h>
+#include <axis2_string.h>
+
+typedef struct axis2_endpoint_ref_impl
+{
+    axis2_endpoint_ref_t endpoint_ref;    
+    /** endpoint address */
+    axis2_char_t *address;
+    /** interface qname */
+    axis2_qname_t *interface_qname;
+    /** reference properties */
+    axis2_any_content_type_t *ref_properties;
+    /** reference parameters */
+    axis2_any_content_type_t *ref_params;
+    /** service name */
+    axis2_svc_name_t *svc_name;
+    /** policies represented as an OM node */
+    axis2_om_node_t *policies;
+    /** meta data */
+    axis2_any_content_type_t *metadata;
+} axis2_endpoint_ref_impl_t;
+
+/** Interface to implementation conversion macro */
+#define AXIS2_INTF_TO_IMPL(endpoint_ref) ((axis2_endpoint_ref_impl_t *)endpoint_ref)
+
+axis2_char_t* AXIS2_CALL axis2_endpoint_ref_get_address(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_address(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_char_t *address);
+axis2_qname_t* AXIS2_CALL axis2_endpoint_ref_get_interface_qname(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_interface_qname(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_qname_t *interface_qname);
+axis2_any_content_type_t* AXIS2_CALL axis2_endpoint_ref_get_ref_properties(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+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);
+axis2_any_content_type_t* AXIS2_CALL axis2_endpoint_ref_get_ref_params(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+axis2_svc_name_t* AXIS2_CALL axis2_endpoint_ref_get_svc_name(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_svc_name(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_svc_name_t *svc_name);
+axis2_om_node_t* AXIS2_CALL axis2_endpoint_ref_get_policies(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+axis2_status_t AXIS2_CALL 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_endpoint_ref_get_metadata(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+axis2_status_t AXIS2_CALL 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, axis2_qname_t *qname, axis2_char_t *value);
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_free (struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env);
+
+
+axis2_endpoint_ref_t* AXIS2_CALL axis2_endpoint_ref_create(axis2_env_t **env, axis2_char_t *address) 
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+    
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    endpoint_ref_impl = AXIS2_MALLOC( (*env)->allocator, sizeof(axis2_endpoint_ref_impl_t) );
+    if (!endpoint_ref_impl)
+    { 
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;        
+    }
+
+    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->svc_name = NULL;
+    endpoint_ref_impl->policies = NULL;
+    endpoint_ref_impl->metadata = NULL;
+    
+    if (address)
+    {
+        endpoint_ref_impl->address = AXIS2_STRDUP(address, env);
+        if (!(endpoint_ref_impl->address))
+        {
+            AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+            axis2_endpoint_ref_free(&(endpoint_ref_impl->endpoint_ref), env);
+            return NULL;        
+        }
+    }
+    
+    /* initialize operations */
+    endpoint_ref_impl->endpoint_ref.ops  = AXIS2_MALLOC( (*env)->allocator, sizeof(axis2_endpoint_ref_ops_t) );
+    if (!endpoint_ref_impl->endpoint_ref.ops)
+    {
+        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->endpoint_ref.ops->get_address = axis2_endpoint_ref_get_address;
+    endpoint_ref_impl->endpoint_ref.ops->set_address = axis2_endpoint_ref_set_address;
+    endpoint_ref_impl->endpoint_ref.ops->get_interface_qname = axis2_endpoint_ref_get_interface_qname;
+    endpoint_ref_impl->endpoint_ref.ops->set_interface_qname = axis2_endpoint_ref_set_interface_qname;
+    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 = axis2_endpoint_ref_get_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 = 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 = axis2_endpoint_ref_get_metadata;
+    endpoint_ref_impl->endpoint_ref.ops->set_metadata = axis2_endpoint_ref_set_metadata;
+    endpoint_ref_impl->endpoint_ref.ops->add_ref_param = axis2_endpoint_ref_add_ref_param;
+    endpoint_ref_impl->endpoint_ref.ops->free = axis2_endpoint_ref_free;
+
+    return &(endpoint_ref_impl->endpoint_ref);
+}
+
+
+/**
+ * Method get_address
+ */
+axis2_char_t* AXIS2_CALL axis2_endpoint_ref_get_address(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->address;
+}
+
+/**
+ * Method set_address
+ *
+ * @param address
+ */
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_address(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_char_t *address) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, AXIS2_FAILURE);
+    AXIS2_INTF_TO_IMPL(endpoint_ref)->address = address;
+    return AXIS2_SUCCESS;
+}
+
+/**
+ * Method get_interface_qname
+ */
+axis2_qname_t* AXIS2_CALL axis2_endpoint_ref_get_interface_qname(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->interface_qname;
+}
+
+/**
+ * Method set_interface_qname
+ *
+ * @param interface_qname
+ */
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_interface_qname(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_qname_t *interface_qname) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, AXIS2_FAILURE);
+    AXIS2_INTF_TO_IMPL(endpoint_ref)->interface_qname = interface_qname;
+    return AXIS2_SUCCESS;
+}
+
+/**
+ * Method get_ref_properties
+ */
+axis2_any_content_type_t* AXIS2_CALL axis2_endpoint_ref_get_ref_properties(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->ref_properties;
+}
+
+/**
+ * Method set_ref_properties
+ *
+ * @param ref_properties
+ */
+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) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, 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_endpoint_ref_get_ref_params(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->ref_params;
+}
+
+
+/**
+ * Method get_svc_name
+ */
+axis2_svc_name_t* AXIS2_CALL axis2_endpoint_ref_get_svc_name(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->svc_name;
+}
+
+/**
+ * Method set_svc_name
+ *
+ * @param svc_name
+ */
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_svc_name(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_svc_name_t *svc_name) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, AXIS2_FAILURE);
+    AXIS2_INTF_TO_IMPL(endpoint_ref)->svc_name = svc_name;
+    return AXIS2_SUCCESS;
+}
+
+axis2_om_node_t* AXIS2_CALL axis2_endpoint_ref_get_policies(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->policies;
+}
+
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_policies(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_om_node_t *policies) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, AXIS2_FAILURE);
+    AXIS2_INTF_TO_IMPL(endpoint_ref)->policies = policies;
+    return AXIS2_SUCCESS;
+}
+
+axis2_any_content_type_t* AXIS2_CALL axis2_endpoint_ref_get_metadata(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, NULL);
+    return AXIS2_INTF_TO_IMPL(endpoint_ref)->metadata;
+}
+
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_set_metadata(struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env, axis2_any_content_type_t *metadata) 
+{
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, 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, 
+                                               axis2_env_t **env, axis2_qname_t *qname, axis2_char_t *value) 
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, AXIS2_FAILURE);
+    
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+    
+    if (!(endpoint_ref_impl->ref_params))
+    {
+        endpoint_ref_impl->ref_params = axis2_any_content_type_create(env);
+        if (!(endpoint_ref_impl->ref_params ))
+            return AXIS2_FAILURE;
+    }
+    
+    return AXIS2_ANY_CONTENT_TYPE_ADD_VALUE(endpoint_ref_impl->ref_params, env, qname, value);
+}
+
+axis2_status_t AXIS2_CALL axis2_endpoint_ref_free (struct axis2_endpoint_ref *endpoint_ref, 
+                                               axis2_env_t **env)
+{
+    axis2_endpoint_ref_impl_t *endpoint_ref_impl = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(endpoint_ref, env, AXIS2_FAILURE);
+    
+    endpoint_ref_impl = AXIS2_INTF_TO_IMPL(endpoint_ref);
+    
+    if (endpoint_ref_impl->endpoint_ref.ops)
+    {
+        AXIS2_FREE((*env)->allocator, endpoint_ref_impl->endpoint_ref.ops);
+        endpoint_ref_impl->endpoint_ref.ops = NULL;
+    }
+    
+    if (endpoint_ref_impl->address)
+    {
+        AXIS2_FREE((*env)->allocator, endpoint_ref_impl->address);
+        endpoint_ref_impl->address = NULL;
+    }    
+    
+    if (endpoint_ref_impl->ref_params)
+    {
+        AXIS2_ANY_CONTENT_TYPE_FREE(endpoint_ref_impl->ref_params, env);
+        endpoint_ref_impl->ref_params = NULL;
+    }    
+
+    AXIS2_FREE((*env)->allocator, endpoint_ref_impl);
+    endpoint_ref_impl = NULL;
+    
+    return AXIS2_SUCCESS;
+}