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