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, ¬ify_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, ¬ify_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, ¬ify_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;
+}
+