@Override public void finishBatch() { docMgr.write(writeSet); writeSet = docMgr.newWriteSet(); }
String uri = SPRING_BATCH_DIR + jobInstance.getId().toString() + ".xml"; DocumentDescriptor desc = xmlDocMgr.exists(uri); if (desc == null) { desc = xmlDocMgr.newDescriptor(uri); jobInstanceMetadata.getCollections().add(COLLECTION_JOB_INSTANCE); xmlDocMgr.write(desc, jobInstanceMetadata, handle); logger.info("insert:" + uri + "," + desc.getVersion());
DocumentWriteSet writeset = docMgr.newWriteSet(); for (int i = 0; i < 3; i++) { SourceHandle handle = new SourceHandle(); docMgr.write(writeset); FileHandle dh = new FileHandle(); docMgr.read(docId[0], dh); scanner = new Scanner(dh.get()).useDelimiter("\\Z"); String readContent = scanner.next(); assertTrue("xml document contains firstname", readContent.contains("firstname")); docMgr.read(docId[1], dh); sc1 = new Scanner(dh.get()).useDelimiter("\\Z"); readContent = sc1.next(); assertTrue("xml document contains firstname", readContent.contains("firstname")); docMgr.read(docId[2], dh); sc2 = new Scanner(dh.get()).useDelimiter("\\Z"); readContent = sc2.next();
@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(); } }
"/foo/test/Foo7.xml", "/foo/test/Foo8.xml", "/foo/test/Foo8.xml" }; XMLDocumentManager docMgr = client.newXMLDocumentManager(); DocumentWriteSet writeset = docMgr.newWriteSet(); DocumentDescriptor docdisc = docMgr.newDescriptor("test1"); docMgr.write(writeset); DocumentPage page = docMgr.read(docId); DocumentRecord rec; mh1 = new DocumentMetadataHandle(); while (page.hasNext()) { rec = page.next(); docMgr.readMetadata(rec.getUri(), mh1); validateDefaultMetadata(mh1); writeset = docMgr.newWriteSet(); writeset.add(docId[4], new DOMHandle().with(getDocumentContent("This is so foo5"))); writeset.add(docId[5], new DOMHandle().with(getDocumentContent("This is so foo6"))); docMgr.write(writeset); page = docMgr.read(docId[3]); mh2 = new DocumentMetadataHandle(); rec = page.next(); docMgr.readMetadata(rec.getUri(), mh2); validateDefaultMetadata(mh2); page = docMgr.read(docId[4]);
@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 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]); }
DocumentUriTemplate template = runtimeDbDocMgr.newDocumentUriTemplate(".xml").withDirectory("/test/"); StringHandle handle = new StringHandle(docContents).withFormat(Format.XML); DocumentDescriptor createDesc = runtimeDbDocMgr.create(template, handle); String docUri = createDesc.getUri(); DocumentDescriptor existsDesc = runtimeDbDocMgr.exists(docUri); assertNotNull("Doc " + docUri + " should exist in the Documents db", existsDesc); runtimeDbDocMgr.write(docUri, new StringHandle(docContents2).withFormat(Format.XML)); String value2 = runtimeDbDocMgr.readAs(docUri, String.class); assertXMLEqual("Doc contents incorrect", docContents2, value2); DocumentPatchBuilder patchBldr = runtimeDbDocMgr.newPatchBuilder(); patchBldr.replaceValue("/a", newValue); DocumentPatchHandle patchHandle = patchBldr.build(); runtimeDbDocMgr.patch(docUri, patchHandle); DocumentPage docs = runtimeDbDocMgr.read(docUri); assertNotNull("Should get a doc back", docs); assertTrue("Should get a doc back", docs.hasNext()); runtimeDbDocMgr.delete(docUri); boolean deleted = false; try { runtimeDbDocMgr.readAs(docUri, String.class); } catch (ResourceNotFoundException e) { deleted = true;
ServerTransform transform = new ServerTransform(TransformExtensionsTest.XQUERY_NAME) .addParameter("value", "true"); docMgr.setWriteTransform(transform); DocumentWriteSet writeset =docMgr.newWriteSet(); docMgr.write(writeset); docMgr.setWriteTransform(null); docMgr.write(docId[2], new StringHandle().with("<xml><a/></xml>").withFormat(Format.XML)); Document doc0 = docMgr.read(docId[0], new DOMHandle()).get(); assertEquals("true",doc0.getDocumentElement().getAttributeNS(TEST_NS, "transformed")); assertEquals("this is so foo", docMgr.read(docId[1], new StringHandle()).get()); Document doc2 = docMgr.read(docId[2], new DOMHandle()).get(); assertEquals("", doc2.getDocumentElement().getAttributeNS(TEST_NS, "transformed")); doc2 = docMgr.read(docId[2], new DOMHandle(), transform).get(); assertEquals("true",doc2.getDocumentElement().getAttributeNS(TEST_NS, "transformed")); doc2 = docMgr.read(docId[2]).next().getContent(new DOMHandle()).get(); assertEquals("", doc2.getDocumentElement().getAttributeNS(TEST_NS, "transformed")); docMgr.setReadTransform(transform); doc2 = docMgr.read(docId[2]).next().getContent(new DOMHandle()).get(); assertEquals("true",doc2.getDocumentElement().getAttributeNS(TEST_NS, "transformed")); docMgr.setReadTransform(transform);
DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment( "/root/firstChild/firstChildOfFirstChild", Position.BEFORE, Cardinality.ONE_OR_MORE, docMgr.write(docId, new DOMHandle().with(domDocument)); case 0: patchType = "built"; docMgr.patch(docId, patchHandle); break; case 1: patchType = "raw"; docMgr.clearMetadataCategories(); docMgr.patch(docId, new StringHandle(patchHandle.toString())); docMgr.setMetadataCategories(Metadata.ALL); break; default: String actual = docMgr.read(docId, new StringHandle()).get(); assertNotNull("Read null string for "+patchType+" patched XML content",actual); assertXMLEqual("Unexpected result for "+patchType+" patched XML document",expected,actual); patchBldr = docMgr.newPatchBuilder(); patchBldr.setNamespaces(namespaces); String inserted = "<n:new xmlns:n=\"new.org\"/>"; docMgr.write(docId, new StringHandle(before+after)); case 0:
docMgr.write(temporalDocument5, null, handle1, null, null, temporalCollection); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/test/song", Position.AFTER, "<song>Kryptonite</song>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(temporalDocument5, temporalCollection, patchHandle); String content = docMgr.read(temporalDocument5, new StringHandle().withFormat(Format.XML)).get(); assertXpathEvaluatesTo("2","count(/*[local-name()='test']/*[local-name()='song'])",content); DocumentMetadataPatchBuilder metadatapatchBldr = docMgr.newPatchBuilder(Format.XML); DocumentPatchHandle metadatapatchHandle = metadatapatchBldr .addMetadataValue("key1", "value1").build(); docMgr.patch(temporalDocument5, temporalCollection, metadatapatchHandle); String metadata = docMgr.readMetadata(temporalDocument5, new StringHandle().withFormat(Format.XML)).get(); assertXpathEvaluatesTo("2","count(/*[local-name()='metadata']/*[local-name()='metadata-values']/*[local-name()='metadata-value'])",metadata); patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/test", Position.LAST_CHILD, "<song>Here I am</song>"); patchHandle = patchBldr.build(); docMgr.patch("temporal-document5v1", temporalDocument5, temporalCollection, temporalDocument5, patchHandle); content = docMgr.read("temporal-document5v1", new StringHandle().withFormat(Format.XML)).get(); assertXpathEvaluatesTo("3","count(/*[local-name()='test']/*[local-name()='song'])",content); patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/test", Position.LAST_CHILD, "<song>Please forgive me</song>"); patchHandle = patchBldr.build(); docMgr.patch("temporal-document5v2", temporalDocument5, temporalCollection, "temporal-document5v1", patchHandle); content = docMgr.read("temporal-document5v2", new StringHandle().withFormat(Format.XML)).get(); assertXpathEvaluatesTo("4","count(/*[local-name()='test']/*[local-name()='song'])",content);
@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(); }
logger = Common.client.newLogger(out); logger.setContentMax(RequestLogger.ALL_CONTENT); docMgr.startLogging(logger); docMgr.write(docId, new DOMHandle().with(domDocument)); outString = new String(out.toByteArray()); assertTrue("Write failed to log output", outString.contains(domString)); logger = Common.client.newLogger(out); logger.setContentMax(RequestLogger.ALL_CONTENT); docMgr.startLogging(logger); String docText = docMgr.read(docId, new StringHandle()).get(); outString = new String(out.toByteArray()); assertTrue("Read failed to log output", outString.contains(docText)); logger = Common.client.newLogger(out); logger.setContentMax(RequestLogger.ALL_CONTENT); docMgr.startLogging(logger); docMgr.exists(docId); outString = new String(out.toByteArray()); assertTrue("Exists logged null output", outString != null); logger = Common.client.newLogger(out); logger.setContentMax(RequestLogger.ALL_CONTENT); docMgr.startLogging(logger); docMgr.delete(docId);
DocumentDescriptor desc = docMgr.exists(docId); if (desc != null) { docMgr.delete(desc); desc = docMgr.newDescriptor(docId); desc.setFormat(Format.XML); desc.setVersion(badVersion); int statusCode = 0; try { docMgr.write(desc, contentHandle); } catch (FailedRequestException e) { FailedRequest failreq = e.getFailedRequest(); docMgr.write(desc, contentHandle); String result = docMgr.read(desc, new StringHandle()).get(); long goodVersion = desc.getVersion(); assertTrue("Failed to read version", goodVersion != DocumentDescriptor.UNKNOWN_VERSION); docMgr.read(desc, new StringHandle()).get() != null); docMgr.read(desc, new StringHandle()) == null); docMgr.write(documentUri, contentHandle); } catch (FailedRequestException e) { FailedRequest failreq = e.getFailedRequest(); try {
DocumentWriteSet writeset1 = docMgr.newWriteSet(); for (int i = 0; i < 11; i++) { writeset1.add(DIRECTORY + "World-01-" + i + ".json", new StringHandle(docStr)); docMgr.write(writeset1); writeset1 = docMgr.newWriteSet(); docMgr.write(writeset1); docMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String content = docMgr.read(docId, new StringHandle()).get(); System.out.println("Patched Number node element is " + content); assertTrue("Patched Number node element incorrect", content.contains("\"Pop\":500"));
String contentMetadata = xmlDocMgr.readMetadata(docId, new StringHandle()).get(); System.out.println(" Before Updating " + contentMetadata); DocumentMetadataPatchBuilder patchBldr = xmlDocMgr.newPatchBuilder(Format.XML); patchBldr.addCollection("/document/collection3"); patchBldr.addPermission("replaceRoleTest", Capability.READ); patchBldr.addPropertyValue("Hello", "Hi"); DocumentPatchHandle patchHandle = patchBldr.build(); xmlDocMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String contentMetadata1 = xmlDocMgr.readMetadata(docId, new StringHandle()).get(); System.out.println(" After Changing " + contentMetadata1); DocumentMetadataPatchBuilder patchBldrRep = xmlDocMgr.newPatchBuilder(Format.XML); patchBldrRep.replaceCollection("/document/collection3", "/document/collection4"); patchBldrRep.replacePermission("admin", Capability.UPDATE); patchBldrRep.replacePropertyValue("Hello", "Bye"); DocumentPatchHandle patchHandleRep = patchBldrRep.build(); xmlDocMgr.patch(docId, patchHandleRep); waitForPropertyPropagate(); String contentMetadataRep = xmlDocMgr.readMetadata(docId, new StringHandle()).get(); System.out.println(" After Updating " + contentMetadataRep); DocumentMetadataPatchBuilder patchBldrDel = xmlDocMgr.newPatchBuilder(Format.XML); patchBldrDel.deleteCollection("/document/collection4"); patchBldrDel.deletePermission("replaceRoleTest"); patchBldrDel.deleteProperty("Hello"); DocumentPatchHandle patchHandleDel = patchBldrDel.build();
docMgr.newDocumentUriTemplate("xml").withDirectory("/test/testcreate/"); DocumentDescriptor desc = docMgr.create(template, new StringHandle().with(content)); String docId = desc.getUri(); assertTrue("Could not get URI assigned to created document with content only", docId != null && docId.length() > 0); String docText = docMgr.read(desc, new StringHandle()).get(); assertXMLEqual("Failed to read content for created document", content, docText); docMgr.delete(desc); docMgr.setMetadataCategories(Metadata.ALL); desc = docMgr.create( template, new StringHandle().with(metadata).withFormat(Format.XML), docId != null && docId.length() > 0); String stringMetadata = docMgr.readMetadata( docId, new StringHandle().withFormat(Format.XML) assertXpathEvaluatesTo("value1", "/*[local-name()='metadata']/*[local-name()='metadata-values']/*[local-name()='metadata-value'][@key=\"key1\"]", stringMetadata); docMgr.delete(docId);
docMgr.setMetadataCategories(Metadata.COLLECTIONS); docMgr.write( docId, metaWriteHandle, assertTrue("Document doesn't exist "+docId, docMgr.exists(docId)!=null); DocumentMetadataHandle metaReadHandle = docMgr.readMetadata(docId, new DocumentMetadataHandle()); assertTrue("Could not get document metadata as a structure", metaReadHandle != null); docMgr.delete(docId);
DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); if (filename == "cardinal1.xml") { patchBldr.insertFragment("/root", Position.LAST_CHILD, Cardinality.ONE, "<bar>added</bar>"); docMgr.patch(docId, patchHandle); String actual = docMgr.readMetadata(docId, new DocumentMetadataHandle()).toString(); System.out.println("Actual" + actual); docMgr.clearMetadataCategories(); docMgr.patch(docId, new StringHandle(patchHandle.toString())); docMgr.setMetadataCategories(Metadata.ALL); String actual = docMgr.readMetadata(docId, new DocumentMetadataHandle()).toString(); System.out.println("Actual" + actual); String actual = docMgr.read(docId, new StringHandle()).get();
@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()); }