Removing subs_mgr dependancy from util
diff --git a/include/savan_sub_processor.h b/include/savan_sub_processor.h
index 94143a1..6453aab 100644
--- a/include/savan_sub_processor.h
+++ b/include/savan_sub_processor.h
@@ -34,6 +34,7 @@
#include <axutil_env.h>
#include <axis2_conf_ctx.h>
#include <axutil_array_list.h>
+#include <savan_subscriber.h>
#ifdef __cplusplus
extern "C"
@@ -121,7 +122,43 @@
savan_sub_processor_free(
savan_sub_processor_t * sub_processor,
const axutil_env_t * env);
-
+
+ AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
+ savan_sub_processor_get_subscriber_from_msg(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ struct savan_subs_mgr *subs_mgr,
+ const axis2_char_t *sub_id);
+
+ AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
+ savan_sub_processor_get_subscriber_from_renew_msg(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ struct savan_subs_mgr *subs_mgr,
+ const axis2_char_t *sub_id);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ savan_sub_processor_add_subscriber(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ struct savan_subs_mgr *subs_mgr,
+ savan_subscriber_t *subscriber);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ savan_sub_processor_update_subscriber(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ struct savan_subs_mgr *subs_mgr,
+ savan_subscriber_t *subscriber);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ savan_sub_processor_remove_subscriber(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ struct savan_subs_mgr *subs_mgr,
+ savan_subscriber_t *subscriber);
+
+
/** @} */
#ifdef __cplusplus
}
diff --git a/include/savan_subs_mgr.h b/include/savan_subs_mgr.h
index b6566bc..d2134d7 100644
--- a/include/savan_subs_mgr.h
+++ b/include/savan_subs_mgr.h
@@ -39,6 +39,7 @@
typedef struct savan_subs_mgr savan_subs_mgr_t;
typedef struct savan_subs_mgr_ops savan_subs_mgr_ops_t;
+struct axis2_conf_ctx;
/**
* @brief Subscription Manager ops struct
@@ -204,6 +205,57 @@
const axis2_char_t *topic_name,
const axis2_char_t *topic_url);
+AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
+savan_subs_mgr_get_subscriber_from_msg(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ const axis2_char_t *sub_id);
+
+AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
+savan_subs_mgr_get_subscriber_from_renew_msg(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ const axis2_char_t *sub_id);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_subs_mgr_add_subscriber(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ savan_subscriber_t *subscriber);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_subs_mgr_update_subscriber_with_msg_ctx(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ savan_subscriber_t *subscriber);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_subs_mgr_remove_subscriber_with_msg_ctx(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ savan_subscriber_t *subscriber);
+
+/**
+ * Retrieve subs mgr. If it is already created for this request scope then it should be
+ * available as a message context property. Otherwise create it and set as message context
+ * property.
+ * @param env environment object
+ * @param conf_ctx configuration context instance
+ * @param conf Axis2 main configuration instance
+ * @return subs manager
+ */
+AXIS2_EXTERN struct savan_subs_mgr * AXIS2_CALL
+savan_subs_mgr_get_subs_mgr(
+ const axutil_env_t *env,
+ struct axis2_conf_ctx *conf_ctx,
+ axis2_conf_t *conf);
+
+
/** @} */
#ifdef __cplusplus
}
diff --git a/include/savan_util.h b/include/savan_util.h
index 3796ee4..1acb6fb 100644
--- a/include/savan_util.h
+++ b/include/savan_util.h
@@ -126,38 +126,6 @@
axis2_msg_ctx_t *msg_ctx);
/**
- * Find the subscriber instacne from the store using the given messsage context.
- * @param env pointer to environment struct
- * @param msg_ctx pointer to message context
- * @param sub_id pointer to subscription id
- * @return a pointer to subscriber on success, else NULL
- */
-
- AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
- savan_util_get_subscriber_from_msg(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- struct savan_subs_mgr *subs_mgr,
- const axis2_char_t *sub_id);
-
- /**
- * Parse the renew message to retrieve subscriber id and requested expire date. Then retrieve
- * the subscriber instance from the store using the given messsage and set the expire date
- * requested as allowed by policy.
- * @param env pointer to environment struct
- * @param msg_ctx pointer to message context
- * @param sub_id pointer to subscription id
- * @return a pointer to subscriber on success, else NULL
- */
-
- AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
- savan_util_get_subscriber_from_renew_msg(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- struct savan_subs_mgr *subs_mgr,
- const axis2_char_t *sub_id);
-
- /**
* Get the subscriber store from the service
* Note that if the subscription manager is a separate service from
* the publisher service then both SubscriptionMgrName and SubscriptionMgrURL
@@ -173,51 +141,6 @@
axis2_msg_ctx_t *msg_ctx);
/**
- * Add the subscriber to subscription manager services' store
- * Note that if the subscription manager is a separate service from
- * the publisher service then both SubscriptionMgrName and SubscriptionMgrURL
- * must be set in the publishers services.xml
- * @param env pointer to environment struct
- * @param msg_ctx pointer to message context
- * @param subs_mgr pointer to subs_mgr
- * @param subscriber
- * @return the store on success, else NULL
- */
-
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- savan_util_add_subscriber(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- struct savan_subs_mgr *subs_mgr,
- savan_subscriber_t *subscriber);
-
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- savan_util_update_subscriber(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- struct savan_subs_mgr *subs_mgr,
- savan_subscriber_t *subscriber);
-
- /**
- * Remove the subscriber from subscription manager services' store
- * Note that if the subscription manager is a separate service from
- * the publisher service then both SubscriptionMgrName and SubscriptionMgrURL
- * must be set in the publishers services.xml
- * @param env pointer to environment struct
- * @param msg_ctx pointer to message context
- * @param subs_mgr pointer to subs_mgr
- * @param subscriber
- * @return the store on success, else NULL
- */
-
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- savan_util_remove_subscriber(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- struct savan_subs_mgr *subs_mgr,
- savan_subscriber_t *subscriber);
-
- /**
* Calculate and return an expiry time for the subscription
* @param env pointer to environment struct
* @return the expiry time on success, else NULL
@@ -251,21 +174,6 @@
const axutil_env_t *env,
axis2_char_t *store_name);
- /**
- * 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 array list
- */
- AXIS2_EXTERN axutil_array_list_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,
- void *svc_client,
- axis2_conf_t *conf);
-
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
savan_util_get_topic_name_from_topic_url(
const axutil_env_t *env,
@@ -299,26 +207,6 @@
axis2_conf_t *conf,
axis2_char_t *name);
- /**
- * Get the topics registered in a subscription manager
- * @param env pointer to environment struct
- * @param subs_mgr_url url of the subscription manager
- * @return subscribers in a array list
- */
- AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
- savan_util_get_topic_list_from_remote_subs_mgr(
- const axutil_env_t *env,
- axis2_char_t *subs_mgr_url,
- void *s_client);
-
- AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
- savan_util_get_subscriber_from_remote_subs_mgr(
- const axutil_env_t *env,
- axis2_char_t *subs_id,
- axis2_char_t *subs_mgr_url,
- void *s_client,
- axis2_conf_t *conf);
-
AXIS2_EXTERN void *AXIS2_CALL
savan_util_get_svc_client(
const axutil_env_t *env);
@@ -343,21 +231,6 @@
axiom_node_t *parent_node);
/**
- * Retrieve subs mgr. If it is already created for this request scope then it should be
- * available as a message context property. Otherwise create it and set as message context
- * property.
- * @param env environment object
- * @param conf_ctx configuration context instance
- * @param conf Axis2 main configuration instance
- * @return subs manager
- */
- AXIS2_EXTERN struct savan_subs_mgr * AXIS2_CALL
- savan_util_get_subs_mgr(
- const axutil_env_t *env,
- axis2_conf_ctx_t *conf_ctx,
- axis2_conf_t *conf);
-
- /**
* Retrieve filter handler. If it is already created for this request scope then it should be
* available as a message context property. Otherwise create it and set as message context
* property.
diff --git a/src/Makefile.am b/src/Makefile.am
index e2d1e96..fcfdb0e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,2 +1,2 @@
-SUBDIRS = handlers subscribers util filters subs_mgrs publishers msgreceivers client core
+SUBDIRS = handlers subscribers util filters publishers client subs_mgrs msgreceivers core
EXTRA_DIST=data
diff --git a/src/client/Makefile.am b/src/client/Makefile.am
index b2acf9e..7ecc231 100644
--- a/src/client/Makefile.am
+++ b/src/client/Makefile.am
@@ -3,7 +3,6 @@
libsavan_client_la_SOURCES = savan_client.c
libsavan_client_la_LIBADD = $(top_builddir)/src/util/libsavan_util.la \
- ../subs_mgrs/@SAVAN_SUBS_MGR@/libsavan_subs_mgr.la \
../filters/@SAVAN_FILTER_LIB@
INCLUDES = -I$(top_builddir)/include \
diff --git a/src/client/savan_client.c b/src/client/savan_client.c
index 92ca5d3..db807f0 100644
--- a/src/client/savan_client.c
+++ b/src/client/savan_client.c
@@ -24,7 +24,6 @@
#include <savan_util.h>
#include <savan_constants.h>
#include <savan_subscriber.h>
-#include <savan_subs_mgr.h>
struct savan_client_t
{
diff --git a/src/core/savan_sub_processor.c b/src/core/savan_sub_processor.c
index d8f524f..74898c3 100644
--- a/src/core/savan_sub_processor.c
+++ b/src/core/savan_sub_processor.c
@@ -137,7 +137,7 @@
return status;
}
- if(AXIS2_SUCCESS != (status = savan_util_add_subscriber(env, msg_ctx,
+ if(AXIS2_SUCCESS != (status = savan_subs_mgr_add_subscriber(env, msg_ctx,
sub_processor->subs_mgr, subscriber)))
{
savan_subscriber_free(subscriber, env);
@@ -160,7 +160,7 @@
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_sub_processor_unsubscribe");
- subscriber = savan_util_get_subscriber_from_msg(env, msg_ctx, sub_processor->subs_mgr, NULL);
+ subscriber = savan_subs_mgr_get_subscriber_from_msg(env, msg_ctx, sub_processor->subs_mgr, NULL);
if (!subscriber)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to find the subscriber");
@@ -172,7 +172,7 @@
savan_sub_processor_set_sub_id_to_msg_ctx(env, msg_ctx, id);
/* Remove from store */
- status = savan_util_remove_subscriber(env, msg_ctx, sub_processor->subs_mgr, subscriber);
+ status = savan_subs_mgr_remove_subscriber_with_msg_ctx(env, msg_ctx, sub_processor->subs_mgr, subscriber);
if (status != AXIS2_SUCCESS)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to remove the subscriber");
@@ -214,7 +214,7 @@
return AXIS2_FAILURE;
}
- subscriber = savan_util_get_subscriber_from_renew_msg(env, msg_ctx, sub_processor->subs_mgr, NULL);
+ subscriber = savan_subs_mgr_get_subscriber_from_renew_msg(env, msg_ctx, sub_processor->subs_mgr, NULL);
if (!subscriber)
{
axis2_char_t *reason = NULL;
@@ -531,3 +531,4 @@
}
}
+
diff --git a/src/handlers/savan_in_handler.c b/src/handlers/savan_in_handler.c
index 0afa765..f35215d 100644
--- a/src/handlers/savan_in_handler.c
+++ b/src/handlers/savan_in_handler.c
@@ -82,7 +82,7 @@
conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
conf = axis2_conf_ctx_get_conf(conf_ctx, env);
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the database. Check \
diff --git a/src/msgreceivers/savan_msg_recv.c b/src/msgreceivers/savan_msg_recv.c
index b04ba64..52d0281 100644
--- a/src/msgreceivers/savan_msg_recv.c
+++ b/src/msgreceivers/savan_msg_recv.c
@@ -123,7 +123,7 @@
pub_mod = savan_publisher_create_with_conf(env, conf);
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
savan_publisher_publish(pub_mod, env, msg_ctx, subs_mgr);
savan_publisher_free(pub_mod, env);
@@ -281,7 +281,7 @@
axiom_element_set_text(id_elem, env, id, id_node);
/* Expires element. Get expiry time from subscriber and set */
- /*subscriber = savan_util_get_subscriber_from_msg(env, msg_ctx, subs_mgr, id);*/
+ /*subscriber = savan_subs_mgr_get_subscriber_from_msg(env, msg_ctx, subs_mgr, id);*/
subs_prop = axis2_msg_ctx_get_property(msg_ctx, env, SAVAN_SUBSCRIBER);
if(subs_prop)
{
@@ -336,7 +336,7 @@
* the store */
conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the data resource. Check \
@@ -346,7 +346,7 @@
return AXIS2_FAILURE;
}
- subscriber = savan_util_get_subscriber_from_msg(env, msg_ctx, subs_mgr, NULL);
+ subscriber = savan_subs_mgr_get_subscriber_from_msg(env, msg_ctx, subs_mgr, NULL);
if (subscriber)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
@@ -405,7 +405,7 @@
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_msg_recv_handle_renew_request");
conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the data resource. Check \
@@ -415,7 +415,7 @@
return AXIS2_FAILURE;
}
- subscriber = savan_util_get_subscriber_from_msg(env, msg_ctx, subs_mgr, NULL);
+ subscriber = savan_subs_mgr_get_subscriber_from_msg(env, msg_ctx, subs_mgr, NULL);
if (!subscriber)
{
AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_SUBSCRIBER_NOT_FOUND, AXIS2_FAILURE);
@@ -495,7 +495,7 @@
axis2_msg_info_headers_set_action(info_header, env, SAVAN_ACTIONS_GET_STATUS_RESPONSE);
conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the data resource. Check \
@@ -524,7 +524,7 @@
/* Expires element */
- subscriber = savan_util_get_subscriber_from_msg(env, msg_ctx, subs_mgr, NULL);
+ subscriber = savan_subs_mgr_get_subscriber_from_msg(env, msg_ctx, subs_mgr, NULL);
if(!subscriber)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
diff --git a/src/subs_mgrs/Makefile.am b/src/subs_mgrs/Makefile.am
index 2f3f0e2..0cde06f 100644
--- a/src/subs_mgrs/Makefile.am
+++ b/src/subs_mgrs/Makefile.am
@@ -1 +1,2 @@
SUBDIRS = common @SAVAN_SUBS_MGR_SQLITE@ @SAVAN_SUBS_MGR_REGISTRY@ @SAVAN_SUBS_MGR_SERVICE@
+
diff --git a/src/subs_mgrs/common/subs_mgr.c b/src/subs_mgrs/common/subs_mgr.c
index b8a84c4..bd87a29 100644
--- a/src/subs_mgrs/common/subs_mgr.c
+++ b/src/subs_mgrs/common/subs_mgr.c
@@ -23,6 +23,9 @@
#include <axutil_property.h>
#include <axutil_uuid_gen.h>
#include <axis2_conf_ctx.h>
+#include <axiom_soap_envelope.h>
+#include <axiom_soap_header.h>
+#include <axiom_soap_body.h>
AXIS2_EXTERN void AXIS2_CALL
savan_subs_mgr_free(
@@ -87,3 +90,241 @@
return subs_mgr->ops->insert_topic(subs_mgr, env, topic_name, topic_url);
}
+AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
+savan_subs_mgr_get_subscriber_from_msg(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ const axis2_char_t *sub_id)
+{
+ savan_subscriber_t *subscriber = NULL;
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_get_subscriber_from_msg");
+
+ /* Extract subscription id from msg if not already given */
+ if (!sub_id)
+ {
+ sub_id = savan_util_get_subscription_id_from_msg(env, msg_ctx);
+ }
+
+ axutil_allocator_switch_to_global_pool(env->allocator);
+ subscriber = savan_subs_mgr_retrieve_subscriber(subs_mgr, env, sub_id);
+ axutil_allocator_switch_to_local_pool(env->allocator);
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_get_subscriber_from_msg");
+
+ return subscriber;
+}
+
+AXIS2_EXTERN savan_subscriber_t *AXIS2_CALL
+savan_subs_mgr_get_subscriber_from_renew_msg(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ const axis2_char_t *sub_id)
+{
+ savan_subscriber_t *subscriber = NULL;
+ axiom_soap_envelope_t *envelope = NULL;
+ axiom_soap_header_t *header = NULL;
+ axutil_qname_t *qname = NULL;
+ axiom_node_t *header_node = NULL;
+ axiom_node_t *id_node = NULL;
+ axiom_element_t *id_elem = NULL;
+ axiom_node_t *expires_node = NULL;
+ axiom_element_t *expires_elem = NULL;
+ axiom_node_t *renew_node = NULL;
+ axiom_element_t *renew_elem = NULL;
+ axiom_element_t *header_elem = NULL;
+ axis2_char_t *expires = NULL;
+ axis2_char_t *renewed_expires = NULL;
+ axiom_soap_body_t *body = NULL;
+ axiom_node_t *body_node = NULL;
+ axiom_element_t *body_elem = NULL;
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_get_subscriber_from_renew_msg");
+
+ /* Extract subscription id from msg if not already given */
+ if (!sub_id)
+ {
+ sub_id = savan_util_get_subscription_id_from_msg(env, msg_ctx);
+ }
+
+ axutil_allocator_switch_to_global_pool(env->allocator);
+ subscriber = savan_subs_mgr_retrieve_subscriber(subs_mgr, env, sub_id);
+ axutil_allocator_switch_to_local_pool(env->allocator);
+
+ if(!subscriber)
+ {
+ AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_SUBSCRIBER_RETRIEVE_ERROR, AXIS2_FAILURE);
+ return NULL;
+ }
+ /* Get soap envelop and extract the subscription id */
+
+ envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env);
+ if (!envelope)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to extract the soap envelop");
+ return NULL;
+ }
+
+ header = axiom_soap_envelope_get_header(envelope, env);
+ if (!header)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to extract the soap header");
+ return NULL;
+ }
+
+ /* Get header element from header node */
+ header_node = axiom_soap_header_get_base_node(header, env);
+ header_elem = (axiom_element_t*)axiom_node_get_data_element(header_node, env);
+
+ /* Get Identifier element from header */
+ qname = axutil_qname_create(env, ELEM_NAME_ID, EVENTING_NAMESPACE, NULL);
+ id_elem = axiom_element_get_first_child_with_qname(header_elem, env, qname,
+ header_node, &id_node);
+ axutil_qname_free(qname, env);
+
+ /* Now read the id */
+ sub_id = axiom_element_get_text(id_elem, env, id_node);
+
+ /* Get Expires element from body */
+ body = axiom_soap_envelope_get_body(envelope, env);
+ if (!body)
+ {
+ AXIS2_HANDLE_ERROR(env, AXIS2_ERROR_SOAP_ENVELOPE_OR_SOAP_BODY_NULL, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to extract the soap body");
+ return NULL;
+ }
+
+ body_node = axiom_soap_body_get_base_node(body, env);
+ body_elem = (axiom_element_t*)axiom_node_get_data_element(body_node, env);
+
+ /* Get Subscribe element from Body */
+ qname = axutil_qname_create(env, ELEM_NAME_RENEW, EVENTING_NAMESPACE, NULL);
+ renew_elem = axiom_element_get_first_child_with_qname(body_elem, env, qname, body_node,
+ &renew_node);
+ axutil_qname_free(qname, env);
+
+ qname = axutil_qname_create(env, ELEM_NAME_EXPIRES, EVENTING_NAMESPACE, NULL);
+ expires_elem = axiom_element_get_first_child_with_qname(renew_elem, env, qname, renew_node,
+ &expires_node);
+ axutil_qname_free(qname, env);
+ if(expires_elem)
+ {
+ expires = axiom_element_get_text(expires_elem, env, expires_node);
+ if(expires)
+ {
+ /* Check whether the subscription can be renewed. If renewable, set the new
+ * expiry time in the subscriber */
+ savan_subscriber_set_expires(subscriber, env, expires);
+ renewed_expires = savan_util_get_renewed_expiry_time(env, expires);
+ savan_subscriber_set_expires(subscriber, env, renewed_expires);
+ }
+ }
+
+ savan_subscriber_set_renew_status(subscriber, env, AXIS2_TRUE);
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_get_subscriber_from_renew_msg");
+
+ return subscriber;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_subs_mgr_add_subscriber(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ savan_subscriber_t *subscriber)
+{
+ axis2_status_t status = AXIS2_FAILURE;
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_add_subscriber");
+
+ axutil_allocator_switch_to_global_pool(env->allocator);
+ status = savan_subs_mgr_insert_subscriber(subs_mgr, env, subscriber);
+ if(status)
+ {
+ axutil_property_t *subs_prop = NULL;
+ subs_prop = axutil_property_create_with_args(env, 0, 0,
+ savan_subscriber_free_void_arg, subscriber);
+ axis2_msg_ctx_set_property(msg_ctx, env, SAVAN_SUBSCRIBER, subs_prop);
+ }
+ axutil_allocator_switch_to_local_pool(env->allocator);
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_subs_mgr_add_subscriber");
+ return status;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_subs_mgr_update_subscriber_with_msg_ctx(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ savan_subscriber_t *subscriber)
+{
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_update_subscriber");
+
+ axutil_allocator_switch_to_global_pool(env->allocator);
+ savan_subs_mgr_update_subscriber(subs_mgr, env, subscriber);
+ axutil_allocator_switch_to_local_pool(env->allocator);
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_subs_mgr_update_subscriber");
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_subs_mgr_remove_subscriber_with_msg_ctx(
+ const axutil_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ savan_subs_mgr_t *subs_mgr,
+ savan_subscriber_t *subscriber)
+{
+ const axis2_char_t *subs_id = NULL;
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_subs_mgr_remove_subscriber");
+
+ axutil_allocator_switch_to_global_pool(env->allocator);
+ subs_id = savan_subscriber_get_id(subscriber, env);
+
+ savan_subs_mgr_remove_subscriber(subs_mgr, env, subs_id);
+ axutil_allocator_switch_to_local_pool(env->allocator);
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_subs_mgr_remove_subscriber");
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN savan_subs_mgr_t * AXIS2_CALL
+savan_subs_mgr_get_subs_mgr(
+ const axutil_env_t *env,
+ axis2_conf_ctx_t *conf_ctx,
+ axis2_conf_t *conf)
+{
+ axutil_property_t *subs_mgr_prop = NULL;
+ savan_subs_mgr_t *subs_mgr = NULL;
+
+ axutil_allocator_switch_to_global_pool(env->allocator);
+ if(conf_ctx)
+ {
+ subs_mgr_prop = axis2_conf_ctx_get_property(conf_ctx, env, SAVAN_STORAGE_MANAGER);
+ if(subs_mgr_prop)
+ {
+ subs_mgr = (savan_subs_mgr_t *) axutil_property_get_value(subs_mgr_prop, env);
+ }
+ }
+
+ if(!subs_mgr)
+ {
+ subs_mgr = savan_subs_mgr_create(env, conf);
+
+ if(subs_mgr && conf_ctx)
+ {
+ subs_mgr_prop = axutil_property_create_with_args(env, 0, 0, 0, subs_mgr);
+ axis2_conf_ctx_set_property(conf_ctx, env, SAVAN_STORAGE_MANAGER, subs_mgr_prop);
+ }
+ }
+
+ axutil_allocator_switch_to_local_pool(env->allocator);
+
+ return subs_mgr;
+}
+
+
diff --git a/src/subs_mgrs/service/subs_mgr_svc/subs_mgr.c b/src/subs_mgrs/service/subs_mgr_svc/subs_mgr.c
index 3bee79d..0bec8bb 100644
--- a/src/subs_mgrs/service/subs_mgr_svc/subs_mgr.c
+++ b/src/subs_mgrs/service/subs_mgr_svc/subs_mgr.c
@@ -98,7 +98,7 @@
}
}
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
@@ -161,7 +161,7 @@
sprintf(sql_remove, "delete from subscriber where id='%s'", subscriber_id);
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
@@ -248,7 +248,7 @@
return NULL;
}
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
@@ -341,7 +341,7 @@
return NULL;
}
- subs_mgr = savan_util_get_subs_mgr(env, conf_ctx, conf);
+ subs_mgr = savan_subs_mgr_get_subs_mgr(env, conf_ctx, conf);
if(!subs_mgr)
{
AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
diff --git a/src/subs_mgrs/service/subs_mgr_svc/subs_mgr_skel.c b/src/subs_mgrs/service/subs_mgr_svc/subs_mgr_skel.c
index 6e2b1b1..8a012fd 100644
--- a/src/subs_mgrs/service/subs_mgr_svc/subs_mgr_skel.c
+++ b/src/subs_mgrs/service/subs_mgr_svc/subs_mgr_skel.c
@@ -127,7 +127,7 @@
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Start:savan_subs_mgr_svc_init_with_conf");
- /*subs_mgr = savan_util_get_subs_mgr(env, NULL, conf);
+ /*subs_mgr = savan_subs_mgr_get_subs_mgr(env, NULL, conf);
if(!subs_mgr)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the database. Check \
diff --git a/src/util/savan_util.c b/src/util/savan_util.c
index 127faa7..3db7ae4 100644
--- a/src/util/savan_util.c
+++ b/src/util/savan_util.c
@@ -31,7 +31,6 @@
#include <savan_util.h>
#include <savan_msg_recv.h>
#include <savan_error.h>
-#include <savan_subs_mgr.h>
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_util_create_fault_envelope(
@@ -213,208 +212,6 @@
return sub_id;
}
-AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
-savan_util_get_subscriber_from_msg(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- savan_subs_mgr_t *subs_mgr,
- const axis2_char_t *sub_id)
-{
- savan_subscriber_t *subscriber = NULL;
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_get_subscriber_from_msg");
-
- /* Extract subscription id from msg if not already given */
- if (!sub_id)
- {
- sub_id = savan_util_get_subscription_id_from_msg(env, msg_ctx);
- }
-
- axutil_allocator_switch_to_global_pool(env->allocator);
- subscriber = savan_subs_mgr_retrieve_subscriber(subs_mgr, env, sub_id);
- axutil_allocator_switch_to_local_pool(env->allocator);
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_get_subscriber_from_msg");
-
- return subscriber;
-}
-
-AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
-savan_util_get_subscriber_from_renew_msg(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- savan_subs_mgr_t *subs_mgr,
- const axis2_char_t *sub_id)
-{
- savan_subscriber_t *subscriber = NULL;
- axiom_soap_envelope_t *envelope = NULL;
- axiom_soap_header_t *header = NULL;
- axutil_qname_t *qname = NULL;
- axiom_node_t *header_node = NULL;
- axiom_node_t *id_node = NULL;
- axiom_element_t *id_elem = NULL;
- axiom_node_t *expires_node = NULL;
- axiom_element_t *expires_elem = NULL;
- axiom_node_t *renew_node = NULL;
- axiom_element_t *renew_elem = NULL;
- axiom_element_t *header_elem = NULL;
- axis2_char_t *expires = NULL;
- axis2_char_t *renewed_expires = NULL;
- axiom_soap_body_t *body = NULL;
- axiom_node_t *body_node = NULL;
- axiom_element_t *body_elem = NULL;
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_get_subscriber_from_renew_msg");
-
- /* Extract subscription id from msg if not already given */
- if (!sub_id)
- {
- sub_id = savan_util_get_subscription_id_from_msg(env, msg_ctx);
- }
-
- axutil_allocator_switch_to_global_pool(env->allocator);
- subscriber = savan_subs_mgr_retrieve_subscriber(subs_mgr, env, sub_id);
- axutil_allocator_switch_to_local_pool(env->allocator);
-
- if(!subscriber)
- {
- AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_SUBSCRIBER_RETRIEVE_ERROR, AXIS2_FAILURE);
- return NULL;
- }
- /* Get soap envelop and extract the subscription id */
-
- envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env);
- if (!envelope)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to extract the soap envelop");
- return NULL;
- }
-
- header = axiom_soap_envelope_get_header(envelope, env);
- if (!header)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to extract the soap header");
- return NULL;
- }
-
- /* Get header element from header node */
- header_node = axiom_soap_header_get_base_node(header, env);
- header_elem = (axiom_element_t*)axiom_node_get_data_element(header_node, env);
-
- /* Get Identifier element from header */
- qname = axutil_qname_create(env, ELEM_NAME_ID, EVENTING_NAMESPACE, NULL);
- id_elem = axiom_element_get_first_child_with_qname(header_elem, env, qname,
- header_node, &id_node);
- axutil_qname_free(qname, env);
-
- /* Now read the id */
- sub_id = axiom_element_get_text(id_elem, env, id_node);
-
- /* Get Expires element from body */
- body = axiom_soap_envelope_get_body(envelope, env);
- if (!body)
- {
- AXIS2_HANDLE_ERROR(env, AXIS2_ERROR_SOAP_ENVELOPE_OR_SOAP_BODY_NULL, AXIS2_FAILURE);
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Failed to extract the soap body");
- return NULL;
- }
-
- body_node = axiom_soap_body_get_base_node(body, env);
- body_elem = (axiom_element_t*)axiom_node_get_data_element(body_node, env);
-
- /* Get Subscribe element from Body */
- qname = axutil_qname_create(env, ELEM_NAME_RENEW, EVENTING_NAMESPACE, NULL);
- renew_elem = axiom_element_get_first_child_with_qname(body_elem, env, qname, body_node,
- &renew_node);
- axutil_qname_free(qname, env);
-
- qname = axutil_qname_create(env, ELEM_NAME_EXPIRES, EVENTING_NAMESPACE, NULL);
- expires_elem = axiom_element_get_first_child_with_qname(renew_elem, env, qname, renew_node,
- &expires_node);
- axutil_qname_free(qname, env);
- if(expires_elem)
- {
- expires = axiom_element_get_text(expires_elem, env, expires_node);
- if(expires)
- {
- /* Check whether the subscription can be renewed. If renewable, set the new
- * expiry time in the subscriber */
- savan_subscriber_set_expires(subscriber, env, expires);
- renewed_expires = savan_util_get_renewed_expiry_time(env, expires);
- savan_subscriber_set_expires(subscriber, env, renewed_expires);
- }
- }
-
- savan_subscriber_set_renew_status(subscriber, env, AXIS2_TRUE);
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_get_subscriber_from_renew_msg");
-
- return subscriber;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-savan_util_add_subscriber(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- savan_subs_mgr_t *subs_mgr,
- savan_subscriber_t *subscriber)
-{
- axis2_status_t status = AXIS2_FAILURE;
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_add_subscriber");
-
- axutil_allocator_switch_to_global_pool(env->allocator);
- status = savan_subs_mgr_insert_subscriber(subs_mgr, env, subscriber);
- if(status)
- {
- axutil_property_t *subs_prop = NULL;
- subs_prop = axutil_property_create_with_args(env, 0, 0,
- savan_subscriber_free_void_arg, subscriber);
- axis2_msg_ctx_set_property(msg_ctx, env, SAVAN_SUBSCRIBER, subs_prop);
- }
- axutil_allocator_switch_to_local_pool(env->allocator);
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_util_add_subscriber");
- return status;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-savan_util_update_subscriber(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- savan_subs_mgr_t *subs_mgr,
- savan_subscriber_t *subscriber)
-{
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_update_subscriber");
-
- axutil_allocator_switch_to_global_pool(env->allocator);
- savan_subs_mgr_update_subscriber(subs_mgr, env, subscriber);
- axutil_allocator_switch_to_local_pool(env->allocator);
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_util_update_subscriber");
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-savan_util_remove_subscriber(
- const axutil_env_t *env,
- axis2_msg_ctx_t *msg_ctx,
- savan_subs_mgr_t *subs_mgr,
- savan_subscriber_t *subscriber)
-{
- const axis2_char_t *subs_id = NULL;
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Entry:savan_util_remove_subscriber");
-
- axutil_allocator_switch_to_global_pool(env->allocator);
- subs_id = savan_subscriber_get_id(subscriber, env);
-
- savan_subs_mgr_remove_subscriber(subs_mgr, env, subs_id);
- axutil_allocator_switch_to_local_pool(env->allocator);
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:savan_util_remove_subscriber");
- return AXIS2_SUCCESS;
-}
-
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_util_set_store(
axis2_svc_t *svc,
@@ -907,41 +704,6 @@
return subs_node;
}
-AXIS2_EXTERN savan_subs_mgr_t * AXIS2_CALL
-savan_util_get_subs_mgr(
- const axutil_env_t *env,
- axis2_conf_ctx_t *conf_ctx,
- axis2_conf_t *conf)
-{
- axutil_property_t *subs_mgr_prop = NULL;
- savan_subs_mgr_t *subs_mgr = NULL;
-
- axutil_allocator_switch_to_global_pool(env->allocator);
- if(conf_ctx)
- {
- subs_mgr_prop = axis2_conf_ctx_get_property(conf_ctx, env, SAVAN_STORAGE_MANAGER);
- if(subs_mgr_prop)
- {
- subs_mgr = (savan_subs_mgr_t *) axutil_property_get_value(subs_mgr_prop, env);
- }
- }
-
- if(!subs_mgr)
- {
- subs_mgr = savan_subs_mgr_create(env, conf);
-
- if(subs_mgr && conf_ctx)
- {
- subs_mgr_prop = axutil_property_create_with_args(env, 0, 0, 0, subs_mgr);
- axis2_conf_ctx_set_property(conf_ctx, env, SAVAN_STORAGE_MANAGER, subs_mgr_prop);
- }
- }
-
- axutil_allocator_switch_to_local_pool(env->allocator);
-
- return subs_mgr;
-}
-
AXIS2_EXTERN savan_filter_mod_t * AXIS2_CALL
savan_util_get_filter_module(
const axutil_env_t *env,