You are viewing a plain text version of this content. The canonical link for it is here.
Posted to savan-dev@ws.apache.org by da...@apache.org on 2009/03/18 06:19:13 UTC

svn commit: r755481 - in /webservices/savan/trunk/c: include/savan_filter_mod.h src/client/savan_publishing_client.c src/filters/common/filter_mod.c src/filters/xpath/filter_mod.c src/storage/sqlite/storage_mgr.c src/util/savan_util.c

Author: damitha
Date: Wed Mar 18 05:19:12 2009
New Revision: 755481

URL: http://svn.apache.org/viewvc?rev=755481&view=rev
Log: (empty)

Modified:
    webservices/savan/trunk/c/include/savan_filter_mod.h
    webservices/savan/trunk/c/src/client/savan_publishing_client.c
    webservices/savan/trunk/c/src/filters/common/filter_mod.c
    webservices/savan/trunk/c/src/filters/xpath/filter_mod.c
    webservices/savan/trunk/c/src/storage/sqlite/storage_mgr.c
    webservices/savan/trunk/c/src/util/savan_util.c

Modified: webservices/savan/trunk/c/include/savan_filter_mod.h
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_filter_mod.h?rev=755481&r1=755480&r2=755481&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_filter_mod.h (original)
+++ webservices/savan/trunk/c/include/savan_filter_mod.h Wed Mar 18 05:19:12 2009
@@ -52,7 +52,7 @@
                 savan_filter_mod_t *filter,
                 const axutil_env_t *env);
 
-    axiom_node_t *(AXIS2_CALL *
+    axis2_bool_t (AXIS2_CALL *
             apply)(
                 savan_filter_mod_t *filter, 
                 const axutil_env_t *env,
@@ -95,9 +95,9 @@
  * @param env environment object
  * @param subscriber subscriber instant
  * @param payload payload to which the filter is applied
- * @return filtered payload
+ * @return filter apply or not
  */
-AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
 savan_filter_mod_apply(
     savan_filter_mod_t *filtermod, 
     const axutil_env_t *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=755481&r1=755480&r2=755481&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/client/savan_publishing_client.c (original)
+++ webservices/savan/trunk/c/src/client/savan_publishing_client.c Wed Mar 18 05:19:12 2009
@@ -182,7 +182,7 @@
     axis2_status_t status = AXIS2_SUCCESS;
     axis2_endpoint_ref_t *to = NULL;
     const axis2_char_t *address = NULL;
-    axiom_node_t *filtered_payload = NULL;
+    axis2_bool_t filter_apply = AXIS2_TRUE;
     axis2_endpoint_ref_t *notifyto = NULL;
 
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_publishing_client_publish_to_subscriber");
@@ -221,23 +221,20 @@
     if(filtermod && savan_subscriber_get_filter(subscriber, env))
     {
 	    /* Apply the filter, and check whether it evaluates to success */
-        filtered_payload = savan_filter_mod_apply(filtermod ,env, subscriber, payload);
-        if(!filtered_payload)
+        filter_apply = savan_filter_mod_apply(filtermod ,env, subscriber, payload);
+        if(!filter_apply)
         {
             status = axutil_error_get_status_code(env->error);
             if(AXIS2_SUCCESS != status)
             {
+                axiom_node_detach(payload, env);
                 return status;
             }
         }
     }
 #endif
 
-    if(filtered_payload)
-    {
-        axis2_svc_client_fire_and_forget(svc_client, env, filtered_payload);
-    }
-    else
+    if(filter_apply)
     {
         axis2_svc_client_fire_and_forget(svc_client, env, payload);
     }

Modified: webservices/savan/trunk/c/src/filters/common/filter_mod.c
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/filters/common/filter_mod.c?rev=755481&r1=755480&r2=755481&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/filters/common/filter_mod.c (original)
+++ webservices/savan/trunk/c/src/filters/common/filter_mod.c Wed Mar 18 05:19:12 2009
@@ -32,7 +32,7 @@
      return filtermod->ops->free(filtermod, env);
 }
 
-AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
 savan_filter_mod_apply(
     savan_filter_mod_t *filtermod, 
     const axutil_env_t *env,

Modified: webservices/savan/trunk/c/src/filters/xpath/filter_mod.c
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/filters/xpath/filter_mod.c?rev=755481&r1=755480&r2=755481&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/filters/xpath/filter_mod.c (original)
+++ webservices/savan/trunk/c/src/filters/xpath/filter_mod.c Wed Mar 18 05:19:12 2009
@@ -64,7 +64,7 @@
     savan_filter_mod_t *filtermod,
     const axutil_env_t *env);
 
-AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
 savan_xpath_filter_mod_apply(
     savan_filter_mod_t *filtermod,
     const axutil_env_t *env,
@@ -138,23 +138,18 @@
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_xpath_filter_mod_free");
 }
 
-AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
 savan_xpath_filter_mod_apply(
     savan_filter_mod_t *filtermod,
     const axutil_env_t *env,
     savan_subscriber_t *subscriber,
     axiom_node_t *payload)
 {
-    xmlChar *buffer = NULL;
-    int size = 0;
     axis2_char_t *payload_string = NULL;
     xmlDocPtr payload_doc = NULL;
     xsltStylesheetPtr xslt_template_filter = NULL;
-    axiom_xml_reader_t *reader = NULL;
-    axiom_stax_builder_t *om_builder = NULL;
-    axiom_document_t *document = NULL;
-    axiom_node_t *node = NULL;
     xmlChar *xfilter = NULL;
+    xmlDocPtr result_doc;
     savan_xpath_filter_mod_t *filtermodimpl = NULL;
 
     filtermodimpl = SAVAN_INTF_TO_IMPL(filtermod);
@@ -165,7 +160,7 @@
 	xfilter = (xmlChar *) savan_subscriber_get_filter(subscriber, env);
 	if(!xfilter)
 	{
-		return payload;
+		return AXIS2_FALSE;
 	}
 
     payload_string = axiom_node_to_string(payload, env);
@@ -177,61 +172,17 @@
     xslt_template_filter = (xsltStylesheetPtr) savan_xpath_filter_mod_get_filter_template(env, 
             filtermodimpl->filter_template_path, xfilter);
 
-    xmlDocPtr result_doc = (xmlDocPtr)xsltApplyStylesheet(xslt_template_filter, payload_doc, NULL);
+    result_doc = (xmlDocPtr)xsltApplyStylesheet(xslt_template_filter, payload_doc, NULL);
 
     if(result_doc)
     {
-        xmlDocDumpMemory(result_doc, &buffer, &size);
-    }
-
-    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);
-    }
-
-    if(reader)
-    {
-        om_builder = axiom_stax_builder_create(env, reader);
-    }
-
-    if(om_builder)
-    {
-        document = axiom_stax_builder_get_document(om_builder, env);
-    }
-
-    if(document)
-    {
-        node = axiom_document_build_all(document, env);
-    }
-
-    if(om_builder)
-    {
-        axiom_stax_builder_free_self(om_builder, env);
-    }
-
-    /*free(payload_string);*/ /* In apache freeing this give seg fault:damitha */
-    if(result_doc)
-    {
+        /*free(payload_string);*/ /* In apache freeing this give seg fault:damitha */
 	    xmlFreeDoc(result_doc);
+        return AXIS2_TRUE;
     }
 
-	if(!node)
-	{
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Applying filter for payload failed");
-        AXIS2_ERROR_SET(env->error, SAVAN_ERROR_APPLYING_FILTER_FAILED, AXIS2_FAILURE);
-		return NULL;
-	}
-	else
-	{
-		return node;
-	}
-
-    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
-            "[savan] Exit:savan_xpath_filter_mod_apply");
-    return NULL;
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_xpath_filter_mod_apply");
+    return AXIS2_FALSE;
 }
 
 static xsltStylesheetPtr 

Modified: webservices/savan/trunk/c/src/storage/sqlite/storage_mgr.c
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/storage/sqlite/storage_mgr.c?rev=755481&r1=755480&r2=755481&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/storage/sqlite/storage_mgr.c (original)
+++ webservices/savan/trunk/c/src/storage/sqlite/storage_mgr.c Wed Mar 18 05:19:12 2009
@@ -868,7 +868,7 @@
     args->data = NULL;
 
     sprintf(sql_retrieve, "select id, end_to, notify_to, delivery_mode, "\
-        "expires, filter, renewed, topic_name from subscriber "\
+        "expires, filter, renewed from subscriber "\
         "where id='%s';", subcriber_id);
 
     rc = sqlite3_exec(dbconn, sql_retrieve, savan_sqlite_storage_mgr_subs_retrieve_callback, args, 

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=755481&r1=755480&r2=755481&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Wed Mar 18 05:19:12 2009
@@ -275,7 +275,12 @@
     axutil_allocator_switch_to_global_pool(env->allocator);
     subscriber = savan_storage_mgr_retrieve_subscriber(storage_mgr, env, sub_id);
     axutil_allocator_switch_to_local_pool(env->allocator);
-    
+   
+    if(!subscriber)
+    {
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_SUBSCRIBER_RETRIEVE_ERROR, AXIS2_FAILURE);
+        return NULL;
+    }
     /* Get soap envelop and extract the subscription id */
 
     envelope =  axis2_msg_ctx_get_soap_envelope(msg_ctx, env);