@Test public void testWriteMultipleJSONDocsWithDefaultMetadata() throws KeyManagementException, NoSuchAlgorithmException, Exception { String docId[] = { "/a.json", "/b.json", "/c.json" }; String json1 = new String("{\"animal\":\"dog\", \"says\":\"woof\"}"); String json2 = new String("{\"animal\":\"cat\", \"says\":\"meow\"}"); String json3 = new String("{\"animal\":\"rat\", \"says\":\"keek\"}"); Reader strReader = new StringReader(json1); JSONDocumentManager docMgr = client.newJSONDocumentManager(); DocumentWriteSet writeset = docMgr.newWriteSet(); // put metadata DocumentMetadataHandle mh = setMetadata(); writeset.addDefault(mh); writeset.add(docId[0], new ReaderHandle(strReader).withFormat(Format.JSON)); writeset.add(docId[1], new ReaderHandle(new StringReader(json2))); writeset.add(docId[2], new ReaderHandle(new StringReader(json3))); docMgr.write(writeset); DocumentPage page = docMgr.read(docId); while (page.hasNext()) { DocumentRecord rec = page.next(); docMgr.readMetadata(rec.getUri(), mh); System.out.println(rec.getUri()); validateMetadata(mh); } validateMetadata(mh); }
docMgr.write("javaSingleJSONDocV1.json", docId, null, handle, null, null, temporalLsqtCollectionName, insertTime); docMgr.protect(docId, temporalLsqtCollectionName, ProtectionLevel.NOUPDATE, DatatypeFactory.newInstance().newDuration("PT30S")); JacksonDatabindHandle<ObjectNode> handleUpd = getJSONDocumentHandle( "2003-01-01T00:00:00", "2008-12-31T23:59:59", try { docMgr.write(docId, null, handleUpd, null, null, temporalLsqtCollectionName, updateTime); } catch (Exception ex) { str.append(ex.getMessage()); docMgr.write(docId, null, handleUpd, null, null, temporalLsqtCollectionName, updateTime); Thread.sleep(5000); DocumentPage readResults = jsonDocMgr.read(docId); System.out.println("Number of results = " + readResults.size()); assertEquals("Wrong number of results", 1, readResults.size()); DocumentPage termQueryResults = docMgr.search(termQuery, start); System.out .println("Number of results = " + termQueryResults.getTotalSize());
@Override public void saveJob(Job job, Transaction transaction) { JacksonDatabindHandle<Job> contentHandle = new JacksonDatabindHandle<>(job); contentHandle.setMapper(objectMapper); DocumentMetadataHandle metadataHandle = new DocumentMetadataHandle(); metadataHandle = metadataHandle.withCollections("job"); DocumentWriteSet writeSet = docMgr.newWriteSet(); writeSet.add("/jobs/" + job.getJobId() + ".json", metadataHandle, contentHandle); docMgr.write(writeSet, transaction); }
/** Demonstrates how to use a JsonGenerator to stream output that you then persist to the * server using StringHandle (in this case, implicitly via writeAs). */ @Test public void testWriteStream() throws IOException { JacksonParserHandle handle = new JacksonParserHandle(); handle = docMgr.read(ORDER_URI, handle); JsonParser jp = handle.get(); if (jp.nextToken() != JsonToken.START_OBJECT) { throw new IOException("Expected data to start with an Object"); } StringWriter jsonWriter = new StringWriter(); JsonGenerator jsonStream = (new ObjectMapper()).getFactory().createGenerator(jsonWriter); // in this sample case we're copying everything up to and excluding the order SerializedString order = new SerializedString("order"); do { jsonStream.copyCurrentEvent(jp); } while ( ! jp.nextFieldName(order) ); jsonStream.flush(); jsonStream.close(); docMgr.writeAs("testWriteStream.json", jsonWriter.toString()); JsonNode originalTree = docMgr.readAs(ORDER_URI, JsonNode.class); JsonNode streamedTree = docMgr.readAs("testWriteStream.json", JsonNode.class); assertEquals("customerName fields don't match", originalTree.get("customerName"), streamedTree.get("customerName")); assertEquals("shipToAddress fields don't match", originalTree.get("shipToAddress"), streamedTree.get("shipToAddress")); assertEquals("billingAddressRequired fields don't match", originalTree.get("billingAddressRequired"), streamedTree.get("billingAddressRequired")); }
@Test public void testWriteMultipleJSONDocs() throws KeyManagementException, NoSuchAlgorithmException, Exception { String docId[] = { "/a.json", "/b.json", "/c.json" }; String json1 = new String("{\"animal\":\"dog\", \"says\":\"woof\"}"); String json2 = new String("{\"animal\":\"cat\", \"says\":\"meow\"}"); String json3 = new String("{\"animal\":\"rat\", \"says\":\"keek\"}"); Reader strReader = new StringReader(json1); JSONDocumentManager docMgr = client.newJSONDocumentManager(); DocumentWriteSet writeset = docMgr.newWriteSet(); writeset.add(docId[0], new ReaderHandle(strReader).withFormat(Format.JSON)); writeset.add(docId[1], new ReaderHandle(new StringReader(json2))); writeset.add(docId[2], new ReaderHandle(new StringReader(json3))); docMgr.write(writeset); ReaderHandle r1 = new ReaderHandle(); docMgr.read(docId[0], r1); BufferedReader bfr = new BufferedReader(r1.get()); assertEquals(json1, bfr.readLine()); docMgr.read(docId[1], r1); assertEquals("Json File Content" + docId[1], json2, new BufferedReader(r1.get()).readLine()); docMgr.read(docId[2], r1); assertEquals("Json File Content" + docId[2], json3, new BufferedReader(r1.get()).readLine()); bfr.close(); }
docMgr.write(docId, new BytesHandle(content.getBytes(Charset.forName("UTF-8"))) .withFormat(Format.JSON)); docMgr.setMetadataCategories(Metadata.ALL); docMgr.writeMetadata(docId, new StringHandle().with(metadata).withFormat(Format.JSON)); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder().pathLanguage( PathLanguage.JSONPATH); .build(); String jsonMetadata = docMgr.readMetadata(docId, new StringHandle().withFormat(Format.JSON)).get(); logger.debug("Before4: "+ jsonMetadata); logger.debug("Patch4: "+ patchHandle.toString()); docMgr.patch(docId, patchHandle); String metadata = docMgr.readMetadata(docId, new StringHandle().withFormat(Format.XML)).get(); jsonMetadata = docMgr.readMetadata(docId, new StringHandle().withFormat(Format.JSON)).get(); docMgr.delete(docId);
DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.pathLanguage(PathLanguage.JSONPATH); docMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String content = docMgr.read(docId, new StringHandle()).get(); DocumentPatchBuilder patchBldrBool = docMgr.newPatchBuilder(); patchBldrBool.pathLanguage(PathLanguage.JSONPATH); docMgr.patch(docId, patchHandleBool); waitForPropertyPropagate(); String content1 = docMgr.read(docId, new StringHandle()).get();
String content = mapper.writeValueAsString(sourceNode); JSONDocumentManager docMgr = Common.client.newJSONDocumentManager(); docMgr.write(docId, new StringHandle().with(content)); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder().pathLanguage( PathLanguage.JSONPATH); docMgr.patch(docId, patchHandle); expectedNode.put("numberKey3" , 18); String docText = docMgr.read(docId, new StringHandle()).get(); assertNotNull("Read null string for patched JSON content", docText);
JsonNode writeDocument3 = writeHandle.getMapper().convertValue(product3, JsonNode.class); JSONDocumentManager docMgr = client.newJSONDocumentManager(); DocumentWriteSet writeset = docMgr.newWriteSet(); docMgr.write(writeset); docMgr.read(docId[0], jh); String exp = "{\"name\":\"iPhone\",\"industry\":\"Hardware\",\"description\":\"Very cool Iphone\"}"; JSONAssert.assertEquals(exp, jh.get().toString(), false); docMgr.read(docId[1], jh); exp = "{\"name\":\"iPad\",\"industry\":\"Hardware\",\"description\":\"Very cool Ipad\"}"; JSONAssert.assertEquals(exp, jh.get().toString(), false); docMgr.read(docId[2], jh); exp = "{\"name\":\"iPod\",\"industry\":\"Hardware\",\"description\":\"Very cool Ipod\"}"; JSONAssert.assertEquals(exp, jh.get().toString(), false); docMgr.delete(docId[0], docId[1], docId[2]);
docMgr.setMetadataCategories(Metadata.ALL); DocumentMetadataHandle mh = setMetadata(false); docMgr.write(docId, mh, handle, null, null, temporalLsqtCollectionName, insertTime); DocumentMetadataPatchBuilder patchBldrJson = jsonDocMgr.newPatchBuilder(Format.JSON); patchBldrJson.addMetadataValue("MLVersionJson", "MarkLogic 9.0 Json"); patchBldrJson.addCollection("/document/collection3Json"); jsonDocMgr.patch(docId, temporalLsqtCollectionName, patchHandleJSON); waitForPropertyPropagate(); String contentMetadataJson = jsonDocMgr.readMetadata(docId, new StringHandle()).get(); System.out.println(" After Changing " + contentMetadataJson);
docMgr.write(docId, null, handle, null, null, temporalLsqtCollectionName, insertTime); Thread.sleep(5000); docMgr.protect(docId, temporalLsqtCollectionName, ProtectionLevel.NOWIPE, DatatypeFactory.newInstance().newDuration("PT60S")); JacksonDatabindHandle<ObjectNode> handleUpd = getJSONDocumentHandle( "2003-01-01T00:00:00", "2012-12-31T23:59:59", "1999 Skyway Park - Updated - JSON", docId); docMgr.write(docId, null, handleUpd, null, null, temporalLsqtCollectionName, updateTime); StringBuilder str = new StringBuilder(); try { docMgr.wipe(docId, temporalLsqtCollectionName); } catch (Exception ex) { str.append(ex.getMessage()); DocumentPage readResults = jsonDocMgr.read(docId); String content = jsonDocMgr.read(docId, new StringHandle()).get(); assertTrue("Wrong number of results", content.contains("1999 Skyway Park - Updated - JSON")); docMgr.wipe(docId, t1, temporalLsqtCollectionName); Thread.sleep(5000); t1.commit(); readResults = jsonDocMgr.read(docId); System.out.println("Number of results = " + readResults.size()); assertEquals("Wrong number of results", 0, readResults.size());
@Test public void testBulkSearchSQDwithResponseFormatandStringHandle() throws KeyManagementException, NoSuchAlgorithmException, Exception { loadJSONDocuments(); JSONDocumentManager docMgr = client.newJSONDocumentManager(); QueryManager queryMgr = client.newQueryManager(); StructuredQueryBuilder qb = new StructuredQueryBuilder(); StructuredQueryDefinition qd = qb.and(qb.term("dog1", "dog11")); queryMgr.search(qd, new SearchHandle()); docMgr.setNonDocumentFormat(Format.JSON); docMgr.setSearchView(QueryView.METADATA); docMgr.setMetadataCategories(Metadata.PERMISSIONS); StringHandle results = new StringHandle().withFormat(Format.JSON); DocumentPage page = docMgr.search(qd, 1, results); DocumentMetadataHandle mh = new DocumentMetadataHandle(); while (page.hasNext()) { DocumentRecord rec = page.next(); validateRecord(rec, Format.JSON); docMgr.readMetadata(rec.getUri(), mh); assertTrue("Records has permissions? ", mh.getPermissions().containsKey("flexrep-eval")); assertTrue("Record has collections ?", mh.getCollections().isEmpty()); } assertFalse("Search handle contains", results.get().isEmpty()); }
@Override public PojoPage<T> read(ID[] ids, Transaction transaction) { List<String> uris = new ArrayList<>(); for ( ID id : ids ) { uris.add(createUri(id)); } DocumentPage docPage = (DocumentPage) docMgr.read(transaction, uris.toArray(new String[0])); PojoPage<T> pojoPage = new PojoPageImpl<>(docPage, entityClass); return pojoPage; } @Override
DocumentDescriptor desc = docMgr.newDescriptor(docId); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.pathLanguage(PathLanguage.JSONPATH); ObjectNode fragmentNode = mapper.createObjectNode(); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(desc, patchHandle); waitForPropertyPropagate(); String content = docMgr.read(docId, new StringHandle()).get();
JSONDocumentManager docMgr = client.newJSONDocumentManager(); docMgr.readMetadata(docId, mhRead); DocumentMetadataPatchBuilder patchBldr = docMgr.newPatchBuilder(Format.JSON); docMgr.patch(docId, patchHandle); try { Thread.sleep(5000); String content = docMgr.read(docId, new StringHandle()).get(); docMgr.readMetadata(docId, mhRead); DocumentPatchBuilder patchBldrEls = docMgrEls.newPatchBuilder(); patchBldrEls.pathLanguage(PathLanguage.JSONPATH); docMgr.patch(docId, patchHandleEls); String contentEls = docMgrEls.read(docId, new StringHandle()).get(); DocumentPatchBuilder patchBldrEls2 = docMgrEls.newPatchBuilder(); docMgrEls.patch(docId, patchHandleEls2); try { Thread.sleep(5000); docMgrEls.readMetadata(docId, mhRead);
docMgr.setMetadataCategories(Metadata.ALL); DocumentMetadataHandle mh = setMetadata(false); docMgr.write(docId, mh, handle, null, t, temporalLsqtCollectionName, insertTime);
docMgr.write(docId, new StringHandle().with(content)); String docText = docMgr.read(docId, new StringHandle()).get(); assertNotNull("Read null string for JSON content", docText); JsonNode readNode = mapper.readTree(docText); docMgr.read(docId, bytesHandle); readNode = mapper.readTree(bytesHandle.get()); assertTrue("JSON document mismatch reading bytes", docMgr.read(docId, inputStreamHandle); readNode = mapper.readTree(inputStreamHandle.get()); assertTrue("JSON document mismatch reading input stream", sourceNode.equals(readNode)); Reader reader = docMgr.read(docId, new ReaderHandle()).get(); readNode = mapper.readTree(reader); assertTrue("JSON document mismatch with reader", sourceNode.equals(readNode)); File file = docMgr.read(docId, new FileHandle()).get(); readNode = mapper.readTree(file); assertTrue("JSON document mismatch with file",
@Override public PojoPage<T> search(PojoQueryDefinition query, long start, SearchReadHandle searchHandle, Transaction transaction) { if ( searchHandle != null ) { HandleAccessor.checkHandle(searchHandle, "search"); if (searchHandle instanceof SearchHandle) { SearchHandle responseHandle = (SearchHandle) searchHandle; if ( docMgr instanceof DocumentManagerImpl ) { responseHandle.setHandleRegistry(((DocumentManagerImpl<?, ?>) docMgr).getHandleRegistry()); } responseHandle.setQueryCriteria(query); } } DocumentPage docPage = docMgr.search(wrapQuery(query), start, searchHandle, transaction); PojoPage<T> pojoPage = new PojoPageImpl<>(docPage, entityClass); return pojoPage; }
docMgr1.setMetadataCategories(Metadata.ALL); DocumentWriteSet writeset = docMgr1.newWriteSet(); writeset.add(docId[2], jacksonParserHandle3); docMgr1.write(writeset);