Author: damitha
Date: Thu Nov 6 00:44:30 2008
New Revision: 711797
URL: http://svn.apache.org/viewvc?rev=711797&view=rev
Log:
Code refactoring
Modified:
webservices/savan/trunk/c/build.sh
webservices/savan/trunk/c/include/savan_util.h
webservices/savan/trunk/c/src/client/savan_publishing_client.c
webservices/savan/trunk/c/src/core/savan_sub_processor.c
webservices/savan/trunk/c/src/subscribers/savan_subscriber.c
webservices/savan/trunk/c/src/util/db_mgr.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=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/build.sh (original)
+++ webservices/savan/trunk/c/build.sh Thu Nov 6 00:44:30 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=yes
+./configure --prefix=$AXIS2C_HOME --enable-static=no
--with-axis2=${AXIS2C_HOME}/include/axis2-1.5.0 --enable-filtering=no
make -j30
make install
Modified: webservices/savan/trunk/c/include/savan_util.h
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_util.h?rev=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Thu Nov 6 00:44:30 2008
@@ -323,6 +323,11 @@
axiom_element_t *sub_elem,
savan_subscriber_t *subscriber);
+ AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
+ savan_util_process_savan_specific_subscriber_node(
+ const axutil_env_t *env,
+ axiom_node_t *sub_node);
+
AXIS2_EXTERN axiom_node_t * AXIS2_CALL
savan_util_create_subscriber_node(
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=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/client/savan_publishing_client.c (original)
+++ webservices/savan/trunk/c/src/client/savan_publishing_client.c Thu Nov 6
00:44:30 2008
@@ -158,7 +158,7 @@
{
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] Publishing to
%s", id);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Publishing
to:%s", id);
filter_template_path = savan_util_get_module_param(env, conf,
SAVAN_FILTER_TEMPLATE_PATH);
Modified: webservices/savan/trunk/c/src/core/savan_sub_processor.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/core/savan_sub_processor.c?rev=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/core/savan_sub_processor.c (original)
+++ webservices/savan/trunk/c/src/core/savan_sub_processor.c Thu Nov 6
00:44:30 2008
@@ -245,7 +245,7 @@
{
axis2_char_t *id = NULL;
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan]
Exit:savan_sub_processor_get_status");
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan]
Entry:savan_sub_processor_get_status");
/* Extract the sub id and store it in msg ctx to be used by the msg
receiver */
id = savan_util_get_subscription_id_from_msg(env, msg_ctx);
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=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subscribers/savan_subscriber.c (original)
+++ webservices/savan/trunk/c/src/subscribers/savan_subscriber.c Thu Nov 6
00:44:30 2008
@@ -379,10 +379,7 @@
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");
@@ -404,6 +401,7 @@
address = axis2_endpoint_ref_get_address(subscriber->notify_to, env);
if(address)
{
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Publishing
to:%s", address);
to = axis2_endpoint_ref_create(env, address);
axis2_options_set_to(options, env, to);
}
@@ -414,21 +412,26 @@
#ifdef SAVAN_FILTERING
filtered_payload = savan_util_apply_filter(subscriber, env, payload);
- if(filtered_payload)
- {
- is_filtered = AXIS2_TRUE;
- }
- else
+ if(!filtered_payload)
{
status = axutil_error_get_status_code(env->error);
- return status;
+ if(AXIS2_SUCCESS != status)
+ {
+ 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, filtered_payload);
+ if(filtered_payload)
+ {
+ axis2_svc_client_fire_and_forget(svc_client, env, filtered_payload);
+ }
+ else
+ {
+ 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.*/
Modified: webservices/savan/trunk/c/src/util/db_mgr.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/util/db_mgr.c?rev=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/db_mgr.c (original)
+++ webservices/savan/trunk/c/src/util/db_mgr.c Thu Nov 6 00:44:30 2008
@@ -302,7 +302,6 @@
axis2_char_t *expires = NULL;
axis2_char_t *filter = NULL;
axis2_char_t *topic = NULL;
- axis2_char_t *topic_url = NULL;
int renewed = 0;
axis2_endpoint_ref_t *endto_epr = NULL;
axis2_endpoint_ref_t *notifyto_epr = NULL;
@@ -360,10 +359,10 @@
sprintf(sql_insert, "%s%s", sql_insert, ",filter");
counter++;
}
- topic_url = savan_subscriber_get_topic(subscriber, env);
- if(topic_url)
+ topic = savan_subscriber_get_topic(subscriber, env);
+ if(topic)
{
- topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
+ /*topic = savan_util_get_topic_name_from_topic_url(env,
topic_url);*/
sprintf(sql_insert, "%s%s", sql_insert, ",topic_name");
counter++;
}
@@ -712,11 +711,16 @@
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Sql Insert Error:
%s",
sqlite3_errmsg(dbconn));
}
- if (sqlite3_bind_text(insertqry, 2, topic_url, strlen(topic_url),
SQLITE_STATIC))
+
+ if(topic_url)
{
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Sql Insert Error:
%s",
+ if (sqlite3_bind_text(insertqry, 2, topic_url, strlen(topic_url),
SQLITE_STATIC))
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Sql Insert Error:
%s",
sqlite3_errmsg(dbconn));
+ }
}
+
if (sqlite3_step(insertqry) == SQLITE_DONE)
{
sqlite3_reset(insertqry);
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=711797&r1=711796&r2=711797&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Thu Nov 6 00:44:30 2008
@@ -67,11 +67,6 @@
build_topics_request_om_payload(
const axutil_env_t *env);
-static savan_subscriber_t *
-savan_util_process_savan_specific_subscriber_node(
- const axutil_env_t *env,
- axiom_node_t *sub_node);
-
static axutil_array_list_t *
process_subscriber_list_node(
const axutil_env_t *env,
@@ -183,21 +178,21 @@
axiom_stax_builder_t *om_builder = NULL;
axiom_document_t *document = NULL;
axiom_node_t *node = NULL;
+ axis2_char_t *filter = NULL;
- if(!savan_subscriber_get_filter(subscriber, env))
+ filter = savan_subscriber_get_filter(subscriber, env);
+ if(!filter)
{
return payload;
}
payload_string = axiom_node_to_string(payload, env);
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
- "[savan] payload_string before applying filter:%s", payload_string);
+ "[savan] payload_string before applying filter %s:%s", filter,
payload_string);
payload_doc = (xmlDocPtr)xmlParseDoc((xmlChar*)payload_string);
- #ifdef SAVAN_FILTERING
- savan_util_set_filter_template_for_subscriber(subscriber, env);
- #endif
+ savan_util_set_filter_template_for_subscriber(subscriber, env);
xslt_template_filter =
(xsltStylesheetPtr)savan_subscriber_get_filter_template(subscriber,
env);
@@ -718,7 +713,7 @@
return om_node;
}
-static savan_subscriber_t *
+savan_subscriber_t *AXIS2_CALL
savan_util_process_savan_specific_subscriber_node(
const axutil_env_t *env,
axiom_node_t *subs_node)
@@ -730,6 +725,9 @@
axiom_node_t *id_node = NULL;
axiom_element_t *id_elem = NULL;
axis2_char_t *id = NULL;
+ axiom_node_t *topic_node = NULL;
+ axiom_element_t *topic_elem = NULL;
+ axis2_char_t *topic = NULL;
savan_subscriber_t *subscriber = NULL;
axis2_status_t status = AXIS2_SUCCESS;
@@ -742,6 +740,7 @@
if (!subscriber)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to create a
subscriber instance");
+ axutil_error_set_status_code(env->error, AXIS2_FAILURE);
return NULL;
}
@@ -755,6 +754,14 @@
savan_subscriber_set_id(subscriber, env, id);
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Received subscriber
id:%s", id);
+ /* Topic */
+ qname = axutil_qname_create(env, ELEM_NAME_TOPIC, SAVAN_NAMESPACE, NULL);
+ topic_elem = axiom_element_get_first_child_with_qname(subs_elem, env,
qname, subs_node, &topic_node);
+ axutil_qname_free(qname, env);
+ topic = axiom_element_get_text(topic_elem, env, topic_node);
+ savan_subscriber_set_topic(subscriber, env, topic);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Received subscriber
topic:%s", topic);
+
qname = axutil_qname_create(env, ELEM_NAME_SUBSCRIBE, EVENTING_NAMESPACE,
NULL);
sub_elem = axiom_element_get_first_child_with_qname(subs_elem, env, qname,
subs_node, &sub_node);
axutil_qname_free(qname, env);
@@ -1306,7 +1313,6 @@
axis2_char_t *filter_dialect = NULL;
axis2_endpoint_ref_t *endto_epr = NULL;
- axis2_endpoint_ref_t *topic_epr = NULL;
axis2_endpoint_ref_t *notify_epr = NULL;
axis2_status_t status = AXIS2_SUCCESS;
@@ -1393,21 +1399,6 @@
savan_subscriber_set_filter(subscriber, env, filter);
}
}
-
- if(endto)
- {
- topic_epr = axis2_endpoint_ref_create(env, endto);
- }
-
- if(topic_epr)
- {
- axis2_char_t *endto = NULL;
- endto = (axis2_char_t *) axis2_endpoint_ref_get_address(topic_epr,
env);
- if(endto)
- {
- printf("endto:%s\n", endto);
- }
- }
}
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan]
Exit:savan_util_process_subscriber_node");
@@ -1503,11 +1494,15 @@
axis2_status_t status = AXIS2_FAILURE;
axiom_namespace_t *ns1 = NULL;
axiom_namespace_t *ns2 = NULL;
+ axiom_namespace_t *ns3 = NULL;
axiom_node_t *sub_node = NULL;
axiom_node_t *id_node = NULL;
+ axiom_node_t *topic_node = NULL;
axiom_element_t *subs_elem = NULL;
axiom_element_t* id_elem = NULL;
+ axiom_element_t* topic_elem = NULL;
axis2_char_t *id = NULL;
+ axis2_char_t *topic = NULL;
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[savan] Entry:savan_util_create_savan_specific_subscriber_node");
@@ -1537,6 +1532,12 @@
ns2 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
id_elem = axiom_element_create(env, subs_node, ELEM_NAME_ID, ns2,
&id_node);
axiom_element_set_text(id_elem, env, id, id_node);
+
+ /* Topic element */
+ topic = savan_subscriber_get_topic(subscriber, env);
+ ns3 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
+ topic_elem = axiom_element_create(env, subs_node, ELEM_NAME_TOPIC, ns3,
&topic_node);
+ axiom_element_set_text(topic_elem, env, topic, topic_node);
sub_node = savan_util_create_subscriber_node(env, subscriber, subs_node);
if(!sub_node)