Search in sources :

Example 21 with IndexQueryService

use of org.exist.xmldb.IndexQueryService in project exist by eXist-db.

the class TriggerConfigTest method removeTriggers.

@Test
public void removeTriggers() {
    try {
        Collection root = DatabaseManager.getCollection(BASE_URI + testCollection, "admin", "");
        IndexQueryService iqs = (IndexQueryService) root.getService("IndexQueryService", "1.0");
        iqs.configureCollection(EMPTY_COLLECTION_CONFIG);
        Resource resource = root.createResource("data.xml", "XMLResource");
        resource.setContent(DOCUMENT_CONTENT);
        root.storeResource(resource);
        XQueryService qs = (XQueryService) root.getService("XQueryService", "1.0");
        ResourceSet result = qs.query("if (doc-available('" + testCollection + "/messages.xml')) then doc('" + testCollection + "/messages.xml')/events/event[@id = 'STORE-DOCUMENT'] else ()");
        assertEquals("No trigger should have fired. Configuration was removed", 0, result.getSize());
    } catch (XMLDBException e) {
        LOG.error(e.getMessage(), e);
        fail(e.getMessage());
    }
}
Also used : XQueryService(org.xmldb.api.modules.XQueryService) IndexQueryService(org.exist.xmldb.IndexQueryService)

Example 22 with IndexQueryService

use of org.exist.xmldb.IndexQueryService in project exist by eXist-db.

the class XQueryTriggerTest method storeDocument_invalidTriggerForPrepare.

@Test
public void storeDocument_invalidTriggerForPrepare() throws XMLDBException {
    final BinaryResource invalidModule = (BinaryResource) testCollection.createResource(MODULE_NAME, "BinaryResource");
    ((EXistResource) invalidModule).setMimeType("application/xquery");
    invalidModule.setContent(INVALID_MODULE.getBytes());
    testCollection.storeResource(invalidModule);
    // configure the Collection with the trigger under test
    final IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(COLLECTION_CONFIG);
    final int max_store_attempts = 10;
    int count_prepare_exceptions = 0;
    for (int i = 0; i < max_store_attempts; i++) {
        try {
            // this will fire the trigger
            final XMLResource doc = (XMLResource) testCollection.createResource(DOCUMENT_NAME, "XMLResource");
            doc.setContent(DOCUMENT_CONTENT);
            testCollection.storeResource(doc);
        } catch (XMLDBException xdbe) {
            if (xdbe.getCause() instanceof TriggerException) {
                if (xdbe.getCause().getMessage().equals(XQueryTrigger.PREPARE_EXCEPTION_MESSAGE)) {
                    count_prepare_exceptions++;
                }
            }
        }
    }
    assertEquals(max_store_attempts, count_prepare_exceptions);
}
Also used : EXistResource(org.exist.xmldb.EXistResource) BinaryResource(org.xmldb.api.modules.BinaryResource) IndexQueryService(org.exist.xmldb.IndexQueryService) XMLDBException(org.xmldb.api.base.XMLDBException) XMLResource(org.xmldb.api.modules.XMLResource)

Example 23 with IndexQueryService

use of org.exist.xmldb.IndexQueryService in project exist by eXist-db.

the class XQueryTriggerTest method collectionCopy.

/**
 * test a trigger fired by a Collection manipulations
 */
@Test
public void collectionCopy() throws XMLDBException, URISyntaxException {
    final IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(COLLECTION_CONFIG);
    final XmldbURI srcURI = XmldbURI.xmldbUriFor("/db/testXQueryTrigger/test");
    final XmldbURI dstURI = XmldbURI.xmldbUriFor("/db/testXQueryTrigger/test-dst");
    final EXistCollectionManagementService service = (EXistCollectionManagementService) testCollection.getService("CollectionManagementService", "1.0");
    final Collection src = service.createCollection("test");
    assertNotNull(src);
    final Collection dst = service.createCollection("test-dst");
    assertNotNull(dst);
    service.copy(srcURI, dstURI, null);
    // remove the trigger for the Collection under test
    idxConf.configureCollection(EMPTY_COLLECTION_CONFIG);
    ResourceSet result = existEmbeddedServer.executeQuery(BEFORE + CREATE + COLLECTION + testCollectionURI);
    assertEquals(1, result.getSize());
    result = existEmbeddedServer.executeQuery(AFTER + CREATE + COLLECTION + testCollectionURI);
    assertEquals(1, result.getSize());
    result = existEmbeddedServer.executeQuery(BEFORE + CREATE + COLLECTION + testDstCollectionURI);
    assertEquals(1, result.getSize());
    result = existEmbeddedServer.executeQuery(AFTER + CREATE + COLLECTION + testDstCollectionURI);
    assertEquals(1, result.getSize());
    result = existEmbeddedServer.executeQuery(BEFORE + COPY + COLLECTION + testCollectionURI);
    assertEquals(1, result.getSize());
    result = existEmbeddedServer.executeQuery(AFTER + COPY + COLLECTION + testDstTestCollectionURI);
    assertEquals(1, result.getSize());
    result = existEmbeddedServer.executeQuery(EVENTS);
    assertEquals(6, result.getSize());
}
Also used : EXistCollectionManagementService(org.exist.xmldb.EXistCollectionManagementService) IndexQueryService(org.exist.xmldb.IndexQueryService) Collection(org.xmldb.api.base.Collection) ResourceSet(org.xmldb.api.base.ResourceSet) XmldbURI(org.exist.xmldb.XmldbURI)

Example 24 with IndexQueryService

use of org.exist.xmldb.IndexQueryService in project exist by eXist-db.

the class XQueryTriggerTest method documentUpdate.

/**
 * test a trigger fired by a Document Update
 */
@Test
public void documentUpdate() throws XMLDBException {
    final IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(COLLECTION_CONFIG);
    final XMLResource doc = (XMLResource) testCollection.createResource(DOCUMENT_NAME, "XMLResource");
    doc.setContent(DOCUMENT_CONTENT);
    testCollection.storeResource(doc);
    // TODO : trigger UPDATE events !
    final XUpdateQueryService update = (XUpdateQueryService) testCollection.getService("XUpdateQueryService", "1.0");
    update.updateResource(DOCUMENT_NAME, DOCUMENT_UPDATE);
    idxConf.configureCollection(EMPTY_COLLECTION_CONFIG);
    final XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0");
    // this is necessary to compare with MODIFIED_DOCUMENT_CONTENT ; TODO better compare with XML diff tool
    service.setProperty(OutputKeys.INDENT, "no");
    ResourceSet result = service.query(BEFORE + CREATE + DOCUMENT + documentURI);
    assertEquals(1, result.getSize());
    result = service.query(AFTER + CREATE + DOCUMENT + documentURI);
    assertEquals(1, result.getSize());
    result = service.query(BEFORE + UPDATE + DOCUMENT + documentURI);
    assertEquals(1, result.getSize());
    result = service.query(AFTER + UPDATE + DOCUMENT + documentURI);
    assertEquals(1, result.getSize());
    result = service.query(EVENTS);
    assertEquals(4, result.getSize());
// TODO: document itself
// result = service.query("/events/event[@id = 'trigger2']/document/test");
// assertEquals(2, result.getSize());
// assertXMLEqual(DOCUMENT_CONTENT, result.getResource(0).getContent().toString());
// assertXMLEqual(MODIFIED_DOCUMENT_CONTENT, result.getResource(1).getContent().toString());
}
Also used : XUpdateQueryService(org.xmldb.api.modules.XUpdateQueryService) XPathQueryService(org.xmldb.api.modules.XPathQueryService) IndexQueryService(org.exist.xmldb.IndexQueryService) ResourceSet(org.xmldb.api.base.ResourceSet) XMLResource(org.xmldb.api.modules.XMLResource)

Example 25 with IndexQueryService

use of org.exist.xmldb.IndexQueryService in project exist by eXist-db.

the class XQueryTriggerTest method collectionCreate.

/**
 * test a trigger fired by a Collection manipulations
 */
@Test
public void collectionCreate() throws XMLDBException {
    final IndexQueryService idxConf = (IndexQueryService) testCollection.getService("IndexQueryService", "1.0");
    idxConf.configureCollection(COLLECTION_CONFIG);
    final CollectionManagementService service = (CollectionManagementService) testCollection.getService("CollectionManagementService", "1.0");
    final Collection collection = service.createCollection("test");
    assertNotNull(collection);
    // remove the trigger for the Collection under test
    idxConf.configureCollection(EMPTY_COLLECTION_CONFIG);
    final XPathQueryService query = (XPathQueryService) existEmbeddedServer.getRoot().getService("XPathQueryService", "1.0");
    ResourceSet result = query.query(BEFORE + CREATE + COLLECTION + testCollectionURI);
    assertEquals(1, result.getSize());
    result = query.query(AFTER + CREATE + COLLECTION + testCollectionURI);
    assertEquals(1, result.getSize());
    result = query.query(EVENTS);
    assertEquals(2, result.getSize());
}
Also used : CollectionManagementService(org.xmldb.api.modules.CollectionManagementService) EXistCollectionManagementService(org.exist.xmldb.EXistCollectionManagementService) XPathQueryService(org.xmldb.api.modules.XPathQueryService) IndexQueryService(org.exist.xmldb.IndexQueryService) Collection(org.xmldb.api.base.Collection) ResourceSet(org.xmldb.api.base.ResourceSet)

Aggregations

IndexQueryService (org.exist.xmldb.IndexQueryService)25 Collection (org.xmldb.api.base.Collection)9 ResourceSet (org.xmldb.api.base.ResourceSet)9 XMLResource (org.xmldb.api.modules.XMLResource)9 CollectionManagementService (org.xmldb.api.modules.CollectionManagementService)6 XPathQueryService (org.xmldb.api.modules.XPathQueryService)6 EXistCollectionManagementService (org.exist.xmldb.EXistCollectionManagementService)5 EXistResource (org.exist.xmldb.EXistResource)4 Resource (org.xmldb.api.base.Resource)4 BinaryResource (org.xmldb.api.modules.BinaryResource)4 XQueryService (org.xmldb.api.modules.XQueryService)4 InputStream (java.io.InputStream)3 XmldbURI (org.exist.xmldb.XmldbURI)3 Before (org.junit.Before)3 XUpdateQueryService (org.xmldb.api.modules.XUpdateQueryService)2 URISyntaxException (java.net.URISyntaxException)1 UnsupportedLookAndFeelException (javax.swing.UnsupportedLookAndFeelException)1 Account (org.exist.security.Account)1 UserAider (org.exist.security.internal.aider.UserAider)1 StartException (org.exist.start.StartException)1