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/11/03 09:09:17 UTC

svn commit: r330502 - in /webservices/axis2/trunk/c: include/axis2_parameter.h modules/core/description/src/parameter.c

Author: samisa
Date: Thu Nov  3 00:09:05 2005
New Revision: 330502

URL: http://svn.apache.org/viewcvs?rev=330502&view=rev
Log:
parameter implementation, initial compiling version

Added:
    webservices/axis2/trunk/c/modules/core/description/src/parameter.c
Modified:
    webservices/axis2/trunk/c/include/axis2_parameter.h

Modified: webservices/axis2/trunk/c/include/axis2_parameter.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_parameter.h?rev=330502&r1=330501&r2=330502&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_parameter.h (original)
+++ webservices/axis2/trunk/c/include/axis2_parameter.h Thu Nov  3 00:09:05 2005
@@ -0,0 +1,147 @@
+/*
+ * 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_PARAMETER_H
+#define AXIS2_PARAMETER_H
+
+/**
+ * @file axis2_parameter.h
+ * @brief Axis2 parameter interface
+ */
+
+#include <axis2_defines.h>
+#include <axis2_environment.h>
+#include <axis2_om_node.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    struct axis2_parameter;
+    struct axis2_parameter_ops;
+
+/**
+ * @defgroup axis2_parameter Handlers
+ * @ingroup axis2_core_description
+ * @{
+ */
+    
+/**
+  * TEXT PARAMETER
+  */
+  static const int AXIS2_TEXT_PARAMETER = 0;
+
+/**
+ * Field DOM_PARAMETER
+ */
+  static const int AXIS2_DOM_PARAMETER = 1;
+    
+
+/**
+ *   \brief parameter operations struct
+ */
+AXIS2_DECLARE_DATA   typedef struct axis2_parameter_ops 
+    {
+    
+    /**
+     * Parameter name accessor
+     * @return name of the parameter
+     */
+    axis2_char_t* (AXIS2_CALL *get_name)(struct axis2_parameter *parameter, axis2_env_t **env);
+
+    /**
+     * Parameter value accessor
+     * @return Object
+     */
+    void* (AXIS2_CALL *get_value)(struct axis2_parameter *parameter, axis2_env_t **env);
+
+    /**
+     * parameter name mutator
+     * @param name
+     */
+     axis2_status_t (AXIS2_CALL *set_name)(struct axis2_parameter *parameter, axis2_env_t **env, axis2_char_t *name);
+
+    /**
+     * Method setValue
+     *
+     * @param value
+     */
+     axis2_status_t (AXIS2_CALL *set_value)(struct axis2_parameter *parameter, axis2_env_t **env, void *value);
+
+    /**
+     * Method isLocked
+     *
+     * @return boolean
+     */
+     axis2_bool_t (AXIS2_CALL *is_locked)(struct axis2_parameter *parameter, axis2_env_t **env);
+
+    /**
+     * Method setLocked
+     *
+     * @param value
+     */
+     axis2_status_t (AXIS2_CALL *set_locked)(struct axis2_parameter *parameter, axis2_env_t **env, axis2_bool_t value);
+
+    /**
+     * Method getParameterType
+     *
+     * @return int
+     */
+     int (AXIS2_CALL *get_parameter_type)(struct axis2_parameter *parameter, axis2_env_t **env);
+
+     axis2_status_t (AXIS2_CALL *set_parameter_type)(struct axis2_parameter *parameter, axis2_env_t **env, int type);
+
+    /**
+     *  Paramter can be any thing it can be XML element with number of child elements , so if some
+     * one wants to access the XML elemet we need to store that , at the deployment time , to store
+     * the XMLelment of the parameter can use this method it will store whole
+     * <parameter name="ServiceClass1" locked="false">org.apache.axis2.sample.echo.EchoImpl</parameter>
+     * element
+     * @param element  <code>OMElement<code>
+     */
+
+     axis2_status_t (AXIS2_CALL *set_parameter_element)(struct axis2_parameter *parameter, axis2_env_t **env, axis2_om_node_t *element);
+
+    /**
+     *  To get the whole paramter element
+     * @return <code>OMElement<code>
+     */
+     axis2_om_node_t* (AXIS2_CALL *get_parameter_element)(struct axis2_parameter *parameter, axis2_env_t **env);
+         
+     axis2_status_t (AXIS2_CALL *free)(struct axis2_parameter *parameter, axis2_env_t **env);
+} axis2_parameter_ops_t;
+ 
+/** 
+ * \brief Parameter struct
+ */
+    typedef struct axis2_parameter
+    {
+        /** Parameter related operations */
+        axis2_parameter_ops_t *ops;
+    } axis2_parameter_t;
+
+/**
+ * creates parameter struct
+ */
+AXIS2_DECLARE(axis2_parameter_t*) axis2_parameter_create(axis2_env_t **env, axis2_char_t *name, void *value);
+/** @} */
+    
+#ifdef __cplusplus
+}
+#endif
+
+#endif    /* AXIS2_PARAMETER_H */

Added: webservices/axis2/trunk/c/modules/core/description/src/parameter.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/parameter.c?rev=330502&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/parameter.c (added)
+++ webservices/axis2/trunk/c/modules/core/description/src/parameter.c Thu Nov  3 00:09:05 2005
@@ -0,0 +1,173 @@
+/*
+ * 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_parameter.h>
+#include <axis2.h>
+
+typedef struct axis2_parameter_impl
+{
+    /** Parameter struct */
+    axis2_parameter_t parameter;
+    /** Parameter name */
+    axis2_char_t *name;
+    /** Parameter value */
+    void* value;
+    /** Parameter locked? */
+    axis2_bool_t locked;
+    /** Parameter type */
+    int type; /*default is AXIS2_TEXT_PARAMETER */
+    /**
+     * to store the parameter element
+     * <parameter name="ServiceClass1" locked="false">
+     * org.apache.axis2.sample.echo.EchoImpl</parameter>
+     */
+    axis2_om_node_t *parameter_element ;
+} axis2_parameter_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(parameter) ((axis2_parameter_impl_t *)parameter)
+
+axis2_char_t* AXIS2_CALL axis2_parameter_get_name(struct axis2_parameter *parameter, axis2_env_t **env);
+void* AXIS2_CALL axis2_parameter_get_value(struct axis2_parameter *parameter, axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_parameter_set_name(struct axis2_parameter *parameter, axis2_env_t **env, axis2_char_t *name);
+axis2_status_t AXIS2_CALL axis2_parameter_set_value(struct axis2_parameter *parameter, axis2_env_t **env, void *value);
+axis2_bool_t AXIS2_CALL axis2_parameter_is_locked(struct axis2_parameter *parameter, axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_parameter_set_locked(struct axis2_parameter *parameter, axis2_env_t **env, axis2_bool_t value);
+int AXIS2_CALL axis2_parameter_get_parameter_type(struct axis2_parameter *parameter, axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_parameter_set_parameter_type(struct axis2_parameter *parameter, axis2_env_t **env, int type);
+axis2_status_t AXIS2_CALL axis2_parameter_set_parameter_element(struct axis2_parameter *parameter, axis2_env_t **env, axis2_om_node_t *element);
+axis2_om_node_t* AXIS2_CALL axis2_parameter_get_parameter_element(struct axis2_parameter *parameter, axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_parameter_free(struct axis2_parameter *parameter, axis2_env_t **env);
+
+axis2_parameter_t* AXIS2_CALL axis2_parameter_create(axis2_env_t **env, axis2_char_t *name, void *value)
+{
+    axis2_parameter_impl_t *parameter_impl = NULL;
+    
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    parameter_impl = AXIS2_MALLOC( (*env)->allocator, sizeof(axis2_parameter_t) );
+    if (!parameter_impl)
+    { 
+        AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, AXIS2_ERROR_NO_MEMORY);
+        AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_FAILURE);
+        return NULL;        
+    }
+    
+    parameter_impl->name = name; /* shallow copy */
+    parameter_impl->value = value; /* shallow copy */
+    parameter_impl->locked = AXIS2_FALSE;
+    parameter_impl->type = AXIS2_TEXT_PARAMETER;
+    parameter_impl->parameter_element = NULL;
+    
+    /* initialize operations */
+    parameter_impl->parameter.ops->get_name = axis2_parameter_get_name;
+    parameter_impl->parameter.ops->get_value = axis2_parameter_get_value;
+    parameter_impl->parameter.ops->set_name = axis2_parameter_set_name; 
+    parameter_impl->parameter.ops->set_value = axis2_parameter_set_value; 
+    parameter_impl->parameter.ops->is_locked = axis2_parameter_is_locked;
+    parameter_impl->parameter.ops->set_locked = axis2_parameter_set_locked;
+    parameter_impl->parameter.ops->get_parameter_type = axis2_parameter_get_parameter_type;
+    parameter_impl->parameter.ops->set_parameter_type = axis2_parameter_set_parameter_type;
+    parameter_impl->parameter.ops->set_parameter_element = axis2_parameter_set_parameter_element;
+    parameter_impl->parameter.ops->get_parameter_element = axis2_parameter_get_parameter_element;
+    parameter_impl->parameter.ops->free = axis2_parameter_free;
+    
+    return &(parameter_impl->parameter);
+}
+
+axis2_char_t* AXIS2_CALL axis2_parameter_get_name(struct axis2_parameter *parameter, axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, NULL);
+    
+    return AXIS2_INTF_TO_IMPL(parameter)->name;
+}
+
+void* AXIS2_CALL axis2_parameter_get_value(struct axis2_parameter *parameter, axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, NULL);
+    
+    return AXIS2_INTF_TO_IMPL(parameter)->value;
+}
+
+axis2_status_t AXIS2_CALL axis2_parameter_set_name(struct axis2_parameter *parameter, axis2_env_t **env, axis2_char_t *name)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    AXIS2_INTF_TO_IMPL(parameter)->name = name; /* shallow copy */
+    return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL axis2_parameter_set_value(struct axis2_parameter *parameter, axis2_env_t **env, void *value)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    AXIS2_INTF_TO_IMPL(parameter)->value = value; /* shallow copy */
+    return AXIS2_SUCCESS;
+}
+
+axis2_bool_t AXIS2_CALL axis2_parameter_is_locked(struct axis2_parameter *parameter, axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    return AXIS2_INTF_TO_IMPL(parameter)->locked;
+}
+
+axis2_status_t AXIS2_CALL axis2_parameter_set_locked(struct axis2_parameter *parameter, axis2_env_t **env, axis2_bool_t value)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    AXIS2_INTF_TO_IMPL(parameter)->locked = value;
+    return AXIS2_SUCCESS;
+}
+
+int AXIS2_CALL axis2_parameter_get_parameter_type(struct axis2_parameter *parameter, axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    return AXIS2_INTF_TO_IMPL(parameter)->type;
+}
+
+axis2_status_t AXIS2_CALL axis2_parameter_set_parameter_type(struct axis2_parameter *parameter, axis2_env_t **env, int type)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    AXIS2_INTF_TO_IMPL(parameter)->type = type;
+    return AXIS2_SUCCESS;
+
+}
+
+axis2_status_t AXIS2_CALL axis2_parameter_set_parameter_element(struct axis2_parameter *parameter, axis2_env_t **env, axis2_om_node_t *element)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    AXIS2_INTF_TO_IMPL(parameter)->parameter_element = element; /* shallow copy */
+    return AXIS2_SUCCESS;
+
+}
+
+axis2_om_node_t* AXIS2_CALL axis2_parameter_get_parameter_element(struct axis2_parameter *parameter, axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    
+    return AXIS2_INTF_TO_IMPL(parameter)->parameter_element;
+}
+
+axis2_status_t AXIS2_CALL axis2_parameter_free(struct axis2_parameter *parameter, axis2_env_t **env)
+{
+    /* no need to free members here as we do not make deep copies in create */
+    AXIS2_FUNC_PARAMETER_CHECK(parameter, env, AXIS2_FAILURE);
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(parameter));    
+    return AXIS2_SUCCESS;
+}