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;
+}