@Override public List<JobExecution> findJobExecutions(JobInstance jobInstance) { String uri = SPRING_BATCH_DIR + jobInstance.getId().toString() + ".xml"; XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); MarkLogicJobInstance mji = xmlDocMgr.read(uri, handle).get(); List<JobExecution> jobExecutions = mji.getJobExecutions(); Collections.reverse(mji.getJobExecutions()); return jobExecutions; }
@Test public void testWriteMultipleXMLDocWithDefaultMetadata() throws KeyManagementException, NoSuchAlgorithmException, Exception { String docId[] = { "/foo/test/Foo1.xml", "/foo/test/Foo2.xml", "/foo/test/Foo3.xml" }; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentWriteSet writeset = docMgr.newWriteSet(); // put metadata DocumentMetadataHandle mh = setMetadata(); writeset.addDefault(mh); writeset.add(docId[0], new DOMHandle(getDocumentContent("This is so foo1"))); writeset.add(docId[1], new DOMHandle().with(getDocumentContent("This is so foo2"))); writeset.add(docId[2], new DOMHandle().with(getDocumentContent("This is so foo3"))); docMgr.write(writeset); DocumentPage page = docMgr.read(docId); assertTrue("DocumentPage Size did not return expected value:: returned== " + page.size(), page.size() == 3); while (page.hasNext()) { DocumentRecord rec = page.next(); docMgr.readMetadata(rec.getUri(), mh); validateMetadata(mh); } validateMetadata(mh); }
@Override public JobInstance getJobInstance(Long instanceId) { String uri = SPRING_BATCH_DIR + instanceId.toString() + ".xml"; XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); DocumentDescriptor desc = xmlDocMgr.exists(uri); if (desc == null) { return null; } else { JAXBHandle<MarkLogicJobInstance> jaxbHandle = xmlDocMgr.read(uri, new JAXBHandle<MarkLogicJobInstance>(jaxbContext())); MarkLogicJobInstance mji = jaxbHandle.get(); return mji.getJobInstance(); } }
@Test public void testWriteMultipleXMLDoc() throws KeyManagementException, NoSuchAlgorithmException, Exception { String docId[] = { "/foo/test/Foo1.xml", "/foo/test/Foo2.xml", "/foo/test/Foo3.xml" }; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentWriteSet writeset = docMgr.newWriteSet(); writeset.add(docId[0], new DOMHandle(getDocumentContent("This is so foo1"))); writeset.add(docId[1], new DOMHandle().with(getDocumentContent("This is so foo2"))); writeset.add(docId[2], new DOMHandle().with(getDocumentContent("This is so foo3"))); docMgr.write(writeset); DOMHandle dh = new DOMHandle(); docMgr.read(docId[0], dh); assertEquals("xml document write difference", "This is so foo1", dh.get().getChildNodes().item(0).getTextContent()); docMgr.read(docId[1], dh); assertEquals("xml document write difference", "This is so foo2", dh.get().getChildNodes().item(0).getTextContent()); docMgr.read(docId[2], dh); assertEquals("xml document write difference", "This is so foo3", dh.get().getChildNodes().item(0).getTextContent()); // Bulk delete on XMLDocumentManager docMgr.delete(docId[0], docId[1], docId[2]); }
@Override public void saveJobExecution(JobExecution jobExecution) { validateJobExecution(jobExecution); jobExecution.incrementVersion(); jobExecution.setId(incrementer.nextLongValue()); XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); String uri = SPRING_BATCH_DIR + jobExecution.getJobInstance().getId().toString() + ".xml"; DocumentDescriptor desc = xmlDocMgr.exists(uri); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); xmlDocMgr.read(uri, handle); MarkLogicJobInstance mji = handle.get(); mji.addJobExecution(jobExecution); //Set document metadata DocumentMetadataHandle jobInstanceMetadata = new DocumentMetadataHandle(); jobInstanceMetadata.getCollections().add(COLLECTION_JOB_INSTANCE); xmlDocMgr.write(desc, jobInstanceMetadata, handle); logger.info("insert JobExecution:" + uri + "," + desc.getVersion()); }
@Test public void testBug18993() throws KeyManagementException, NoSuchAlgorithmException, IOException { if (!IsSecurityEnabled()) { // Run it only in non-SSL mode. System.out.println("Running testBug18993"); DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); XMLDocumentManager docMgr = client.newXMLDocumentManager(); StringHandle readHandle = new StringHandle(); String uris[] = { "/a b" }; String expectedXML = "<foo>a space b</foo>"; for (String uri : uris) { System.out.println("uri = " + uri); docMgr.read(uri, readHandle); System.out.println(); String strXML = readHandle.toString(); System.out.print(readHandle.toString()); assertTrue("Document is not returned", strXML.contains(expectedXML)); System.out.println(); } // release client client.release(); } }
@Test public void testStack20170725() throws IOException { XMLDocumentManager documentManager = Common.client.newXMLDocumentManager(); Transaction transaction = Common.client.openTransaction(); DocumentMetadataHandle metadataHandle = new DocumentMetadataHandle(); documentManager.writeAs("all_well.xml", new FileHandle( new File("../marklogic-client-api-functionaltests/src/test/java/com" + "/marklogic/client/functionaltest/data/all_well.xml"))); InputStreamHandle handle = documentManager.read("all_well.xml", metadataHandle, new InputStreamHandle(), transaction); try { InputStream stream = handle.get(); try { while ( stream.read() > -1 ) {} } finally { stream.close(); } } finally { handle.close(); } // if we ran without throwing any exceptions, then this test passes } }
xmlDocMgr.read(uri, handle); MarkLogicJobInstance mji = handle.get(); mji.updateJobExecution(jobExecution);
System.out.println(docId); content = docMgr.read(desc, new StringHandle()).get(); System.out.println(content);
@Test public void testZeroOrMoreCardinality() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testZeroOrMoreCardinality"); String[] filenames = { "cardinal1.xml" }; DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/cardinal/", "XML"); } String docId = "/cardinal/cardinal1.xml"; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root/foo", Position.AFTER, Cardinality.ZERO_OR_MORE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(docId, patchHandle); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertTrue("fragment is not inserted", content.contains("<foo>one</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>two</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>three</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>four</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>five</foo><bar>added</bar>")); // release client client.release(); }
@Test public void testOneOrMoreCardinalityPositve() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testOneOrMoreCardinalityPositive"); String[] filenames = { "cardinal1.xml" }; DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/cardinal/", "XML"); } String docId = "/cardinal/cardinal1.xml"; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root/foo", Position.AFTER, Cardinality.ONE_OR_MORE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(docId, patchHandle); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertTrue("fragment is not inserted", content.contains("<foo>one</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>two</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>three</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>four</foo><bar>added</bar>")); assertTrue("fragment is not inserted", content.contains("<foo>five</foo><bar>added</bar>")); // release client client.release(); }
@Test public void testCreate() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testCreate"); String filename = "flipper.xml"; // connect the client DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // create doc manager XMLDocumentManager docMgr = client.newXMLDocumentManager(); // create template DocumentUriTemplate template = docMgr.newDocumentUriTemplate("xml"); template.withDirectory("/mytest/create/"); // get the file File file = new File("src/test/java/com/marklogic/client/functionaltest/data/" + filename); // create a handle on the content FileHandle handle = new FileHandle(file); handle.set(file); // create doc DocumentDescriptor desc = docMgr.create(template, handle); // get the uri String docId = desc.getUri(); System.out.println(docId); String content = docMgr.read(desc, new StringHandle()).get(); System.out.println(content); assertTrue("document is not created", content.contains("Flipper")); // release the client client.release(); }
@Test public void testPartialUpdateInsertExistingFragments() throws Exception { System.out.println("Running testPartialUpdateInsertExistingFragments"); SecurityContext secContext = new DatabaseClientFactory.DigestAuthContext("eval-user", "x"); DatabaseClient client = DatabaseClientFactory.newClient(appServerHostname, uberPort, dbName, secContext, getConnType()); // write docs String filename = "constraint1.xml"; writeDocumentUsingInputStreamHandle(client, filename, "/partial-update/", "XML"); String docId = "/partial-update/constraint1.xml"; // Creating Manager XMLDocumentManager xmlDocMgr = client.newXMLDocumentManager(); String contentBefore = xmlDocMgr.read(docId, new StringHandle()).get(); System.out.println(" Before Updating " + contentBefore); // Replacing Fragments with valid path DocumentPatchBuilder patchBldr = xmlDocMgr.newPatchBuilder(); patchBldr.replaceInsertFragment("/root/title", "/root", Position.LAST_CHILD, "<foo>LastChild</foo>"); patchBldr.replaceInsertFragment("/root/id", "/root", Position.BEFORE, "<foo>Before</foo>"); patchBldr.replaceInsertFragment("/root/p", "/root", Position.AFTER, "<foo>After</foo>"); DocumentPatchHandle patchHandle = patchBldr.build(); xmlDocMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String content = xmlDocMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertTrue("replaceInsertFragment Failed at Position.LAST_CHILD", content.contains("<foo>LastChild</foo>")); assertTrue("replaceInsertFragment Failed at Position.BEFORE", content.contains("<foo>Before</foo>")); assertTrue("replaceInsertFragment Failed at Position.AFTER", content.contains("<foo>After</foo>")); // release client client.release(); }
@Test public void testOneCardinalityPositve() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testOneCardinalityPositive"); String[] filenames = { "cardinal2.xml" }; DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/cardinal/", "XML"); } String docId = "/cardinal/cardinal2.xml"; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root/foo", Position.AFTER, Cardinality.ONE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(docId, patchHandle); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertTrue("fragment is not inserted", content.contains("<bar>added</bar>")); // release client client.release(); }
@Test public void testZeroOrOneCardinalityPositiveWithZero() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testZeroOrOneCardinalityPositiveWithZero"); String[] filenames = { "cardinal3.xml" }; DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/cardinal/", "XML"); } String docId = "/cardinal/cardinal3.xml"; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root/foo", Position.AFTER, Cardinality.ZERO_OR_ONE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(docId, patchHandle); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertFalse("fragment is inserted", content.contains("<baz>one</baz><bar>added</bar>")); // release client client.release(); }
@Test public void testPartialUpdateCombination() throws Exception { System.out.println("Running testPartialUpdateCombination"); SecurityContext secContext = new DatabaseClientFactory.DigestAuthContext("eval-user", "x"); DatabaseClient client = DatabaseClientFactory.newClient(appServerHostname, uberPort, dbName, secContext, getConnType()); // write docs String filename = "constraint1.xml"; writeDocumentUsingInputStreamHandle(client, filename, "/partial-update/", "XML"); String docId = "/partial-update/constraint1.xml"; // Creating Manager XMLDocumentManager xmlDocMgr = client.newXMLDocumentManager(); String contentBefore = xmlDocMgr.read(docId, new StringHandle()).get(); System.out.println(" Before Updating " + contentBefore); DocumentPatchBuilder xmlPatchBldr = xmlDocMgr.newPatchBuilder(); DocumentPatchHandle xmlPatch = xmlPatchBldr.insertFragment("/root", Position.LAST_CHILD, "<modified>2012-11-5</modified>").delete("/root/*:date") .replaceApply("/root/popularity", xmlPatchBldr.call().multiply(2)).build(); xmlDocMgr.patch(docId, xmlPatch); waitForPropertyPropagate(); String content = xmlDocMgr.read(docId, new StringHandle()).get(); System.out.println(" After Updating " + content); // Check assertTrue("Multiplication Failed", content.contains("<popularity>10</popularity>")); assertFalse("Deletion Failed", content.contains("<date xmlns=\"http://purl.org/dc/elements/1.1/\">2005-01-01</date>")); assertTrue("Insertion Failed", content.contains("<modified>2012-11-5</modified>")); // release client client.release(); }
@Test public void testZeroOrOneCardinalityPositive() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testZeroOrOneCardinalityPositive"); String[] filenames = { "cardinal2.xml" }; DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/cardinal/", "XML"); } String docId = "/cardinal/cardinal2.xml"; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root/foo", Position.AFTER, Cardinality.ZERO_OR_ONE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(docId, patchHandle); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertTrue("fragment is not inserted", content.contains("<foo>one</foo><bar>added</bar>")); // release client client.release(); }
@Test public void testPartialUpdateXMLDscriptor() throws IOException { System.out.println("Running testPartialUpdateXMLDescriptor"); String[] filenames = { "constraint1.xml", "constraint2.xml", "constraint3.xml", "constraint4.xml", "constraint5.xml" }; SecurityContext secContext = new DatabaseClientFactory.DigestAuthContext("eval-user", "x"); DatabaseClient client = DatabaseClientFactory.newClient(appServerHostname, uberPort, dbName, secContext, getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/partial-update/", "XML"); } String docId = "/partial-update/constraint1.xml"; // create doc manager XMLDocumentManager docMgr = client.newXMLDocumentManager(); // Create Document Descriptor DocumentDescriptor desc = docMgr.newDescriptor(docId); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root", Position.LAST_CHILD, "<modified>2013-03-21</modified>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(desc, patchHandle); waitForPropertyPropagate(); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println("After" + content); assertTrue("fragment is not inserted", content.contains("<modified>2013-03-21</modified></root>")); // release client client.release(); }
@Test public void testPartialUpdateXMLDscriptorTranc() throws IOException { System.out.println("Running testPartialUpdateXMLDescriptorTranc"); String[] filenames = { "constraint1.xml", "constraint2.xml", "constraint3.xml", "constraint4.xml", "constraint5.xml" }; SecurityContext secContext = new DatabaseClientFactory.DigestAuthContext("eval-user", "x"); DatabaseClient client = DatabaseClientFactory.newClient(appServerHostname, uberPort, dbName, secContext, getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/partial-update/", "XML"); } String docId = "/partial-update/constraint1.xml"; // create doc manager XMLDocumentManager docMgr = client.newXMLDocumentManager(); // create template DocumentUriTemplate template = docMgr.newDocumentUriTemplate("xml"); template.withDirectory(docId); DocumentDescriptor desc = docMgr.newDescriptor(template.getDirectory()); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root", Position.LAST_CHILD, "<modified>2013-03-21</modified>"); DocumentPatchHandle patchHandle = patchBldr.build(); Transaction t = client.openTransaction("Tranc"); docMgr.patch(desc, patchHandle, t); t.commit(); waitForPropertyPropagate(); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println("After" + content); assertTrue("fragment is not inserted", content.contains("<modified>2013-03-21</modified></root>")); // release client client.release(); }
docMgr.read(docId, readHandle);