Skip to content

Commit

Permalink
Remove JNA-specific uses in it-domino-jnx
Browse files Browse the repository at this point in the history
  • Loading branch information
jesse-gallagher committed Jul 16, 2024
1 parent f344cb0 commit ae47b87
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.hcl.domino.jna.test;

import java.util.concurrent.atomic.AtomicReference;
import com.hcl.domino.exception.DominoInitException;
import com.hcl.domino.jna.internal.DisposableMemory;
import com.hcl.domino.jna.internal.capi.NotesCAPI;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class TestClientBasicsJNA extends AbstractJNARuntimeTest {

@Test
public void testMissingThreadInit() throws Exception {
withTempDb((db) -> {
Object lock = new Object();

AtomicReference<Exception> ex = new AtomicReference<>();

synchronized (lock) {
// try to access C API in a non-initialized thread
Thread t = new Thread(() -> {
synchronized (lock) {
try {
DisposableMemory mem = new DisposableMemory(20);

NotesCAPI.get().Cstrlen(mem);
} catch (Exception e) {
ex.set(e);
} finally {
lock.notify();
}

}
});
t.start();

lock.wait();
}

Assertions.assertNotNull(ex.get());
Assertions.assertInstanceOf(DominoInitException.class, ex.get());
});
}
}
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<module>integration/domino-jnx-lsxbeshim</module>
<module>integration/domino-jnx-rawdoc-json</module>
<module>integration/domino-jnx-xpages</module>
<!-- module>test/it-domino-jnx</module -->
<module>test/it-domino-jnx</module>
<module>example/jnx-example-domino-servlet</module>
<module>example/jnx-example-webapp</module>
<module>example/jnx-example-runjava</module>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.IntStream;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Expand All @@ -42,10 +41,7 @@
import com.hcl.domino.data.Database;
import com.hcl.domino.data.DocumentClass;
import com.hcl.domino.data.ModificationTimePair;
import com.hcl.domino.exception.DominoInitException;
import com.hcl.domino.exception.ServerNotFoundException;
import com.hcl.domino.jna.internal.DisposableMemory;
import com.hcl.domino.jna.internal.capi.NotesCAPI;
import com.hcl.domino.server.ServerPingInfo;
import com.ibm.commons.util.StringUtil;

Expand Down Expand Up @@ -264,40 +260,6 @@ public void testDbModificationTimes() throws IOException {
}
}


@Test
public void testMissingThreadInit() throws Exception {
withTempDb((db) -> {
Object lock = new Object();

AtomicReference<Exception> ex = new AtomicReference<>();

synchronized (lock) {
// try to access C API in a non-initialized thread
Thread t = new Thread(() -> {
synchronized (lock) {
try {
DisposableMemory mem = new DisposableMemory(20);

NotesCAPI.get().Cstrlen(mem);
} catch (Exception e) {
ex.set(e);
} finally {
lock.notify();
}

}
});
t.start();

lock.wait();
}

Assertions.assertNotNull(ex.get());
Assertions.assertInstanceOf(DominoInitException.class, ex.get());
});
}

@Test
public void testDominoClientMultiThreading() throws Exception {
final DominoClient client = this.getClient();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/
package it.com.hcl.domino.test.queries;

import java.time.Instant;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
Expand All @@ -24,7 +25,6 @@
import java.util.stream.Collectors;

import com.hcl.domino.data.*;
import com.hcl.domino.jna.data.JNADominoDateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -394,13 +394,13 @@ public void testGetUntilTime() throws Exception {
public void testSinceTime1() throws Exception {
this.withTempDb(db -> {

long timeMs = System.currentTimeMillis();
Instant timeMs = Instant.now();
TimeUnit.MILLISECONDS.sleep(10); // Make sure we wait at least one Domino tic
final Document doc = db.createDocument();
doc.setDocumentClass(DocumentClass.DOCUMENT);
doc.save();

JNADominoDateTime expectedDateTime = new JNADominoDateTime(timeMs);
DominoDateTime expectedDateTime = doc.getParentDatabase().getParentDominoClient().createDateTime(timeMs);
DocumentSelection documentSelection = db
.createDocumentSelection()
.selectAllDocuments()
Expand Down

0 comments on commit ae47b87

Please sign in to comment.