Skip to content

Commit 1aeb8bf

Browse files
committed
fix #92, don't allow Jackson to auto-close source or target streams
1 parent e483b5e commit 1aeb8bf

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/main/java/com/marklogic/client/extra/jackson/JacksonHandle.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.io.UnsupportedEncodingException;
2626

2727
import com.fasterxml.jackson.core.JsonParseException;
28+
import com.fasterxml.jackson.core.JsonParser;
29+
import com.fasterxml.jackson.core.JsonGenerator;
2830
import com.fasterxml.jackson.databind.JsonMappingException;
2931
import com.fasterxml.jackson.databind.JsonNode;
3032
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -101,6 +103,8 @@ public JacksonHandle(JsonNode content) {
101103
public ObjectMapper getMapper() {
102104
if (mapper == null)
103105
mapper = new ObjectMapper();
106+
mapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
107+
mapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);
104108
return mapper;
105109
}
106110

src/test/java/com/marklogic/client/test/DocumentMetadataHandleTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,24 @@
3434
import org.w3c.dom.NodeList;
3535
import org.xml.sax.SAXException;
3636

37+
import com.fasterxml.jackson.databind.JsonNode;
3738
import com.marklogic.client.document.DocumentManager.Metadata;
39+
import com.marklogic.client.document.JSONDocumentManager;
3840
import com.marklogic.client.document.XMLDocumentManager;
41+
import com.marklogic.client.extra.jackson.JacksonHandle;
3942
import com.marklogic.client.io.DocumentMetadataHandle;
4043
import com.marklogic.client.io.DocumentMetadataHandle.Capability;
4144
import com.marklogic.client.io.DocumentMetadataHandle.DocumentCollections;
4245
import com.marklogic.client.io.DocumentMetadataHandle.DocumentPermissions;
4346
import com.marklogic.client.io.DocumentMetadataHandle.DocumentProperties;
47+
import com.marklogic.client.io.Format;
4448
import com.marklogic.client.io.StringHandle;
4549

4650
public class DocumentMetadataHandleTest {
4751
@BeforeClass
4852
public static void beforeClass() {
4953
Common.connect();
54+
//System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.wire", "debug");
5055
}
5156
@AfterClass
5257
public static void afterClass() {
@@ -165,4 +170,19 @@ public void testReadWriteMetadata() throws SAXException, IOException, XpathExcep
165170
assertEquals("Wrong quality", 3, metaReadHandle.getQuality());
166171
}
167172
}
173+
174+
/** If we regress on https://github.com/marklogic/java-client-api/issues/92 */
175+
@Test
176+
public void testIssue92() {
177+
DocumentMetadataHandle metadata = new DocumentMetadataHandle();
178+
//metadata.getCollections().add("collection");
179+
180+
JacksonHandle writeHandle = new JacksonHandle();
181+
JsonNode writeDocument = writeHandle.getMapper().convertValue("{\"test\":true}", JsonNode.class);
182+
writeHandle.set(writeDocument);
183+
184+
JSONDocumentManager jsonDocumentManager = Common.client.newJSONDocumentManager();
185+
jsonDocumentManager.write("testIssue92.json", metadata, writeHandle);
186+
jsonDocumentManager.delete("testIssue92.json");
187+
}
168188
}

0 commit comments

Comments
 (0)