Author: samisa
Date: Sun Nov 13 20:10:59 2005
New Revision: 344029
URL: http://svn.apache.org/viewcvs?rev=344029&view=rev
Log:
Added derived referance as handler is a base class and we would benefit from
having plymorphism in
handler when handling array list of handlers in phase
Modified:
webservices/axis2/trunk/c/include/axis2_handler.h
webservices/axis2/trunk/c/modules/core/engine/src/handler.c
Modified: webservices/axis2/trunk/c/include/axis2_handler.h
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_handler.h?rev=344029&r1=344028&r2=344029&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_handler.h (original)
+++ webservices/axis2/trunk/c/include/axis2_handler.h Sun Nov 13 20:10:59 2005
@@ -118,6 +118,17 @@
*/
struct axis2_handler_desc* (AXIS2_CALL * get_handler_desc) (struct
axis2_handler * handler,
axis2_env_t **env);
+ /**
+ * derived struct accessor
+ */
+ void* (AXIS2_CALL *get_derived)(struct axis2_handler * handler,
+ axis2_env_t **env);
+
+ /**
+ * derived struct mutator
+ */
+ axis2_status_t (AXIS2_CALL *set_derived)(struct axis2_handler *
handler,
+ axis2_env_t **env,
void* derived);
} axis2_handler_ops_t;
/**
@@ -142,6 +153,8 @@
#define AXIS2_HANDLER_GET_NAME(handler, env)
((handler)->ops->get_name(handler, env))
#define AXIS2_HANDLER_GET_PARAM(handler, env, name)
((handler)->ops->get_param(handler, env, name))
#define AXIS2_HANDLER_GET_HANDLER_DESC(handler, env)
((handler)->ops->get_handler_desc(handler, env))
+#define AXIS2_HANDLER_GET_DERIVED(handler, env)
((handler)->ops->get_derived(handler, env))
+#define AXIS2_HANDLER_SET_DERIVED(handler, env, derived)
((handler)->ops->set_derived(handler, env, derived))
/** @} */
#ifdef __cplusplus
Modified: webservices/axis2/trunk/c/modules/core/engine/src/handler.c
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/src/handler.c?rev=344029&r1=344028&r2=344029&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/src/handler.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/src/handler.c Sun Nov 13
20:10:59 2005
@@ -21,6 +21,8 @@
{
/** Handler struct */
axis2_handler_t handler;
+ /** Derived struct */
+ void* derived;
/** Handler description. This is a referance, hence a shallow copy. */
axis2_handler_desc_t *handler_desc;
} axis2_handler_impl_t;
@@ -48,6 +50,10 @@
struct axis2_handler_desc
*handler_desc);
axis2_handler_desc_t* AXIS2_CALL axis2_handler_get_handler_desc (struct
axis2_handler * handler,
axis2_env_t **env);
+void* AXIS2_CALL axis2_handler_get_derived(struct axis2_handler * handler,
+ axis2_env_t **env);
+axis2_status_t AXIS2_CALL axis2_handler_set_derived(struct axis2_handler *
handler,
+ axis2_env_t **env,
void* derived);
axis2_handler_t* AXIS2_CALL axis2_handler_create(axis2_env_t **env)
@@ -64,6 +70,7 @@
return NULL;
}
+ handler_impl->derived = NULL;
handler_impl->handler_desc = NULL;
/* initialize operations */
@@ -84,6 +91,8 @@
handler_impl->handler.ops->get_name = axis2_handler_get_name;
handler_impl->handler.ops->get_param = axis2_handler_get_param;
handler_impl->handler.ops->get_handler_desc =
axis2_handler_get_handler_desc;
+ handler_impl->handler.ops->get_derived= axis2_handler_get_derived;
+ handler_impl->handler.ops->set_derived= axis2_handler_set_derived;
return &(handler_impl->handler);
}
@@ -172,4 +181,19 @@
{
AXIS2_FUNC_PARAM_CHECK(handler, env, NULL);
return AXIS2_INTF_TO_IMPL(handler)->handler_desc;
+}
+
+void* AXIS2_CALL axis2_handler_get_derived(struct axis2_handler * handler,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAM_CHECK(handler, env, NULL);
+ return AXIS2_INTF_TO_IMPL(handler)->derived;
+}
+axis2_status_t AXIS2_CALL axis2_handler_set_derived(struct axis2_handler *
handler,
+ axis2_env_t **env,
void* derived)
+{
+ AXIS2_FUNC_PARAM_CHECK(handler, env, AXIS2_FAILURE);
+ AXIS2_INTF_TO_IMPL(handler)->derived = derived;
+
+ return AXIS2_SUCCESS;
}