org.exist.Database Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of exist-core Show documentation
Show all versions of exist-core Show documentation
eXist-db NoSQL Database Core
/*
* eXist-db Open Source Native XML Database
* Copyright (C) 2001 The eXist-db Authors
*
* [email protected]
* http://www.exist-db.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.exist;
import java.nio.file.Path;
import java.util.Collection;
import java.util.Observer;
import java.util.Optional;
import org.exist.collections.CollectionConfigurationManager;
import org.exist.collections.triggers.CollectionTrigger;
import org.exist.collections.triggers.DocumentTrigger;
import org.exist.collections.triggers.TriggerProxy;
import org.exist.debuggee.Debuggee;
import org.exist.dom.persistent.SymbolTable;
import org.exist.indexing.IndexManager;
import org.exist.numbering.NodeIdFactory;
import org.exist.plugin.PluginsManager;
import org.exist.scheduler.Scheduler;
import org.exist.security.AuthenticationException;
import org.exist.security.SecurityManager;
import org.exist.security.Subject;
import org.exist.storage.CacheManager;
import org.exist.storage.DBBroker;
import org.exist.storage.NotificationService;
import org.exist.storage.ProcessMonitor;
import org.exist.storage.blob.BlobStore;
import org.exist.storage.journal.JournalManager;
import org.exist.storage.txn.TransactionManager;
import org.exist.util.Configuration;
import org.exist.xquery.PerformanceStats;
/**
* Database controller, all operation synchronized by this instance. (singleton)
*
* @author Dmitriy Shabanov
*
*/
public interface Database {
// TODO: javadocs
public String getId();
ThreadGroup getThreadGroup();
/**
*
* @return SecurityManager
*/
public SecurityManager getSecurityManager();
/**
*
* @return IndexManager
*/
public IndexManager getIndexManager();
/**
*
* @return TransactionManager
*/
public TransactionManager getTransactionManager();
/**
* Get the database Journal Manager.
*
* @return the Journal Manager
*/
Optional getJournalManager();
/**
*
* @return CacheManager
*/
public CacheManager getCacheManager();
/**
*
* @return Scheduler
*/
public Scheduler getScheduler();
/**
*
*/
public void shutdown();
// TODO: remove 'throws EXistException'?
public DBBroker getBroker() throws EXistException;
public DBBroker authenticate(String username, Object credentials) throws AuthenticationException;
/*
*
* try {
* broker = database.authenticate(account, credentials);
*
* broker1 = database.get();
* broker2 = database.get();
* ...
* brokerN = database.get();
*
* } finally {
* database.release(broker);
* }
*/
public DBBroker get(Optional subject) throws EXistException;
public DBBroker getActiveBroker(); // throws EXistException;
/**
* Returns the number of brokers currently serving requests for the database
* instance.
*
* @return The brokers count
*/
public int countActiveBrokers();
/**
*
* @return Debuggee
*/
public Debuggee getDebuggee();
public PerformanceStats getPerformanceStats();
// old configuration
public Configuration getConfiguration();
public NodeIdFactory getNodeFactory();
public Path getStoragePlace();
public CollectionConfigurationManager getConfigurationManager();
/**
* Master document triggers.
*
* @return the document triggers.
*/
public Collection> getDocumentTriggers();
// public DocumentTrigger getDocumentTrigger();
/**
* Master Collection triggers.
*
* @return the collection triggers.
*/
public Collection> getCollectionTriggers();
// public CollectionTrigger getCollectionTrigger();
public void registerDocumentTrigger(Class extends DocumentTrigger> clazz);
public void registerCollectionTrigger(Class extends CollectionTrigger> clazz);
public ProcessMonitor getProcessMonitor();
public boolean isReadOnly();
public NotificationService getNotificationService();
public PluginsManager getPluginsManager();
public BlobStore getBlobStore();
public SymbolTable getSymbols();
void addStatusObserver(final Observer statusObserver);
boolean removeStatusObserver(final Observer statusObserver);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy