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