Search in sources :

Example 46 with XQueryService

use of org.xmldb.api.modules.XQueryService in project exist by eXist-db.

the class XQueryUpdateAction method execute.

@Override
public boolean execute() throws XMLDBException {
    final Collection col = DatabaseManager.getCollection(collectionPath, TestUtils.ADMIN_DB_USER, TestUtils.ADMIN_DB_PWD);
    final XQueryService service = (XQueryService) col.getService("XQueryService", "1.0");
    service.query(query);
    return true;
}
Also used : XQueryService(org.xmldb.api.modules.XQueryService) Collection(org.xmldb.api.base.Collection)

Example 47 with XQueryService

use of org.xmldb.api.modules.XQueryService in project exist by eXist-db.

the class DocumentUpdateTest method execQuery.

private String execQuery(String query) throws XMLDBException {
    XQueryService service = (XQueryService) testCollection.getService("XQueryService", "1.0");
    ResourceSet result = service.query(query);
    assertEquals(result.getSize(), 1);
    return result.getResource(0).getContent().toString();
}
Also used : XQueryService(org.xmldb.api.modules.XQueryService) ResourceSet(org.xmldb.api.base.ResourceSet)

Example 48 with XQueryService

use of org.xmldb.api.modules.XQueryService in project exist by eXist-db.

the class DocumentUpdateTest method update.

/**
 * Test if the doc, collection and document functions are correctly
 * notified upon document updates. Call a function once on the empty collection,
 * then call it again after a document was added, and compare the results.
 */
@Test
public void update() throws XMLDBException {
    String imports = "import module namespace xdb='http://exist-db.org/xquery/xmldb';\n" + "import module namespace util='http://exist-db.org/xquery/util';\n";
    // TEST 1: doc() function
    String query = imports + "declare function local:get-doc($path as xs:string) {\n" + "    if (doc-available($path)) then doc($path) else ()\n" + "};\n" + "let $col := xdb:create-collection('/db', 'testup')\n" + "let $path := '/db/testup/test1.xml'\n" + "let $doc := xdb:store($col, 'test1.xml', <test><n>1</n></test>)\n" + "let $d1 := local:get-doc($path)\n" + "let $remove := xdb:remove('/db/testup', 'test1.xml')\n" + "return string-join((string(count(local:get-doc($path))), string(doc-available($path))), ' ')";
    String result = execQuery(query);
    assertEquals(result, "0 false");
    // TEST 2: doc()
    query = imports + "declare function local:get-doc($path as xs:string) {\n" + "    if (doc-available($path)) then doc($path) else ()\n" + "};\n" + "let $col := xdb:create-collection('/db', 'testup')\n" + "let $path := '/db/testup/test1.xml'\n" + "let $d1 := local:get-doc($path)\n" + "let $doc := xdb:store($col, 'test1.xml', <test><n>1</n></test>)\n" + "return string-join((string(count(local:get-doc($path))), string(doc-available($path))), ' ')";
    result = execQuery(query);
    assertEquals(result, "1 true");
    // TEST 3: collection()
    query = imports + "declare function local:xpath($collection as xs:string) {\n" + "    for $c in collection($collection) return $c//n\n" + "};\n" + "let $col := xdb:create-collection('/db', 'testup')\n" + "let $path := '/db/testup'\n" + "let $d1 := local:xpath($path)//n/text()\n" + "let $doc := xdb:store($col, 'test1.xml', <test><n>1</n></test>)\n" + "return local:xpath($path)/text()";
    result = execQuery(query);
    assertEquals(result, "1");
    // TEST 4: 'update insert' statement
    query = imports + "declare function local:xpath($collection as xs:string) {\n" + "    collection($collection)\n" + "};\n" + "let $col := xdb:create-collection('/db', 'testup')\n" + "let $path := '/db/testup'\n" + "let $d1 := local:xpath($path)//n\n" + "let $doc := xdb:store($col, 'test1.xml', <test><n>1</n></test>)\n" + "return (\n" + "	update insert <n>2</n> into collection($path)/test,\n" + "	count(local:xpath($path)//n)\n" + ")";
    result = execQuery(query);
    assertEquals(result, "2");
    // TEST 5: 'update replace' statement
    query = imports + "let $doc := xdb:store('/db', 'test1.xml', " + "<test> " + "<link href=\"features\"/> " + "(: it works with only 1 link :) " + "<link href=\"features/test\"/> " + "</test>) " + "let $links := doc($doc)/test/link/@href " + "return " + "for $link in $links " + "return ( " + "update replace $link with \"123\", " + "(: without the output on the next line, it works :) " + "xs:string($link) " + ")";
    XQueryService service = (XQueryService) testCollection.getService("XQueryService", "1.0");
    ResourceSet r = service.query(query);
    assertEquals(r.getSize(), 2);
    assertEquals(r.getResource(0).getContent().toString(), "123");
    assertEquals(r.getResource(1).getContent().toString(), "123");
}
Also used : XQueryService(org.xmldb.api.modules.XQueryService) ResourceSet(org.xmldb.api.base.ResourceSet) Test(org.junit.Test)

Example 49 with XQueryService

use of org.xmldb.api.modules.XQueryService in project exist by eXist-db.

the class DuplicateAttributesTest method appendStoredAttrFail.

/**
 * Add attribute to element which already has an attribute of that name.
 */
@Test(expected = XMLDBException.class)
public void appendStoredAttrFail() throws XMLDBException {
    XQueryService xqs = (XQueryService) testCollection.getService("XQueryService", "1.0");
    String query = "let $a := \n" + "<node attr=\"a\" b=\"c\">{doc(\"/db/test/stored1.xml\")//@attr}</node>" + "return $a";
    xqs.query(query);
}
Also used : XQueryService(org.xmldb.api.modules.XQueryService) Test(org.junit.Test)

Example 50 with XQueryService

use of org.xmldb.api.modules.XQueryService in project exist by eXist-db.

the class DuplicateAttributesTest method appendIdref.

/**
 * Add attribute to element which already has an
 * attribute of that name (using idref).
 */
@Test(expected = XMLDBException.class)
public void appendIdref() throws XMLDBException {
    XQueryService xqs = (XQueryService) testCollection.getService("XQueryService", "1.0");
    String query = "<results>{fn:idref(('id1', 'id2'), doc('/db/test/docdtd.xml')/IDS)}</results>";
    ResourceSet result = xqs.query(query);
    result.getResource(0).getContent();
}
Also used : XQueryService(org.xmldb.api.modules.XQueryService) ResourceSet(org.xmldb.api.base.ResourceSet) Test(org.junit.Test)

Aggregations

XQueryService (org.xmldb.api.modules.XQueryService)129 EXistXQueryService (org.exist.xmldb.EXistXQueryService)71 XMLResource (org.xmldb.api.modules.XMLResource)33 ResourceSet (org.xmldb.api.base.ResourceSet)29 Test (org.junit.Test)28 Resource (org.xmldb.api.base.Resource)8 Node (org.w3c.dom.Node)6 EXistResource (org.exist.xmldb.EXistResource)5 Document (org.w3c.dom.Document)5 Collection (org.xmldb.api.base.Collection)5 Source (javax.xml.transform.Source)4 IndexQueryService (org.exist.xmldb.IndexQueryService)4 CompiledExpression (org.xmldb.api.base.CompiledExpression)4 XMLDBException (org.xmldb.api.base.XMLDBException)4 Diff (org.xmlunit.diff.Diff)4 Path (java.nio.file.Path)2 XmlRpcTest (org.exist.xmlrpc.XmlRpcTest)2 StringWriter (java.io.StringWriter)1 Matcher (java.util.regex.Matcher)1 Pattern (java.util.regex.Pattern)1