You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by da...@apache.org on 2006/12/08 11:34:51 UTC

svn commit: r483915 - in /webservices/sandesha/trunk/c: include/ src/storage/beans/ src/storage/inmemory/

Author: damitha
Date: Fri Dec  8 02:34:49 2006
New Revision: 483915

URL: http://svn.apache.org/viewvc?view=rev&rev=483915
Log:
More work on storage abstration

Modified:
    webservices/sandesha/trunk/c/include/sandesha2_create_seq_bean.h
    webservices/sandesha/trunk/c/include/sandesha2_inmemory_invoker_mgr.h
    webservices/sandesha/trunk/c/include/sandesha2_invoker_bean.h
    webservices/sandesha/trunk/c/include/sandesha2_invoker_mgr.h
    webservices/sandesha/trunk/c/src/storage/beans/invoker_bean.c
    webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_invoker_mgr.c

Modified: webservices/sandesha/trunk/c/include/sandesha2_create_seq_bean.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_create_seq_bean.h?view=diff&rev=483915&r1=483914&r2=483915
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_create_seq_bean.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_create_seq_bean.h Fri Dec  8 02:34:49 2006
@@ -31,7 +31,7 @@
 typedef struct sandesha2_create_seq_bean sandesha2_create_seq_bean_t;
 struct sandesha2_transaction;
 
-struct sandesha2_create_seq_bean
+AXIS2_DECLARE_DATA struct sandesha2_create_seq_bean
 {
     sandesha2_rm_bean_t rm_bean;
 };

Modified: webservices/sandesha/trunk/c/include/sandesha2_inmemory_invoker_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_inmemory_invoker_mgr.h?view=diff&rev=483915&r1=483914&r2=483915
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_inmemory_invoker_mgr.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_inmemory_invoker_mgr.h Fri Dec  8 02:34:49 2006
@@ -33,6 +33,7 @@
 {
 #endif
 
+struct sandesha2_storage_mgr;
 struct axis2_ctx;
 
 /** @defgroup sandesha2_inmemory_invoker_mgr In Memory Invoker Manager
@@ -43,6 +44,7 @@
 AXIS2_EXTERN struct sandesha2_invoker_mgr * AXIS2_CALL
 sandesha2_inmemory_invoker_mgr_create(
     const axis2_env_t *env,
+    struct sandesha2_storage_mgr *storage_mgr,
     struct axis2_ctx *ctx);
 
 /** @} */

Modified: webservices/sandesha/trunk/c/include/sandesha2_invoker_bean.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_invoker_bean.h?view=diff&rev=483915&r1=483914&r2=483915
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_invoker_bean.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_invoker_bean.h Fri Dec  8 02:34:49 2006
@@ -19,86 +19,113 @@
 
 #include <axis2_utils_defines.h>
 #include <axis2_env.h>
-#include <string.h>
+#include <sandesha2_rm_bean.h>
 
 #ifdef __cplusplus
 extern "C"
 {
 #endif
 
-typedef struct sandesha2_invoker_bean_t sandesha2_invoker_bean_t;
-struct sandesha2_rm_bean;
+typedef struct sandesha2_invoker_bean sandesha2_invoker_bean_t;
+struct sandesha2_transaction;
+
+AXIS2_DECLARE_DATA struct sandesha2_invoker_bean
+{
+    sandesha2_rm_bean_t rm_bean;
+};
 
 /* constructors 
  */
 AXIS2_EXTERN sandesha2_invoker_bean_t* AXIS2_CALL
-	sandesha2_invoker_bean_create(
+sandesha2_invoker_bean_create(
 	const axis2_env_t *env);
 
 AXIS2_EXTERN sandesha2_invoker_bean_t* AXIS2_CALL
-	sandesha2_invoker_bean_create_with_data(const axis2_env_t *env,
+sandesha2_invoker_bean_create_with_data(
+    const axis2_env_t *env,
     axis2_char_t * ref_key,
 	long msg_no,
 	axis2_char_t *seq_id,
 	axis2_bool_t invoked);
 
-axis2_status_t AXIS2_CALL 
+void AXIS2_CALL 
 sandesha2_invoker_bean_free  (
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_rm_bean_t *invoker_bean,
     const axis2_env_t *env);
 
-struct sandesha2_rm_bean * AXIS2_CALL
+sandesha2_rm_bean_t * AXIS2_CALL
 sandesha2_invoker_bean_get_base( 
     sandesha2_invoker_bean_t* invoker,
     const axis2_env_t *env);
 
 void AXIS2_CALL
 sandesha2_invoker_bean_set_base (
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env, 
-    struct sandesha2_rm_bean* rm_bean);
+    sandesha2_rm_bean_t* rm_bean);
 
 axis2_char_t* AXIS2_CALL 
 sandesha2_invoker_bean_get_msg_ctx_ref_key(
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env);
 
 void AXIS2_CALL 
 sandesha2_invoker_bean_set_msg_context_ref_key(
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
 	const axis2_env_t *env, axis2_char_t* context_ref_id) ;
 
 long AXIS2_CALL 
 sandesha2_invoker_bean_get_msg_no(
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env);
 	
 void AXIS2_CALL
 sandesha2_invoker_bean_set_msg_no(
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env, long msgno) ;
 
 axis2_char_t* AXIS2_CALL
 sandesha2_invoker_bean_get_seq_id(
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env);
 
 void AXIS2_CALL
 sandesha2_invoker_bean_set_seq_id(
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env, axis2_char_t* int_seq_id);
 
 axis2_bool_t AXIS2_CALL
 sandesha2_invoker_bean_is_invoked (
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env);
 
 void AXIS2_CALL 
 sandesha2_invoker_bean_set_invoked( 
-    sandesha2_invoker_bean_t *invoker,
+    sandesha2_invoker_bean_t *invoker_bean,
     const axis2_env_t *env,
     axis2_bool_t invoked);
 
+void AXIS2_CALL
+sandesha2_invoker_bean_set_id( 
+    sandesha2_rm_bean_t *invoker_bean,
+	const axis2_env_t *env, 
+    long id);
+
+long AXIS2_CALL
+sandesha2_invoker_bean_get_id( 
+    sandesha2_rm_bean_t *invoker_bean,
+	const axis2_env_t *env);
+
+void AXIS2_CALL
+sandesha2_invoker_bean_set_transaction( 
+    sandesha2_rm_bean_t *invoker_bean,
+	const axis2_env_t *env, 
+    struct sandesha2_transaction *transaction);
+
+struct sandesha2_transaction *AXIS2_CALL
+sandesha2_invoker_bean_get_transaction( 
+    sandesha2_rm_bean_t *invoker_bean,
+	const axis2_env_t *env);
 
 #ifdef __cplusplus
 }

Modified: webservices/sandesha/trunk/c/include/sandesha2_invoker_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_invoker_mgr.h?view=diff&rev=483915&r1=483914&r2=483915
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_invoker_mgr.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_invoker_mgr.h Fri Dec  8 02:34:49 2006
@@ -90,7 +90,7 @@
 
 AXIS2_DECLARE_DATA struct sandesha2_invoker_mgr
 {
-    const sandesha2_invoker_mgr_ops_t *ops;
+    sandesha2_invoker_mgr_ops_t ops;
 };
 
 AXIS2_EXTERN sandesha2_invoker_mgr_t * AXIS2_CALL

Modified: webservices/sandesha/trunk/c/src/storage/beans/invoker_bean.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/beans/invoker_bean.c?view=diff&rev=483915&r1=483914&r2=483915
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/beans/invoker_bean.c (original)
+++ webservices/sandesha/trunk/c/src/storage/beans/invoker_bean.c Fri Dec  8 02:34:49 2006
@@ -71,10 +71,10 @@
 	invoker_bean_impl->msg_no = -1;
 	invoker_bean_impl->seq_id = NULL;	
 	invoker_bean_impl->invoked = AXIS2_FALSE;
-    invoker_bean_impl->rm_bean = sandesha2_rm_bean_create(env);
+    invoker_bean_impl->rm_bean_impl = sandesha2_rm_bean_create(env);
     invoker_bean_impl->invoker_bean.rm_bean.ops = &rm_bean_ops;
 
-	return &(invoker_bean_impl->bean);
+	return &(invoker_bean_impl->invoker_bean);
 }
 
 AXIS2_EXTERN sandesha2_invoker_bean_t* AXIS2_CALL
@@ -110,23 +110,23 @@
 
 	invoker_bean_impl->msg_no = msg_no;
 	invoker_bean_impl->invoked = invoked;
-    invoker_bean_impl->rm_bean = sandesha2_rm_bean_create(env);
+    invoker_bean_impl->rm_bean_impl = sandesha2_rm_bean_create(env);
     invoker_bean_impl->invoker_bean.rm_bean.ops = &rm_bean_ops;
 
-	return &(invoker_bean_impl->bean);
+	return &(invoker_bean_impl->invoker_bean);
 }
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_invoker_bean_free(
-    sandesha2_invoker_bean_t *invoker_bean,
+    sandesha2_rm_bean_t *invoker_bean,
     const axis2_env_t *env)
 {
     sandesha2_invoker_bean_impl_t *invoker_bean_impl = NULL;
     invoker_bean_impl = SANDESHA2_INTF_TO_IMPL(invoker_bean);
-	if(invoker_bean_impl->rm_bean)
+	if(invoker_bean_impl->rm_bean_impl)
 	{
-		sandesha2_rm_bean_free(invoker_bean_impl->rm_bean, env);
-		invoker_bean_impl->rm_bean= NULL;
+		sandesha2_rm_bean_free(invoker_bean_impl->rm_bean_impl, env);
+		invoker_bean_impl->rm_bean_impl= NULL;
 	}
 	if(invoker_bean_impl->msg_context_ref_key)
 	{
@@ -144,7 +144,6 @@
         AXIS2_FREE(env->allocator, invoker_bean_impl->seq_id);
         invoker_bean_impl = NULL;
     }
-    return AXIS2_SUCCESS;
 }
 
 sandesha2_rm_bean_t * AXIS2_CALL
@@ -154,7 +153,7 @@
 {
     sandesha2_invoker_bean_impl_t *invoker_bean_impl = NULL;
     invoker_bean_impl = SANDESHA2_INTF_TO_IMPL(invoker_bean);
-	return invoker_bean_impl->rm_bean;
+	return invoker_bean_impl->rm_bean_impl;
 
 }	
 
@@ -166,7 +165,7 @@
 {
     sandesha2_invoker_bean_impl_t *invoker_bean_impl = NULL;
     invoker_bean_impl = SANDESHA2_INTF_TO_IMPL(invoker_bean);
-	invoker_bean_impl->rm_bean = rm_bean;
+	invoker_bean_impl->rm_bean_impl = rm_bean;
 }
 
 axis2_char_t* AXIS2_CALL 

Modified: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_invoker_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_invoker_mgr.c?view=diff&rev=483915&r1=483914&r2=483915
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_invoker_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_invoker_mgr.c Fri Dec  8 02:34:49 2006
@@ -15,7 +15,9 @@
  */
  
 #include <sandesha2_inmemory_invoker_mgr.h>
+#include <sandesha2_inmemory_bean_mgr.h>
 #include <sandesha2_invoker_mgr.h>
+#include <sandesha2_storage_mgr.h>
 #include <sandesha2_constants.h>
 #include <sandesha2_error.h>
 #include <axis2_log.h>
@@ -30,6 +32,7 @@
 typedef struct sandesha2_inmemory_invoker_mgr
 {
     sandesha2_invoker_mgr_t invoker_mgr;
+    sandesha2_inmemory_bean_mgr_t *bean_mgr;
     axis2_hash_t *table;
     axis2_thread_mutex_t *mutex;
 }sandesha2_inmemory_invoker_mgr_t;
@@ -78,6 +81,13 @@
     const axis2_env_t *env,
     sandesha2_invoker_bean_t *bean);
 
+axis2_bool_t AXIS2_CALL
+sandesha2_inmemory_create_invoker_mgr_match(
+    sandesha2_inmemory_bean_mgr_t *invoker_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *bean,
+    sandesha2_rm_bean_t *candidate);
+
 static const sandesha2_invoker_mgr_ops_t invoker_mgr_ops = 
 {
     sandesha2_inmemory_invoker_mgr_free,
@@ -92,6 +102,7 @@
 AXIS2_EXTERN sandesha2_invoker_mgr_t * AXIS2_CALL
 sandesha2_inmemory_invoker_mgr_create(
     const axis2_env_t *env,
+    sandesha2_storage_mgr_t *storage_mgr,
     axis2_ctx_t *ctx)
 {
     sandesha2_inmemory_invoker_mgr_t *invoker_mgr_impl = NULL;
@@ -135,7 +146,10 @@
         AXIS2_CTX_SET_PROPERTY(ctx, env, SANDESHA2_BEAN_MAP_STORAGE_MAP, 
                 property, AXIS2_FALSE);
     }
-    invoker_mgr_impl->invoker_mgr.ops = &invoker_mgr_ops;
+    invoker_mgr_impl->bean_mgr = sandesha2_inmemory_bean_mgr_create(env,
+        storage_mgr, ctx, SANDESHA2_BEAN_MAP_CREATE_SEQUECE);
+    invoker_mgr_impl->bean_mgr->ops.match = sandesha2_inmemory_create_invoker_mgr_match;
+    invoker_mgr_impl->invoker_mgr.ops = invoker_mgr_ops;
 
     return &(invoker_mgr_impl->invoker_mgr);
 }
@@ -154,6 +168,11 @@
         axis2_thread_mutex_destroy(invoker_mgr_impl->mutex);
         invoker_mgr_impl->mutex = NULL;
     }
+    if(invoker_mgr_impl->bean_mgr)
+    {
+        sandesha2_inmemory_bean_mgr_free(invoker_mgr_impl->bean_mgr, env);
+        invoker_mgr_impl->bean_mgr = NULL;
+    }
     if(invoker_mgr_impl->table)
     {
         axis2_hash_free(invoker_mgr_impl->table, env);
@@ -182,10 +201,8 @@
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
 
     ref_key = sandesha2_invoker_bean_get_msg_ctx_ref_key(bean, env);
-    axis2_hash_set(invoker_mgr_impl->table, ref_key, AXIS2_HASH_KEY_STRING, 
-        bean);
-    return AXIS2_TRUE;
-
+    return sandesha2_inmemory_bean_mgr_insert(invoker_mgr_impl->bean_mgr, env,
+        ref_key, (sandesha2_rm_bean_t *) bean);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -199,11 +216,8 @@
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, key, AXIS2_FALSE);
     invoker_mgr_impl = SANDESHA2_INTF_TO_IMPL(invoker_mgr);
-
-    axis2_hash_set(invoker_mgr_impl->table, key, AXIS2_HASH_KEY_STRING, NULL);
-
-    return AXIS2_TRUE;
-
+    return sandesha2_inmemory_bean_mgr_remove(invoker_mgr_impl->bean_mgr, env,
+        key);
 }
 
 sandesha2_invoker_bean_t *AXIS2_CALL
@@ -212,17 +226,13 @@
     const axis2_env_t *env,
     axis2_char_t *key)
 {
-    sandesha2_invoker_bean_t *bean = NULL;
     sandesha2_inmemory_invoker_mgr_t *invoker_mgr_impl = NULL;
     invoker_mgr_impl = SANDESHA2_INTF_TO_IMPL(invoker_mgr);
 
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, key, AXIS2_FALSE);
-
-    bean = (sandesha2_invoker_bean_t *) axis2_hash_get(invoker_mgr_impl->table, 
-            key, AXIS2_HASH_KEY_STRING);
-
-    return bean;
+    return (sandesha2_invoker_bean_t *) sandesha2_inmemory_bean_mgr_retrieve(
+        invoker_mgr_impl->bean_mgr, env, key);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -233,7 +243,6 @@
 {
     axis2_char_t *ref_key = NULL;
     sandesha2_inmemory_invoker_mgr_t *invoker_mgr_impl = NULL;
-
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     invoker_mgr_impl = SANDESHA2_INTF_TO_IMPL(invoker_mgr);
@@ -243,9 +252,8 @@
     {
         return AXIS2_FALSE;
     }
-    axis2_hash_set(invoker_mgr_impl->table, ref_key, AXIS2_HASH_KEY_STRING, bean);
-
-    return AXIS2_TRUE;
+    return sandesha2_inmemory_bean_mgr_update(invoker_mgr_impl->bean_mgr, env,
+        ref_key, (sandesha2_rm_bean_t *) bean);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -254,72 +262,11 @@
     const axis2_env_t *env,
     sandesha2_invoker_bean_t *bean)
 {
-    axis2_array_list_t *beans = NULL;
-    axis2_hash_index_t *i = NULL;
-    sandesha2_invoker_bean_t *temp = NULL;
-    void *v = NULL;
     sandesha2_inmemory_invoker_mgr_t *invoker_mgr_impl = NULL;
-
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     invoker_mgr_impl = SANDESHA2_INTF_TO_IMPL(invoker_mgr);
-
-    beans = axis2_array_list_create(env, 0);
-    if(!beans)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-    if(!bean)
-    {
-        return beans;
-    }
-    for (i = axis2_hash_first (invoker_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        axis2_bool_t select = AXIS2_TRUE;
-        axis2_char_t *ref_key = NULL;
-        axis2_char_t *temp_ref_key = NULL;
-        axis2_char_t *seq_id = NULL;
-        axis2_char_t *temp_seq_id = NULL;
-        long msg_no = 0;
-        long temp_msg_no = 0;
-        axis2_bool_t is_invoked = AXIS2_FALSE;
-        axis2_bool_t temp_is_invoked = AXIS2_FALSE;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        temp = (sandesha2_invoker_bean_t *) v;
-        ref_key = sandesha2_invoker_bean_get_msg_ctx_ref_key(bean, env);
-        temp_ref_key = sandesha2_invoker_bean_get_msg_ctx_ref_key(temp, env);
-        if(ref_key && temp_ref_key && 0 != AXIS2_STRCMP(ref_key, temp_ref_key))
-        {
-            select = AXIS2_FALSE;
-        }
-        seq_id = sandesha2_invoker_bean_get_seq_id(bean, env);
-        temp_seq_id = sandesha2_invoker_bean_get_seq_id(temp, env);
-        if(seq_id && temp_seq_id && 0 != AXIS2_STRCMP(seq_id, temp_seq_id))
-        {
-            select = AXIS2_FALSE;
-        }
-        msg_no = sandesha2_invoker_bean_get_msg_no(bean, env);
-        temp_msg_no = sandesha2_invoker_bean_get_msg_no(temp, env);
-        if(msg_no != 0 && (msg_no != temp_msg_no))
-        {
-            select = AXIS2_FALSE;
-        }
-        is_invoked = sandesha2_invoker_bean_is_invoked(bean, env);
-        temp_is_invoked = sandesha2_invoker_bean_is_invoked(temp, env);
-        if(is_invoked != temp_is_invoked)
-        {
-            select = AXIS2_FALSE;
-        }
-        if(AXIS2_TRUE == select)
-        {
-            AXIS2_ARRAY_LIST_ADD(beans, env, temp);
-        }
-        
-    }
-
-    return beans;
+    return sandesha2_inmemory_bean_mgr_find(invoker_mgr_impl->bean_mgr, env,
+        (sandesha2_rm_bean_t *) bean);
 }
 
 sandesha2_invoker_bean_t *AXIS2_CALL
@@ -328,30 +275,64 @@
     const axis2_env_t *env,
     sandesha2_invoker_bean_t *bean)
 {
-    axis2_array_list_t *beans = NULL;
-    int i = 0, size = 0;
-    sandesha2_invoker_bean_t *ret = NULL;
     sandesha2_inmemory_invoker_mgr_t *invoker_mgr_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     invoker_mgr_impl = SANDESHA2_INTF_TO_IMPL(invoker_mgr);
+    return (sandesha2_invoker_bean_t *)
+        sandesha2_inmemory_bean_mgr_find_unique(invoker_mgr_impl->bean_mgr, env,
+        (sandesha2_rm_bean_t *) bean); 
+}
+
+axis2_bool_t AXIS2_CALL
+sandesha2_inmemory_create_invoker_mgr_match(
+    sandesha2_inmemory_bean_mgr_t *invoker_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *bean,
+    sandesha2_rm_bean_t *candidate)
+{
+    axis2_bool_t select = AXIS2_TRUE;
+    axis2_char_t *ref_key = NULL;
+    axis2_char_t *temp_ref_key = NULL;
+    axis2_char_t *seq_id = NULL;
+    axis2_char_t *temp_seq_id = NULL;
+    long msg_no = 0;
+    long temp_msg_no = 0;
+    axis2_bool_t is_invoked = AXIS2_FALSE;
+    axis2_bool_t temp_is_invoked = AXIS2_FALSE;
     
-    beans = sandesha2_inmemory_invoker_mgr_find(invoker_mgr, env, bean);
-    if(beans)
-        size = AXIS2_ARRAY_LIST_SIZE(beans, env);
-    if( size > 1)
+    ref_key = sandesha2_invoker_bean_get_msg_ctx_ref_key(
+        (sandesha2_invoker_bean_t *) bean, env);
+    temp_ref_key = sandesha2_invoker_bean_get_msg_ctx_ref_key(
+        (sandesha2_invoker_bean_t *) candidate, env);
+    if(ref_key && temp_ref_key && 0 != AXIS2_STRCMP(ref_key, temp_ref_key))
+    {
+        select = AXIS2_FALSE;
+    }
+    seq_id = sandesha2_invoker_bean_get_seq_id(
+        (sandesha2_invoker_bean_t *) bean, env);
+    temp_seq_id = sandesha2_invoker_bean_get_seq_id(
+        (sandesha2_invoker_bean_t *) candidate, env);
+    if(seq_id && temp_seq_id && 0 != AXIS2_STRCMP(seq_id, temp_seq_id))
+    {
+        select = AXIS2_FALSE;
+    }
+    msg_no = sandesha2_invoker_bean_get_msg_no(
+        (sandesha2_invoker_bean_t *) bean, env);
+    temp_msg_no = sandesha2_invoker_bean_get_msg_no(
+        (sandesha2_invoker_bean_t *) candidate, env);
+    if(msg_no != 0 && (msg_no != temp_msg_no))
+    {
+        select = AXIS2_FALSE;
+    }
+    is_invoked = sandesha2_invoker_bean_is_invoked(
+        (sandesha2_invoker_bean_t *) bean, env);
+    temp_is_invoked = sandesha2_invoker_bean_is_invoked(
+        (sandesha2_invoker_bean_t *) candidate, env);
+    if(is_invoked != temp_is_invoked)
     {
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Non-Unique result");
-        AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_NON_UNIQUE_RESULT, AXIS2_FAILURE);
-        return NULL;
-    }
-    for(i = 0; i < size; i++)
-    {
-       ret = AXIS2_ARRAY_LIST_GET(beans, env, i);
-       break;
+        select = AXIS2_FALSE;
     }
-    
-
-    return ret;
+    return select;
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org