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 sa...@apache.org on 2006/06/04 04:39:49 UTC
svn commit: r411500 - in /webservices/axis2/trunk/c: include/axis2_msg.h
modules/core/description/Makefile.am modules/core/description/msg.c
modules/core/description/op.c
Author: samisa
Date: Sat Jun 3 19:39:49 2006
New Revision: 411500
URL: http://svn.apache.org/viewvc?rev=411500&view=rev
Log:
Adding message description initial implementation
Added:
webservices/axis2/trunk/c/include/axis2_msg.h
webservices/axis2/trunk/c/modules/core/description/msg.c
Modified:
webservices/axis2/trunk/c/modules/core/description/Makefile.am
webservices/axis2/trunk/c/modules/core/description/op.c
Added: webservices/axis2/trunk/c/include/axis2_msg.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_msg.h?rev=411500&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_msg.h (added)
+++ webservices/axis2/trunk/c/include/axis2_msg.h Sat Jun 3 19:39:49 2006
@@ -0,0 +1,218 @@
+/*
+ * 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_MSG_H
+#define AXIS2_MSG_H
+
+/**
+ * @file axis2_msg.h
+ * @brief axis2 msg interface
+ */
+
+#include <axis2_param_container.h>
+#include <axis2_op.h>
+#include <axis2_array_list.h>
+#include <axis2_description.h>
+#include <axis2_phase_meta.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** @defgroup axis2_op Message Description
+ * @ingroup axis2_core_description
+ * @{
+ */
+
+struct axis2_wsdl_op;
+struct axis2_svc;
+struct axis2_msg_recv;
+struct axis2_param_container;
+struct axis2_module_desc;
+struct axis2_op;
+struct axis2_wsdl_feature;
+struct axis2_wsdl_property;
+struct axis2_wsdl_fault_ref;
+struct axis2_relates_to;
+struct axis2_msg_ctx;
+struct axis2_svc_ctx;
+struct axis2_msg_ctx;
+struct axis2_conf_ctx;
+typedef struct axis2_msg_ops axis2_msg_ops_t;
+typedef struct axis2_msg axis2_msg_t;
+
+/**
+ * @brief message ops struct
+ * Encapsulator struct for ops of axis2_msg
+ */
+AXIS2_DECLARE_DATA struct axis2_msg_ops
+{
+ axis2_status_t (AXIS2_CALL *
+ free)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_status_t (AXIS2_CALL *
+ add_param)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_param_t *param);
+
+ axis2_param_t *(AXIS2_CALL *
+ get_param)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *name);
+
+ axis2_array_list_t *(AXIS2_CALL *
+ get_params)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_bool_t (AXIS2_CALL *
+ is_param_locked)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *param_name);
+
+ axis2_status_t (AXIS2_CALL *
+ set_parent)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_op_t *op);
+
+ axis2_op_t *(AXIS2_CALL *
+ get_parent)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_array_list_t *(AXIS2_CALL *
+ get_flow)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_status_t (AXIS2_CALL *
+ set_flow)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_array_list_t *flow);
+
+ axis2_char_t *(AXIS2_CALL *
+ get_direction)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_status_t (AXIS2_CALL *
+ set_direction)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *direction);
+
+ axis2_qname_t *(AXIS2_CALL *
+ get_element_qname)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_status_t (AXIS2_CALL *
+ set_element_qname)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_qname_t *element_qname);
+
+ axis2_char_t *(AXIS2_CALL *
+ get_name)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+ axis2_status_t (AXIS2_CALL *
+ set_name)(
+ axis2_msg_t *msg,
+ const axis2_env_t *env,
+ const axis2_char_t *name);
+};
+
+/**
+ * @brief message struct
+ * Axis2 message
+ */
+AXIS2_DECLARE_DATA struct axis2_msg
+{
+ axis2_msg_ops_t *ops;
+ struct axis2_param_container *param_container;
+};
+
+/**
+ * Creates msg struct
+ * @return pointer to newly created msg
+ */
+AXIS2_EXTERN axis2_msg_t * AXIS2_CALL
+axis2_msg_create (const axis2_env_t *env);
+
+/************************** Start of function macros **************************/
+
+#define AXIS2_MSG_FREE(msg, env) \
+ ((msg)->ops->free (msg, env))
+
+#define AXIS2_MSG_ADD_PARAM(msg, env, param) \
+ ((msg)->ops->add_param (msg, env, param))
+
+#define AXIS2_MSG_GET_PARAM(msg, env, key) \
+ ((msg)->ops->get_param (msg, env, key))
+
+#define AXIS2_MSG_GET_PARAMS(msg, env) \
+ ((msg)->ops->get_params (msg, env))
+
+#define AXIS2_MSG_IS_PARAM_LOCKED(msg, env, param_name) \
+ ((msg)->ops->is_param_locked(msg, env, param_name))
+
+#define AXIS2_MSG_SET_PARENT(msg, env, service_desc) \
+ ((msg)->ops->set_parent (msg, env, service_desc))
+
+#define AXIS2_MSG_GET_PARENT(msg, env) \
+ ((msg)->ops->get_parent (msg, env))
+
+#define AXIS2_MSG_GET_FLOW(msg, env) \
+ ((msg)->ops->get_flow (msg, env))
+
+#define AXIS2_MSG_SET_FLOW(msg, env, flow) \
+ ((msg)->ops->set_flow (msg, env, flow))
+
+#define AXIS2_MSG_GET_DIRECTION(msg, env) \
+ ((msg)->ops->get_direction (msg, env))
+
+#define AXIS2_MSG_SET_DIRECTION(msg, env, direction) \
+ ((msg)->ops->set_direction (msg, env, direction))
+
+#define AXIS2_MSG_GET_ELEMENT_QNAME(msg, env) \
+ ((msg)->ops->get_element_qname(msg, env))
+
+#define AXIS2_MSG_SET_ELEMENT_QNAME(msg, env, element_qname) \
+ ((msg)->ops->set_element_qname(msg, env, element_qname))
+
+#define AXIS2_MSG_GET_NAME(msg, env) \
+ ((msg)->ops->get_name(msg, env))
+
+#define AXIS2_MSG_SET_NAME(msg, env, name) \
+ ((msg)->ops->set_name(msg, env, name))
+
+/************************** End of function macros ****************************/
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_MSG_H */
Modified: webservices/axis2/trunk/c/modules/core/description/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/description/Makefile.am?rev=411500&r1=411499&r2=411500&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/core/description/Makefile.am Sat Jun 3 19:39:49 2006
@@ -12,7 +12,8 @@
flow.c \
flow_container.c \
transport_in_desc.c \
- transport_out_desc.c
+ transport_out_desc.c \
+ msg.c
INCLUDES = -I$(top_builddir)/include \
-I$(top_builddir)/modules/wsdl \
Added: webservices/axis2/trunk/c/modules/core/description/msg.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/description/msg.c?rev=411500&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/msg.c (added)
+++ webservices/axis2/trunk/c/modules/core/description/msg.c Sat Jun 3 19:39:49 2006
@@ -0,0 +1,550 @@
+/*
+ * 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_msg.h>
+#include <axis2_property.h>
+
+/**
+ * @brief Message struct impl
+ * Axis2 Messages
+ */
+typedef struct axis2_msg_impl
+{
+ axis2_msg_t msg;
+ /** parent operation */
+ axis2_op_t *parent;
+ /** list of phases that represnt the flow */
+ axis2_array_list_t *flow;
+ /** name of the message */
+ axis2_char_t *name;
+ /** list of SOAP headers */
+ axis2_array_list_t *soap_headers;
+ /** XML schema element qname */
+ axis2_qname_t *element_qname;
+ /** direction of message */
+ axis2_char_t *direction;
+} axis2_msg_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(msg) ((axis2_msg_impl_t *)msg)
+
+/*************************** Function headers *********************************/
+
+axis2_status_t AXIS2_CALL
+axis2_msg_free (axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+axis2_msg_add_param (axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_param_t *param);
+
+axis2_param_t * AXIS2_CALL
+axis2_msg_get_param (axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *name);
+
+axis2_array_list_t * AXIS2_CALL
+axis2_msg_get_params (axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_bool_t AXIS2_CALL
+axis2_msg_is_param_locked(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *param_name);
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_parent (axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_op_t *op);
+
+axis2_op_t * AXIS2_CALL
+axis2_msg_get_parent (axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_array_list_t *AXIS2_CALL
+axis2_msg_get_flow(axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_flow(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_array_list_t *flow);
+
+axis2_char_t *AXIS2_CALL
+axis2_msg_get_direction(axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_direction(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *direction);
+
+axis2_qname_t *AXIS2_CALL
+axis2_msg_get_element_qname(axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_element_qname(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_qname_t *element_qname);
+
+axis2_char_t *AXIS2_CALL
+axis2_msg_get_name(axis2_msg_t *msg,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_name(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ const axis2_char_t *name);
+
+
+/************************* End of function headers ****************************/
+
+AXIS2_EXTERN axis2_msg_t * AXIS2_CALL
+axis2_msg_create (const axis2_env_t *env)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ msg_impl = (axis2_msg_impl_t *) AXIS2_MALLOC (env->allocator,
+ sizeof (axis2_msg_impl_t));
+
+ if(NULL == msg_impl)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+
+ msg_impl->msg.param_container = NULL;
+ msg_impl->parent = NULL;
+ msg_impl->flow = NULL;
+ msg_impl->name = NULL;
+ msg_impl->soap_headers = NULL;
+ msg_impl->element_qname = NULL;
+ msg_impl->direction = NULL;
+ msg_impl->msg.ops = NULL;
+
+ msg_impl->msg.param_container = (axis2_param_container_t *)
+ axis2_param_container_create(env);
+ if(NULL == msg_impl->msg.param_container)
+ {
+ axis2_msg_free(&(msg_impl->msg), env);
+ return NULL;
+ }
+
+ msg_impl->soap_headers = axis2_array_list_create(env, 0);
+ if(NULL == msg_impl->soap_headers)
+ {
+ axis2_msg_free(&(msg_impl->msg), env);
+ return NULL;
+ }
+
+ msg_impl->flow = axis2_array_list_create(env, 0);
+ if(NULL == msg_impl->flow)
+ {
+ axis2_msg_free(&(msg_impl->msg), env);
+ return NULL;
+ }
+
+ msg_impl->msg.ops = AXIS2_MALLOC(env->allocator, sizeof(axis2_msg_ops_t));
+ if(NULL == msg_impl->msg.ops)
+ {
+ axis2_msg_free(&(msg_impl->msg), env);
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+
+ msg_impl->msg.ops->free = axis2_msg_free;
+ msg_impl->msg.ops->add_param = axis2_msg_add_param;
+ msg_impl->msg.ops->get_param = axis2_msg_get_param;
+ msg_impl->msg.ops->get_params = axis2_msg_get_params;
+ msg_impl->msg.ops->is_param_locked = axis2_msg_is_param_locked;
+ msg_impl->msg.ops->set_parent = axis2_msg_set_parent;
+ msg_impl->msg.ops->get_parent = axis2_msg_get_parent;
+ msg_impl->msg.ops->get_flow = axis2_msg_get_flow;
+ msg_impl->msg.ops->set_flow = axis2_msg_set_flow;
+ msg_impl->msg.ops->get_direction = axis2_msg_get_direction;
+ msg_impl->msg.ops->set_direction = axis2_msg_set_direction;
+ msg_impl->msg.ops->get_element_qname = axis2_msg_get_element_qname;
+ msg_impl->msg.ops->set_element_qname = axis2_msg_set_element_qname;
+ msg_impl->msg.ops->get_name = axis2_msg_get_name;
+ msg_impl->msg.ops->set_name = axis2_msg_set_name;
+
+ return &(msg_impl->msg);
+}
+
+/*************************** Start of msg impls *************************/
+
+axis2_status_t AXIS2_CALL
+axis2_msg_free (axis2_msg_t *msg, const axis2_env_t *env)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ if(NULL != msg_impl->flow)
+ {
+ int i = 0;
+ int size = 0;
+ size = AXIS2_ARRAY_LIST_SIZE(msg_impl->flow, env);
+ for (i = 0; i < size; i++)
+ {
+ axis2_phase_t *phase = NULL;
+ phase = AXIS2_ARRAY_LIST_GET(msg_impl->flow, env, i);
+ if (phase)
+ {
+ AXIS2_PHASE_FREE (phase, env);
+ phase = NULL;
+ }
+
+ }
+ AXIS2_ARRAY_LIST_FREE(msg_impl->flow, env);
+ msg_impl->flow = NULL;
+ }
+
+ if(NULL != msg_impl->soap_headers)
+ {
+ int i = 0;
+ int size = 0;
+ size = AXIS2_ARRAY_LIST_SIZE(msg_impl->soap_headers, env);
+ for (i = 0; i < size; i++)
+ {
+ /* TODO : free the content */
+ }
+ AXIS2_ARRAY_LIST_FREE(msg_impl->soap_headers, env);
+ msg_impl->soap_headers = NULL;
+ }
+
+ if (msg_impl->name)
+ {
+ AXIS2_FREE(env->allocator, msg_impl->name);
+ msg_impl->name = NULL;
+ }
+
+ if (msg_impl->element_qname)
+ {
+ AXIS2_QNAME_FREE(msg_impl->element_qname, env);
+ msg_impl->element_qname = NULL;
+ }
+
+ if (msg_impl->direction)
+ {
+ AXIS2_FREE(env->allocator, msg_impl->direction);
+ msg_impl->direction = NULL;
+ }
+
+ if(msg->param_container)
+ {
+ AXIS2_PARAM_CONTAINER_FREE(msg->param_container, env);
+ msg->param_container = NULL;
+ }
+
+ msg_impl->parent = NULL;
+
+ if (msg_impl->msg.ops)
+ {
+ AXIS2_FREE(env->allocator, msg_impl->msg.ops);
+ msg_impl->msg.ops = NULL;
+ }
+
+ if(msg_impl)
+ {
+ AXIS2_FREE(env->allocator, msg_impl);
+ msg_impl = NULL;
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_add_param (axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_param_t *param)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+ axis2_char_t *param_name = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+ AXIS2_PARAM_CHECK(env->error, param, AXIS2_FALSE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ param_name = AXIS2_PARAM_GET_NAME(param, env);
+ if(AXIS2_TRUE == axis2_msg_is_param_locked(msg, env, param_name))
+ {
+ AXIS2_ERROR_SET(env->error,
+ AXIS2_ERROR_PARAMETER_LOCKED_CANNOT_OVERRIDE, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
+ else
+ {
+ return AXIS2_PARAM_CONTAINER_ADD_PARAM(msg->param_container, env, param);
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_param_t * AXIS2_CALL
+axis2_msg_get_param (axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *param_name)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+ AXIS2_PARAM_CHECK(env->error, param_name, NULL);
+
+ return AXIS2_PARAM_CONTAINER_GET_PARAM(msg->param_container, env, param_name);
+}
+
+axis2_array_list_t * AXIS2_CALL
+axis2_msg_get_params(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+ AXIS2_PARAM_CHECK(env->error, msg->param_container, AXIS2_FALSE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ return AXIS2_PARAM_CONTAINER_GET_PARAMS(msg->param_container, env);
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_parent (axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_op_t *op)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_INTF_TO_IMPL(msg)->parent = op;
+ return AXIS2_SUCCESS;
+}
+
+axis2_op_t * AXIS2_CALL
+axis2_msg_get_parent (axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ AXIS2_ENV_CHECK(env, NULL);
+
+ return AXIS2_INTF_TO_IMPL(msg)->parent;
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_msg_get_flow(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ AXIS2_ENV_CHECK(env, NULL);
+ return AXIS2_INTF_TO_IMPL(msg)->flow;
+}
+
+axis2_bool_t AXIS2_CALL
+axis2_msg_is_param_locked(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *param_name)
+{
+ axis2_op_t *parent_l = NULL;
+ axis2_param_t *param_l = NULL;
+ axis2_bool_t locked = AXIS2_FALSE;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+ AXIS2_PARAM_CHECK(env->error, param_name, AXIS2_FALSE);
+
+ /* checking the locked value of parent*/
+ parent_l = axis2_msg_get_parent(msg, env);
+ if(NULL != parent_l)
+ {
+ locked = AXIS2_OP_IS_PARAM_LOCKED(parent_l, env, param_name);
+ }
+ if(AXIS2_TRUE == locked)
+ {
+ return AXIS2_TRUE;
+ }
+ else
+ {
+ param_l = axis2_msg_get_param(msg, env, param_name);
+ }
+ return (param_l != NULL && AXIS2_PARAM_IS_LOCKED(param_l, env));
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_flow(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_array_list_t *flow)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ if (msg_impl->flow)
+ {
+ AXIS2_ARRAY_LIST_FREE(msg_impl->flow, env);
+ msg_impl->flow = NULL;
+ }
+ if (flow)
+ {
+ msg_impl->flow = flow;
+ }
+ return AXIS2_SUCCESS;
+}
+
+axis2_char_t *AXIS2_CALL
+axis2_msg_get_direction(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ return AXIS2_INTF_TO_IMPL(msg)->direction;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_direction(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_char_t *direction)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ if (msg_impl->direction)
+ {
+ AXIS2_FREE(env->allocator, msg_impl->direction);
+ msg_impl->direction = NULL;
+ }
+
+ if (direction)
+ {
+ msg_impl->direction = AXIS2_STRDUP(direction, env);
+ if (!(msg_impl->direction))
+ return AXIS2_FAILURE;
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_qname_t *AXIS2_CALL
+axis2_msg_get_element_qname(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ return AXIS2_INTF_TO_IMPL(msg)->element_qname;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_element_qname(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ axis2_qname_t *element_qname)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ if (msg_impl->element_qname)
+ {
+ AXIS2_QNAME_FREE(msg_impl->element_qname, env);
+ msg_impl->element_qname = NULL;
+ }
+
+ if (element_qname)
+ {
+ msg_impl->element_qname = AXIS2_QNAME_CLONE(element_qname, env);
+ if (!(msg_impl->element_qname))
+ return AXIS2_FAILURE;
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+/*
+TODO: implement when xml schema is in place
+xml_schema_element *AXIS2_CALL
+axis2_msg_get_schema_element(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ AxisService service = (AxisService) getParent().getParent();
+ axis2_array_list_t *schemas = service.getSchema();
+ for (int i = 0; i < schemas.size(); i++) {
+ XmlSchema schema = (XmlSchema) schemas.get(i);
+ if (schema.getItems() != null) {
+ Iterator schemaItems = schema.getItems().getIterator();
+ while (schemaItems.hasNext()) {
+ Object item = schemaItems.next();
+ if (item instanceof xml_schema_element) {
+ xml_schema_element schema_element = (xml_schema_element) item;
+ if (schema_element.getQName().equals(getElementQName())) {
+ return schema_element;
+ }
+ }
+ }
+ }
+ }
+ return null;
+}*/
+
+axis2_char_t *AXIS2_CALL
+axis2_msg_get_name(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ return AXIS2_INTF_TO_IMPL(msg)->name;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_set_name(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ const axis2_char_t *name)
+{
+ axis2_msg_impl_t *msg_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ msg_impl = AXIS2_INTF_TO_IMPL(msg);
+
+ if (msg_impl->name)
+ {
+ AXIS2_FREE(env->allocator, msg_impl->name);
+ msg_impl->name = NULL;
+ }
+
+ if (name)
+ {
+ msg_impl->name = AXIS2_STRDUP(env, name);
+ if (!(msg_impl->name))
+ {
+ return AXIS2_FAILURE;
+ }
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+
+/*
+TODO: these methods would be useful when doing WSDL to Axis service builders
+axis2_status_t AXIS2_CALL
+axis2_msg_add_soap_header(axis2_msg_t *msg,
+ const axis2_env_t *env,
+ soap_header_message *soap_header_message)
+{
+ soap_headers.add(soap_header_message);
+}
+
+axis2_array_list_t *AXIS2_CALL
+axis2_msg_get_soap_headers(axis2_msg_t *msg,
+ const axis2_env_t *env)
+{
+ return soap_headers;
+}
+
+*/
Modified: webservices/axis2/trunk/c/modules/core/description/op.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/description/op.c?rev=411500&r1=411499&r2=411500&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/op.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/op.c Sat Jun 3 19:39:49 2006
@@ -16,6 +16,7 @@
#include <axis2_op.h>
#include <axis2_property.h>
+#include <axis2_msg.h>
/**
* @brief Operaton struct impl
@@ -882,7 +883,7 @@
{
param_l = axis2_op_get_param(op, env, param_name);
}
- return AXIS2_PARAM_IS_LOCKED(param_l, env);
+ return (param_l !=NULL && AXIS2_PARAM_IS_LOCKED(param_l, env));
}
axis2_status_t AXIS2_CALL
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org