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;    
 }


Reply via email to