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 da...@apache.org on 2006/06/01 07:41:32 UTC

svn commit: r410760 - in /webservices/axis2/trunk/c/util: include/axis2_dll_desc.h include/axis2_generic_obj.h include/axis2_url.h src/class_loader.c src/dll_desc.c src/generic_obj.c src/url.c

Author: damitha
Date: Wed May 31 22:41:32 2006
New Revision: 410760

URL: http://svn.apache.org/viewvc?rev=410760&view=rev
Log:
in dll_desc a new attribute called type is added. In class
loader added a general case to load an object

Modified:
    webservices/axis2/trunk/c/util/include/axis2_dll_desc.h
    webservices/axis2/trunk/c/util/include/axis2_generic_obj.h
    webservices/axis2/trunk/c/util/include/axis2_url.h
    webservices/axis2/trunk/c/util/src/class_loader.c
    webservices/axis2/trunk/c/util/src/dll_desc.c
    webservices/axis2/trunk/c/util/src/generic_obj.c
    webservices/axis2/trunk/c/util/src/url.c

Modified: webservices/axis2/trunk/c/util/include/axis2_dll_desc.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/include/axis2_dll_desc.h?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/include/axis2_dll_desc.h (original)
+++ webservices/axis2/trunk/c/util/include/axis2_dll_desc.h Wed May 31 22:41:32 2006
@@ -138,7 +138,18 @@
     set_timestamp) (axis2_dll_desc_t *dll_desc,
                             const axis2_env_t *env,
                             AXIS2_TIME_T timestamp);
-    
+
+    axis2_status_t (AXIS2_CALL *
+    set_error_code) (
+            axis2_dll_desc_t *dll_desc,
+            const axis2_env_t *env,
+            axis2_error_codes_t error_code);
+
+    axis2_error_codes_t (AXIS2_CALL *
+    get_error_code) (
+            axis2_dll_desc_t *dll_desc,
+            const axis2_env_t *env);
+            
     AXIS2_TIME_T (AXIS2_CALL *
     get_timestamp) (axis2_dll_desc_t *dll_desc,
                             const axis2_env_t *env);                            
@@ -227,6 +238,12 @@
     
 #define AXIS2_DLL_DESC_SET_TIMESTAMP(dll_desc, env, timestamp) \
     ((dll_desc)->ops->set_timestamp(dll_desc, env, timestamp))
+    
+#define AXIS2_DLL_DESC_SET_ERROR_CODE(dll_desc, env, error_code) \
+    ((dll_desc)->ops->set_error_code(dll_desc, env, error_code))
+
+#define AXIS2_DLL_DESC_GET_ERROR_CODE(dll_desc, env) \
+    ((dll_desc)->ops->get_error_code(dll_desc, env))
 
 #define AXIS2_DLL_DESC_CREATE_PLATFORM_SPECIFIC_DLL_NAME(dll_desc, env, class_name) \
     ((dll_desc)->ops->create_platform_specific_dll_name(dll_desc, env, class_name))

Modified: webservices/axis2/trunk/c/util/include/axis2_generic_obj.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/include/axis2_generic_obj.h?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/include/axis2_generic_obj.h (original)
+++ webservices/axis2/trunk/c/util/include/axis2_generic_obj.h Wed May 31 22:41:32 2006
@@ -45,7 +45,8 @@
 {
 
     axis2_status_t (AXIS2_CALL *
-    free) (axis2_generic_obj_t *generic_obj, 
+    free) (
+            axis2_generic_obj_t *generic_obj, 
             const axis2_env_t *env);
 
     axis2_status_t (AXIS2_CALL *
@@ -57,10 +58,23 @@
     set_value) (axis2_generic_obj_t *generic_obj,
                 const axis2_env_t *env,
                 void *value);
+
     void *(AXIS2_CALL *
     get_value) (axis2_generic_obj_t *generic_obj,
                             const axis2_env_t *env);
 
+    axis2_status_t (AXIS2_CALL *
+    set_type) (
+            axis2_generic_obj_t *generic_obj,
+            axis2_env_t **env,
+            int type);
+
+    int (AXIS2_CALL *
+    get_type) (
+            axis2_generic_obj_t *generic_obj,
+            axis2_env_t **env);
+
+
 };
     
      
@@ -92,7 +106,13 @@
 
 #define AXIS2_GENERIC_OBJ_GET_VALUE(generic_obj, env) \
         ((generic_obj)->ops->get_value(generic_obj, env))
-                                        
+ 
+#define AXIS2_GENERIC_OBJ_SET_TYPE(generic_obj, env, type) \
+		((generic_obj)->ops->set_type (generic_obj, env, type))
+
+#define AXIS2_GENERIC_OBJ_GET_TYPE(generic_obj, env) \
+        ((generic_obj)->ops->get_type(generic_obj, env))
+                                                
 /*************************** End of function macros ***************************/
 
 

Modified: webservices/axis2/trunk/c/util/include/axis2_url.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/include/axis2_url.h?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/include/axis2_url.h (original)
+++ webservices/axis2/trunk/c/util/include/axis2_url.h Wed May 31 22:41:32 2006
@@ -92,7 +92,12 @@
 	axis2_char_t* (AXIS2_CALL *
 	get_path)(axis2_url_t *url, 
               const axis2_env_t *env);
-			  
+
+    axis2_url_t* (AXIS2_CALL *
+    clone) (
+            axis2_url_t *url,
+            axis2_env_t **env);
+
     axis2_status_t (AXIS2_CALL *
 	free) (axis2_url_t *url, 
            const axis2_env_t *env);
@@ -115,7 +120,6 @@
                   int port, 
                   axis2_char_t *path);
 
-
 AXIS2_EXTERN axis2_url_t * AXIS2_CALL
 axis2_url_parse_string(const axis2_env_t *env, 
                        axis2_char_t *str_url);
@@ -148,6 +152,9 @@
 		
 #define AXIS2_URL_GET_PATH(url, env) \
 		((url)->ops->get_path(url, env))
+		
+#define AXIS2_URL_CLONE(url, env) \
+		((url)->ops->clone(url, env))
 		
 #define AXIS2_URL_FREE(url, env) \
 		((url)->ops->free(url, env))

Modified: webservices/axis2/trunk/c/util/src/class_loader.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/class_loader.c?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/class_loader.c (original)
+++ webservices/axis2/trunk/c/util/src/class_loader.c Wed May 31 22:41:32 2006
@@ -57,12 +57,14 @@
     void *module = NULL; /* axis2_module */
     void *transport_recv = NULL; /* axis2_transport_receiver */
     void *transport_sender = NULL; /* axis2_transport_sender */
+    void *obj = NULL;
     CREATE_FUNCT create_funct = NULL;
     DELETE_FUNCT delete_funct = NULL;
     AXIS2_DLHANDLER dl_handler = NULL;
     axis2_dll_desc_t *dll_desc = NULL;
     axis2_status_t status = AXIS2_FAILURE;
     axis2_dll_type_t dll_type = AXIS2_SVC_DLL;
+    axis2_error_codes_t error_code = AXIS2_ERROR_NONE;
     
     dll_desc = AXIS2_PARAM_GET_VALUE(impl_info_param, env);
     if(!dll_desc)
@@ -125,6 +127,10 @@
         return NULL;
     }
     dll_type = AXIS2_DLL_DESC_GET_TYPE(dll_desc, env);
+    /* TODO Following blocks differ only by error message. Try to
+     * reduce them into one block
+     */
+    error_code = AXIS2_DLL_DESC_GET_ERROR_CODE(dll_desc, env) ;
     if(AXIS2_SVC_DLL == dll_type)
     {
         create_funct(&svc_skeli, env);
@@ -212,7 +218,22 @@
         }
         return transport_sender;
     }
-
+    else
+    {
+        create_funct(&obj, env);
+        if(NULL == obj)
+        {
+            axis2_class_loader_unload_lib(env, dll_desc);
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Object create function returned NULL");
+            AXIS2_ERROR_SET(env->error, error_code, AXIS2_FAILURE);
+            return NULL;
+        }
+        else
+        {
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Object loaded successfully");
+        }
+        return obj;
+    }
 
     return NULL;    
 }

Modified: webservices/axis2/trunk/c/util/src/dll_desc.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/dll_desc.c?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/dll_desc.c (original)
+++ webservices/axis2/trunk/c/util/src/dll_desc.c Wed May 31 22:41:32 2006
@@ -33,6 +33,7 @@
     CREATE_FUNCT create_funct;
     DELETE_FUNCT delete_funct;
     AXIS2_TIME_T timestamp;
+    axis2_error_codes_t error_code;
     
     
 } axis2_dll_desc_impl_t;
@@ -105,6 +106,17 @@
                                 const axis2_env_t *env,
                                 AXIS2_TIME_T timestamp);
 
+axis2_status_t AXIS2_CALL
+axis2_dll_desc_set_error_code (
+        axis2_dll_desc_t *dll_desc,
+        const axis2_env_t *env,
+        axis2_error_codes_t error_code);
+
+axis2_error_codes_t AXIS2_CALL
+axis2_dll_desc_get_error_code (
+        axis2_dll_desc_t *dll_desc,
+        const axis2_env_t *env);
+
 AXIS2_TIME_T AXIS2_CALL
 axis2_dll_desc_get_timestamp (axis2_dll_desc_t *dll_desc,
                                 const axis2_env_t *env);
@@ -140,6 +152,7 @@
     dll_desc_impl->delete_funct = NULL;
     dll_desc_impl->dll_desc.ops = NULL;
     dll_desc_impl->timestamp = 0;
+    dll_desc_impl->error_code = AXIS2_ERROR_NONE;
     
     dll_desc_impl->dll_desc.ops = (axis2_dll_desc_ops_t *) AXIS2_MALLOC(
         env->allocator, sizeof(axis2_dll_desc_ops_t));
@@ -166,6 +179,8 @@
     dll_desc_impl->dll_desc.ops->get_type = axis2_dll_desc_get_type;
     dll_desc_impl->dll_desc.ops->get_timestamp = axis2_dll_desc_get_timestamp;
     dll_desc_impl->dll_desc.ops->set_timestamp = axis2_dll_desc_set_timestamp;
+	dll_desc_impl->dll_desc.ops->set_error_code = axis2_dll_desc_set_error_code;					
+	dll_desc_impl->dll_desc.ops->get_error_code = axis2_dll_desc_get_error_code;					
 	dll_desc_impl->dll_desc.ops->create_platform_specific_dll_name = 
         axis2_dll_desc_create_platform_specific_dll_name;					
 	return &(dll_desc_impl->dll_desc);
@@ -404,6 +419,33 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     return AXIS2_INTF_TO_IMPL(dll_desc)->timestamp;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_dll_desc_set_error_code (
+        axis2_dll_desc_t *dll_desc,
+        const axis2_env_t *env,
+        axis2_error_codes_t error_code)
+{
+    axis2_dll_desc_impl_t *dll_desc_impl = NULL;
+    
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    dll_desc_impl = AXIS2_INTF_TO_IMPL(dll_desc);
+
+    dll_desc_impl->error_code = error_code; 
+}
+
+axis2_error_codes_t AXIS2_CALL
+axis2_dll_desc_get_error_code (
+        axis2_dll_desc_t *dll_desc,
+        const axis2_env_t *env)
+{
+    axis2_dll_desc_impl_t *dll_desc_impl = NULL;
+    
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    dll_desc_impl = AXIS2_INTF_TO_IMPL(dll_desc);
+
+    return dll_desc_impl->error_code; 
 }
 
 axis2_char_t* AXIS2_CALL

Modified: webservices/axis2/trunk/c/util/src/generic_obj.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/generic_obj.c?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/generic_obj.c (original)
+++ webservices/axis2/trunk/c/util/src/generic_obj.c Wed May 31 22:41:32 2006
@@ -20,6 +20,7 @@
 {
     axis2_generic_obj_t generic_obj;
     AXIS2_FREE_VOID_ARG free_func;
+    int type;
     void *value;
     
 }axis2_generic_obj_impl_t;
@@ -45,6 +46,18 @@
 axis2_generic_obj_get_value(axis2_generic_obj_t *generic_obj,
                             const axis2_env_t *env);
 
+
+axis2_status_t AXIS2_CALL
+axis2_generic_obj_set_type(
+        axis2_generic_obj_t *generic_obj,
+        axis2_env_t **env,
+        int type);
+
+int AXIS2_CALL
+axis2_generic_obj_get_type(
+        axis2_generic_obj_t *generic_obj,
+        axis2_env_t **env);
+
 /************************** End of function prototypes ************************/
 
 axis2_generic_obj_t *AXIS2_CALL 
@@ -78,6 +91,8 @@
     generic_obj_impl->generic_obj.ops->set_free_func = axis2_generic_obj_set_free_func;
     generic_obj_impl->generic_obj.ops->set_value = axis2_generic_obj_set_value;
 	generic_obj_impl->generic_obj.ops->get_value = axis2_generic_obj_get_value;
+    generic_obj_impl->generic_obj.ops->set_type = axis2_generic_obj_set_type;
+	generic_obj_impl->generic_obj.ops->get_type = axis2_generic_obj_get_type;
 	return &(generic_obj_impl->generic_obj);
 }
 
@@ -157,3 +172,32 @@
 
     return generic_obj_impl->value;
 }
+
+axis2_status_t AXIS2_CALL
+axis2_generic_obj_set_type(
+        axis2_generic_obj_t *generic_obj,
+        axis2_env_t **env,
+        int type)
+{
+    axis2_generic_obj_impl_t *generic_obj_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    generic_obj_impl = AXIS2_INTF_TO_IMPL(generic_obj);
+   
+    generic_obj_impl->type = type;
+    return AXIS2_SUCCESS;
+}
+
+int AXIS2_CALL
+axis2_generic_obj_get_type(
+        axis2_generic_obj_t *generic_obj,
+        axis2_env_t **env)
+{
+    axis2_generic_obj_impl_t *generic_obj_impl = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    generic_obj_impl = AXIS2_INTF_TO_IMPL(generic_obj);
+
+    return generic_obj_impl->type;
+}
+

Modified: webservices/axis2/trunk/c/util/src/url.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/url.c?rev=410760&r1=410759&r2=410760&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/url.c (original)
+++ webservices/axis2/trunk/c/util/src/url.c Wed May 31 22:41:32 2006
@@ -65,6 +65,11 @@
 axis2_url_open (axis2_url_t *url, const axis2_env_t *env);
 axis2_status_t AXIS2_CALL
 axis2_url_close (axis2_url_t *url, const axis2_env_t *env);
+
+axis2_url_t* AXIS2_CALL
+axis2_url_clone(
+        axis2_url_t *url,
+        axis2_env_t **env);
 /***************************** End of function headers ************************/
 
 AXIS2_EXTERN axis2_url_t * AXIS2_CALL 
@@ -124,6 +129,7 @@
 	url_impl->url.ops->get_port = axis2_url_get_port;
 	url_impl->url.ops->set_path = axis2_url_set_path;
 	url_impl->url.ops->get_path = axis2_url_get_path;
+    url_impl->url.ops->clone = axis2_url_clone;
     url_impl->url.ops->free = axis2_url_free;
                         
 	return &(url_impl->url);
@@ -414,3 +420,21 @@
     AXIS2_ENV_CHECK(env, NULL);
     return AXIS2_INTF_TO_IMPL(url)->path;
 }
+
+axis2_url_t* AXIS2_CALL
+axis2_url_clone(
+        axis2_url_t *url,
+        axis2_env_t **env)
+{
+    axis2_url_impl_t *url_impl = NULL;
+    
+    AXIS2_ENV_CHECK(env, NULL);
+    url_impl = AXIS2_INTF_TO_IMPL(url);
+
+    return axis2_url_create(env, url_impl->protocol,
+                              url_impl->server,
+                              url_impl->port,
+                              url_impl->path);
+}
+
+



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org