Author: damitha
Date: Fri Oct 31 21:24:11 2008
New Revision: 709646

URL: http://svn.apache.org/viewvc?rev=709646&view=rev
Log:
Makeing Savan filtering work

Modified:
    webservices/savan/trunk/c/include/savan_constants.h
    webservices/savan/trunk/c/include/savan_util.h
    webservices/savan/trunk/c/samples/client/subscriber/subscriber.c
    webservices/savan/trunk/c/src/subscribers/savan_subscriber.c
    webservices/savan/trunk/c/src/util/savan_util.c

Modified: webservices/savan/trunk/c/include/savan_constants.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_constants.h?rev=709646&r1=709645&r2=709646&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_constants.h (original)
+++ webservices/savan/trunk/c/include/savan_constants.h Fri Oct 31 21:24:11 2008
@@ -129,6 +129,7 @@
 #define SAVAN_SVC_CLIENT  "svc_client"
 #define SAVAN_FILTER_TEMPLATE_PATH  "savan_filter_template_path"
 #define SAVAN_FILTER_DIALECT "Dialect"
+#define SAVAN_SUBSCRIPTION_MANAGER "subscription"
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/savan/trunk/c/include/savan_util.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_util.h?rev=709646&r1=709645&r2=709646&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Fri Oct 31 21:24:11 2008
@@ -107,12 +107,12 @@
        * @param subscriber, pointer to the subscriber
        * @param env, pointer to the environment
        * @param payload, pointer to the payload.
-       * returns true, if it evaluates to success. 
-       * If so, send the entire msg into the sink.
+       * returns filtered payload. 
+       * If filtered payload is not NULL send it to the sink.
        * Else nothing is sent.
        */ 
 
-       axis2_status_t AXIS2_CALL
+       axiom_node_t *AXIS2_CALL
        savan_util_apply_filter(
        savan_subscriber_t *subscriber,
        const axutil_env_t *env,

Modified: webservices/savan/trunk/c/samples/client/subscriber/subscriber.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/samples/client/subscriber/subscriber.c?rev=709646&r1=709645&r2=709646&view=diff
==============================================================================
--- webservices/savan/trunk/c/samples/client/subscriber/subscriber.c (original)
+++ webservices/savan/trunk/c/samples/client/subscriber/subscriber.c Fri Oct 31 
21:24:11 2008
@@ -94,11 +94,11 @@
      * Following commented lines show how to use filtering when savan server 
side is
      * built and running with filtering enabled.
      */
-    axutil_hash_set(savan_options, SAVAN_OP_KEY_FILTER, AXIS2_HASH_KEY_STRING,
+    /*axutil_hash_set(savan_options, SAVAN_OP_KEY_FILTER, 
AXIS2_HASH_KEY_STRING,
         "//[EMAIL PROTECTED]'5']");
 
     axutil_hash_set(savan_options, SAVAN_OP_KEY_FILTER_DIALECT, 
AXIS2_HASH_KEY_STRING,
-        DEFAULT_FILTER_DIALECT);
+        DEFAULT_FILTER_DIALECT);*/
 
     /* Create a savan client */
     savan_client = savan_client_create(env);

Modified: webservices/savan/trunk/c/src/subscribers/savan_subscriber.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/subscribers/savan_subscriber.c?rev=709646&r1=709645&r2=709646&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subscribers/savan_subscriber.c (original)
+++ webservices/savan/trunk/c/src/subscribers/savan_subscriber.c Fri Oct 31 
21:24:11 2008
@@ -379,6 +379,10 @@
     axis2_status_t status = AXIS2_SUCCESS;
     axis2_endpoint_ref_t *to = NULL;
     const axis2_char_t *address = NULL;
+    #ifdef SAVAN_FILTERING
+    axiom_node_t *filtered_payload = NULL;
+    #endif
+    axis2_bool_t is_filtered = AXIS2_TRUE;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] 
Start:savan_subscriber_publish");
        
@@ -409,15 +413,22 @@
        /* Apply the filter, and check whether it evaluates to success */
 
     #ifdef SAVAN_FILTERING
-       if (savan_util_apply_filter(subscriber, env, payload) == AXIS2_FAILURE)
-       {
-               return AXIS2_SUCCESS;
-       }
+       filtered_payload = savan_util_apply_filter(subscriber, env, payload);
+    if(filtered_payload)
+    {
+        is_filtered = AXIS2_TRUE;
+    }
+    else
+    {
+        status = axutil_error_get_status_code(env->error);
+        return status;
+    }
+
     #endif
        
     /* Set service client options */
     axis2_svc_client_set_options(svc_client, env, options);
-    axis2_svc_client_fire_and_forget(svc_client, env, payload);
+    axis2_svc_client_fire_and_forget(svc_client, env, filtered_payload);
 
     axiom_node_detach(payload, env); /*insert this to prevent payload 
corruption in subsequent 
                                        "publish" calls with some payload.*/

Modified: webservices/savan/trunk/c/src/util/savan_util.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/util/savan_util.c?rev=709646&r1=709645&r2=709646&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Fri Oct 31 21:24:11 2008
@@ -168,7 +168,7 @@
 #endif
 
 #ifdef SAVAN_FILTERING
-axis2_status_t AXIS2_CALL
+axiom_node_t *AXIS2_CALL
 savan_util_apply_filter(
     savan_subscriber_t *subscriber,
     const axutil_env_t *env,
@@ -186,7 +186,7 @@
 
        if(!savan_subscriber_get_filter(subscriber, env))
        {
-               return AXIS2_SUCCESS;
+               return payload;
        }
 
     payload_string = axiom_node_to_string(payload, env);
@@ -211,6 +211,8 @@
 
     if(buffer)
     {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[savan] payload_string after applying filter:%s", buffer);
         reader = axiom_xml_reader_create_for_memory(env, 
                 (char*)buffer,axutil_strlen((char*)buffer), NULL, 
AXIS2_XML_PARSER_TYPE_BUFFER);
     }
@@ -243,11 +245,13 @@
 
        if(!node)
        {
-               return AXIS2_FAILURE;
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Applying filter for 
payload failed");
+        axutil_error_set_status_code(env->error, AXIS2_FAILURE);
+               return NULL;
        }
        else
        {
-               return AXIS2_SUCCESS;
+               return node;
        }
 }
 #endif


Reply via email to