X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f3ba71e33e73c61ca467a37dda2bc3b9d5f9ed1b..74675ce78880a3b535ac66a852f4e6cb82814fa3:/src/java/jmsg.c diff --git a/src/java/jmsg.c b/src/java/jmsg.c index f0aae36f84..73b69e93ed 100644 --- a/src/java/jmsg.c +++ b/src/java/jmsg.c @@ -12,8 +12,7 @@ #include "msg/msg.h" #include "msg/private.h" #include "simix/private.h" -#include "xbt/xbt_jcontext.h" -#include "xbt/xbt_context_factory.h" +#include "xbt/xbt_context_java.h" #include "jmsg_process.h" #include "jmsg_host.h" @@ -23,7 +22,7 @@ #include "jmsg.h" -#include "msg/msg_mailbox.h" +#include "msg/mailbox.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg); @@ -49,7 +48,7 @@ get_current_thread_env(void) { static jobject native_to_java_process(m_process_t process) { - return ((xbt_jcontext_t)(process->simdata->s_process->simdata->context))->jprocess; + return ((xbt_ctx_java_t)(process->simdata->s_process->simdata->context))->jprocess; } @@ -845,7 +844,7 @@ Java_simgrid_msg_Msg_init(JNIEnv* env, jclass cls, jobjectArray jargs) { argc++; - argv = (char**)calloc(argc,sizeof(char*)); + argv = xbt_new0(char*, argc); argv[0] = strdup("java"); @@ -989,17 +988,26 @@ Java_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) { JNIEXPORT void JNICALL Java_simgrid_msg_MsgNative_selectContextFactory(JNIEnv * env, jclass class,jstring jname) { - int rv; + char *errmsg = NULL; + xbt_ex_t e; - /* get the C string from the java string*/ - const char* name = (*env)->GetStringUTFChars(env, jname, 0); - - rv = xbt_context_select_factory(name); - - (*env)->ReleaseStringUTFChars(env, jname, name); + /* get the C string from the java string*/ + const char* name = (*env)->GetStringUTFChars(env, jname, 0); + + TRY { + xbt_context_select_factory(name); + } CATCH(e) { + errmsg = xbt_strdup(e.msg); + xbt_ex_free(e); + } + + (*env)->ReleaseStringUTFChars(env, jname, name); - if(rv) - jxbt_throw_native(env, xbt_strdup("xbt_select_context_factory() failed")); + if(errmsg) { + char *thrown = bprintf("xbt_select_context_factory() failed: %s",errmsg); + free(errmsg); + jxbt_throw_native(env, thrown); + } } JNIEXPORT void JNICALL