Changeset: d30a964aa94e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d30a964aa94e
Modified Files:
        java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
        java/embedded/org_monetdb_embedded_MonetDBEmbedded.h
        java/embedded/pom.xml
        java/embedded/src/main/java/org/monetdb/embedded/MonetDBEmbedded.java
        java/embedded/src/test/java/org/monetdb/embedded/test/EmbeddedTest.java
Branch: embedded-java
Log Message:

Use the preset library location


diffs (157 lines):

diff --git a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c 
b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
--- a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
+++ b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
@@ -13,20 +13,26 @@
 #include "res_table.h"
 #include "mal_type.h"
 
+#include "dlfcn.h"
+
 bool running = false;
 char *runningDirectory;
 
 JNIEXPORT jboolean JNICALL 
Java_org_monetdb_embedded_MonetDBEmbedded_startupWrapper
-(JNIEnv *env, jobject object, jstring directory, jboolean silent) {
+(JNIEnv *env, jobject object, jstring libDirectoryJava, jstring 
dbDirectoryJava, jboolean silent) {
        (void)object;
-       const char *directory_string_tmp = (*env)->GetStringUTFChars(env, 
directory, 0);
-       char *databaseDirectory = strdup(directory_string_tmp);
-       char libsDirectory[1000];
+       const char *libdir_string_tmp = (*env)->GetStringUTFChars(env, 
libDirectoryJava, 0);
+       const char *dbdir_string_tmp = (*env)->GetStringUTFChars(env, 
dbDirectoryJava, 0);
+       char *libsDirectory = strdup(libdir_string_tmp);
+       char *databaseDirectory = strdup(dbdir_string_tmp);
        unsigned char silent_char = 'n';
        char *err;
        jclass exClass = (*env)->FindClass(env, "java/io/IOException");
-       // Release the directory string
-       (*env)->ReleaseStringUTFChars(env, directory, directory_string_tmp);
+       void *dl;
+
+       // Release the directories strings
+       (*env)->ReleaseStringUTFChars(env, libDirectoryJava, libdir_string_tmp);
+       (*env)->ReleaseStringUTFChars(env, dbDirectoryJava, dbdir_string_tmp);
 
        // Check if we already have a running db
        if (running) {
@@ -48,8 +54,8 @@ JNIEXPORT jboolean JNICALL Java_org_mone
                silent_char = 'y';
        }
 
-       // XXX: still relying on BINDIR
-       snprintf(libsDirectory, 1000, "%s/../lib", BINDIR);
+       dl = dlopen("libmonetdb5", RTLD_NOW | RTLD_GLOBAL);
+       dlclose(dl);
        err = monetdb_startup(libsDirectory, databaseDirectory, silent_char);
        // Checking for errors
        if (err != NULL) {
diff --git a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.h 
b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.h
--- a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.h
+++ b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.h
@@ -13,7 +13,7 @@ extern "C" {
  * Signature: (Ljava/lang/String;Z)I
  */
 JNIEXPORT jboolean JNICALL 
Java_org_monetdb_embedded_MonetDBEmbedded_startupWrapper
-  (JNIEnv *, jobject, jstring, jboolean);
+  (JNIEnv *, jobject, jstring, jstring, jboolean);
 
 /*
  * Class:     org_monetdb_embedded_MonetDBEmbedded
diff --git a/java/embedded/pom.xml b/java/embedded/pom.xml
--- a/java/embedded/pom.xml
+++ b/java/embedded/pom.xml
@@ -62,6 +62,7 @@ MonetDB is an analytical database design
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-surefire-plugin</artifactId>
+                               <version>2.12.4</version>
                                <configuration>
                                        
<argLine>-Djava.library.path="/Users/dnedev/monetdb/installation/lib"</argLine>
                                </configuration>
diff --git 
a/java/embedded/src/main/java/org/monetdb/embedded/MonetDBEmbedded.java 
b/java/embedded/src/main/java/org/monetdb/embedded/MonetDBEmbedded.java
--- a/java/embedded/src/main/java/org/monetdb/embedded/MonetDBEmbedded.java
+++ b/java/embedded/src/main/java/org/monetdb/embedded/MonetDBEmbedded.java
@@ -17,13 +17,13 @@ import org.monetdb.embedded.result.Embed
 /**
  * Embedded version of MonetDB.
  * Communication between Java and native C is done via JNI.
- * 
- * <br/><strong>Note</strong>: You can have only one embedded MonetDB database 
running per JVM process.
+ * <br/>
+ * <strong>Note</strong>: You can have only one embedded MonetDB database 
running per JVM process.
  */
 public class MonetDBEmbedded {
        static {
                // Load the embedded library
-               System.loadLibrary("embedded_java");
+//             System.loadLibrary("embedded_java");
        }
        /** 
         * Flag if the embedded database was already started.
@@ -50,6 +50,7 @@ public class MonetDBEmbedded {
         * @param silentFlag Silent flag
         */
        public MonetDBEmbedded(final File databaseDirectory, final boolean 
silentFlag) {
+               System.loadLibrary("embedded_java");
                if (!databaseDirectory.isDirectory()) {
                        throw new IllegalArgumentException(databaseDirectory + 
" is not a directory");
                }
@@ -75,7 +76,7 @@ public class MonetDBEmbedded {
         */
        public boolean start() throws IOException {
                if (!running) {
-                       if (startupWrapper(databaseDirectory.getAbsolutePath(), 
silentFlag)){
+                       if 
(startupWrapper(System.getProperty("java.library.path"), 
databaseDirectory.getAbsolutePath(), silentFlag)){
                                running = true;
                        }
                }
@@ -102,13 +103,14 @@ public class MonetDBEmbedded {
        }
 
        /**
-        * Start the embedded database up.
+        * Start the embedded database.
         * 
-        * @param dir Database directory
+        * @param libsDirectory Libraries directory
+        * @param dbDirecory Database directory
         * @param silent Silent flag
         * @return Startup status code
         */
-       private native boolean startupWrapper(String dir, boolean silent) 
throws IOException;
+       private native boolean startupWrapper(String libsDirectory, String 
dbDirecory, boolean silent) throws IOException;
 
        /**
         * Execute an SQL query in an embedded database.
diff --git 
a/java/embedded/src/test/java/org/monetdb/embedded/test/EmbeddedTest.java 
b/java/embedded/src/test/java/org/monetdb/embedded/test/EmbeddedTest.java
--- a/java/embedded/src/test/java/org/monetdb/embedded/test/EmbeddedTest.java
+++ b/java/embedded/src/test/java/org/monetdb/embedded/test/EmbeddedTest.java
@@ -174,7 +174,7 @@ public class EmbeddedTest {
        }
 
        @Test
-       public void twoQueriesTest() throws SQLException {
+       public void twoQueriesTest() throws SQLException, IOException {
                EmbeddedQueryResult result1 = db.query("SELECT * FROM test 
WHERE id > 1;");
                assertEquals(2, result1.getColumn(1).columnSize());
                assertEquals(testValues[1][2], 
result1.getColumn(1).getValue(0));
@@ -187,6 +187,9 @@ public class EmbeddedTest {
                assertEquals(2, result1.getColumn(1).columnSize());
                assertEquals(testValues[1][2], 
result1.getColumn(1).getValue(0));
                assertEquals(testValues[1][3], 
result1.getColumn(1).getValue(1));
+               
+               result1.close();
+               result2.close();
        }
        
        @Test
@@ -203,6 +206,9 @@ public class EmbeddedTest {
                assertEquals(2, result1.getColumn(1).columnSize());
                assertEquals(testValues[1][2], 
result1.getColumn(1).getValue(0));
                assertEquals(testValues[1][3], 
result1.getColumn(1).getValue(1));
+               
+               result1.close();
+               result2.close();
        }
 
        @Test
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to