@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(); }
patchBldr.insertFragment("/root", Position.LAST_CHILD, Cardinality.ONE, "<modified>2013-03-21</modified>"); DocumentPatchHandle patchHandle = patchBldr.build(); docMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String contentBefore = xmlDocMgr.read(docId, new StringHandle()).get(); xmlDocMgr.patch(docId, xmlPatchForNode); waitForPropertyPropagate(); String contentAfter = xmlDocMgr.read(docId, new StringHandle()).get(); xmlDocMgr.patch(docId, xmlPatchForNode1); waitForPropertyPropagate(); contentAfter = xmlDocMgr.read(docId, new StringHandle()).get();
@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(); }
xmlDocMgr.patch(docId, patchHandle); waitForPropertyPropagate(); String content = xmlDocMgr.read(docId, new StringHandle()).get();
@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(); }
DocumentPatchHandle patchHandleXML = patchBldrXML.build(); xmlDocMgr.patch(docId, temporalLsqtCollectionName, patchHandleXML); waitForPropertyPropagate(); xmlDocMgr.patch(docId, temporalLsqtCollectionName, patchHandleXML2); waitForPropertyPropagate(); String contentMetadataXML2 = xmlDocMgr.readMetadata(docId, new StringHandle()).get();
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, t); t.commit(); waitForPropertyPropagate();
@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(); }
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); 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.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.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);