@Test public void testOneCardinalityNegative() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testOneCardinalityNegative"); 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, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); String exception = ""; try { docMgr.patch(docId, patchHandle); } catch (Exception e) { System.out.println(e.getMessage()); exception = e.getMessage(); } String expectedException = "Local message: write failed: Bad Request. Server Message: RESTAPI-INVALIDREQ: (err:FOER0000) Invalid request: reason: invalid content patch operations for uri /cardinal/cardinal1.xml: invalid cardinality of 5 nodes for: /root/foo"; assertTrue("Exception is not thrown", exception.contains(expectedException)); // release client client.release(); }
@Test public void testZeroOrOneCardinalityNegative() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testZeroOrOneCardinalityNegative"); 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_ONE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); String exception = ""; try { docMgr.patch(docId, patchHandle); } catch (Exception e) { System.out.println(e.getMessage()); exception = e.getMessage(); } String expectedException = "Local message: write failed: Bad Request. Server Message: RESTAPI-INVALIDREQ: (err:FOER0000) Invalid request: reason: invalid content patch operations for uri /cardinal/cardinal1.xml: invalid cardinality of 5 nodes for: /root/foo"; assertTrue("Exception is not thrown", exception.contains(expectedException)); // release client client.release(); }
@Test public void testOneOrMoreCardinalityNegative() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testOneOrMoreCardinalityNegative"); 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.ONE_OR_MORE, "<bar>added</bar>"); DocumentPatchHandle patchHandle = patchBldr.build(); String exception = ""; try { docMgr.patch(docId, patchHandle); } catch (Exception e) { System.out.println(e.getMessage()); exception = e.getMessage(); } String expectedException = "Local message: write failed: Bad Request. Server Message: RESTAPI-INVALIDREQ: (err:FOER0000) Invalid request: reason: invalid content patch operations for uri /cardinal/cardinal3.xml: invalid cardinality of 0 nodes for: /root/foo"; assertTrue("Exception is not thrown", exception.contains(expectedException)); // 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 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 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 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(); }
DocumentPatchBuilder xmlPatchBldr = xmlDocMgr.newPatchBuilder();
DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/root", Position.LAST_CHILD, Cardinality.ONE, "<modified>2013-03-21</modified>"); DocumentPatchHandle patchHandle = patchBldr.build(); assertTrue("Insertion Failed ", contentBefore.contains("</modified></root>")); DocumentPatchBuilder xmlPatchBldr = xmlDocMgr.newPatchBuilder(); DocumentPatchHandle xmlPatchForNode = xmlPatchBldr.insertFragment("/root/id", Position.BEFORE, Cardinality.ONE_OR_MORE, "<modified>1989-04-06</modified>").build(); xmlDocMgr.patch(docId, xmlPatchForNode); assertTrue("Insertion Failed ", contentAfter.contains("1989-04-06")); DocumentPatchBuilder xmlPatchBldr1 = xmlDocMgr.newPatchBuilder(); DocumentPatchHandle xmlPatchForNode1 = xmlPatchBldr1.insertFragment("/root/id", Position.AFTER, Cardinality.ZERO_OR_ONE, "<modified>2013-07-29</modified>").build(); xmlDocMgr.patch(docId, xmlPatchForNode1);
@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 testPartialUpdateInsertFragments() throws Exception { System.out.println("Running testPartialUpdateInsertFragments"); 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.replaceFragment("/root/title", "<replaced>foo</replaced>"); // Replacing Fragments with invalid path patchBldr.replaceFragment("/root/invalidpath", "<replaced>FalseEntry</replaced>"); patchBldr.replaceInsertFragment("/root/nonexist", "/root", Position.LAST_CHILD, " <foo>bar</foo>\n "); DocumentPatchHandle patchHandle = patchBldr.build(); xmlDocMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String content = xmlDocMgr.read(docId, new StringHandle()).get(); System.out.println(content); assertTrue("fragment is not Replaced", content.contains("<replaced>foo</replaced>")); assertFalse("fragment is not Replaced", content.contains("<replaced>FalseEntry</replaced>")); assertTrue("replaceInsertFragment has Failed", content.contains("<foo>bar</foo>")); // release client client.release(); }
System.out.println(" Before Updating " + contentBefore); DocumentPatchBuilder patchBldr = xmlDocMgr.newPatchBuilder(); patchBldr.insertFragment("/root/title", Position.BEFORE, "<start>Hi</start>\n "); patchBldr.insertFragment("/root/id", Position.AFTER, "\n <modified>2013-03-21</modified>");
@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 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(); }
DocumentMetadataPatchBuilder patchBldrXML = xmlDocMgr.newPatchBuilder(Format.XML); patchBldrXML.addMetadataValue("MLVersion", "MLVersion"); patchBldrXML.addCollection("/document/collection3"); assertTrue("Patch did not succeed - Collection", contentMetadataXML.contains("<rapi:collection>/document/collection3</rapi:collection>")); DocumentMetadataPatchBuilder patchBldrXML2 = xmlDocMgr.newPatchBuilder(Format.XML);
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();
System.out.println(" Before Updating Document 2 " + contentBefore2); DocumentPatchBuilder xmlPatchBldr1 = xmlDocMgr1.newPatchBuilder(); DocumentPatchBuilder xmlPatchBldr2 = xmlDocMgr2.newPatchBuilder();
@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.write(temporalDocument5, null, handle1, null, null, temporalCollection); DocumentPatchBuilder patchBldr = docMgr.newPatchBuilder(); patchBldr.insertFragment("/test/song", Position.AFTER, "<song>Kryptonite</song>"); DocumentPatchHandle patchHandle = patchBldr.build(); assertXpathEvaluatesTo("2","count(/*[local-name()='test']/*[local-name()='song'])",content); DocumentMetadataPatchBuilder metadatapatchBldr = docMgr.newPatchBuilder(Format.XML); DocumentPatchHandle metadatapatchHandle = metadatapatchBldr .addMetadataValue("key1", "value1").build(); 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(); 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();