Author: damitha
Date: Mon Oct 13 22:50:16 2008
New Revision: 704322

URL: http://svn.apache.org/viewvc?rev=704322&view=rev
Log:
Fixing AXIS2C-1273

Modified:
    webservices/savan/trunk/c/build.sh
    webservices/savan/trunk/c/include/savan_constants.h
    webservices/savan/trunk/c/include/savan_subscriber.h
    webservices/savan/trunk/c/include/savan_util.h
    webservices/savan/trunk/c/samples/client/subscriber/subscriber.c
    webservices/savan/trunk/c/src/client/savan_publishing_client.c
    webservices/savan/trunk/c/src/data/module.xml
    webservices/savan/trunk/c/src/subscribers/savan_subscriber.c
    webservices/savan/trunk/c/src/util/savan_util.c

Modified: webservices/savan/trunk/c/build.sh
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/build.sh?rev=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/build.sh (original)
+++ webservices/savan/trunk/c/build.sh Mon Oct 13 22:50:16 2008
@@ -1,6 +1,6 @@
 #!/bin/bash
 ./autogen.sh
-./configure --prefix=$AXIS2C_HOME --enable-static=no 
--with-axis2=${AXIS2C_HOME}/include/axis2-1.5.0 --enable-filtering=no
+./configure --prefix=$AXIS2C_HOME --enable-static=no 
--with-axis2=${AXIS2C_HOME}/include/axis2-1.5.0 --enable-filtering=yes
 make -j30
 make install
 

Modified: webservices/savan/trunk/c/include/savan_constants.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_constants.h?rev=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_constants.h (original)
+++ webservices/savan/trunk/c/include/savan_constants.h Mon Oct 13 22:50:16 2008
@@ -124,6 +124,7 @@
 #define SAVAN_TOPIC_LIST       "savan_topic_list"
 #define SAVAN_DB "savan_db"
 #define SAVAN_MODULE  "savan"
+#define SAVAN_FILTER_TEMPLATE_PATH  "savan_filter_template_path"
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/savan/trunk/c/include/savan_subscriber.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_subscriber.h?rev=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_subscriber.h (original)
+++ webservices/savan/trunk/c/include/savan_subscriber.h Mon Oct 13 22:50:16 
2008
@@ -292,6 +292,17 @@
     savan_subscriber_get_topic(
         savan_subscriber_t *subscriber,
         const axutil_env_t *env);
+    
+    axis2_status_t AXIS2_CALL
+    savan_subscriber_set_filter_template_path(
+        savan_subscriber_t *subscriber,
+        const axutil_env_t *env,
+        axis2_char_t *path);
+
+    axis2_char_t *AXIS2_CALL
+    savan_subscriber_get_filter_template_path(
+        savan_subscriber_t *subscriber,
+        const axutil_env_t *env);
 
 /** @} */
 #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=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Mon Oct 13 22:50:16 2008
@@ -279,6 +279,19 @@
         axis2_conf_t *conf);
 
     /**
+    * Get the module parameter value by passing the module parameter name.
+    * @param env pointer to environment struct
+    * @param conf Axis2/C configuration structure
+    * @param name module parameter name
+    * @return module parameter value
+    */
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    savan_util_get_module_param(
+        const axutil_env_t *env,
+        axis2_conf_t *conf,
+        axis2_char_t *name);
+
+    /**
     * Get the topics registered in a subscription manager
     * @param env pointer to environment struct
     * @param subs_mgr_url url of the subscription manager

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=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/samples/client/subscriber/subscriber.c (original)
+++ webservices/savan/trunk/c/samples/client/subscriber/subscriber.c Mon Oct 13 
22:50:16 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/client/savan_publishing_client.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/client/savan_publishing_client.c?rev=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/client/savan_publishing_client.c (original)
+++ webservices/savan/trunk/c/src/client/savan_publishing_client.c Mon Oct 13 
22:50:16 2008
@@ -92,10 +92,7 @@
     axis2_char_t *topic_url = NULL;
     axutil_qname_t *qname = NULL;
 
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                    "[savan]Start:savan_publishing_client_publish");
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] 
Start:savan_publishing_client_publish");
    
     conf = client->conf;
     pubs_svc = client->svc;
@@ -103,8 +100,7 @@
     topic_param = axis2_svc_get_param(pubs_svc, env, "TopicURL");
     if (!topic_param)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                        "[savan]TopicURL param not available");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] TopicURL param not 
available");
         return AXIS2_SUCCESS;
     }
     topic_url = axutil_param_get_value(topic_param, env);
@@ -160,8 +156,7 @@
 
     if (!subs_store)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Subscriber store is NULL"); 
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Subscriber store is 
NULL"); 
         return AXIS2_SUCCESS; /* returning FAILURE will break handler chain */
     }
 
@@ -172,10 +167,14 @@
         sub = (savan_subscriber_t *)axutil_array_list_get(subs_store, env, i);
         if (sub)
         {
+            axis2_char_t *filter_template_path = NULL;
             axis2_char_t *id = savan_subscriber_get_id(sub, env);
             AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                            "[savan][out handler]Publishing to %s", id);
+                            "[savan] Publishing to %s", id);
 
+            filter_template_path = savan_util_get_module_param(env, conf, 
+                    SAVAN_FILTER_TEMPLATE_PATH);
+            savan_subscriber_set_filter_template_path(sub, env, 
filter_template_path);
             if(!savan_subscriber_publish(sub, env, payload))
             {
                 axis2_endpoint_ref_t *notifyto = 
@@ -188,14 +187,13 @@
                 }
 
                 AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                                "Publishing to the Data Sink:%s proviced by \
-subscriber:%s Failed. Check whether the Data Sink url is correct", 
-                                address, id);
+                        "Publishing to the Data Sink:%s proviced by 
subscriber:%s Failed. Check "\
+                        "whether the Data Sink url is correct", address, id);
             }
         }
     }
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                    "[savan]End:savan_publishing_client_publish");
+
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] 
End:savan_publishing_client_publish");
     
     return AXIS2_SUCCESS;
 }

Modified: webservices/savan/trunk/c/src/data/module.xml
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/data/module.xml?rev=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/data/module.xml (original)
+++ webservices/savan/trunk/c/src/data/module.xml Mon Oct 13 22:50:16 2008
@@ -2,6 +2,7 @@
    <!--parameter name="SubscriptionMgrURL" 
locked="xsd:false">http://localhost:9092/axis2/services/subscription</parameter-->
    <!-- Database connection parameters -->
    <parameter name="savan_db" locked="false">/tmp/savan_db</parameter>
+   <parameter name="savan_filter_template_path" 
locked="false">/axis2c/deploy/modules/savan/template.xsl</parameter>
     <inflow>
         <handler name="SavanInHandler" class="mod_savan">
             <order phase="SavanPhase"/>

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=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subscribers/savan_subscriber.c (original)
+++ webservices/savan/trunk/c/src/subscribers/savan_subscriber.c Mon Oct 13 
22:50:16 2008
@@ -41,6 +41,7 @@
 
        #ifdef SAVAN_FILTERING
     xsltStylesheetPtr xslt_filter;
+    axis2_char_t *filter_template_path;
        #endif
 };
 
@@ -52,8 +53,6 @@
 {
     savan_subscriber_t *subscriber = NULL;
     
-    AXIS2_ENV_CHECK(env, NULL);
-    
     subscriber = AXIS2_MALLOC(env->allocator, sizeof(savan_subscriber_t));
      
     if (!subscriber)
@@ -73,6 +72,7 @@
     subscriber->renewed = AXIS2_FALSE;
        #ifdef SAVAN_FILTERING
        subscriber->xslt_filter = NULL;
+       subscriber->filter_template_path = NULL;
        #endif
         
     return subscriber;
@@ -105,6 +105,8 @@
        #ifdef SAVAN_FILTERING
     if(subscriber->xslt_filter)
         AXIS2_FREE(env->allocator, subscriber->xslt_filter);
+    if(subscriber->filter_template_path)
+        AXIS2_FREE(env->allocator, subscriber->filter_template_path);
        #endif
     if(subscriber->filter_dialect)
         AXIS2_FREE(env->allocator, subscriber->filter_dialect);
@@ -118,8 +120,6 @@
     savan_subscriber_t *subscriber,
     const axutil_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
        #ifdef SAVAN_FILTERING
     return subscriber->xslt_filter;
        #else
@@ -135,8 +135,6 @@
     const axutil_env_t *env,
     void *xslt_filter_template)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
        if (subscriber->filter == NULL)
        {
                return AXIS2_SUCCESS;
@@ -153,6 +151,34 @@
     return AXIS2_SUCCESS;
 }
 
+axis2_status_t AXIS2_CALL
+savan_subscriber_set_filter_template_path(
+    savan_subscriber_t *subscriber,
+    const axutil_env_t *env,
+    axis2_char_t *path)
+{
+       #ifdef SAVAN_FILTERING
+    if (subscriber->filter_template_path)
+    {
+        AXIS2_FREE(env->allocator, subscriber->filter_template_path);
+        subscriber->filter_template_path = NULL;
+    }
+    subscriber->filter_template_path = axutil_strdup(env, path);
+       #endif
+    return AXIS2_SUCCESS;
+}
+
+axis2_char_t *AXIS2_CALL
+savan_subscriber_get_filter_template_path(
+    savan_subscriber_t *subscriber,
+    const axutil_env_t *env)
+{
+       #ifdef SAVAN_FILTERING
+    return subscriber->filter_template_path;
+       #endif
+}
+
+
 
/******************************************************************************/
 
 AXIS2_EXTERN axis2_char_t * AXIS2_CALL
@@ -160,8 +186,6 @@
     savan_subscriber_t *subscriber,
     const axutil_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     return subscriber->id;
 }
 
@@ -173,8 +197,6 @@
     const axutil_env_t *env,
     const axis2_char_t *id)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     /* If id is already set, free it */
     if (subscriber->id != NULL)
     {
@@ -196,8 +218,6 @@
        const axutil_env_t *env,
        const axis2_char_t *filter_dialect)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-       
        if(subscriber->filter_dialect != NULL)
        {
                AXIS2_FREE(env->allocator, subscriber->filter_dialect);
@@ -226,8 +246,6 @@
     const axutil_env_t *env,
     axis2_endpoint_ref_t *end_to)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     subscriber->end_to = end_to;
 
     return AXIS2_SUCCESS;
@@ -251,8 +269,6 @@
     const axutil_env_t *env,
     axis2_endpoint_ref_t *notify_to)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     subscriber->notify_to = notify_to;
 
     return AXIS2_SUCCESS;
@@ -276,8 +292,6 @@
     const axutil_env_t *env,
     const axis2_char_t *mode)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     /* if already set, free it */
     if (subscriber->delivery_mode != NULL)
     {
@@ -298,8 +312,6 @@
        savan_subscriber_t *subscriber,
        const axutil_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
        return subscriber->delivery_mode;
 }
 
@@ -311,8 +323,6 @@
     const axutil_env_t *env,
     const axis2_char_t *expires)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     /* if already set, free it */
     if (subscriber->expires != NULL)
     {
@@ -333,8 +343,6 @@
     savan_subscriber_t *subscriber,
     const axutil_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     return subscriber->expires;
 }
 
@@ -346,8 +354,6 @@
     const axutil_env_t *env,
     const axis2_char_t *filter)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     /* if already set, free it */
     if (subscriber->filter != NULL)
     {
@@ -424,7 +430,7 @@
        
     /* Set service client options */
     axis2_svc_client_set_options(svc_client, env, options);
-    status = axis2_svc_client_send_robust(svc_client, env, payload);
+    axis2_svc_client_fire_and_forget(svc_client, env, payload);
 
     axiom_node_detach(payload, env); /*insert this to prevent payload 
corruption in subsequent 
                                        "publish" calls with some payload.*/
@@ -467,8 +473,6 @@
     const axutil_env_t *env,
     axis2_char_t *topic)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
     subscriber->topic = axutil_strdup(env, topic);
 
     return AXIS2_SUCCESS;

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=704322&r1=704321&r2=704322&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Mon Oct 13 22:50:16 2008
@@ -150,16 +150,25 @@
     savan_subscriber_t *subscriber,
     const axutil_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, NULL);
     xsltStylesheetPtr xslt_template_xslt = NULL;
     xmlDocPtr xslt_template_xml = NULL;
+    axis2_char_t *filter_template_path = NULL;
 
        if(savan_subscriber_get_filter(subscriber, env) == NULL)
        {
                return AXIS2_SUCCESS;
        }
 
-    xslt_template_xml = xmlParseFile("../modules/savan/template.xsl");
+    filter_template_path = 
savan_subscriber_get_filter_template_path(subscriber, env);
+    if(!filter_template_path)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Filter template path 
not set");
+        return AXIS2_FAILURE;
+    }
+
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] filter_template_path:%s", 
filter_template_path);
+
+    xslt_template_xml = xmlParseFile(filter_template_path);
     xmlChar* xpathExpr = (xmlChar*)"//@select";
     xmlChar* value = (xmlChar*)savan_subscriber_get_filter(subscriber,env);
     xmlXPathContextPtr xpathCtx = xmlXPathNewContext(xslt_template_xml);
@@ -1409,4 +1418,29 @@
     return path;
 }
 
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+savan_util_get_module_param(
+    const axutil_env_t *env,
+    axis2_conf_t *conf,
+    axis2_char_t *name)
+{
+    axis2_char_t *value = NULL;
+    axis2_module_desc_t *module_desc = NULL;
+    axutil_qname_t *qname = NULL;
+
+    qname = axutil_qname_create(env, SAVAN_MODULE, NULL, NULL);
+    module_desc = axis2_conf_get_module(conf, env, qname);
+    if(module_desc)
+    {
+        axutil_param_t *param = NULL;
+        param = axis2_module_desc_get_param(module_desc, env, name);
+        if(param)
+        {
+            value = (axis2_char_t *) axutil_param_get_value(param, env);
+        }
+    }
+    axutil_qname_free(qname, env);
+    
+    return value;
+}
 


Reply via email to