Author: damitha
Date: Fri Nov 7 03:21:15 2008
New Revision: 712111
URL: http://svn.apache.org/viewvc?rev=712111&view=rev
Log:
Refactoring Savan/C code
Modified:
webservices/savan/trunk/c/include/savan_publishing_client.h
webservices/savan/trunk/c/include/savan_util.h
webservices/savan/trunk/c/samples/server/publisher/publisher_skeleton.c
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/subs_mgr/subs_mgr.c
webservices/savan/trunk/c/src/util/savan_util.c
Modified: webservices/savan/trunk/c/include/savan_publishing_client.h
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_publishing_client.h?rev=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_publishing_client.h (original)
+++ webservices/savan/trunk/c/include/savan_publishing_client.h Fri Nov 7
03:21:15 2008
@@ -51,7 +51,8 @@
savan_publishing_client_publish(
savan_publishing_client_t *client,
const axutil_env_t *env,
- axiom_node_t *payload);
+ axiom_node_t *payload,
+ axis2_char_t *topic_url);
AXIS2_EXTERN savan_publishing_client_t * AXIS2_CALL
savan_publishing_client_create(
Modified: webservices/savan/trunk/c/include/savan_util.h
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_util.h?rev=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Fri Nov 7 03:21:15 2008
@@ -268,7 +268,8 @@
const axutil_env_t *env,
axis2_char_t *topic,
axis2_char_t *subs_mgr_url,
- void *svc_client);
+ void *svc_client,
+ axis2_conf_t *conf);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
savan_util_get_topic_name_from_topic_url(
@@ -310,7 +311,8 @@
const axutil_env_t *env,
axis2_char_t *subs_id,
axis2_char_t *subs_mgr_url,
- void *s_client);
+ void *s_client,
+ axis2_conf_t *conf);
void *AXIS2_CALL
savan_util_get_svc_client(
@@ -326,7 +328,8 @@
AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
savan_util_process_savan_specific_subscriber_node(
const axutil_env_t *env,
- axiom_node_t *sub_node);
+ axiom_node_t *sub_node,
+ axis2_conf_t *conf);
AXIS2_EXTERN axiom_node_t * AXIS2_CALL
savan_util_create_subscriber_node(
@@ -340,6 +343,12 @@
savan_subscriber_t *subscriber,
axiom_node_t *parent_node);
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ savan_util_populate_topic(
+ const axutil_env_t *env,
+ axis2_char_t *topic_url,
+ axis2_conf_t *conf);
+
/** @} */
#ifdef __cplusplus
}
Modified:
webservices/savan/trunk/c/samples/server/publisher/publisher_skeleton.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/samples/server/publisher/publisher_skeleton.c?rev=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/samples/server/publisher/publisher_skeleton.c
(original)
+++ webservices/savan/trunk/c/samples/server/publisher/publisher_skeleton.c Fri
Nov 7 03:21:15 2008
@@ -223,6 +223,7 @@
axis2_conf_t *conf = NULL;
axis2_svc_t *svc = NULL;
axiom_attribute_t *test_data = NULL;
+ axis2_char_t *topic_url = "http://localhost:9090/axis2/services/publisher";
publisher_data_t *mydata = (publisher_data_t*)data;
main_env = mydata->env;
@@ -255,7 +256,7 @@
axiom_element_set_text(test_elem, env, "test data", test_node);
/*printf("%s\n", axiom_node_to_string(test_node,
env));*/
- savan_publishing_client_publish(pub_client, env, test_node);
+ savan_publishing_client_publish(pub_client, env, test_node,
topic_url);
savan_publishing_client_free(pub_client, env);
}
AXIS2_SLEEP(5);
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=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/client/savan_publishing_client.c (original)
+++ webservices/savan/trunk/c/src/client/savan_publishing_client.c Fri Nov 7
03:21:15 2008
@@ -71,7 +71,8 @@
savan_publishing_client_publish(
savan_publishing_client_t *client,
const axutil_env_t *env,
- axiom_node_t *payload)
+ axiom_node_t *payload,
+ axis2_char_t *topic_url)
{
axutil_param_t *param = NULL;
axis2_svc_t *pubs_svc = NULL;
@@ -80,7 +81,6 @@
axis2_module_desc_t *module_desc = NULL;
int i = 0, size = 0;
axutil_param_t *topic_param = NULL;
- axis2_char_t *topic_url = NULL;
axutil_qname_t *qname = NULL;
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan]
Entry:savan_publishing_client_publish");
@@ -88,14 +88,17 @@
conf = client->conf;
pubs_svc = client->svc;
- topic_param = axis2_svc_get_param(pubs_svc, env, SAVAN_TOPIC_URL);
- if (!topic_param)
+ if(!topic_url)
{
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] TopicURL param not
available");
- return AXIS2_SUCCESS;
- }
+ topic_param = axis2_svc_get_param(pubs_svc, env, SAVAN_TOPIC_URL);
+ if (!topic_param)
+ {
+ 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);
+ topic_url = axutil_param_get_value(topic_param, env);
+ }
qname = axutil_qname_create(env, SAVAN_MODULE, NULL, NULL);
module_desc = axis2_conf_get_module(conf, env, qname);
@@ -127,7 +130,7 @@
}
subs_store = savan_util_get_subscriber_list_from_remote_subs_mgr(env,
topic_url,
- subs_mgr_url, svc_client);
+ subs_mgr_url, svc_client, conf);
}
else
{
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=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/core/savan_sub_processor.c (original)
+++ webservices/savan/trunk/c/src/core/savan_sub_processor.c Fri Nov 7
03:21:15 2008
@@ -342,6 +342,12 @@
if(topic_url)
{
savan_subscriber_set_topic_url(subscriber, env, topic_url);
+ status = savan_util_populate_topic(env, topic_url, conf);
+ if(status != AXIS2_SUCCESS)
+ {
+ axutil_error_set_status_code(env->error, AXIS2_FAILURE);
+ return NULL;
+ }
}
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
Modified: webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c?rev=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c Fri Nov 7 03:21:15 2008
@@ -73,6 +73,14 @@
if(topic_url)
{
savan_subscriber_set_topic_url(subscriber, env, topic_url);
+
+ status = savan_util_populate_topic(env, topic_url, conf);
+ if(status != AXIS2_SUCCESS)
+ {
+ axutil_error_set_status_code(env->error, AXIS2_FAILURE);
+ return NULL;
+ }
+
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
"[savan] Subscriber will be added to the topic:%s ", topic_url);
}
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=712111&r1=712110&r2=712111&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Fri Nov 7 03:21:15 2008
@@ -70,7 +70,8 @@
static axutil_array_list_t *
process_subscriber_list_node(
const axutil_env_t *env,
- axiom_node_t *subs_list_node);
+ axiom_node_t *subs_list_node,
+ axis2_conf_t *conf);
static axutil_array_list_t *
process_topic_list_node(
@@ -648,7 +649,8 @@
const axutil_env_t *env,
axis2_char_t *subs_id,
axis2_char_t *subs_mgr_url,
- void *s_client)
+ void *s_client,
+ axis2_conf_t *conf)
{
axis2_endpoint_ref_t* endpoint_ref = NULL;
axis2_options_t *options = NULL;
@@ -669,7 +671,7 @@
ret_node = axis2_svc_client_send_receive(svc_client, env, payload);
if (ret_node)
{
- subscriber = savan_util_process_savan_specific_subscriber_node(env,
ret_node);
+ subscriber = savan_util_process_savan_specific_subscriber_node(env,
ret_node, conf);
}
else
{
@@ -713,7 +715,8 @@
savan_subscriber_t *AXIS2_CALL
savan_util_process_savan_specific_subscriber_node(
const axutil_env_t *env,
- axiom_node_t *subs_node)
+ axiom_node_t *subs_node,
+ axis2_conf_t *conf)
{
axiom_element_t *subs_elem = NULL;
axiom_node_t *sub_node = NULL;
@@ -760,6 +763,13 @@
topic_url = axiom_element_get_text(topic_elem, env, topic_node);
savan_subscriber_set_topic_url(subscriber, env, topic_url);
+ status = savan_util_populate_topic(env, topic_url, conf);
+ if(status != AXIS2_SUCCESS)
+ {
+ axutil_error_set_status_code(env->error, AXIS2_FAILURE);
+ return NULL;
+ }
+
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Received subscriber
topic:%s", topic_url);
}
@@ -789,7 +799,8 @@
const axutil_env_t *env,
axis2_char_t *topic,
axis2_char_t *subs_mgr_url,
- void *s_client)
+ void *s_client,
+ axis2_conf_t *conf)
{
axis2_endpoint_ref_t* endpoint_ref = NULL;
axis2_options_t *options = NULL;
@@ -811,7 +822,7 @@
ret_node = axis2_svc_client_send_receive(svc_client, env, payload);
if (ret_node)
{
- subscriber_list = process_subscriber_list_node(env, ret_node);
+ subscriber_list = process_subscriber_list_node(env, ret_node, conf);
}
else
{
@@ -856,7 +867,8 @@
static axutil_array_list_t *
process_subscriber_list_node(
const axutil_env_t *env,
- axiom_node_t *subs_list_node)
+ axiom_node_t *subs_list_node,
+ axis2_conf_t *conf)
{
axiom_element_t *subs_list_element = NULL;
axiom_children_qname_iterator_t *subs_iter = NULL;
@@ -894,7 +906,7 @@
if(subs_node) /* Iterate Savan specific subscriber elements */
{
/* Now read Savan specific Subscribe element */
- subscriber =
savan_util_process_savan_specific_subscriber_node(env, subs_node);
+ subscriber =
savan_util_process_savan_specific_subscriber_node(env, subs_node, conf);
if(!subscriber)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
@@ -1552,3 +1564,46 @@
return subs_node;
}
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_util_populate_topic(
+ const axutil_env_t *env,
+ axis2_char_t *topic_url,
+ axis2_conf_t *conf)
+{
+ axis2_status_t status = AXIS2_SUCCESS;
+ axis2_char_t *dbname = NULL;
+ axutil_array_list_t *topic_store = NULL;
+ axis2_char_t sql_retrieve[256];
+ int size = 0;
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan]
Entry:savan_util_populate_topic");
+
+ dbname = savan_util_get_dbname(env, conf),
+
+ sprintf(sql_retrieve, "select topic_name from topic;");
+
+ topic_store = savan_db_mgr_retrieve_all(env, savan_util_get_dbname(env,
conf),
+ savan_db_mgr_topic_find_callback, sql_retrieve);
+
+ size = axutil_array_list_size(topic_store, env);
+ if(size == 0)
+ {
+ axis2_char_t *topic_name = NULL;
+
+ topic_name = savan_util_get_topic_name_from_topic_url(env, topic_url);
+ status = savan_db_mgr_insert_topic(env, dbname, topic_name, topic_url);
+ if(status == AXIS2_SUCCESS)
+ {
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Topic %s added",
topic_url);
+ }
+ else
+ {
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Topic %s could
not be added", topic_url);
+ }
+ }
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan]
Exit:savan_util_populate_topic");
+
+ return status;
+}
+