Search in sources :

Example 6 with ResourceSet

use of org.xmldb.api.base.ResourceSet in project exist by eXist-db.

the class CollectionConfigurationTest method collectionConfigurationService10.

/**
 * Remove config document
 */
@Test
public void collectionConfigurationService10() throws XMLDBException {
    Collection testCollection = DatabaseManager.getCollection(XmldbURI.LOCAL_DB + "/" + TEST_COLLECTION);
    CollectionManagementService cms = (CollectionManagementService) testCollection.getService("CollectionManagementService", "1.0");
    Collection sub2 = cms.createCollection(COLLECTION_SUB2.toString());
    UserManagementService ums = (UserManagementService) sub2.getService("UserManagementService", "1.0");
    ums.chmod("rwxr-xr-x");
    IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(CONFIG1);
    // ... then index document
    XMLResource doc = (XMLResource) sub2.createResource(TestConstants.TEST_XML_URI.toString(), "XMLResource");
    doc.setContent(DOCUMENT_CONTENT);
    sub2.storeResource(doc);
    XPathQueryService service = (XPathQueryService) sub2.getService("XPathQueryService", "1.0");
    // 3 numeric values
    ResourceSet result = service.query("util:index-key-occurrences(/test/a, 1)");
    assertEquals("3", result.getResource(0).getContent());
    // ... but 1 string value
    result = service.query("util:index-key-occurrences(/test/b, \"1\")");
    assertEquals("1", result.getResource(0).getContent());
    // 3 numeric values
    result = service.query("util:qname-index-lookup(xs:QName(\"a\"), 1 ) ");
    assertEquals(3, result.getSize());
    // ... but 1 string value
    result = service.query("util:qname-index-lookup(xs:QName(\"b\"), \"1\" ) ");
    assertEquals(1, result.getSize());
    // remove config document thus dropping the configuration
    Collection confCol = DatabaseManager.getCollection("xmldb:exist://" + CONF_COLL_URI.toString(), ADMIN_DB_USER, ADMIN_DB_PWD);
    Resource confDoc = confCol.getResource(DEFAULT_COLLECTION_CONFIG_FILE);
    assertNotNull(confDoc);
    confCol.removeResource(confDoc);
    // cms = (CollectionManagementService) confCol.getService("CollectionManagementService", "1.0");
    // cms.removeCollection(".");
    idxConf.reindexCollection();
    // index should be empty since configuration was removed
    result = service.query("util:index-key-occurrences(/test/a, 1)");
    assertEquals(0, result.getSize());
    result = service.query("util:index-key-occurrences(/test/b, \"1\")");
    assertEquals(0, result.getSize());
    result = service.query("util:qname-index-lookup(xs:QName(\"a\"), 1 ) ");
    assertEquals(0, result.getSize());
    result = service.query("util:qname-index-lookup(xs:QName(\"b\"), \"1\" ) ");
    assertEquals(0, result.getSize());
}
Also used : CollectionManagementService(org.xmldb.api.modules.CollectionManagementService) XPathQueryService(org.xmldb.api.modules.XPathQueryService) XMLResource(org.xmldb.api.modules.XMLResource) Resource(org.xmldb.api.base.Resource) Collection(org.xmldb.api.base.Collection) ResourceSet(org.xmldb.api.base.ResourceSet) XMLResource(org.xmldb.api.modules.XMLResource)

Example 7 with ResourceSet

use of org.xmldb.api.base.ResourceSet in project exist by eXist-db.

the class CollectionConfigurationTest method collectionConfigurationService3.

@Test
public void collectionConfigurationService3() throws XMLDBException {
    Collection testCollection = DatabaseManager.getCollection(XmldbURI.LOCAL_DB + "/" + TEST_COLLECTION);
    // Configure collection *manually*
    storeConfiguration(CONF_COLL_URI, CollectionConfiguration.DEFAULT_COLLECTION_CONFIG_FILE_URI, CONFIG1);
    // ... then index document
    XMLResource doc = (XMLResource) testCollection.createResource(TestConstants.TEST_XML_URI.toString(), "XMLResource");
    doc.setContent(DOCUMENT_CONTENT);
    testCollection.storeResource(doc);
    XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
    // 3 numeric values
    ResourceSet result = service.query("util:index-key-occurrences(/test/a, 1)");
    assertEquals(1, result.getSize());
    assertEquals("3", result.getResource(0).getContent());
    // ... but 1 string value
    result = service.query("util:index-key-occurrences(/test/b, \"1\")");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    // 3 numeric values
    result = service.query("util:qname-index-lookup(xs:QName(\"a\"), 1 ) ");
    assertEquals(3, result.getSize());
    // ... but 1 string value
    result = service.query("util:qname-index-lookup(xs:QName(\"b\"), \"1\" ) ");
    assertEquals(1, result.getSize());
}
Also used : XPathQueryService(org.xmldb.api.modules.XPathQueryService) Collection(org.xmldb.api.base.Collection) ResourceSet(org.xmldb.api.base.ResourceSet) XMLResource(org.xmldb.api.modules.XMLResource)

Example 8 with ResourceSet

use of org.xmldb.api.base.ResourceSet in project exist by eXist-db.

the class CollectionConfigurationTest method collectionConfigurationService7.

/**
 * Check if configurations are properly passed down the collection hierarchy.
 */
@Test
public void collectionConfigurationService7() throws XMLDBException {
    Collection testCollection = DatabaseManager.getCollection(XmldbURI.LOCAL_DB + "/" + TEST_COLLECTION);
    CollectionManagementService cms = (CollectionManagementService) testCollection.getService("CollectionManagementService", "1.0");
    Collection sub2 = cms.createCollection(COLLECTION_SUB2.toString());
    UserManagementService ums = (UserManagementService) sub2.getService("UserManagementService", "1.0");
    ums.chmod("rwxr-xr-x");
    // Configure collection automatically
    // sub2 should inherit its index configuration from the top collection
    IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(CONFIG1);
    // ... then index document
    XMLResource doc = (XMLResource) sub2.createResource(TestConstants.TEST_XML_URI.toString(), "XMLResource");
    doc.setContent(DOCUMENT_CONTENT);
    sub2.storeResource(doc);
    XPathQueryService service = (XPathQueryService) sub2.getService("XPathQueryService", "1.0");
    // 3 numeric values
    ResourceSet result = service.query("util:index-key-occurrences(/test/a, 1)");
    assertEquals("3", result.getResource(0).getContent());
    // ... but 1 string value
    result = service.query("util:index-key-occurrences(/test/b, \"1\")");
    assertEquals("1", result.getResource(0).getContent());
    // 3 numeric values
    result = service.query("util:qname-index-lookup(xs:QName(\"a\"), 1 ) ");
    assertEquals(3, result.getSize());
    // ... but 1 string value
    result = service.query("util:qname-index-lookup(xs:QName(\"b\"), \"1\" ) ");
    assertEquals(1, result.getSize());
}
Also used : CollectionManagementService(org.xmldb.api.modules.CollectionManagementService) XPathQueryService(org.xmldb.api.modules.XPathQueryService) Collection(org.xmldb.api.base.Collection) ResourceSet(org.xmldb.api.base.ResourceSet) XMLResource(org.xmldb.api.modules.XMLResource)

Example 9 with ResourceSet

use of org.xmldb.api.base.ResourceSet in project exist by eXist-db.

the class CollectionConfigurationTest method collectionConfigurationService1.

@Test
public void collectionConfigurationService1() throws XMLDBException {
    Collection testCollection = DatabaseManager.getCollection(XmldbURI.LOCAL_DB + "/" + TEST_COLLECTION);
    // Configure collection automatically
    IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(CONFIG1);
    // ... then index document
    XMLResource doc = (XMLResource) testCollection.createResource(TestConstants.TEST_XML_URI.toString(), "XMLResource");
    doc.setContent(DOCUMENT_CONTENT);
    testCollection.storeResource(doc);
    XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
    // 3 numeric values
    ResourceSet result = service.query("util:index-key-occurrences(/test/a, 1)");
    assertEquals("3", result.getResource(0).getContent());
    // ... but 1 string value
    result = service.query("util:index-key-occurrences(/test/b, \"1\")");
    assertEquals("1", result.getResource(0).getContent());
    // 3 numeric values
    result = service.query("util:qname-index-lookup(xs:QName(\"a\"), 1 ) ");
    assertEquals(3, result.getSize());
    // ... but 1 string value
    result = service.query("util:qname-index-lookup(xs:QName(\"b\"), \"1\" ) ");
    assertEquals(1, result.getSize());
}
Also used : XPathQueryService(org.xmldb.api.modules.XPathQueryService) Collection(org.xmldb.api.base.Collection) ResourceSet(org.xmldb.api.base.ResourceSet) XMLResource(org.xmldb.api.modules.XMLResource)

Example 10 with ResourceSet

use of org.xmldb.api.base.ResourceSet in project exist by eXist-db.

the class CollectionConfigurationTest method rangeIndex1.

@Test
@Ignore
public void rangeIndex1() throws XMLDBException {
    Collection testCollection = DatabaseManager.getCollection(XmldbURI.LOCAL_DB + "/" + TEST_COLLECTION);
    // Configure collection automatically
    IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(CONFIG2);
    // ... then index document
    XMLResource doc = (XMLResource) testCollection.createResource(TestConstants.TEST_XML_URI.toString(), "XMLResource");
    doc.setContent(DOCUMENT_CONTENT2);
    testCollection.storeResource(doc);
    XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
    ResourceSet result = service.query("util:index-key-occurrences(/test/c, xs:dateTime(\"2002-12-07T12:20:46.275+01:00\") )");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    result = service.query("util:index-type(/test/c)");
    assertEquals("xs:dateTime", result.getResource(0).getContent());
    result = service.query("util:index-key-occurrences(/test/d, xs:double(1) )");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    result = service.query("util:index-type(/test/d)");
    assertEquals("xs:double", result.getResource(0).getContent());
    result = service.query("util:index-key-occurrences(/test/e, xs:float(1) )");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    result = service.query("util:index-type(/test/e)");
    assertEquals("xs:float", result.getResource(0).getContent());
    result = service.query("util:index-key-occurrences(/test/f, true())");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    result = service.query("util:index-type(/test/f)");
    assertEquals("xs:boolean", result.getResource(0).getContent());
    result = service.query("util:index-key-occurrences(/test/g, xs:integer(1))");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    result = service.query("util:index-type(/test/g)");
    assertEquals("xs:integer", result.getResource(0).getContent());
    result = service.query("util:index-key-occurrences(/test/h, '1')");
    assertEquals(1, result.getSize());
    assertEquals("1", result.getResource(0).getContent());
    result = service.query("util:index-type(/test/h)");
    assertEquals("xs:string", result.getResource(0).getContent());
    result = service.query("/test/c[(# exist:force-index-use #) { . = xs:dateTime(\"2002-12-07T12:20:46.275+01:00\") }]");
    assertEquals(1, result.getSize());
    result = service.query("/test[(# exist:force-index-use #) { c = xs:dateTime(\"2002-12-07T12:20:46.275+01:00\") }]");
    assertEquals(1, result.getSize());
    result = service.query("/test/d[(# exist:force-index-use #) { . = xs:double(1) }]");
    assertEquals(1, result.getSize());
    result = service.query("/test[(# exist:force-index-use #) { d = xs:double(1) }]");
    assertEquals(1, result.getSize());
    result = service.query("/test/e[(# exist:force-index-use #) { . = xs:float(1) }]");
    assertEquals(1, result.getSize());
    result = service.query("/test[(# exist:force-index-use #) { e = xs:float(1) }]");
    assertEquals(1, result.getSize());
    result = service.query("/test/f[(# exist:force-index-use #) { . = true() }]");
    assertEquals(1, result.getSize());
    result = service.query("/test[(# exist:force-index-use #) { f = true() }]");
    assertEquals(1, result.getSize());
    result = service.query("/test/g[(# exist:force-index-use #) { . = 1 }]");
    assertEquals(1, result.getSize());
    result = service.query("/test[(# exist:force-index-use #) { g = 1 }]");
    assertEquals(1, result.getSize());
    result = service.query("/test/h[(# exist:force-index-use #) { . = '1' }]");
    assertEquals(1, result.getSize());
    result = service.query("/test[(# exist:force-index-use #) { h = '1' }]");
    assertEquals(1, result.getSize());
    boolean exceptionCaught = false;
    try {
        result = service.query("/test[(# exist:force-index-use #) { contains(d, '1') }]");
        assertEquals(0, result.getSize());
    } catch (XMLDBException e) {
        exceptionCaught = true;
    }
    assertTrue("contains() should not use index of type xs:double", exceptionCaught);
    exceptionCaught = false;
    try {
        result = service.query("/test[(# exist:force-index-use #) { matches(d, '1') }]");
        assertEquals(0, result.getSize());
    } catch (XMLDBException e) {
        exceptionCaught = true;
    }
    assertTrue("matches() should not use index of type xs:double", exceptionCaught);
    result = service.query("/test[matches(h, '1')]");
    assertEquals(1, result.getSize());
}
Also used : XPathQueryService(org.xmldb.api.modules.XPathQueryService) Collection(org.xmldb.api.base.Collection) XMLDBException(org.xmldb.api.base.XMLDBException) ResourceSet(org.xmldb.api.base.ResourceSet) XMLResource(org.xmldb.api.modules.XMLResource)

Aggregations

ResourceSet (org.xmldb.api.base.ResourceSet)383 XPathQueryService (org.xmldb.api.modules.XPathQueryService)123 Test (org.junit.Test)117 EXistXPathQueryService (org.exist.xmldb.EXistXPathQueryService)100 XMLResource (org.xmldb.api.modules.XMLResource)80 Collection (org.xmldb.api.base.Collection)55 Resource (org.xmldb.api.base.Resource)45 XQueryService (org.xmldb.api.modules.XQueryService)29 XMLDBException (org.xmldb.api.base.XMLDBException)23 EXistResource (org.exist.xmldb.EXistResource)20 BinaryResource (org.xmldb.api.modules.BinaryResource)17 CollectionManagementService (org.xmldb.api.modules.CollectionManagementService)14 Node (org.w3c.dom.Node)11 IndexQueryService (org.exist.xmldb.IndexQueryService)9 Diff (org.xmlunit.diff.Diff)9 EXistCollectionManagementService (org.exist.xmldb.EXistCollectionManagementService)8 UserManagementService (org.exist.xmldb.UserManagementService)8 Source (javax.xml.transform.Source)7 ResourceIterator (org.xmldb.api.base.ResourceIterator)7 XUpdateQueryService (org.xmldb.api.modules.XUpdateQueryService)6