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