use of org.xmldb.api.modules.XMLResource in project exist by eXist-db.
the class ValueIndexTest method qnameIndexStringMatchingFunctions.
/*
* Bugfix
*
* These following two tests were put in place to test a bug fix for QName matching functions, which was committed 2/19/2010. The issue was that the 2nd parameter
* to the string matching functions was incorrectly interpreted as a regex, for QName indexes, which causd an exception
* to be thrown if the string included characters that have special meaning in a regex, eg. '*' for contains.
*
* andrzej@chaeron.com
*/
@Test
public void qnameIndexStringMatchingFunctions() throws XMLDBException {
configureCollection(CONFIG_QNAME);
XMLResource resource = (XMLResource) testCollection.createResource("mondial-test.xml", "XMLResource");
resource.setContent(CITY);
testCollection.storeResource(resource);
XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
queryResource(service, "mondial-test.xml", "//city[ starts-with( name, '^*' ) ]", 0);
queryResource(service, "mondial-test.xml", "//city[ contains( name, '^*' ) ]", 0);
queryResource(service, "mondial-test.xml", "//city[ ends-with( name, '^*' ) ]", 0);
}
use of org.xmldb.api.modules.XMLResource in project exist by eXist-db.
the class ValueIndexTest method pathIndexStringMatchingFunctions2.
@Test
public void pathIndexStringMatchingFunctions2() throws XMLDBException {
configureCollection(CONFIG_PATH);
XMLResource resource = (XMLResource) testCollection.createResource("mondial-test.xml", "XMLResource");
resource.setContent(CITY);
testCollection.storeResource(resource);
XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
queryResource(service, "mondial-test.xml", "//city[ starts-with( name, '(*' ) ]", 0);
queryResource(service, "mondial-test.xml", "//city[ contains( name, '*' ) ]", 0);
queryResource(service, "mondial-test.xml", "//city[ ends-with( name, '(*' ) ]", 0);
}
use of org.xmldb.api.modules.XMLResource in project exist by eXist-db.
the class ValueIndexTest method storeXMLFileAndGetQueryService.
/**
* @return
* @throws XMLDBException
*/
protected XPathQueryService storeXMLFileAndGetQueryService(String documentName, final URL srcFile) throws XMLDBException, URISyntaxException {
XMLResource doc = (XMLResource) testCollection.createResource(documentName, "XMLResource");
Path f = Paths.get(srcFile.toURI());
doc.setContent(f);
testCollection.storeResource(doc);
XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
return service;
}
use of org.xmldb.api.modules.XMLResource in project exist by eXist-db.
the class ValueIndexTest method strFunctions.
@Test
public void strFunctions() throws XMLDBException {
configureCollection(CONFIG_PATH);
XMLResource resource = (XMLResource) testCollection.createResource("mondial-test.xml", "XMLResource");
resource.setContent(CITY);
testCollection.storeResource(resource);
XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
queryResource(service, "mondial-test.xml", "//city[starts-with(name, 'Berl')]", 1);
queryResource(service, "mondial-test.xml", "//city[starts-with(name, 'Berlin')]", 1);
queryResource(service, "mondial-test.xml", "//city[starts-with(name, 'erlin')]", 0);
queryResource(service, "mondial-test.xml", "//city[starts-with(name, 'Erl')]", 1);
queryResource(service, "mondial-test.xml", "//city[contains(name, 'erl')]", 1);
queryResource(service, "mondial-test.xml", "//city[contains(name, 'Berlin')]", 1);
queryResource(service, "mondial-test.xml", "//city[contains(name, 'Erl')]", 1);
queryResource(service, "mondial-test.xml", "//city[ends-with(name, 'Berlin')]", 1);
queryResource(service, "mondial-test.xml", "//city[ends-with(name, 'erlin')]", 1);
queryResource(service, "mondial-test.xml", "//city[ends-with(name, 'Ber')]", 0);
queryResource(service, "mondial-test.xml", "//city[matches(name, 'erl', 'i')]", 2);
queryResource(service, "mondial-test.xml", "//city[matches(name, 'Erl')]", 1);
queryResource(service, "mondial-test.xml", "//city[matches(name, 'Berlin', 'i')]", 1);
queryResource(service, "mondial-test.xml", "//city[matches(name, 'berlin', 'i')]", 1);
queryResource(service, "mondial-test.xml", "//city[matches(name, 'berlin')]", 0);
queryResource(service, "mondial-test.xml", "//city[matches(name, '^Berlin$')]", 1);
queryResource(service, "mondial-test.xml", "//city[matches(name, 'lin$', 'i')]", 1);
queryResource(service, "mondial-test.xml", "//city[matches(name, '.*lin$', 'i')]", 1);
queryResource(service, "mondial-test.xml", "//city[matches(name, '^lin$', 'i')]", 0);
}
use of org.xmldb.api.modules.XMLResource in project exist by eXist-db.
the class XPathQueryTest method externalVars.
@Test
public void externalVars() throws XMLDBException {
XQueryService service = storeXMLStringAndGetQueryService("strings.xml", strings);
String query = "declare variable $x external;" + "$x";
CompiledExpression expr = service.compile(query);
// Do not declare the variable...
boolean exceptionThrown = false;
try {
service.execute(expr);
} catch (XMLDBException e) {
exceptionThrown = true;
}
assertTrue("Expected XPTY0002", exceptionThrown);
query = "declare variable $local:string external;" + "/test/string[. = $local:string]";
expr = service.compile(query);
service.declareVariable("local:string", "Hello");
ResourceSet result = service.execute(expr);
final XMLResource r = (XMLResource) result.getResource(0);
Node node = r.getContentAsDOM();
if (node.getNodeType() == Node.DOCUMENT_NODE) {
node = node.getFirstChild();
}
assertEquals("string", node.getNodeName());
// Instanciate a new service to prevent variable reuse
// TODO : consider auto-reset ?
service = storeXMLStringAndGetQueryService("strings.xml", strings);
query = "declare variable $local:string as xs:string external;" + "$local:string";
expr = service.compile(query);
// TODO : we should virtually pass any kind of value
service.declareVariable("local:string", new Integer(1));
String message = "";
try {
service.execute(expr);
} catch (XMLDBException e) {
// e.printStackTrace();
message = e.getMessage();
}
assertTrue(message.indexOf("XPTY0004") > -1);
service = storeXMLStringAndGetQueryService("strings.xml", strings);
query = "declare variable $x as xs:integer external; " + "$x";
expr = service.compile(query);
// TODO : we should virtually pass any kind of value
service.declareVariable("x", "1");
message = "";
try {
service.execute(expr);
} catch (XMLDBException e) {
// e.printStackTrace();
message = e.getMessage();
}
assertTrue(message.indexOf("XPTY0004") > -1);
}
Aggregations