Author: damitha
Date: Fri Oct 31 07:03:33 2008
New Revision: 709422

URL: http://svn.apache.org/viewvc?rev=709422&view=rev
Log:
Savan code refactoring

Modified:
    webservices/savan/trunk/c/include/savan_constants.h
    webservices/savan/trunk/c/include/savan_util.h
    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/subs_mgr/subs_mgr_skel.c
    webservices/savan/trunk/c/src/subscribers/savan_subscriber.c
    webservices/savan/trunk/c/src/util/savan_util.c

Modified: webservices/savan/trunk/c/include/savan_constants.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_constants.h?rev=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_constants.h (original)
+++ webservices/savan/trunk/c/include/savan_constants.h Fri Oct 31 07:03:33 2008
@@ -69,7 +69,7 @@
 #define EVENTING_NAMESPACE "http://schemas.xmlsoap.org/ws/2004/08/eventing";
 #define EVENTING_NS_PREFIX "wse"
 /*#define SAVAN_NAMESPACE "http://ws.apache.org/savan"*/
-#define SAVAN_NAMESPACE "tcp://ws.apache.org/axis2/services/subscription"
+#define SAVAN_NAMESPACE "http://ws.apache.org/axis2/services/subscription";
 #define SAVAN_NS_PREFIX "savan"
 #define ELEM_NAME_SUBSCRIBERS "Subscribers"
 #define ELEM_NAME_SUBSCRIBER "Subscriber"

Modified: webservices/savan/trunk/c/include/savan_util.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_util.h?rev=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Fri Oct 31 07:03:33 2008
@@ -321,8 +321,7 @@
         const axutil_env_t *env,
         axiom_node_t *sub_node,
         axiom_element_t *sub_elem,
-        savan_subscriber_t *subscriber,
-        axis2_conf_t *conf);
+        savan_subscriber_t *subscriber);
 
     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
     savan_util_create_subscriber_node(
@@ -330,6 +329,12 @@
         savan_subscriber_t *subscriber,
         axiom_node_t *parent_node);
 
+    AXIS2_EXTERN axiom_node_t * AXIS2_CALL
+    savan_util_create_savan_specific_subscriber_node(
+        const axutil_env_t *env, 
+        savan_subscriber_t *subscriber,
+        axiom_node_t *parent_node);
+
 /** @} */
 #ifdef __cplusplus
 }

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=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/core/savan_sub_processor.c (original)
+++ webservices/savan/trunk/c/src/core/savan_sub_processor.c Fri Oct 31 
07:03:33 2008
@@ -325,7 +325,7 @@
     axutil_qname_free(qname, env);
     
     /* Now read each sub element of Subscribe element */
-    status = savan_util_process_subscriber_node(env, sub_node, sub_elem, 
subscriber, conf);
+    status = savan_util_process_subscriber_node(env, sub_node, sub_elem, 
subscriber);
     if(AXIS2_SUCCESS != status)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Parsing subscriber 
node failed");

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=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c Fri Oct 31 07:03:33 2008
@@ -273,20 +273,18 @@
     axiom_node_t *node,
     axis2_msg_ctx_t *msg_ctx)
 {
-    axiom_namespace_t *ns = NULL;
-    axiom_namespace_t *ns1 = NULL;
     axiom_node_t *subs_id_parent_node = NULL;
     axiom_node_t *subs_id_node = NULL;
     savan_subscriber_t *subscriber = NULL;
     axis2_char_t *subs_id = NULL;
     axiom_node_t *subs_node = NULL;
-    axiom_element_t *subs_elem = NULL;
     axis2_conf_ctx_t *conf_ctx = NULL;
     axis2_conf_t *conf = NULL;
     axis2_char_t sql_retrieve[256];
+    axis2_status_t status = AXIS2_SUCCESS;
 
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "Start:savan_subs_mgr_get_subscriber");
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
+        "[savan] Entry:savan_subs_mgr_get_subscriber");
 
     /* Expected request format is :-
      * <ns1:get_subscriber xmlns:ns1="http://ws.apache.org/savan";>
@@ -297,10 +295,8 @@
     conf = axis2_conf_ctx_get_conf(conf_ctx, env);
     if (!node) /* 'get_subscriber' node */
     {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, 
-            AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "Echo client ERROR: input parameter NULL");
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, 
AXIS2_FAILURE);
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Input parameter 
NULL");
         return NULL;
     }
 
@@ -309,8 +305,7 @@
     {
         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");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Invalid XML in 
request");
         return NULL;
     }
 
@@ -319,7 +314,7 @@
     {
         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");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] invalid XML in 
request");
         return NULL;
     }
 
@@ -330,97 +325,36 @@
         if (subs_id_text && axiom_text_get_value(subs_id_text , env))
         {
             subs_id = (axis2_char_t *)axiom_text_get_value(subs_id_text, env);
-            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                "Requested Subscriber's id:%s", subs_id);
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Requested 
Subscriber's id:%s", subs_id);
         }
     }
     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");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Invalid XML in 
request");
         return NULL;
     }
 
-    /* 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_elem = axiom_element_create(env, NULL, ELEM_NAME_SUBSCRIBER, ns1, 
-        &subs_node);
+
     sprintf(sql_retrieve, "select id, end_to, notify_to, delivery_mode, "\
         "expires, filter, renewed, topic_url from subscriber, topic"\
         " where id='%s' and topic.topic_name=subscriber.topic_name;", subs_id);
 
     subscriber = savan_db_mgr_retrieve(env, savan_util_get_dbname(env, conf), 
                 savan_db_mgr_subs_retrieve_callback, sql_retrieve);
-
-    if (subscriber)
+    
+    subs_node = savan_util_create_savan_specific_subscriber_node(env, 
subscriber, NULL);
+    if(!subs_node)
     {
-        axiom_node_t *sub_node = NULL;
-        axiom_node_t *endto_node = NULL;
-        axiom_node_t *id_node = NULL;
-        axiom_node_t *delivery_node = NULL;
-        axiom_node_t *notify_node = NULL;
-        axiom_node_t *filter_node = NULL;
-        axiom_node_t *expires_node = NULL;
-        axiom_element_t* sub_elem = NULL;
-        axiom_element_t* id_elem = NULL;
-        axiom_element_t* endto_elem = NULL;
-        axiom_element_t* delivery_elem = NULL;
-        axiom_element_t* notify_elem = NULL;
-        axiom_element_t* filter_elem = NULL;
-        axiom_element_t* expires_elem = NULL;
-        const axis2_char_t *endto = NULL;
-        const axis2_char_t *notify = NULL;
-        const axis2_char_t *filter = NULL;
-        const axis2_char_t *expires = NULL;
-        axis2_char_t *id = NULL;
-               axis2_endpoint_ref_t *endto_ref = NULL;
-               axis2_endpoint_ref_t *notify_ref = NULL;
-
-        endto_ref = savan_subscriber_get_end_to(subscriber, env);
-        endto = axis2_endpoint_ref_get_address(endto_ref, env);
-        notify_ref = savan_subscriber_get_notify_to(subscriber, env);
-        notify = axis2_endpoint_ref_get_address(notify_ref, env);
-        filter = savan_subscriber_get_filter(subscriber, env); 
-        expires = savan_subscriber_get_expires(subscriber, env);
-        id = savan_subscriber_get_id(subscriber, env);
-      
-
-        /* create the subscriber element */
-
-        sub_elem = axiom_element_create(env, subs_node, 
-            ELEM_NAME_SUBSCRIBE, ns, &sub_node);
-        
-        /* Id element */
-        id_elem = axiom_element_create(env, sub_node, ELEM_NAME_ID, ns1,
-            &id_node);
-        axiom_element_set_text(id_elem, env, id, id_node);
-
-        /* EndTo element */
-        endto_elem = axiom_element_create(env, sub_node, ELEM_NAME_ENDTO, ns,
-            &endto_node);
-        axiom_element_set_text(endto_elem, env, endto, endto_node);
-        
-        /* Delivery element */
-        delivery_elem = axiom_element_create(env, sub_node, 
-            ELEM_NAME_DELIVERY, ns, &delivery_node);
-            
-        notify_elem = axiom_element_create(env, delivery_node, 
-            ELEM_NAME_NOTIFYTO, ns, &notify_node);
-        axiom_element_set_text(notify_elem, env, notify, notify_node);
-        
-        /* Expires element */
-        expires_elem = axiom_element_create(env, sub_node, 
-            ELEM_NAME_EXPIRES, ns, &expires_node);
-        axiom_element_set_text(expires_elem, env, expires, expires_node);
-        /* Filter element */
-        filter_elem = axiom_element_create(env, sub_node, ELEM_NAME_FILTER, 
-            ns, &endto_node);
-        axiom_element_set_text(filter_elem, env, filter, filter_node);
+        status = axutil_error_get_status_code(env->error);
+        if(AXIS2_SUCCESS != status)
+        {
+            return NULL;
+        }
     }
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "End:savan_subs_mgr_get_subscriber");
+
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] 
Exit:savan_subs_mgr_get_subscriber");
     return subs_node;
 }
 
@@ -433,7 +367,6 @@
     axis2_char_t *topic_url = NULL;
     axis2_char_t *topic = NULL;
     axutil_array_list_t *subs_store = 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;
@@ -499,7 +432,7 @@
     {
         AXIS2_ERROR_SET(env->error, 
             AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan]Invalid XML in 
request");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Invalid XML in 
request");
         return NULL;
     }
 
@@ -512,10 +445,9 @@
             savan_db_mgr_subs_find_callback, sql_retrieve);
 
     /* 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);    
+        &subs_list_node);    
     
     if(subs_store)
     {
@@ -524,16 +456,18 @@
         {
             for(i = 0; i < size; i++)
             {
-                axiom_node_t *sub_node = NULL;
-                savan_subscriber_t * subscriber = 
axutil_array_list_get(subs_store, env, i);
+                axiom_node_t *subs_node = NULL;
+                savan_subscriber_t *subscriber = 
axutil_array_list_get(subs_store, env, i);
 
                 if (subscriber)
                 {
-                    sub_node = savan_util_create_subscriber_node(env, 
subscriber, subs_list_node);
-                    if(!sub_node)
+                    subs_node = 
savan_util_create_savan_specific_subscriber_node(env, subscriber, 
+                            subs_list_node);
+                    if(!subs_node)
                     {
                         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                                "[savan] Creating subscriber node failed");
+                                "[savan] Creating Savan specific Subscriber 
node failed");
+                        axutil_error_set_status_code(env->error, 
AXIS2_FAILURE);
                         return NULL;
                     }
                 }
@@ -561,8 +495,7 @@
     axis2_char_t sql_retrieve[256];
     int i = 0, size = 0;
 
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "Start:savan_subs_mgr_get_topic_list");
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Entry:savan_subs_mgr_get_topic_list");
 
     /* Expected request format is :-
      * <ns1:get_topic_list xmlns:ns1="http://ws.apache.org/savan";>
@@ -572,16 +505,13 @@
     conf = axis2_conf_ctx_get_conf(conf_ctx, env);
     if (!node) /* 'get_topic_list' node */
     {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, 
-            AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "Echo client ERROR: input parameter NULL");
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, 
AXIS2_FAILURE);
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Input parameter 
NULL");
         return NULL;
     }
     /* create the body of the topic_list element */
     ns1 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
-    topic_list_elem = axiom_element_create(env, NULL, ELEM_NAME_TOPICS, ns1, 
-        &topic_list_node);
+    topic_list_elem = axiom_element_create(env, NULL, ELEM_NAME_TOPICS, ns1, 
&topic_list_node);
     sprintf(sql_retrieve, "select topic_url from topic;");
 
     topic_store = savan_db_mgr_retrieve_all(env, savan_util_get_dbname(env, 
conf),
@@ -599,14 +529,16 @@
             axiom_element_t* topic_elem = NULL;
 
             /* create the topic element */
-            topic_elem = axiom_element_create(env, topic_list_node, 
-                ELEM_NAME_TOPIC, ns1, &topic_node);
+            topic_elem = axiom_element_create(env, topic_list_node, 
ELEM_NAME_TOPIC, ns1, 
+                    &topic_node);
             if(topic_node)
+            {
                 axiom_element_set_text(topic_elem, env, topic_url, 
topic_node); 
+            }
         }
     }
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-        "End:savan_subs_mgr_get_topic_list");
+
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Exit:savan_subs_mgr_get_topic_list");
     return topic_list_node;
 }
 

Modified: webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c?rev=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c Fri Oct 31 07:03:33 
2008
@@ -197,7 +197,6 @@
         op_qname = (axutil_qname_t *)axis2_op_get_qname(op, env);
         if(op_qname)
             op_name = axutil_qname_get_localpart(op_qname, env);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "dam_op_name:%s", op_name);
         if(op_name)
         {
             if (axutil_strcmp(op_name, "add_subscriber") == 0)

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=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subscribers/savan_subscriber.c (original)
+++ webservices/savan/trunk/c/src/subscribers/savan_subscriber.c Fri Oct 31 
07:03:33 2008
@@ -398,7 +398,6 @@
     if(subscriber->notify_to)
     {
         address = axis2_endpoint_ref_get_address(subscriber->notify_to, env);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "address:%s", address);
         if(address)
         {
             to = axis2_endpoint_ref_create(env, address);

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=709422&r1=709421&r2=709422&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Fri Oct 31 07:03:33 2008
@@ -48,22 +48,11 @@
     savan_subscriber_t *subscriber,
     axis2_char_t *subs_mgr_url);
 
-/*static axis2_status_t
-remove_subscriber_from_remote_subs_mgr(
-    const axutil_env_t *env,
-    savan_subscriber_t *subscriber,
-    axis2_char_t *subs_mgr_url);*/
-
 static axiom_node_t *
 build_add_subscriber_om_payload(
     const axutil_env_t *env,
     savan_subscriber_t *subscriber);
 
-/*static axiom_node_t *
-build_remove_subscriber_om_payload(
-    const axutil_env_t *env,
-    savan_subscriber_t *subscriber);*/
-
 static axiom_node_t *
 build_subscriber_request_om_payload(
     const axutil_env_t *env,
@@ -79,7 +68,7 @@
     const axutil_env_t *env);
 
 static savan_subscriber_t *
-process_subscriber_node(
+savan_util_process_savan_specific_subscriber_node(
     const axutil_env_t *env,
     axiom_node_t *sub_node);
 
@@ -93,13 +82,6 @@
     const axutil_env_t *env,
     axiom_node_t *subs_list_node);
 
-/*
-axis2_status_t AXIS2_CALL
-savan_util_send_invalid_subscription_info_failure(
-       const axutil_env_t *env,
-       axis2_msg_ctx_t *msg_ctx)
-    */
-
 axis2_status_t AXIS2_CALL
 savan_util_create_fault_envelope(
     axis2_msg_ctx_t *msg_ctx,
@@ -691,7 +673,7 @@
     ret_node = axis2_svc_client_send_receive(svc_client, env, payload);
     if (ret_node)
     {
-        subscriber = process_subscriber_node(env, ret_node);
+        subscriber = savan_util_process_savan_specific_subscriber_node(env, 
ret_node);
     }
     else
     {
@@ -733,119 +715,60 @@
 }
 
 static savan_subscriber_t *
-process_subscriber_node(
+savan_util_process_savan_specific_subscriber_node(
     const axutil_env_t *env,
-    axiom_node_t *node)
+    axiom_node_t *subs_node)
 {
+    axiom_element_t *subs_elem = NULL;
     axiom_node_t *sub_node = NULL;
     axiom_element_t *sub_elem = NULL;
     axutil_qname_t *qname = NULL;
-    axis2_char_t *topic_url = NULL;
+    axiom_node_t *id_node = NULL;
+    axiom_element_t *id_elem = NULL;
+    axis2_char_t *id = NULL;
     savan_subscriber_t *subscriber = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
 
-    sub_node = axiom_node_get_first_child(node, env);
-    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Entry:process_subscriber_node");
-    sub_elem = axiom_node_get_data_element(sub_node, env); 
-         
-    if(sub_node)
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
+            "[savan] Entry:savan_util_process_savan_specific_subscriber_node");
+
+    AXIS2_PARAM_CHECK(env->error, subs_node, AXIS2_FAILURE);
+
+    subscriber = savan_subscriber_create(env);
+    if (!subscriber)
     {
-        axiom_node_t *id_node = NULL;
-        axiom_node_t *endto_node = NULL;
-        axiom_node_t *delivery_node = NULL;
-        axiom_node_t *notify_node = NULL;
-        axiom_node_t *filter_node = NULL;
-        axiom_node_t *expires_node = NULL;
-
-        axiom_element_t *id_elem = NULL;
-        axiom_element_t *endto_elem = NULL;
-        axiom_element_t *delivery_elem = NULL;
-        axiom_element_t *notify_elem = NULL;
-        axiom_element_t *expires_elem = NULL;
-        axiom_element_t *filter_elem = NULL;
-
-        axis2_char_t *id = NULL;
-        axis2_char_t *endto = NULL;
-        axis2_char_t *notify = NULL;
-        axis2_char_t *expires = NULL;
-        axis2_char_t *filter = NULL;
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to create a 
subscriber instance");
+        return NULL;
+    }
 
-        axis2_endpoint_ref_t *endto_epr = NULL;
-        axis2_endpoint_ref_t *notify_epr = NULL;
-     
-        subscriber = savan_subscriber_create(env);
-        if (!subscriber)
+    subs_elem = axiom_node_get_data_element(subs_node, env); 
+
+    /* Id */
+    qname = axutil_qname_create(env, ELEM_NAME_ID, SAVAN_NAMESPACE, NULL);
+    id_elem = axiom_element_get_first_child_with_qname(subs_elem, env, qname, 
subs_node, &id_node);
+    axutil_qname_free(qname, env);
+    id = axiom_element_get_text(id_elem, env, id_node);
+    savan_subscriber_set_id(subscriber, env, id);
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Received subscriber 
id:%s", id);
+    
+    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);
+    
+    if(sub_node)
+    {
+        /* Now read each sub element of Subscribe element */
+        status = savan_util_process_subscriber_node(env, sub_node, sub_elem, 
subscriber);
+        if(AXIS2_SUCCESS != status)
         {
-            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                "[savan] Failed to create a subscriber instance");
+            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Parsing 
subscriber node failed");
+            axutil_error_set_status_code(env->error, AXIS2_FAILURE);
             return NULL;
         }
-        /* Now read each sub element of Subscribe element */
-
-        /* Topic */
-        savan_subscriber_set_topic(subscriber, env, topic_url);
-
-        /* Id */
-        qname = axutil_qname_create(env, ELEM_NAME_ID, SAVAN_NAMESPACE, NULL);
-        id_elem = axiom_element_get_first_child_with_qname(sub_elem, env, 
qname,
-            sub_node, &id_node);
-        axutil_qname_free(qname, env);
-        id = axiom_element_get_text(id_elem, env, id_node);
-        savan_subscriber_set_id(subscriber, env, id);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[savan] Received subscriber id:%s", id);
-
-        /* EndTo */
-        qname = axutil_qname_create(env, ELEM_NAME_ENDTO, EVENTING_NAMESPACE, 
NULL);
-        endto_elem = axiom_element_get_first_child_with_qname(sub_elem, env, 
qname,
-            sub_node, &endto_node);
-        axutil_qname_free(qname, env);
-
-        endto = axiom_element_get_text(endto_elem, env, endto_node);
-
-        endto_epr = axis2_endpoint_ref_create(env, endto);
-
-        savan_subscriber_set_end_to(subscriber, env, endto_epr);
-
-        /* Get Delivery element and read NotifyTo */
-        qname = axutil_qname_create(env, ELEM_NAME_DELIVERY, 
EVENTING_NAMESPACE, NULL);
-        delivery_elem = axiom_element_get_first_child_with_qname(sub_elem, 
env, qname,
-            sub_node, &delivery_node);
-        axutil_qname_free(qname, env);
-
-        qname = axutil_qname_create(env, ELEM_NAME_NOTIFYTO, 
EVENTING_NAMESPACE, NULL);
-        notify_elem = axiom_element_get_first_child_with_qname(delivery_elem, 
env, qname,
-            delivery_node, &notify_node);
-        axutil_qname_free(qname, env);
-        notify = axiom_element_get_text(notify_elem, env, notify_node);
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-            "[savan] Received notify address:%s", notify);
-
-        notify_epr = axis2_endpoint_ref_create(env, notify);
-
-        savan_subscriber_set_notify_to(subscriber, env, notify_epr);
-
-        /* Expires */
-        qname = axutil_qname_create(env, ELEM_NAME_EXPIRES, 
EVENTING_NAMESPACE, NULL);
-        expires_elem = axiom_element_get_first_child_with_qname(sub_elem, env, 
qname,
-            sub_node, &expires_node);
-        axutil_qname_free(qname, env);
-
-        expires = axiom_element_get_text(expires_elem, env, expires_node);
-
-        savan_subscriber_set_expires(subscriber, env, expires);
-
-        /* Filter */
-        qname = axutil_qname_create(env, ELEM_NAME_FILTER, EVENTING_NAMESPACE, 
NULL);
-        filter_elem = axiom_element_get_first_child_with_qname(sub_elem, env, 
qname,
-            sub_node, &filter_node);
-        axutil_qname_free(qname, env);
-
-        filter = axiom_element_get_text(filter_elem, env, filter_node);
-
-        savan_subscriber_set_filter(subscriber, env, filter);
     }
 
-    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Exit:process_subscriber_node");
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
+            "[savan] Exit:savan_util_process_savan_specific_subscriber_node");
     return subscriber;
 }
 
@@ -926,24 +849,15 @@
     axiom_element_t *subs_list_element = NULL;
     axiom_children_qname_iterator_t *subs_iter = NULL;
     axutil_qname_t *qname = NULL;
-    axiom_node_t *topic_node = NULL;
-    axiom_element_t *topic_elem = NULL;
-    axis2_char_t *topic_url = NULL;
     axutil_array_list_t *subscriber_list = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
 
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
         "[savan] Entry:process_subscriber_list_node");
     subs_list_element = axiom_node_get_data_element(subs_list_node, env); 
          
-    /* Topic */
-    qname = axutil_qname_create(env, ELEM_NAME_TOPIC, SAVAN_NAMESPACE, NULL);
-    topic_elem = axiom_element_get_first_child_with_qname(subs_list_element, 
-        env, qname, subs_list_node, &topic_node);
-    axutil_qname_free(qname, env);
-    topic_url = axiom_element_get_text(topic_elem, env, topic_node);
-   
     /* Get Subscriber elements from subscriber list */
-    qname = axutil_qname_create(env, ELEM_NAME_SUBSCRIBE, EVENTING_NAMESPACE, 
+    qname = axutil_qname_create(env, ELEM_NAME_SUBSCRIBER, SAVAN_NAMESPACE, 
         NULL);
     subs_iter = axiom_element_get_children_with_qname(subs_list_element, env,
         qname, subs_list_node);
@@ -962,104 +876,26 @@
     while(axiom_children_qname_iterator_has_next(subs_iter, env))
     {
         savan_subscriber_t *subscriber = NULL;
-        axiom_node_t *sub_node = NULL;
-        axiom_node_t *id_node = NULL;
-        axiom_node_t *endto_node = NULL;
-        axiom_node_t *delivery_node = NULL;
-        axiom_node_t *notify_node = NULL;
-        axiom_node_t *filter_node = NULL;
-        axiom_node_t *expires_node = NULL;
-
-        axiom_element_t *sub_elem = NULL;
-        axiom_element_t *id_elem = NULL;
-        axiom_element_t *endto_elem = NULL;
-        axiom_element_t *delivery_elem = NULL;
-        axiom_element_t *notify_elem = NULL;
-        axiom_element_t *expires_elem = NULL;
-        axiom_element_t *filter_elem = NULL;
-
-        axis2_char_t *id = NULL;
-        axis2_char_t *endto = NULL;
-        axis2_char_t *notify = NULL;
-        axis2_char_t *expires = NULL;
-        axis2_char_t *filter = NULL;
-
-        axis2_endpoint_ref_t *endto_epr = NULL;
-        axis2_endpoint_ref_t *notify_epr = NULL;
+        axiom_node_t *subs_node = NULL;
      
-        sub_node = axiom_children_qname_iterator_next(subs_iter, env);
-        if(sub_node)
+        subs_node = axiom_children_qname_iterator_next(subs_iter, env);
+        if(subs_node) /* Iterate Savan specific subscriber elements */
         {
-            subscriber = savan_subscriber_create(env);
-            if (!subscriber)
+            /* Now read Savan specific Subscribe element */
+            subscriber = 
savan_util_process_savan_specific_subscriber_node(env, subs_node);
+            if(!subscriber)
             {
                 AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                        "[savan] Failed to create a subscriber instance");
+                        "[savan] Failed process Savan specific Subscriber 
element");
+                status = axutil_error_get_status_code(env->error);
                 return NULL;
-            }
-            /* Now read each sub element of Subscribe element */
-
-            /* Topic */
-            savan_subscriber_set_topic(subscriber, env, topic_url);
-
-            /* Id */
-            qname = axutil_qname_create(env, ELEM_NAME_ID, SAVAN_NAMESPACE, 
NULL);
-            id_elem = axiom_element_get_first_child_with_qname(sub_elem, env, 
qname,
-                sub_node, &id_node);
-            axutil_qname_free(qname, env);
-            id = axiom_element_get_text(id_elem, env, id_node);
-            savan_subscriber_set_id(subscriber, env, id);
-
-            /* EndTo */
-            qname = axutil_qname_create(env, ELEM_NAME_ENDTO, 
EVENTING_NAMESPACE, NULL);
-            endto_elem = axiom_element_get_first_child_with_qname(sub_elem, 
env, qname,
-                sub_node, &endto_node);
-            axutil_qname_free(qname, env);
 
-            endto = axiom_element_get_text(endto_elem, env, endto_node);
-
-            endto_epr = axis2_endpoint_ref_create(env, endto);
-
-            savan_subscriber_set_end_to(subscriber, env, endto_epr);
-
-            /* Get Delivery element and read NotifyTo */
-            qname = axutil_qname_create(env, ELEM_NAME_DELIVERY, 
EVENTING_NAMESPACE, NULL);
-            delivery_elem = axiom_element_get_first_child_with_qname(sub_elem, 
env, qname,
-                sub_node, &delivery_node);
-            axutil_qname_free(qname, env);
-
-            qname = axutil_qname_create(env, ELEM_NAME_NOTIFYTO, 
EVENTING_NAMESPACE, NULL);
-            notify_elem = 
axiom_element_get_first_child_with_qname(delivery_elem, env, qname,
-                delivery_node, &notify_node);
-            axutil_qname_free(qname, env);
-            notify = axiom_element_get_text(notify_elem, env, notify_node);
-
-            notify_epr = axis2_endpoint_ref_create(env, notify);
-
-            savan_subscriber_set_notify_to(subscriber, env, notify_epr);
-
-            /* Expires */
-            qname = axutil_qname_create(env, ELEM_NAME_EXPIRES, 
EVENTING_NAMESPACE, NULL);
-            expires_elem = axiom_element_get_first_child_with_qname(sub_elem, 
env, qname,
-                sub_node, &expires_node);
-            axutil_qname_free(qname, env);
-
-            expires = axiom_element_get_text(expires_elem, env, expires_node);
-
-            savan_subscriber_set_expires(subscriber, env, expires);
-
-            /* Filter */
-            qname = axutil_qname_create(env, ELEM_NAME_FILTER, 
EVENTING_NAMESPACE, NULL);
-            filter_elem = axiom_element_get_first_child_with_qname(sub_elem, 
env, qname,
-                sub_node, &filter_node);
-            axutil_qname_free(qname, env);
-
-            filter = axiom_element_get_text(filter_elem, env, filter_node);
+            }
 
-            savan_subscriber_set_filter(subscriber, env, filter);
             axutil_array_list_add(subscriber_list, env, subscriber);
         }
     }
+
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Exit:process_subscriber_list_node");
     return subscriber_list;
 }
@@ -1438,8 +1274,7 @@
     const axutil_env_t *env,
     axiom_node_t *sub_node,
     axiom_element_t *sub_elem,
-    savan_subscriber_t *subscriber,
-    axis2_conf_t *conf)
+    savan_subscriber_t *subscriber)
 {
     axutil_qname_t *qname = NULL;
     axiom_node_t *endto_node = NULL;
@@ -1649,3 +1484,60 @@
     return sub_node;
 }
 
+AXIS2_EXTERN axiom_node_t * AXIS2_CALL
+savan_util_create_savan_specific_subscriber_node(
+    const axutil_env_t *env, 
+    savan_subscriber_t *subscriber,
+    axiom_node_t *parent_node)
+{
+    axiom_node_t *subs_node = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
+    axiom_namespace_t *ns1 = NULL;
+    axiom_namespace_t *ns2 = NULL;
+    axiom_node_t *sub_node = NULL;
+    axiom_node_t *id_node = NULL;
+    axiom_element_t *subs_elem = NULL;
+    axiom_element_t* id_elem = NULL;
+    axis2_char_t *id = NULL;
+
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
+            "[savan] Entry:savan_util_create_savan_specific_subscriber_node");
+
+    if(!subscriber)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Subscriber structure 
must be present");
+        axutil_error_set_status_code(env->error, AXIS2_FAILURE);
+        return NULL;
+    }
+
+    ns1 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
+    subs_elem = axiom_element_create(env, parent_node, ELEM_NAME_SUBSCRIBER, 
ns1, &subs_node);
+    if(!subs_node)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                "[savan] Could not create Savan specific subscriber node");
+        status = axutil_error_get_status_code(env->error);
+        if(AXIS2_SUCCESS != status)
+        {
+            return NULL;
+        }
+    }
+
+    /* Id element */
+    id = savan_subscriber_get_id(subscriber, env);
+    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);
+
+    sub_node = savan_util_create_subscriber_node(env, subscriber, subs_node);
+    if(!sub_node)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Creating subscriber 
node failed");
+        return NULL;
+    }
+
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
+            "[savan] Exit:savan_util_create_savan_specific_subscriber_node");
+    return subs_node;
+}
+


Reply via email to