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 da...@apache.org on 2005/12/02 10:44:08 UTC

svn commit: r351652 - in /webservices/axis2/trunk/c: include/ modules/core/transport/ modules/wsdl/src/

Author: damitha
Date: Fri Dec  2 01:43:55 2005
New Revision: 351652

URL: http://svn.apache.org/viewcvs?rev=351652&view=rev
Log:
Added new files

Added:
    webservices/axis2/trunk/c/include/axis2_wsdl_extensible_element.h
    webservices/axis2/trunk/c/include/axis2_wsdl_soap_operation.h
    webservices/axis2/trunk/c/modules/core/transport/axis2_transport_sender.h
    webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_element.c
    webservices/axis2/trunk/c/modules/wsdl/src/wsdl_soap_operation.c

Added: webservices/axis2/trunk/c/include/axis2_wsdl_extensible_element.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_wsdl_extensible_element.h?rev=351652&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_wsdl_extensible_element.h (added)
+++ webservices/axis2/trunk/c/include/axis2_wsdl_extensible_element.h Fri Dec  2 01:43:55 2005
@@ -0,0 +1,117 @@
+/*
+ * 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_ELEMENT_H
+#define AXIS2_WSDL_EXTENSIBLE_ELEMENT_H
+
+/**
+ * @file axis2_wsdl_extensible_element.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_qname.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_wsdl_extensible_element axis2_wsdl_extensible_element_t;
+typedef struct axis2_wsdl_extensible_element_ops axis2_wsdl_extensible_element_ops_t;
+
+/** @defgroup axis2_wsdl_extensible_element Wsdl Extensible Element
+ * @ingroup axis2_wsdl
+ * @{
+ */
+
+/** 
+ * @brief Wsdl Extensible Element operations struct
+ * Encapsulator struct for operations of axis2_wsdl_extensible_element
+ */
+AXIS2_DECLARE_DATA struct axis2_wsdl_extensible_element_ops
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *free)(
+                    axis2_wsdl_extensible_element_t *wsdl_extensible_element,
+			        axis2_env_t **env);
+
+    axis2_bool_t (AXIS2_CALL *
+    is_required) (axis2_wsdl_extensible_element_t *extensible_element,
+                    axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    set_required) (axis2_wsdl_extensible_element_t *extensible_element,
+                   axis2_env_t **env,
+                   axis2_bool_t required);
+    
+    axis2_qname_t *(AXIS2_CALL *
+    get_type) (axis2_wsdl_extensible_element_t *extensible_element,
+               axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    set_type) (axis2_wsdl_extensible_element_t *extensible_element,
+               axis2_env_t **env,
+               axis2_qname_t *type);
+};
+
+/** 
+ * @brief Wsdl container struct
+ *	Property for params  
+ */  
+AXIS2_DECLARE_DATA struct axis2_wsdl_extensible_element
+{
+	axis2_wsdl_extensible_element_ops_t *ops;
+};
+
+/**
+ * Creates wsdl property struct
+ * @return pointer to newly created wsdl property
+ */
+AXIS2_DECLARE(axis2_wsdl_extensible_element_t *) 
+axis2_wsdl_extensible_element_create (axis2_env_t **env);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_WSDL_EXTENSIBLE_ELEMENT_FREE(extensible_element, env) \
+		((extensible_element->ops)->free (extensible_element, env))
+
+#define AXIS2_WSDL_EXTENSIBLE_ELEMENT_IS_REQUIRED(extensible_element, env) \
+		((extensible_element->ops)->is_required (extensible_element, env))
+
+#define AXIS2_WSDL_EXTENSIBLE_ELEMENT_SET_REQUIRED(extensible_element, env, required) \
+		((extensible_element->ops)->set_required (extensible_element, env, required))
+
+#define AXIS2_WSDL_EXTENSIBLE_ELEMENT_GET_TYPE(extensible_element, env) \
+		(extensible_element->ops->get_type (extensible_element, env))
+
+#define AXIS2_WSDL_EXTENSIBLE_ELEMENT_SET_TYPE(extensible_element, env, type) \
+		((extensible_element->ops)->set_type (extensible_element, env, type))       
+
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_WSDL_EXTENSIBLE_ELEMENT_H */

Added: webservices/axis2/trunk/c/include/axis2_wsdl_soap_operation.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_wsdl_soap_operation.h?rev=351652&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_wsdl_soap_operation.h (added)
+++ webservices/axis2/trunk/c/include/axis2_wsdl_soap_operation.h Fri Dec  2 01:43:55 2005
@@ -0,0 +1,128 @@
+/*
+ * 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_SOAP_OPERATION_H
+#define AXIS2_WSDL_SOAP_OPERATION_H
+
+/**
+ * @file axis2_wsdl_soap_operation.h
+ * @brief Axis2 Wsdl soap operation interface
+ */
+
+#include <axis2.h>
+#include <axis2_error.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_allocator.h>
+#include <axis2_qname.h>
+#include <axis2_wsdl_extensible_element.h>
+#include <axis2_wsdl.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_wsdl_soap_operation axis2_wsdl_soap_operation_t;
+typedef struct axis2_wsdl_soap_operation_ops axis2_wsdl_soap_operation_ops_t;
+
+/** @defgroup axis2_wsdl_soap_operation Wsdl Extensible Element
+ * @ingroup axis2_wsdl
+ * @{
+ */
+
+/** 
+ * @brief Wsdl Extensible Element operations struct
+ * Encapsulator struct for operations of axis2_wsdl_soap_operation
+ */
+AXIS2_DECLARE_DATA struct axis2_wsdl_soap_operation_ops
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *free)(
+                    axis2_wsdl_soap_operation_t *wsdl_soap_operation,
+			        axis2_env_t **env);
+
+    axis2_char_t *(AXIS2_CALL *
+    get_style) (axis2_wsdl_soap_operation_t *soap_operation,
+                                        axis2_env_t **env);
+        
+    axis2_status_t (AXIS2_CALL *
+    set_style) (axis2_wsdl_soap_operation_t *soap_operation,
+                                        axis2_env_t **env,
+                                        axis2_char_t *style);
+    
+    axis2_char_t * (AXIS2_CALL *
+    get_soap_action) (axis2_wsdl_soap_operation_t *soap_operation,
+                                        axis2_env_t **env);
+    
+    axis2_status_t (AXIS2_CALL *
+    set_soap_action) (axis2_wsdl_soap_operation_t *soap_operation,
+                                        axis2_env_t **env,
+                                        axis2_char_t *soap_action);
+};
+
+/** 
+ * @brief Wsdl container struct
+ *	Property for params  
+ */  
+AXIS2_DECLARE_DATA struct axis2_wsdl_soap_operation
+{
+	axis2_wsdl_soap_operation_ops_t *ops;
+    axis2_wsdl_extensible_element_t *extensible_element;
+};
+
+/**
+ * Creates wsdl property struct
+ * @return pointer to newly created wsdl property
+ */
+AXIS2_DECLARE(axis2_wsdl_soap_operation_t *) 
+axis2_wsdl_soap_operation_create (axis2_env_t **env);
+
+/**
+ * Creates wsdl property struct
+ * @param type 
+ * @return pointer to newly created wsdl property
+ */
+AXIS2_DECLARE(axis2_wsdl_soap_operation_t *) 
+axis2_wsdl_soap_operation_create_with_type (axis2_env_t **env, axis2_qname_t *type);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_WSDL_SOAP_OPERATION_FREE(extensible_element, env) \
+		((extensible_element->ops)->free (extensible_element, env))
+
+#define AXIS2_WSDL_SOAP_OPERATION_GET_STYLE(extensible_element, env) \
+		((extensible_element->ops)->get_style (extensible_element, env))
+
+#define AXIS2_WSDL_SOAP_OPERATION_SET_STYLE(extensible_element, env, style) \
+		((extensible_element->ops)->set_style (extensible_element, env, style))
+
+#define AXIS2_WSDL_SOAP_OPERATION_GET_SOAP_ACTION(extensible_element, env) \
+		((extensible_element->ops)->get_soap_action (extensible_element, env))
+
+#define AXIS2_WSDL_SOAP_OPERATION_SET_SOAP_ACTION(extensible_element, env, soap_action) \
+		((extensible_element->ops)->set_soap_action (extensible_element, env, soap_action))       
+
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_WSDL_SOAP_OPERATION_H */

Added: webservices/axis2/trunk/c/modules/core/transport/axis2_transport_sender.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/axis2_transport_sender.h?rev=351652&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/axis2_transport_sender.h (added)
+++ webservices/axis2/trunk/c/modules/core/transport/axis2_transport_sender.h Fri Dec  2 01:43:55 2005
@@ -0,0 +1,125 @@
+/*
+ * 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_TRANSPORT_SENDER_H
+#define AXIS2_TRANSPORT_SENDER_H
+
+/**
+ * @file axis2_transport_sender.h
+ * @brief Axis2 description transport sender interface
+ */
+
+#include <axis2.h>
+#include <axis2_error.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_allocator.h>
+#include <axis2_transport_out_desc.h>
+#include <axis2_ctx.h>
+#include <axis2_msg_ctx.h>
+
+#include <axis2_wsdl.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct axis2_transport_sender;
+struct axis2_transport_out_desc;    
+struct axis2_ctx;
+struct axis2_msg_ctx;    
+struct axis2_handler;    
+typedef struct axis2_transport_sender axis2_transport_sender_t;
+typedef struct axis2_transport_sender_ops axis2_transport_sender_ops_t;
+
+/** @defgroup axis2_transport_sender Transport Sender
+ * @ingroup axis2_description
+ * @{
+ */
+
+/** 
+ * @brief Description Transport Sender operations struct
+ * Encapsulator struct for operations of axis2_transport_sender
+ */
+AXIS2_DECLARE_DATA struct axis2_transport_sender_ops
+{
+	/** De-allocate memory
+  	 * @return status code
+  	 */
+	axis2_status_t (AXIS2_CALL *free)(
+                    axis2_transport_sender_t *transport_sender,
+			        axis2_env_t **env);
+    /**
+     * Initialize
+     * @param confContext
+     * @param transportOut
+     * @throws org.apache.axis2.AxisFault
+     */
+    axis2_status_t (AXIS2_CALL * 
+    init) (axis2_transport_sender_t *transport_sender,
+                                axis2_env_t **env,
+                                struct axis2_ctx *conf_ctx,
+                                struct axis2_transport_out_desc *transport_out);
+    /**
+     * Clean up
+     * @param msgContext
+     * @throws org.apache.axis2.AxisFault
+     */
+    axis2_status_t (AXIS2_CALL *                                
+    cleanup) (axis2_transport_sender_t *transport_sender,
+                                axis2_env_t **env,
+                                struct axis2_msg_ctx *msg_ctx);
+
+};
+
+/** 
+ * @brief Transport Sender struct
+ * This send the SOAP Message to other SOAP nodes and this alone write the SOAP 
+ * Message to the wire. Out flow must be end with one of this kind
+ */  
+AXIS2_DECLARE_DATA struct axis2_transport_sender
+{
+	axis2_transport_sender_ops_t *ops;
+    struct axis2_handler *handler;
+};
+
+/**
+ * Creates phase holder struct
+ * @return pointer to newly created transport sender
+ */
+AXIS2_DECLARE(axis2_transport_sender_t *) 
+axis2_transport_sender_create (axis2_env_t **env);
+
+/*************************** Function macros **********************************/
+
+#define AXIS2_TRANSPORT_SENDER_FREE(transport_sender, env) \
+		((transport_sender->ops)->free (transport_sender, env))
+
+#define AXIS2_TRANSPORT_SENDER_INIT(transport_sender, env, conf_context, transport_out) \
+		((transport_sender->ops)->init (transport_sender, env, conf_context, transport_out))
+
+#define AXIS2_TRANSPORT_CLEANUP(transport_sender, env, msg_ctx) \
+		((transport_sender->ops)->cleanup (transport_sender, env, msg_ctx))      
+
+/*************************** End of function macros ***************************/
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* AXIS2_TRANSPORT_SENDER_H */

Added: webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_element.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_element.c?rev=351652&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_element.c (added)
+++ webservices/axis2/trunk/c/modules/wsdl/src/wsdl_extensible_element.c Fri Dec  2 01:43:55 2005
@@ -0,0 +1,175 @@
+/*
+ * 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_element.h>
+
+/** 
+ * @brief Wsdl extensible element struct impl
+ *	Wsdl extensible element
+ */ 
+typedef struct axis2_wsdl_extensible_element_impl
+{
+	axis2_wsdl_extensible_element_t extensible_element;
+    
+    axis2_qname_t *type;
+
+    axis2_bool_t required;
+    
+} axis2_wsdl_extensible_element_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(extensible_element) \
+		((axis2_wsdl_extensible_element_impl_t *)extensible_element)
+
+/************************* Function prototypes ********************************/
+
+axis2_status_t AXIS2_CALL
+	axis2_wsdl_extensible_element_free (
+                axis2_wsdl_extensible_element_t *extensible_element,
+				axis2_env_t **env);
+
+axis2_bool_t AXIS2_CALL
+axis2_wsdl_extensible_element_is_required(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_element_set_required(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env,
+                            axis2_bool_t required);
+
+axis2_qname_t *AXIS2_CALL
+axis2_wsdl_extensible_element_get_type(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_element_set_type(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env,
+                            axis2_qname_t *type);
+                        
+/************************** End of function prototypes ************************/
+
+axis2_wsdl_extensible_element_t * AXIS2_CALL 
+axis2_wsdl_extensible_element_create (axis2_env_t **env)
+{
+	AXIS2_ENV_CHECK(env, NULL);
+	
+	axis2_wsdl_extensible_element_impl_t *extensible_element_impl = 
+		(axis2_wsdl_extensible_element_impl_t *) AXIS2_MALLOC((*env)->allocator,
+			sizeof(axis2_wsdl_extensible_element_impl_t));
+	
+	
+	if(NULL == extensible_element_impl)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL); 
+    
+	extensible_element_impl->extensible_element.ops = 
+		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_wsdl_extensible_element_ops_t));
+	if(NULL == extensible_element_impl->extensible_element.ops)
+    {
+        axis2_wsdl_extensible_element_free(&(extensible_element_impl->
+            extensible_element), env);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    extensible_element_impl->extensible_element.ops->free =  
+        axis2_wsdl_extensible_element_free;
+    
+	extensible_element_impl->extensible_element.ops->is_required =  
+        axis2_wsdl_extensible_element_is_required;
+	extensible_element_impl->extensible_element.ops->set_required =  
+        axis2_wsdl_extensible_element_set_required;
+	extensible_element_impl->extensible_element.ops->get_type =  
+        axis2_wsdl_extensible_element_get_type;
+	extensible_element_impl->extensible_element.ops->set_type = 
+        axis2_wsdl_extensible_element_set_type;
+	
+    extensible_element_impl->type = NULL;
+    
+	return &(extensible_element_impl->extensible_element);
+}
+
+/***************************Function implementation****************************/
+
+axis2_status_t AXIS2_CALL 
+axis2_wsdl_extensible_element_free (
+                        axis2_wsdl_extensible_element_t *extensible_element, 
+                        axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_element, env, AXIS2_FAILURE);
+	if(NULL != extensible_element->ops)
+        AXIS2_FREE((*env)->allocator, extensible_element->ops);
+    
+    if(NULL != AXIS2_INTF_TO_IMPL(extensible_element)->type)
+    {
+        AXIS2_QNAME_FREE(AXIS2_INTF_TO_IMPL(extensible_element)->
+            type, env);
+    }
+    
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(extensible_element));
+    
+	return AXIS2_SUCCESS;
+}
+
+axis2_bool_t AXIS2_CALL
+axis2_wsdl_extensible_element_is_required(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_element, env, AXIS2_FALSE);
+    return AXIS2_INTF_TO_IMPL(extensible_element)->required;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_element_set_required(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env,
+                            axis2_bool_t required) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_element, env, AXIS2_FALSE);
+    
+    AXIS2_INTF_TO_IMPL(extensible_element)->required = required;
+    return AXIS2_SUCCESS;
+}
+
+axis2_qname_t *AXIS2_CALL
+axis2_wsdl_extensible_element_get_type(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(extensible_element, env, NULL);
+    return AXIS2_INTF_TO_IMPL(extensible_element)->type;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_extensible_element_set_type(
+                            axis2_wsdl_extensible_element_t *extensible_element,
+                            axis2_env_t **env,
+                            axis2_qname_t *type) 
+{
+    axis2_wsdl_extensible_element_impl_t *extensible_element_impl = 
+        AXIS2_INTF_TO_IMPL(extensible_element);
+    
+    AXIS2_FUNC_PARAM_CHECK(extensible_element, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, type, AXIS2_FAILURE);
+    
+    if(extensible_element_impl->type)
+        AXIS2_QNAME_FREE(extensible_element_impl->type, env);
+    
+    extensible_element_impl->type = type;
+    return AXIS2_SUCCESS;
+}

Added: webservices/axis2/trunk/c/modules/wsdl/src/wsdl_soap_operation.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/wsdl/src/wsdl_soap_operation.c?rev=351652&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/wsdl/src/wsdl_soap_operation.c (added)
+++ webservices/axis2/trunk/c/modules/wsdl/src/wsdl_soap_operation.c Fri Dec  2 01:43:55 2005
@@ -0,0 +1,203 @@
+/*
+ * 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_soap_operation.h>
+
+/** 
+ * @brief Wsdl soap operation struct impl
+ *	Wsdl soap element
+ */ 
+typedef struct axis2_wsdl_soap_operation_impl
+{
+	axis2_wsdl_soap_operation_t soap_operation;
+    
+    axis2_char_t *soap_action;
+
+    axis2_char_t *style;
+    
+} axis2_wsdl_soap_operation_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(soap_operation) \
+		((axis2_wsdl_soap_operation_impl_t *)soap_operation)
+
+/************************* Function prototypes ********************************/
+
+axis2_status_t AXIS2_CALL
+	axis2_wsdl_soap_operation_free (
+                axis2_wsdl_soap_operation_t *soap_operation,
+				axis2_env_t **env);
+
+axis2_char_t *AXIS2_CALL
+axis2_wsdl_soap_operation_get_style(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env);
+    
+axis2_status_t AXIS2_CALL
+axis2_wsdl_soap_operation_set_style(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env,
+                                    axis2_char_t *style);
+
+axis2_char_t * AXIS2_CALL
+axis2_wsdl_soap_operation_get_soap_action(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_soap_operation_set_soap_action(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env,
+                                    axis2_char_t *soap_action);
+
+                        
+/************************** End of function prototypes ************************/
+
+axis2_wsdl_soap_operation_t * AXIS2_CALL 
+axis2_wsdl_soap_operation_create (axis2_env_t **env)
+{
+	AXIS2_ENV_CHECK(env, NULL);
+	
+	axis2_wsdl_soap_operation_impl_t *soap_operation_impl = 
+		(axis2_wsdl_soap_operation_impl_t *) AXIS2_MALLOC((*env)->allocator,
+			sizeof(axis2_wsdl_soap_operation_impl_t));
+	
+	
+	if(NULL == soap_operation_impl)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL); 
+    
+	soap_operation_impl->soap_operation.ops = 
+		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_wsdl_soap_operation_ops_t));
+	if(NULL == soap_operation_impl->soap_operation.ops)
+    {
+        axis2_wsdl_soap_operation_free(&(soap_operation_impl->
+            soap_operation), env);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    soap_operation_impl->soap_operation.ops->free =  
+        axis2_wsdl_soap_operation_free;
+    
+	soap_operation_impl->soap_operation.ops->get_style =  
+        axis2_wsdl_soap_operation_get_style;
+	soap_operation_impl->soap_operation.ops->set_style =  
+        axis2_wsdl_soap_operation_set_style;
+	soap_operation_impl->soap_operation.ops->get_soap_action =  
+        axis2_wsdl_soap_operation_get_soap_action;
+	soap_operation_impl->soap_operation.ops->set_soap_action = 
+        axis2_wsdl_soap_operation_set_soap_action;
+	
+    soap_operation_impl->style = NULL;
+    soap_operation_impl->soap_action = NULL;
+    
+    axis2_qname_t *type_l = axis2_qname_create(env, "operation", 
+        SOAP_11_OPERATION, NULL);
+    
+    AXIS2_WSDL_EXTENSIBLE_ELEMENT_SET_TYPE(soap_operation_impl->soap_operation.
+        extensible_element, env, type_l);
+    
+	return &(soap_operation_impl->soap_operation);
+}
+
+axis2_wsdl_soap_operation_t * AXIS2_CALL 
+axis2_wsdl_soap_operation_create_with_type (axis2_env_t **env, axis2_qname_t *type)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK((*env)->error, type, NULL);
+    axis2_wsdl_soap_operation_t *soap_operation =
+        axis2_wsdl_soap_operation_create(env);
+    
+    AXIS2_WSDL_EXTENSIBLE_ELEMENT_SET_TYPE(soap_operation->extensible_element, env, type);
+    
+    return soap_operation;
+}
+
+/***************************Function implementation****************************/
+
+axis2_status_t AXIS2_CALL 
+axis2_wsdl_soap_operation_free (
+                        axis2_wsdl_soap_operation_t *soap_operation, 
+                        axis2_env_t **env)
+{
+    axis2_wsdl_soap_operation_impl_t *soap_operation_impl = 
+        AXIS2_INTF_TO_IMPL(soap_operation);
+    AXIS2_FUNC_PARAM_CHECK(soap_operation, env, AXIS2_FAILURE);
+	if(NULL != soap_operation->ops)
+        AXIS2_FREE((*env)->allocator, soap_operation->ops);
+    
+    if(NULL != soap_operation_impl->style)
+    {
+        AXIS2_FREE((*env)->allocator, soap_operation_impl->style);
+    }
+    
+    if(NULL != soap_operation_impl->soap_action)
+    {
+        AXIS2_FREE((*env)->allocator, soap_operation_impl->soap_action);
+    }
+    
+    AXIS2_FREE((*env)->allocator, soap_operation_impl);
+    
+	return AXIS2_SUCCESS;
+}
+
+axis2_char_t *AXIS2_CALL
+axis2_wsdl_soap_operation_get_style(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(soap_operation, env, NULL);
+    
+    return AXIS2_INTF_TO_IMPL(soap_operation)->style;
+}
+    
+axis2_status_t AXIS2_CALL
+axis2_wsdl_soap_operation_set_style(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env,
+                                    axis2_char_t *style) 
+{
+    axis2_wsdl_soap_operation_impl_t *soap_operation_impl = AXIS2_INTF_TO_IMPL(
+        soap_operation);
+    
+    AXIS2_FUNC_PARAM_CHECK(soap_operation, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, style, AXIS2_FAILURE);
+    
+    if(soap_operation_impl->style)
+        AXIS2_FREE((*env)->allocator, style);
+    
+    soap_operation_impl->style = style;
+    return AXIS2_SUCCESS;
+}
+
+axis2_char_t * AXIS2_CALL
+axis2_wsdl_soap_operation_get_soap_action(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env) 
+{
+    AXIS2_FUNC_PARAM_CHECK(soap_operation, env, NULL);
+    
+    return AXIS2_INTF_TO_IMPL(soap_operation)->soap_action;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_wsdl_soap_operation_set_soap_action(axis2_wsdl_soap_operation_t *soap_operation,
+                                    axis2_env_t **env,
+                                    axis2_char_t *soap_action) 
+{   
+    axis2_wsdl_soap_operation_impl_t *soap_operation_impl = AXIS2_INTF_TO_IMPL(
+        soap_operation);
+    
+    AXIS2_FUNC_PARAM_CHECK(soap_operation, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, soap_action, AXIS2_FAILURE);
+    
+    if(soap_operation_impl->soap_action)
+        AXIS2_FREE((*env)->allocator, soap_action);
+    
+    soap_operation_impl->soap_action = soap_action;
+    return AXIS2_SUCCESS;
+}