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


Reply via email to