Author: damitha
Date: Fri Jun 22 05:48:33 2007
New Revision: 549806
URL: http://svn.apache.org/viewvc?view=rev&rev=549806
Log:
Now savan publisher and listener basic samples are working
Modified:
webservices/savan/trunk/c/include/savan_util.h
webservices/savan/trunk/c/src/client/savan_publishing_client.c
webservices/savan/trunk/c/src/data/module.xml
webservices/savan/trunk/c/src/handlers/savan_out_handler.c
webservices/savan/trunk/c/src/msgreceivers/savan_msg_recv.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_util.h
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_util.h?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Fri Jun 22 05:48:33 2007
@@ -126,6 +126,19 @@
axis2_svc_t *svc,
const axutil_env_t *env);
+ /**
+ * Get the subscribers registered for a topic
+ * @param env pointer to environment struct
+ * @param topic topic for which the subscribers are registered
+ * @param subs_mgr_url url of the subscription manager
+ * @return subscribers in a hash table
+ */
+ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
+ savan_util_get_subscriber_list_from_remote_subs_mgr(
+ const axutil_env_t *env,
+ axis2_char_t *topic,
+ axis2_char_t *subs_mgr_url);
+
/** @} */
#ifdef __cplusplus
}
Modified: webservices/savan/trunk/c/src/client/savan_publishing_client.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/client/savan_publishing_client.c?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/src/client/savan_publishing_client.c (original)
+++ webservices/savan/trunk/c/src/client/savan_publishing_client.c Fri Jun 22
05:48:33 2007
@@ -86,8 +86,8 @@
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan][pub client] "
- "publish...");
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] "
+ "Start:savan_publishing_client_publish");
repo_path = AXIS2_GETENV("AXIS2C_HOME");
@@ -123,6 +123,8 @@
/* Send publishing message */
axis2_svc_client_send_robust_with_op_qname(svc_client, env, op_qname,
payload);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] "
+ "End:savan_publishing_client_publish");
return AXIS2_SUCCESS;
}
Modified: webservices/savan/trunk/c/src/data/module.xml
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/data/module.xml?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/src/data/module.xml (original)
+++ webservices/savan/trunk/c/src/data/module.xml Fri Jun 22 05:48:33 2007
@@ -9,13 +9,13 @@
<outflow>
<handler name="SavanOutHandler" class="mod_savan">
- <order phase="MessageOut"/>
+ <order phase="SavanPhase"/>
</handler>
</outflow>
<Outfaultflow>
<handler name="SavanOutHandler" class="mod_savan">
- <order phase="MessageOut"/>
+ <order phase="SavanPhase"/>
</handler>
</Outfaultflow>
Modified: webservices/savan/trunk/c/src/handlers/savan_out_handler.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/handlers/savan_out_handler.c?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/src/handlers/savan_out_handler.c (original)
+++ webservices/savan/trunk/c/src/handlers/savan_out_handler.c Fri Jun 22
05:48:33 2007
@@ -97,6 +97,15 @@
/* Treat unknown msgs as msgs for publishing */
svc = axis2_msg_ctx_get_svc(msg_ctx, env);
+ const axis2_char_t *svc_name = axis2_svc_get_name(svc, env);
+ {
+ /* Temporarily code block */
+ if(0 == axutil_strcmp(svc_name, "subscription"))
+ {
+ return AXIS2_SUCCESS;
+ }
+ }
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
"************************:svc_name:%s\n", svc_name);
if (!svc)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan][out handler] "
@@ -135,7 +144,7 @@
{
axis2_char_t *id = savan_subscriber_get_id(sub, env);
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan][out handler] "
- "Publishing to %s...", id);
+ "Publishing to %s", id);
savan_subscriber_publish(sub, env, msg_ctx);
}
Modified: webservices/savan/trunk/c/src/msgreceivers/savan_msg_recv.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/msgreceivers/savan_msg_recv.c?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/src/msgreceivers/savan_msg_recv.c (original)
+++ webservices/savan/trunk/c/src/msgreceivers/savan_msg_recv.c Fri Jun 22
05:48:33 2007
@@ -249,7 +249,14 @@
/* Expires element. Get expiry time from subscriber and set */
subscriber = savan_util_get_subscriber_from_msg(env, msg_ctx, id);
- expires = savan_subscriber_get_expires(subscriber, env);
+ if(subscriber)
+ expires = savan_subscriber_get_expires(subscriber, env);
+ else
+ {
+ printf("subscriber not found \n");
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Subscriber not found");
+ return AXIS2_FAILURE;
+ }
expires_elem = axiom_element_create(env, response_node, ELEM_NAME_EXPIRES,
ns,
&expires_node);
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?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/src/subscribers/savan_subscriber.c (original)
+++ webservices/savan/trunk/c/src/subscribers/savan_subscriber.c Fri Jun 22
05:48:33 2007
@@ -283,7 +283,8 @@
axis2_op_client_add_msg_ctx(op_client, env, msg_ctx);
status = axis2_op_client_execute(op_client, env, AXIS2_TRUE);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan][subscribe] publish...");
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "[savan] End:savan_subscriber_publish");
return status;
}
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?view=diff&rev=549806&r1=549805&r2=549806
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Fri Jun 22 05:48:33 2007
@@ -32,12 +32,6 @@
savan_subscriber_t *subscriber,
axis2_char_t *subs_mgr_url);
-static axutil_hash_t *
-get_subscriber_list_from_remote_subs_mgr(
- const axutil_env_t *env,
- axis2_char_t *topic,
- axis2_char_t *subs_mgr_url);
-
static axiom_node_t *
build_add_subscriber_om_payload(
const axutil_env_t *env,
@@ -224,7 +218,7 @@
subs_mgr_url = axutil_param_get_value(param, env);
topic_epr = axis2_msg_ctx_get_to(msg_ctx, env);
topic = (axis2_char_t *) axis2_endpoint_ref_get_address(topic_epr,
env);
- store = get_subscriber_list_from_remote_subs_mgr(env, topic,
subs_mgr_url);
+ store = savan_util_get_subscriber_list_from_remote_subs_mgr(env,
topic, subs_mgr_url);
}
else
{
@@ -343,9 +337,6 @@
axis2_svc_client_t* svc_client = NULL;
axiom_node_t *payload = NULL;
- /* Set up the environment */
- env = axutil_env_create_all("savan.log", AXIS2_LOG_LEVEL_TRACE);
-
/* Set end point reference of echo service */
address = subs_mgr_url;
printf("[savan] Using endpoint : %s\n", address);
@@ -393,8 +384,8 @@
return AXIS2_SUCCESS;
}
-static axutil_hash_t *
-get_subscriber_list_from_remote_subs_mgr(
+axutil_hash_t *AXIS2_CALL
+savan_util_get_subscriber_list_from_remote_subs_mgr(
const axutil_env_t *env,
axis2_char_t *topic,
axis2_char_t *subs_mgr_url)
@@ -408,7 +399,7 @@
axutil_hash_t *subscriber_list = NULL;
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
- "[savan] Start:get_subscriber_list_from_remote_subs_mgr");
+ "[savan] Start:savan_util_get_subscriber_list_from_remote_subs_mgr");
options = axis2_options_create(env);
axis2_options_set_action(options, env,
"http://ws.apache.org/axis2/c/subscription/get_subscriber_list");
@@ -420,16 +411,14 @@
svc_client = axis2_svc_client_create(env, client_home);
if (!svc_client)
{
- printf("Error creating service client\n");
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[ML] 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;
}
endpoint_ref = axis2_endpoint_ref_create(env, subs_mgr_url);
axis2_options_set_to(options, env, endpoint_ref);
- printf("[savan] Using endpoint : %s\n", subs_mgr_url);
axis2_options_set_soap_version(options, env, AXIOM_SOAP11);
axis2_svc_client_set_options(svc_client, env, options);
@@ -442,13 +431,13 @@
}
else
{
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Stub invoke FAILED:
Error code:"
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[savan] Stub invoke FAILED: Error code:"
" %d :: %s", env->error->error_number,
AXIS2_ERROR_GET_MESSAGE(env->error));
- printf("Retrieving subscriber list FAILED!\n");
}
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
- "[savan] End:get_subscriber_list_from_remote_subs_mgr");
+ "[savan] End:savan_util_get_subscriber_list_from_remote_subs_mgr");
return subscriber_list;
}
@@ -491,21 +480,27 @@
axutil_hash_t *subscriber_list = axutil_hash_make(env);
axutil_qname_t *qname = NULL;
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "[savan] Start:process_subscriber_list_node");
subs_list_element = axiom_node_get_data_element(subs_list_node, env);
/* Get Subscriber elements from subscriber list */
- qname = axutil_qname_create(env, ELEM_NAME_SUBSCRIBE, EVENTING_NAMESPACE,
NULL);
+ qname = axutil_qname_create(env, ELEM_NAME_SUBSCRIBE, EVENTING_NAMESPACE,
+ NULL);
subs_iter = axiom_element_get_children_with_qname(subs_list_element, env,
qname, subs_list_node);
+ axutil_qname_free(qname, env);
if(!subs_iter)
{
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[ML] Subscribers list is
empty");
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "[savan] Subscribers list is empty");
return NULL;
}
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;
@@ -513,12 +508,14 @@
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;
@@ -533,11 +530,18 @@
subscriber = savan_subscriber_create(env);
if (!subscriber)
{
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to create
a"
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to
create a"
"subscriber instance");
return NULL;
}
/* Now read each sub element of Subscribe element */
+ /* 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);
@@ -590,7 +594,8 @@
env), AXIS2_HASH_KEY_STRING, subscriber);
}
}
- axutil_qname_free(qname, env);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "[savan] End:process_subscriber_list_node");
return subscriber_list;
}