Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit ca66b1c

Browse files
committed
#115 An exception is propagated by default when loading files
1 parent 79656a4 commit ca66b1c

File tree

6 files changed

+72
-3
lines changed

6 files changed

+72
-3
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
group=com.marklogic
22
javadocsDir=../gh-pages-marklogic-java/javadocs
3-
version=3.12.0
3+
version=3.13.develop

src/main/java/com/marklogic/client/ext/batch/BatchWriterSupport.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public abstract class BatchWriterSupport extends LoggingObject implements BatchW
2121

2222
private TaskExecutor taskExecutor;
2323
private int threadCount = 16;
24-
private WriteListener writeListener;
24+
private WriteListener writeListener = new DefaultWriteListener();
2525

2626
@Override
2727
public void initialize() {
@@ -42,6 +42,10 @@ public void waitForCompletion() {
4242
}
4343
taskExecutor = null;
4444
}
45+
46+
if (writeListener != null) {
47+
writeListener.afterCompletion();
48+
}
4549
}
4650

4751
protected void initializeDefaultTaskExecutor() {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.marklogic.client.ext.batch;
2+
3+
import com.marklogic.client.document.DocumentWriteOperation;
4+
5+
import java.util.List;
6+
7+
public class DefaultWriteListener extends WriteListenerSupport {
8+
9+
private Throwable firstError;
10+
11+
@Override
12+
public synchronized void onWriteFailure(Throwable ex, List<? extends DocumentWriteOperation> items) {
13+
if (firstError == null) {
14+
firstError = ex;
15+
}
16+
}
17+
18+
@Override
19+
public void afterCompletion() {
20+
if (firstError != null) {
21+
throw new RuntimeException("Caught exception before writing was completed: " +
22+
firstError.getMessage(), firstError);
23+
}
24+
}
25+
}

src/main/java/com/marklogic/client/ext/batch/WriteListener.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@
1010
public interface WriteListener {
1111

1212
void onWriteFailure(Throwable ex, List<? extends DocumentWriteOperation> items);
13+
14+
void afterCompletion();
1315
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.marklogic.client.ext.batch;
2+
3+
import com.marklogic.client.document.DocumentWriteOperation;
4+
5+
import java.util.List;
6+
7+
/**
8+
* WriteListener implementors should extend this to avoid issues when methods are added to
9+
* WriteListener.
10+
*/
11+
public class WriteListenerSupport implements WriteListener {
12+
13+
@Override
14+
public void onWriteFailure(Throwable ex, List<? extends DocumentWriteOperation> items) {
15+
}
16+
17+
@Override
18+
public void afterCompletion() {
19+
}
20+
}

src/test/java/com/marklogic/client/ext/batch/RestBatchWriterTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,24 @@ public class RestBatchWriterTest extends AbstractIntegrationTest {
2626
@Test
2727
public void failureTest() {
2828
RestBatchWriter writer = new RestBatchWriter(newClient("Documents"));
29+
30+
DocumentWriteOperation op = new DocumentWriteOperationImpl(DocumentWriteOperation.OperationType.DOCUMENT_WRITE,
31+
"/test.xml", null, new StringHandle("<hello>world</hello>asdf"));
32+
33+
writer.initialize();
34+
writer.write(Arrays.asList(op));
35+
36+
try {
37+
writer.waitForCompletion();
38+
fail("The error caused by malformed XML should have been thrown");
39+
} catch (Exception ex) {
40+
// Expected
41+
}
42+
}
43+
44+
@Test
45+
public void failureTestWithCustomListener() {
46+
RestBatchWriter writer = new RestBatchWriter(newClient("Documents"));
2947
TestWriteListener testWriteListener = new TestWriteListener();
3048
writer.setWriteListener(testWriteListener);
3149

@@ -70,7 +88,7 @@ public void writeDocumentWithTransform() throws IOException {
7088
}
7189
}
7290

73-
class TestWriteListener implements WriteListener {
91+
class TestWriteListener extends WriteListenerSupport {
7492
public Throwable caughtError;
7593

7694
@Override

0 commit comments

Comments
 (0)