You are viewing a plain text version of this content. The canonical link for it is here.
Posted to savan-dev@ws.apache.org by da...@apache.org on 2007/09/06 13:09:59 UTC

svn commit: r573220 - in /webservices/savan/trunk/c: samples/client/subscriber/subscriber.c src/subs_mgr/subs_mgr.c src/util/savan_util.c

Author: damitha
Date: Thu Sep  6 04:09:58 2007
New Revision: 573220

URL: http://svn.apache.org/viewvc?rev=573220&view=rev
Log:
Improving performance

Modified:
    webservices/savan/trunk/c/samples/client/subscriber/subscriber.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/samples/client/subscriber/subscriber.c
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/samples/client/subscriber/subscriber.c?rev=573220&r1=573219&r2=573220&view=diff
==============================================================================
--- webservices/savan/trunk/c/samples/client/subscriber/subscriber.c (original)
+++ webservices/savan/trunk/c/samples/client/subscriber/subscriber.c Thu Sep  6 04:09:58 2007
@@ -41,7 +41,7 @@
     axutil_hash_t *savan_options = NULL;
     axis2_status_t status = AXIS2_FAILURE;
     savan_client_t *savan_client = NULL;
-    axis2_char_t *expire_time = NULL;
+    axis2_char_t *subs_status = NULL;
 
     /* Set up the environment */
     env = axutil_env_create_all("subscriber.log", AXIS2_LOG_LEVEL_TRACE);
@@ -112,15 +112,11 @@
     endpoint_ref = axis2_options_get_to(options, env);
     axis2_endpoint_ref_set_address(endpoint_ref, env, address);
     status = savan_client_renew(savan_client, env, svc_client, savan_options);
-    expire_time = savan_client_get_status(savan_client, env, svc_client);
     if (status == AXIS2_SUCCESS)
     {
         printf("Renew successful\n");
-        if (expire_time)
-            printf("New expire time: %s\n", expire_time);
     }
 
-
     AXIS2_SLEEP(1);
 
     printf("\n***************************************\n");
@@ -129,11 +125,11 @@
     address = savan_client_get_sub_url(savan_client);
     endpoint_ref = axis2_options_get_to(options, env);
     axis2_endpoint_ref_set_address(endpoint_ref, env, address);
-    expire_time = savan_client_get_status(savan_client, env, svc_client);
-    if (expire_time)
+    axis2_svc_client_remove_all_headers(svc_client, env);
+    subs_status = savan_client_get_status(savan_client, env, svc_client);
+    if (subs_status)
     {
         printf("GetStatus successful\n");
-        printf("New expire time: %s\n", expire_time);
     }
 
     AXIS2_SLEEP(5);
@@ -144,6 +140,7 @@
     address = savan_client_get_sub_url(savan_client);
     endpoint_ref = axis2_options_get_to(options, env);
     axis2_endpoint_ref_set_address(endpoint_ref, env, address);
+    axis2_svc_client_remove_all_headers(svc_client, env);
     status = savan_client_unsubscribe(savan_client, env, svc_client);
     if (status == AXIS2_SUCCESS)
     {

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=573220&r1=573219&r2=573220&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c Thu Sep  6 04:09:58 2007
@@ -35,8 +35,7 @@
     axis2_endpoint_ref_t *endto_epr = NULL;
     axis2_endpoint_ref_t *notify_epr = NULL;
     axutil_param_t *param = NULL;
-    axutil_hash_t *topic_store = NULL;
-    axutil_hash_t *store = NULL;
+    axutil_hash_t *subs_store = NULL;
     axis2_char_t *topic_url = NULL;
     axis2_char_t *topic = NULL;
 
@@ -69,26 +68,27 @@
     axis2_char_t *filter = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] Start:savan_subs_mgr_add_subscriber");
+        "[SAVAN] Start:savan_subs_mgr_add_subscriber");
     subs_svc = axis2_msg_ctx_get_svc(msg_ctx, env);
-    param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
+    param = axis2_svc_get_param(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
     if (!param)
     {
         /* Store not found. Create and set it as a param */
-        savan_util_set_store(subs_svc, env, SAVAN_TOPIC_LIST);
-        param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
+        savan_util_set_store(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
+        param = axis2_svc_get_param(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
     }
     
-    topic_store = (axutil_hash_t*)axutil_param_get_value(param, env);
-    if(!topic_store)
+    subs_store = (axutil_hash_t*)axutil_param_get_value(param, env);
+    if(!subs_store)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to extract the "
-            "subscriber store"); 
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+            "[SAVAN] Failed to extract the subscriber store"); 
         return NULL;
     }
     add_sub_elem = (axiom_element_t*)axiom_node_get_data_element(add_sub_node, env);
     
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[ML] node:%s", axiom_node_to_string(add_sub_node, env));
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+        "[SAVAN] node:%s", axiom_node_to_string(add_sub_node, env));
     /*Get topic element from node */
     qname = axutil_qname_create(env, ELEM_NAME_TOPIC, SAVAN_NAMESPACE, NULL);
     topic_elem = axiom_element_get_first_child_with_qname(add_sub_elem, env, qname,
@@ -96,21 +96,13 @@
     axutil_qname_free(qname, env);
     topic_url = axiom_element_get_text(topic_elem, env, topic_node);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] Subscriber will be added to the topic:%s ", topic_url);
+        "[SAVAN] Subscriber will be added to the topic:%s ", topic_url);
     topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
-    store = axutil_hash_get(topic_store, topic, AXIS2_HASH_KEY_STRING);
-    if(!store)
-    {
-        store = axutil_hash_make(env);
-        axutil_hash_set(topic_store, topic, AXIS2_HASH_KEY_STRING, store);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[ML] Topic:%s is added to the store", topic);
-    }
     subscriber = savan_subscriber_create(env);
     if (!subscriber)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to create a"
-            "subscriber instance"); 
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+            "[SAVAN] Failed to create a subscriber instance"); 
         return NULL;
     }
     /* Set topic element */
@@ -181,14 +173,14 @@
     filter = axiom_element_get_text(filter_elem, env, filter_node);
     
     savan_subscriber_set_filter(subscriber, env, filter);
-    if(store)
+    if(subs_store)
     {
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[ML] Subscriber %s added to the topic:%s", id, topic_url);
-        axutil_hash_set(store, id, AXIS2_HASH_KEY_STRING, subscriber);
+            "[SAVAN] Subscriber %s added to the topic:%s", id, topic_url);
+        axutil_hash_set(subs_store, id, AXIS2_HASH_KEY_STRING, subscriber);
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] End:savan_subs_mgr_add_subscriber");
+        "[SAVAN] End:savan_subs_mgr_add_subscriber");
     return NULL;   
 }
 
@@ -200,8 +192,7 @@
 {
     axis2_svc_t *subs_svc = NULL;
     axutil_param_t *param = NULL;
-    axutil_hash_t *topic_store = NULL;
-    axutil_hash_t *store = NULL;
+    axutil_hash_t *subs_store = NULL;
     axis2_char_t *topic = NULL;
     axis2_char_t *topic_url = NULL;
     savan_subscriber_t *subscriber = NULL;
@@ -218,27 +209,27 @@
     axis2_char_t *id = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] Start:savan_subs_mgr_remove_subscriber");
+        "[SAVAN] Start:savan_subs_mgr_remove_subscriber");
     subs_svc = axis2_msg_ctx_get_svc(msg_ctx, env);
-    param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
+    param = axis2_svc_get_param(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
     if (!param)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to extract the "
-            "subscriber store"); 
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+            "[SAVAN] Failed to extract the subscriber store"); 
         return NULL;
     }
     
-    topic_store = (axutil_hash_t*)axutil_param_get_value(param, env);
-    if(!topic_store)
+    subs_store = (axutil_hash_t*)axutil_param_get_value(param, env);
+    if(!subs_store)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to extract the "
-            "subscriber store"); 
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+            "[SAVAN] Failed to extract the subscriber store"); 
         return NULL;
     }
     remove_sub_elem = (axiom_element_t*)axiom_node_get_data_element(
         remove_sub_node, env);
     
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[ML] node:%s", 
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] node:%s", 
         axiom_node_to_string(remove_sub_node, env));
     /*Get topic element from node */
     qname = axutil_qname_create(env, ELEM_NAME_TOPIC, SAVAN_NAMESPACE, NULL);
@@ -248,14 +239,7 @@
     topic_url = axiom_element_get_text(topic_elem, env, topic_node);
     topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] Subscriber will be removed from the topic:%s ", topic);
-    store = axutil_hash_get(topic_store, topic, AXIS2_HASH_KEY_STRING);
-    if(!store)
-    {
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[ML] There are no subscribers for the ", topic_url);
-        return NULL;
-    }
+        "[SAVAN] Subscriber will be removed from the topic:%s ", topic);
 
     /* Get Id element from RemoveSubscriber*/
     qname = axutil_qname_create(env, ELEM_NAME_ID, SAVAN_NAMESPACE, NULL);
@@ -266,16 +250,16 @@
     id = axiom_element_get_text(id_elem, env, id_node);
     
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] Removing subscriber with id %s from topic %s", id, topic_url);
+        "[SAVAN] Removing subscriber with id %s from topic %s", id, topic_url);
     
-    axutil_hash_set(store, id, AXIS2_HASH_KEY_STRING, NULL);
-    subscriber = axutil_hash_get(store, id, AXIS2_HASH_KEY_STRING);
+    axutil_hash_set(subs_store, id, AXIS2_HASH_KEY_STRING, NULL);
+    subscriber = axutil_hash_get(subs_store, id, AXIS2_HASH_KEY_STRING);
     if(subscriber)
         savan_subscriber_free(subscriber, env);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] Subscriber %s removed from the topic:%s", id, topic_url);
+        "[SAVAN] Subscriber %s removed from the topic:%s", id, topic_url);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[ML] End:savan_subs_mgr_remove_subscriber");
+        "[SAVAN] End:savan_subs_mgr_remove_subscriber");
     return NULL;   
 }
 
@@ -288,40 +272,35 @@
 
     axis2_svc_t *subs_svc = NULL;
     axutil_param_t *param = NULL;
-    axis2_char_t *topic_url = NULL;
-    axis2_char_t *topic = NULL;
-    axutil_hash_t *topic_store = NULL;
-    axutil_hash_t *store = NULL;
+    axutil_hash_t *subs_store = NULL;
     axutil_hash_index_t *hi = NULL;
     axiom_namespace_t *ns = NULL;
     axiom_namespace_t *ns1 = NULL;
     axiom_node_t *subs_list_node = NULL;
-    axiom_node_t *topic_parent_node = NULL;
-    axiom_node_t *topic_node = NULL;
     axiom_element_t* subs_list_elem = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
         "Start:savan_subs_mgr_get_subscriber_list");
     subs_svc = axis2_msg_ctx_get_svc(msg_ctx, env);
-    param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
+    param = axis2_svc_get_param(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
     if (!param)
     {
-        savan_util_set_store(subs_svc, env, SAVAN_TOPIC_LIST);
-        param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Savan Topic List is empty");
+        savan_util_set_store(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
+        param = axis2_svc_get_param(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[SAVAN] Savan Topic List is empty");
     }
     
-    topic_store = (axutil_hash_t*)axutil_param_get_value(param, env);
-    if(!topic_store)
+    subs_store = (axutil_hash_t*)axutil_param_get_value(param, env);
+    if(!subs_store)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to extract the "
-            "subscriber store"); 
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+            "[SAVAN] Failed to extract the subscriber store"); 
         return NULL;
     }
 
     /* Expected request format is :-
      * <ns1:get_subscriber_list xmlns:ns1="http://ws.apache.org/savan">
-     *      <Topic>topic_url</Topic>
      *      <ns:Susbscriber xmlns:ns="http://schemas.xmlsoap.org/ws/2004/08/eventing">
      *      ...
      *      </ns:Subscriber>
@@ -339,62 +318,16 @@
         return NULL;
     }
 
-    topic_parent_node = axiom_node_get_first_element(node, env);
-    if (!topic_parent_node) 
-    {
-        AXIS2_ERROR_SET(env->error, 
-            AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "Echo client ERROR 1: invalid XML in request");
-        return NULL;
-    }
-
-    topic_node = axiom_node_get_first_child(topic_parent_node, env);
-    if (!topic_node) /* actual topic text */
-    {
-        AXIS2_ERROR_SET(env->error, 
-            AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "invalid XML in request");
-        return NULL;
-    }
-
-    if (axiom_node_get_node_type(topic_node, env) == AXIOM_TEXT)
-    {
-        axiom_text_t *topic_text = (axiom_text_t *)axiom_node_get_data_element(
-            topic_node, env);
-        if (topic_text && axiom_text_get_value(topic_text , env))
-        {
-            topic_url = (axis2_char_t *)axiom_text_get_value(topic_text, env);
-            topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
-            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Requested Topic:%s", topic);
-        }
-    }
-    else
-    {
-        AXIS2_ERROR_SET(env->error, 
-            AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Invalid XML in request");
-        return NULL;
-    }
-
-    /* Retrive subscribers for the topic */
-    store = axutil_hash_get(topic_store, topic, AXIS2_HASH_KEY_STRING);
     /* create the body of the subscribers element */
     ns = axiom_namespace_create (env, EVENTING_NAMESPACE, EVENTING_NS_PREFIX);
     ns1 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
     subs_list_elem = axiom_element_create(env, NULL, ELEM_NAME_SUBSCRIBERS, ns1, 
         &subs_list_node);
-    if(!store)
-    {
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "No subscribers regirsterd for"
-            " the topic:%s", topic_url);
-        return subs_list_node;
-    }
-    for (hi = axutil_hash_first(store, env); hi; hi =
+    for (hi = axutil_hash_first(subs_store, env); hi; hi =
         axutil_hash_next(env, hi))
     {
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "subscribers not empty for topic :%s", topic_url);
+            "subscribers not empty");
         void *val = NULL;
         savan_subscriber_t * subscriber = NULL;
         axutil_hash_this(hi, NULL, NULL, &val);
@@ -502,13 +435,13 @@
     {
         savan_util_set_store(subs_svc, env, SAVAN_TOPIC_LIST);
         param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Savan Topic List is empty");
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] Savan Topic List is empty");
     }
     
     topic_store = (axutil_hash_t*)axutil_param_get_value(param, env);
     if(!topic_store)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to extract the "
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[SAVAN] Failed to extract the "
             "topic store"); 
         return NULL;
     }

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=573220&r1=573219&r2=573220&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Thu Sep  6 04:09:58 2007
@@ -221,7 +221,7 @@
     if (!info_header)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Cannot extract message info headers"); 
+            "[SAVAN] Cannot extract message info headers"); 
         return SAVAN_MSG_TYPE_UNKNOWN;
     }
     
@@ -229,7 +229,7 @@
     if( ! action)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Cannot extract soap action"); 
+            "[SAVAN] Cannot extract soap action"); 
         AXIS2_ERROR_SET(env->error, SAVAN_ERROR_SOAP_ACTION_NULL, AXIS2_FAILURE);
         return SAVAN_MSG_TYPE_UNKNOWN;
     }
@@ -273,7 +273,7 @@
     AXIS2_ENV_CHECK(env, NULL);
     
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_get_subscription_id_from_msg");
+        "[SAVAN] Start:savan_util_get_subscription_id_from_msg");
     
     /* Get soap envelop and extract the subscription id */
 
@@ -281,7 +281,7 @@
     if (!envelope)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Failed to extract the soap envelop");
+            "[SAVAN] Failed to extract the soap envelop");
         return NULL;
     }
     
@@ -289,7 +289,7 @@
     if (!header)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Failed to extract the soap header"); 
+            "[SAVAN] Failed to extract the soap header"); 
         return NULL;
     }
     
@@ -307,7 +307,7 @@
     sub_id = axiom_element_get_text(id_elem, env, id_node);
     
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_get_subscription_id_from_msg");
+        "[SAVAN] End:savan_util_get_subscription_id_from_msg");
     return sub_id;    
 }
 
@@ -325,7 +325,7 @@
     AXIS2_ENV_CHECK(env, NULL);
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_get_subscriber_from_msg");
+        "[SAVAN] Start:savan_util_get_subscriber_from_msg");
 
     /* Extract subscription id from msg if not already given */
     if (!sub_id)
@@ -337,12 +337,12 @@
     if (!store)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Subscriber store is null"); 
+            "[SAVAN] Subscriber store is null"); 
         return NULL;
     }
     subscriber = axutil_hash_get(store, sub_id, AXIS2_HASH_KEY_STRING);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_get_subscriber_from_msg");
+        "[SAVAN] End:savan_util_get_subscriber_from_msg");
     
     return subscriber;
 }
@@ -356,7 +356,7 @@
 {
     axis2_svc_t *pubs_svc = NULL;
     axutil_param_t *param = NULL;
-    axutil_hash_t *store = NULL;
+    axutil_hash_t *subs_store = NULL;
     axis2_char_t *subs_svc_name = NULL;
     axis2_char_t *topic = NULL;
     axis2_endpoint_ref_t *topic_epr = NULL;
@@ -365,27 +365,26 @@
     AXIS2_ENV_CHECK(env, NULL);
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_get_subscriber_store");
+        "[SAVAN] Start:savan_util_get_subscriber_store");
 
     topic_epr = axis2_msg_ctx_get_to(msg_ctx, env);
     topic_url = (axis2_char_t *) axis2_endpoint_ref_get_address(topic_epr, 
         env);
+    topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
     pubs_svc = axis2_msg_ctx_get_svc(msg_ctx, env);
     if (!pubs_svc)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Failed to extract the %s publisher service", topic); 
+            "[SAVAN] Failed to extract the %s publisher service", topic); 
         return NULL;
     }
-    topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
     param = axis2_svc_get_param(pubs_svc, env, "SubscriptionMgrName");
     if(param)
     {
         axis2_svc_t *subs_svc = NULL;
         axis2_conf_ctx_t *conf_ctx = NULL;
         axis2_conf_t *conf = NULL;
-        axutil_param_t *topic_store_param = NULL;
-        axutil_hash_t *topic_store = NULL;
+        axutil_param_t *subs_store_param = NULL;
 
         subs_svc_name = axutil_param_get_value(param, env);
         conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
@@ -394,16 +393,14 @@
             subs_svc = axis2_conf_get_svc(conf, env, subs_svc_name);
         if(subs_svc)
         {
-            topic_store_param = axis2_svc_get_param(subs_svc, env,
-                SAVAN_TOPIC_LIST);
-            if(!topic_store_param)
+            subs_store_param = axis2_svc_get_param(subs_svc, env,
+                SAVAN_SUBSCRIBER_LIST);
+            if(!subs_store_param)
             {
-                AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] No topic found");
+                AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] No Topic found");
                 return NULL;
             }
-            topic_store = axutil_param_get_value(topic_store_param, env);
-            if(topic_store)
-                store = axutil_hash_get(topic_store, topic, AXIS2_HASH_KEY_STRING);
+            subs_store = axutil_param_get_value(subs_store_param, env);
         }
         else
         {
@@ -428,7 +425,7 @@
                     svc_client_param = axutil_param_create(env, "svc_client", svc_client);
                     axis2_svc_add_param(pubs_svc, env, svc_client_param);
                 }
-                store = savan_util_get_subscriber_list_from_remote_subs_mgr(env, 
+                subs_store = savan_util_get_subscriber_list_from_remote_subs_mgr(env, 
                     topic_url, subs_mgr_url, svc_client);
             }
         }
@@ -438,18 +435,18 @@
         param = axis2_svc_get_param(pubs_svc, env, SAVAN_SUBSCRIBER_LIST);
         if (param)
         {
-            store = (axutil_hash_t*)axutil_param_get_value(param, env);
+            subs_store = (axutil_hash_t*)axutil_param_get_value(param, env);
         }
     }
-    if(!store)
+    if(!subs_store)
     {
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
-            "[savan] No subscribers for topic %s found", topic);
+            "[SAVAN] No subscribers for topic %s found", topic);
         return NULL;
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_get_subscriber_store");
-    return store;
+        "[SAVAN] End:savan_util_get_subscriber_store");
+    return subs_store;
 }
 
 axis2_status_t AXIS2_CALL
@@ -460,14 +457,14 @@
 {
     axis2_svc_t *pubs_svc = NULL;
     axutil_param_t *param = NULL;
-    axutil_hash_t *store = NULL;
     axis2_char_t *subs_svc_name = NULL;
     axis2_endpoint_ref_t *topic_epr = NULL;
     axis2_char_t *topic_url = NULL;
     axis2_char_t *topic = NULL;
+    axutil_hash_t *subs_store = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_add_subscriber"); 
+        "[SAVAN] Start:savan_util_add_subscriber"); 
     topic_epr = axis2_msg_ctx_get_to(msg_ctx, env);
     topic_url = (axis2_char_t *) axis2_endpoint_ref_get_address(topic_epr, 
         env);
@@ -476,15 +473,14 @@
     if (!pubs_svc)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Failed to extract the %s publisher service", topic); 
+            "[SAVAN] Failed to extract the %s publisher service", topic); 
         return AXIS2_FAILURE;
     }
     param = axis2_svc_get_param(pubs_svc, env, "SubscriptionMgrName");
     if(param)
     {
         axis2_svc_t *subs_svc = NULL;
-        axutil_param_t *topic_store_param = NULL;
-        axutil_hash_t *topic_store = NULL;
+        axutil_param_t *subs_store_param = NULL;
         axis2_conf_ctx_t *conf_ctx = NULL;
         axis2_conf_t *conf = NULL;
         
@@ -495,25 +491,22 @@
             subs_svc = axis2_conf_get_svc(conf, env, subs_svc_name);
         if(subs_svc)
         {
-            topic_store_param = axis2_svc_get_param(subs_svc, env, 
-                SAVAN_TOPIC_LIST);
-            if(!topic_store_param)
+            axis2_char_t *subs_id = NULL;
+            subs_id = savan_subscriber_get_id(subscriber, env);
+            subs_store_param = axis2_svc_get_param(subs_svc, env, 
+                SAVAN_SUBSCRIBER_LIST);
+            if(!subs_store_param)
             {
-                savan_util_set_store(subs_svc, env, SAVAN_TOPIC_LIST);
-                topic_store_param = axis2_svc_get_param(subs_svc, env, 
-                    SAVAN_TOPIC_LIST);
+                savan_util_set_store(subs_svc, env, SAVAN_SUBSCRIBER_LIST);
+                subs_store_param = axis2_svc_get_param(subs_svc, env, 
+                    SAVAN_SUBSCRIBER_LIST);
             }
-            topic_store = axutil_param_get_value(topic_store_param, env);
-            if(topic_store)
-                store = axutil_hash_get(topic_store, topic, AXIS2_HASH_KEY_STRING);
-            if(!store)
+            subs_store = axutil_param_get_value(subs_store_param, env);
+            if(subs_store)
             {
-                store = axutil_hash_make(env);
-                axutil_hash_set(topic_store, topic, AXIS2_HASH_KEY_STRING, store);
+                axutil_hash_set(subs_store, subs_id, 
+                    AXIS2_HASH_KEY_STRING, subscriber);
             }
-            /* Store the created subscriber in the svc */
-            axutil_hash_set(store, savan_subscriber_get_id(subscriber, env), 
-                AXIS2_HASH_KEY_STRING, subscriber);
         }
         else
         {
@@ -532,13 +525,12 @@
             savan_util_set_store(pubs_svc, env, SAVAN_SUBSCRIBER_LIST);
             param = axis2_svc_get_param(pubs_svc, env, SAVAN_SUBSCRIBER_LIST);
         }
-        store = (axutil_hash_t*)axutil_param_get_value(param, env);
-        /* Store the created subscriber in the svc */
-        axutil_hash_set(store, savan_subscriber_get_id(subscriber, env), 
+        subs_store = (axutil_hash_t*)axutil_param_get_value(param, env);
+        axutil_hash_set(subs_store, savan_subscriber_get_id(subscriber, env), 
             AXIS2_HASH_KEY_STRING, subscriber);
     } 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_add_subscriber"); 
+        "[SAVAN] End:savan_util_add_subscriber"); 
     return AXIS2_SUCCESS;
 }
 
@@ -550,7 +542,7 @@
 {
     axis2_svc_t *pubs_svc = NULL;
     axutil_param_t *param = NULL;
-    axutil_hash_t *store = NULL;
+    axutil_hash_t *subs_store = NULL;
     axis2_char_t *subs_svc_name = NULL;
     axis2_char_t *topic_url = NULL;
     axis2_char_t *topic = NULL;
@@ -559,7 +551,7 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_remove_subscriber");
+        "[SAVAN] Start:savan_util_remove_subscriber");
 
     topic_epr = axis2_msg_ctx_get_to(msg_ctx, env);
     topic_url = (axis2_char_t *) axis2_endpoint_ref_get_address(topic_epr, 
@@ -569,7 +561,7 @@
     if (!pubs_svc)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Failed to extract the %s publisher service", topic); 
+            "[SAVAN] Failed to extract the %s publisher service", topic); 
         return AXIS2_FAILURE;
     }
     param = axis2_svc_get_param(pubs_svc, env, "SubscriptionMgrName");
@@ -578,8 +570,7 @@
         axis2_svc_t *subs_svc = NULL;
         axis2_conf_ctx_t *conf_ctx = NULL;
         axis2_conf_t *conf = NULL;
-        axutil_param_t *topic_store_param = NULL;
-        axutil_hash_t *topic_store = NULL;
+        axutil_param_t *subs_store_param = NULL;
         
         subs_svc_name = axutil_param_get_value(param, env);
         conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
@@ -588,29 +579,22 @@
             subs_svc = axis2_conf_get_svc(conf, env, subs_svc_name);
         if(subs_svc)
         {
-            axis2_char_t *id = NULL;
+            axis2_char_t *subs_id = NULL;
+            subs_id = savan_subscriber_get_id(subscriber, env);
 
-            topic_store_param = axis2_svc_get_param(subs_svc, env, 
-                SAVAN_TOPIC_LIST);
-            if (!topic_store_param)
+            subs_store_param = axis2_svc_get_param(subs_svc, env, 
+                SAVAN_SUBSCRIBER_LIST);
+            if (!subs_store_param)
             {
                 AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                    "No subscribers for the topic %s", topic_url);
+                    "No Subscriber list found");
                 return AXIS2_SUCCESS;
             }
-            topic_store = axutil_param_get_value(topic_store_param, env);
-            /* Retrive subscribers for the topic */
-            if(topic_store)
-                store = axutil_hash_get(topic_store, topic, AXIS2_HASH_KEY_STRING);
-            if (!store)
-            {
-                AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                    "[savan] Subscriber store is NULL"); 
-                return AXIS2_SUCCESS;
-            }
-            id = savan_subscriber_get_id(subscriber, env);
+            subs_store = axutil_param_get_value(subs_store_param, env);
             /* Setting NULL as value will remove the entry */
-            axutil_hash_set(store, id, AXIS2_HASH_KEY_STRING, NULL);
+            if(subs_store)
+                axutil_hash_set(subs_store, subs_id, AXIS2_HASH_KEY_STRING, 
+                    NULL);
         }
         else
         {
@@ -622,26 +606,26 @@
     }
     else
     {
-        axis2_char_t *id = NULL;
+        axis2_char_t *subs_id = NULL;
 
-        id = savan_subscriber_get_id(subscriber, env);
+        subs_id = savan_subscriber_get_id(subscriber, env);
         /* Extract the store from the svc and remove the given subscriber */
         param = axis2_svc_get_param(pubs_svc, env, SAVAN_SUBSCRIBER_LIST);
         if (param)
         {
-            store = (axutil_hash_t*)axutil_param_get_value(param, env);
+            subs_store = (axutil_hash_t*)axutil_param_get_value(param, env);
         }
-        if (!store)
+        if (!subs_store)
         {
             AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                "[savan] Subscriber store is NULL"); 
+                "[SAVAN] Subscriber store is NULL"); 
             return AXIS2_SUCCESS;
         }
         /* Setting NULL as value will remove the entry */
-        axutil_hash_set(store, id, AXIS2_HASH_KEY_STRING, NULL);
+        axutil_hash_set(subs_store, subs_id, AXIS2_HASH_KEY_STRING, NULL);
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_remove_subscriber");
+        "[SAVAN] End:savan_util_remove_subscriber");
     return AXIS2_SUCCESS;
 }
 
@@ -656,7 +640,7 @@
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan][sub processor] "
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN][sub processor] "
         "Start:set_sub_store");
     
     /* Create a hash map */
@@ -664,7 +648,7 @@
     if (!store)
     {
         /* TODO : error reporting */
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan][sub processor] "
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[SAVAN][sub processor] "
         "Could not create subscriber store");
         return AXIS2_FAILURE;
     }
@@ -674,13 +658,13 @@
     if (!param)
     {
         /* TODO : error reporting */
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan][sub processor] "
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[SAVAN][sub processor] "
         "Could not create subscriber store param");
         return AXIS2_FAILURE;
     }
     
     axis2_svc_add_param(svc, env, param);
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] End:set_sub_store");
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] End:set_sub_store");
     
     return AXIS2_SUCCESS;       
 }
@@ -758,7 +742,7 @@
     axutil_hash_t *subscriber_list = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_get_subscriber_list_from_remote_subs_mgr");
+        "[SAVAN] Start:savan_util_get_subscriber_list_from_remote_subs_mgr");
     svc_client = (axis2_svc_client_t *) s_client;
     options = (axis2_options_t *)axis2_svc_client_get_options(svc_client, 
         env);
@@ -774,12 +758,12 @@
     else
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Stub invoke FAILED: Error code:"
+            "[SAVAN] Stub invoke FAILED: Error code:"
             " %d :: %s", env->error->error_number,
             AXIS2_ERROR_GET_MESSAGE(env->error));
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_get_subscriber_list_from_remote_subs_mgr");
+        "[SAVAN] End:savan_util_get_subscriber_list_from_remote_subs_mgr");
     return subscriber_list;
 }
 
@@ -790,17 +774,11 @@
 {
     axiom_node_t *om_node = NULL;
     axiom_element_t* om_ele = NULL;
-    axiom_node_t* topic_om_node = NULL;
-    axiom_element_t * topic_om_ele = NULL;
     axiom_namespace_t *ns1 = NULL;
     axis2_char_t *om_str = NULL;
 
     ns1 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
     om_ele = axiom_element_create(env, NULL, ELEM_NAME_GET_SUBSCRIBER_LIST, ns1, &om_node);
-    topic_om_ele = axiom_element_create(env, om_node, ELEM_NAME_TOPIC, ns1, 
-        &topic_om_node);
-    axiom_element_set_text(topic_om_ele, env, topic, topic_om_node);
-
     om_str = axiom_node_to_string(om_node, env);
     if (om_str)
     {
@@ -825,7 +803,7 @@
     axutil_hash_t *subscriber_list = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:process_subscriber_list_node");
+        "[SAVAN] Start:process_subscriber_list_node");
     subs_list_element = axiom_node_get_data_element(subs_list_node, env); 
          
     /* Topic */
@@ -844,7 +822,7 @@
     if(!subs_iter)
     {
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[savan] Subscribers list is empty");
+            "[SAVAN] Subscribers list is empty");
         return NULL;
     }
     if(axiom_children_qname_iterator_has_next(subs_iter, env))
@@ -886,7 +864,7 @@
             subscriber = savan_subscriber_create(env);
             if (!subscriber)
             {
-                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to create a"
+                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[SAVAN] Failed to create a"
                     "subscriber instance");
                 return NULL;
             }
@@ -955,7 +933,7 @@
         }
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:process_subscriber_list_node");
+        "[SAVAN] End:process_subscriber_list_node");
     return subscriber_list;
 }
 
@@ -1127,7 +1105,7 @@
     axutil_array_list_t *topic_list = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:savan_util_get_topic_list_from_remote_subs_mgr");
+        "[SAVAN] Start:savan_util_get_topic_list_from_remote_subs_mgr");
     if(!s_client)
     {
         svc_client = (axis2_svc_client_t *) savan_util_get_svc_client(env);
@@ -1149,7 +1127,7 @@
     else
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Stub invoke FAILED: Error code:"
+            "[SAVAN] Stub invoke FAILED: Error code:"
             " %d :: %s", env->error->error_number,
             AXIS2_ERROR_GET_MESSAGE(env->error));
     }
@@ -1158,7 +1136,7 @@
         /*axis2_svc_client_free(svc_client, env);*/
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:savan_util_get_topic_list_from_remote_subs_mgr");
+        "[SAVAN] End:savan_util_get_topic_list_from_remote_subs_mgr");
     return topic_list;
 }
 
@@ -1195,7 +1173,7 @@
     axutil_array_list_t *topic_list = NULL;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] Start:process_topic_list_node");
+        "[SAVAN] Start:process_topic_list_node");
     topic_list_element = axiom_node_get_data_element(topic_list_node, env); 
          
     /* Get topic elements from topic list */
@@ -1207,7 +1185,7 @@
     if(!topic_iter)
     {
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[savan] Topic list is empty");
+            "[SAVAN] Topic list is empty");
         return NULL;
     }
     if(axiom_children_qname_iterator_has_next(topic_iter, env))
@@ -1233,7 +1211,7 @@
         }
     }
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "[savan] End:process_topic_list_node");
+        "[SAVAN] End:process_topic_list_node");
     return topic_list;
 }
 
@@ -1254,7 +1232,7 @@
     if (!svc_client)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[savan] Stub invoke FAILED: Error code:"
+            "[SAVAN] Stub invoke FAILED: Error code:"
             " %d :: %s", env->error->error_number,
             AXIS2_ERROR_GET_MESSAGE(env->error));
         return NULL;