Replaces System.getenv("TMPDIR") by a JNI call. 73/1973/3
Sylvestre Ledru [Fri, 17 Sep 2010 14:05:21 +0000 (16:05 +0200)]
 This code used to be System.getenv("TMPDIR").
 However, this was failing with Javasci to due architecture constraints
 Javasci (Java) => Call_scilab (C) => Scilab engine (C)
 => Java VM (graphics, xcos, etc).
 In this case, the Java VM is started by Javasci.
 Since, the TMPDIR env variable is set by Call_Scilab (the second step),
 the environnement in the Java world has not TMPDIR

Change-Id: I0e38fc3648e2fbe68e9fb53c4ef52bc81fe73137

scilab/modules/commons/src/java/org/scilab/modules/commons/ScilabCommons.java
scilab/modules/commons/src/java/org/scilab/modules/commons/ScilabCommonsJNI.java
scilab/modules/commons/src/java/org/scilab/modules/commons/ScilabConstants.java
scilab/modules/commons/src/jni/ScilabCommons.i
scilab/modules/commons/src/jni/ScilabCommons_wrap.c

index 9e140e4..8527851 100644 (file)
@@ -31,4 +31,8 @@ public static String getSCIHOME() {
     return ScilabCommonsJNI.getSCIHOME();
   }
 
+  public static String getTMPDIR() {
+    return ScilabCommonsJNI.getTMPDIR();
+  }
+
 }
index 6ed0297..4aae93b 100644 (file)
@@ -26,8 +26,15 @@ public class ScilabConstants {
     
     /**
      * The tmp directory
+     * This code used to be System.getenv("TMPDIR").
+     * However, this was failing with Javasci to due architecture constraints
+     * Javasci (Java) => Call_scilab (C) => Scilab engine (C) 
+     * => Java VM (graphics, xcos, etc).
+     * In this case, the Java VM is started by Javasci. 
+     * Since, the TMPDIR env variable is set by Call_Scilab (the second step),
+     * the environnement in the Java world has not TMPDIR
      */
-    public static final File TMPDIR = new File(System.getenv("TMPDIR"));
+    public static final File TMPDIR = new File(ScilabCommons.getTMPDIR());
     
     /**
      * The SCI directory (Scilab root directory)
@@ -44,4 +51,5 @@ public class ScilabConstants {
     
     /** This class is a static singleton, thus it must not be instantiated */
     protected ScilabConstants() { }
+
 }
index 3901c4a..6016c81 100644 (file)
@@ -19,6 +19,7 @@
 %module ScilabCommons
 %{
 #include "../../../core/includes/SCIHOME.h"
+#include "../../../core/includes/tmpdir.h"
 %}
 
 /* JavaDoc for ScilabCommonsJNI class */
@@ -90,3 +91,13 @@ public class";
    */
 public";
 char* getSCIHOME();
+
+
+/* JavaDoc */
+%javamethodmodifiers getTMPDIR() "
+ /**
+   * returns TMPDIR directory value
+   * @return TMPDIR value
+   */
+public";
+char *getTMPDIR(void);
index 980786a..1be988b 100644 (file)
@@ -188,6 +188,7 @@ static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionC
 
 
 #include "../../../core/includes/SCIHOME.h"
+#include "../../../core/includes/tmpdir.h"
 
 
 #ifdef __cplusplus
@@ -206,6 +207,18 @@ SWIGEXPORT jstring JNICALL Java_org_scilab_modules_commons_ScilabCommonsJNI_getS
 }
 
 
+SWIGEXPORT jstring JNICALL Java_org_scilab_modules_commons_ScilabCommonsJNI_getTMPDIR(JNIEnv *jenv, jclass jcls) {
+  jstring jresult = 0 ;
+  char *result = 0 ;
+  
+  (void)jenv;
+  (void)jcls;
+  result = (char *)getTMPDIR();
+  if (result) jresult = (*jenv)->NewStringUTF(jenv, (const char *)result);
+  return jresult;
+}
+
+
 #ifdef __cplusplus
 }
 #endif