| Interface | Description |
|---|---|
| DBLogController |
This controller interface manages the recording and retrieval of
DBLogEvents for the DBLog class. |
| silentTask |
This is a simple labeling interface used to indicate to the
GanymedeScheduler that
tasks implementing this interface don't need to have their
execution be announced to the Ganymede server's stdout. |
| SyncMaster |
This interface is used to expand the list of objects (and fields)
that are emitted to an incremental sync channel output stream.
|
| Class | Description |
|---|---|
| adminPersonaCustom |
This file is a management class for Admin Persona objects in
Ganymede.
|
| BooleanDBField | |
| DateDBField | |
| DBBaseCategory |
A DBBaseCategory is a 'red folder node' in the server's category
and object hierarchy.
|
| DBBaseFieldTable |
A customized variant of the java.util.Hashtable class that is
tuned for use in managing
DBObjectBaseFields
in a Ganymede DBObjectBase. |
| DBBaseFieldTableBuiltInIterator |
A DBBaseFieldTable Iterator class that iterates over the built-in
field definitions in a DBObjectBase, in ascending field id order.
|
| DBBaseFieldTableContainer | |
| DBBaseFieldTableEnumerator |
A DBBaseFieldTable enumerator class.
|
| DBBaseFieldTableIterator |
A DBBaseFieldTable Iterator class.
|
| DBCheckPoint |
DBCheckPoint is a class designed to allow server-side code that
needs to attempt a multi-step operation that might not successfully
complete to be able to undo all changes made without having to
abort the entire transaction.
|
| DBCheckPointObj |
DBCheckPointObj holds a snapshot of an object's state at a
moment in time.
|
| DBDeletionManager |
The DBDeletionManager class is used to handle deletion locking
in the Ganymede
DBStore. |
| DBDumpLock | |
| DBEditObject |
DBEditObject is the main base class that is subclassed by individual
application object types to provide editing and management intelligence.
|
| DBEditSet |
DBEditSet is the basic transactional unit.
|
| DBField |
This abstract base class encapsulates the basic logic for fields in the
Ganymede
DBStore,
including permissions and unique value handling. |
| DBJournal |
The DBJournal class is used to provide journalling of changes to
the
DBStore during
operations. |
| DBJournalTransaction |
This class is a simple data carrier recording the time and
transaction number for a transaction in the process of being
persisted to Ganymede's replay journal.
|
| DBLinkTracker |
This class performs in-memory tracking of non-symmetrical
InvidDBField linkages between DBObjects in the Ganymede
DBStore. |
| DBLock |
DBLocks arbitrate access to
DBObjectBase objects in the
Ganymede server's DBStore. |
| DBLockSync |
This class acts to provide a singleton object for interlock
coordination.
|
| DBLog |
This class manages recording events in the system log and generating
reports from the system log based on specific criteria.
|
| DBLogEvent |
This class stores a complete record of a single sub-transactional event,
to be emitted to the DBLog log file, or sent to a set of users via
email..
|
| DBLogFileController |
This controller class manages the recording and retrieval of
DBLogEvents for the DBLog class, using an on-disk text
file for the storage format. |
| DBLogPostGreSQLController |
This controller class manages the recording and retrieval of
DBLogEvents for the DBLog class, using a PostGreSQL database
for the storage format. |
| DBNameSpace |
DBNameSpaces are the objects used to manage unique value
tracking in
DBFields that are
unique value constrained. |
| DBNameSpace.DBNameSpaceCkPoint |
This nested class holds checkpoint information associated with
an active transaction (a
DBEditSet) in care of a
DBNameSpace. |
| DBNameSpace.DBNameSpaceTransaction |
This nested class holds information associated with an active
transaction (a
DBEditSet) in care of a DBNameSpace. |
| DBNameSpaceEditingHandle | |
| DBNameSpaceHandle |
This class is intended to be the targets of elements of a name
space's
uniqueHash. |
| DBObject |
Class to hold a typed, read-only database object as represented
in the Ganymede
DBStore
database. |
| DBObject.Entry |
This is an embedded inner class within the
arlut.csd.ganymede.server.DBObject class.
|
| DBObjectBase |
The data dictionary and object store for a particular kind of
object in the
DBStore on
the Ganymede server. |
| DBObjectBase.Entry |
Static nested class to represent a label, DBObject
pairing.
|
| DBObjectBaseField |
An entry in the Ganymede server's
DBStore schema dictionary. |
| DBObjectDeltaRec |
This class is used to represent a record of changes that need to
be made to an individual DBObject in the DBStore.
|
| DBObjectTable |
A customized variant of the java.util.Hashtable class that is
tuned for use in managing
DBObjects in a Ganymede DBObjectBase. |
| DBObjectTableContainer | |
| DBObjectTableEnumerator |
A
DBObjectTable
enumerator class. |
| DBObjectTableIterator |
A
DBObjectTable
Iterator class. |
| DBPermissionManager |
Permissions manager for the Ganymede Server.
|
| DBQueryEngine |
Query processing engine for the Ganymede Server.
|
| DBQueryHandler |
This class is the core query processing engine for the Ganymede
database.
|
| DBReadLock |
DBReadLock is a class used in the Ganymede server to represent a
read lock on one or more
DBObjectBase objects. |
| DBSchemaEdit |
Server-side schema editing class.
|
| DBSession |
DBSession is the Ganymede server's
DBStore-level session class. |
| DBSessionLockManager |
This class coordinates lock activity for a server-side
DBSession object. |
| DBStore |
DBStore is the main Ganymede database class.
|
| DBStore.Entry |
Implements key/value pairs for use in a
Map's Map.entrySet() method. |
| DBWriteLock |
A DBWriteLock is a
DBLock
subclass used to lock one or more DBObjectBases for the
purposes of committing changes into those bases, preventing any
other threads from reading or writing to the database while the
update is being performed. |
| dumpAndArchiveTask |
Runnable class to do a journal sync.
|
| DumpResultBuilder |
The DumpResultBuilder is a server-side factory tool used to
generate the serializable
DumpResult object used to pass data dump results to the client. |
| dumpTask |
Runnable class to do a journal sync.
|
| eventCustom | |
| fieldDeltaRec |
The fieldDeltaRec class is used to record the changes that have
been made to a particular field in a DBObject.
|
| FieldOptionDBField |
FieldOptionDBField is a subclass of
DBField for the storage and
handling of Ganymede metadata. |
| FieldOptionMatrixCkPoint |
Helper class used to handle checkpointing of a
FieldOptionDBField's
state. |
| FloatDBField | |
| Ganymede |
This class is the main server module, providing the static
main() method executed to start the server.
|
| GanymedeAdmin |
GanymedeAdmin is the server-side implementation of the
adminSession
interface; GanymedeAdmin provides the means by which privileged users
can carry out privileged operations on the Ganymede server, including
status monitoring and administrative activities. |
| GanymedeBuilderTask |
This class is designed to be subclassed in order to handle
full-state synchronization from the Ganymede server to external
directory service targets.
|
| GanymedeExpirationTask |
This is a Ganymede server task, for use with the
GanymedeScheduler. |
| GanymedeRMIManager |
The GanymedeRMIManager class is responsible for publishing Ganymede
server objects for accessibility through RMI.
|
| GanymedeScheduler |
Background task scheduler for the Ganymede server.
|
| GanymedeServer |
The GanymedeServer object is created by the
Ganymede class at start-up time
and published to the net for client logins via RMI. |
| GanymedeSession |
User-level session object in the Ganymede server.
|
| GanymedeUncaughtExceptionHandler |
This class is used to provide the default uncaught exception
handler for the Ganymede server.
|
| GanymedeValidationTask |
This task goes through all objects in the database and checks to
make sure all required fields are set in all objects.
|
| GanymedeWarningTask |
This is a Ganymede server task, for use with the
GanymedeScheduler. |
| GanymedeXMLSession |
This class handles all XML loading operations for the Ganymede
server.
|
| GanymediatorWizard |
This class is a template for all Wizards implemented on the
server.
|
| GanyQueryTransmuter |
This class processes textual queries using an ANTLR-generated
parser, and generates an old, Ganymede-style
arlut.csd.ganymede.common.Query, with attendant
arlut.csd.ganymede.common.QueryNode tree.
|
| gcTask |
Runnable class to do a synchronous garbage collection run.
|
| GEnum |
This class is in support of the Hashtable keys() method, to provide an
enumeration which will 'unwrap' GKey objects to provide access to the original
key submitted to the GHashtable, with capitalization preserved.
|
| GHashtable |
GHashtable is a Hashtable subclass that can map
uppercase/lowercase keys of the same string to identity.
|
| GKey |
This class provides a mapping to allow keys of differing capitalization to be
treated as identical in a hashtable, while allowing the capitalization-preserved
key value to be retrieved on demand, in support of the Hashtable.keys() method.
|
| InvidDBField | |
| IPDBField | |
| IPwrap |
This is a wrapper class for the Byte array IP value representation
that allows IP addresses to be processed by the Ganymede namespace
hash system.
|
| JournalEntry |
This class holds data corresponding to a modification record for
a single object in the server's
DBJournal class. |
| JythonEditObjectFactory |
This class is a factory for Jython-based DBEditObject subclasses.
|
| JythonServer |
The JythonServer class is used to provide a tcp port on the
Ganymede server which can be telnetted to in order to interact with
a Python (Jython) console.
|
| JythonServerProtocol |
Implementation of the server I/O protocol.
|
| JythonServerWorker |
Handles passing input and output to the above Protocol class.
|
| JythonTask |
This class acts as a proxy for a separate Builder Task (a class
that handles processing Ganymede's data for use in DNS/LDAP/Mail
server/etc.) that's written in Jython.
|
| loginSemaphore |
This class provides a handy counting semaphore used to arbitrate user
login access to the
GanymedeServer. |
| MailOut |
This class is used to store event information derived from the
Ganymede database for the
DBLog class. |
| memoryStatusTask |
Runnable class to update the memory status fields in the admin
console.
|
| NoopSyncMaster |
No-op SyncMaster class used in cases where no SyncMaster is defined
for a delta Sync Channel object.
|
| NumericDBField | |
| objectEventCustom | |
| objectEventType |
This class is used to store object event information derived
from the Ganymede database for the
DBLog class. |
| ownerCustom | |
| PasswordDBField | |
| PasswordDBField.passwordHistoryArchive |
Holds previous passwords that have been associated with this
password field.
|
| PasswordDBField.passwordHistoryEntry |
This nested class holds a previous password hash along with the
date that it was committed into this field.
|
| permCustom |
This file is a management class for Role records in Ganymede.
|
| PermissionMatrixDBField | |
| PermMatrixCkPoint |
Helper class used to handle checkpointing of a
PermissionMatrixDBField's
state. |
| QueryLexer | |
| QueryParser | |
| QueryParser.argument_return | |
| QueryParser.atom_return | |
| QueryParser.deref_expression_return | |
| QueryParser.expression_return | |
| QueryParser.from_clause_return | |
| QueryParser.query_return | |
| QueryParser.select_clause_return | |
| QueryParser.simple_expression_return | |
| QueryParser.token_return | |
| QueryParser.where_clause_return | |
| QueueDirFilter |
Filename pattern matcher for our incremental sync channel queue
files.
|
| sampleTask |
This class is used to produce test task objects for the
GanymedeScheduler
class. |
| serverAdminAsyncResponder |
serverAdminAsyncResponder is a partial server-side Client proxy object
which buffers async client updates, coalescing update events as
needed to maximize server efficiency.
|
| serverClientAsyncResponder |
serverClientAsyncResponder is a partial server-side Client proxy object
which buffers async client updates, coalescing update events as
needed to maximize server efficiency.
|
| stopServer |
Command-line app to shut down a Ganymede server, with password info
drawn from a properties file.
|
| stopServerAdmin |
Remote object that the server expects to talk to when an admin console
connects to the server.
|
| StringDBField |
StringDBField is a subclass of DBField for the storage and handling of string
fields in the
DBStore on the Ganymede
server. |
| syncChannelCustom |
This class is a
DBEditObject
subclass for handling fields in the Ganymede server's sync channel
object type. |
| SyncRunner |
This class is used in the Ganymede server to handle Sync
Channel-style incremental and full-state synchronization.
|
| systemEventType |
This class is used to store system event information derived from
the Ganymede database.
|
| taskCustom |
This class customizes DBEditObject for handling fields in the Ganymede
server's task object type.
|
| taskMonitor |
GanymedeScheduler
helper class used to notify the scheduler when a background task
has completed. |
| timeOutTask |
Runnable class to do a periodic sweep of idle users.
|
| xInvid |
This class is used by the Ganymede XML client to represent an invid
object reference field value.
|
| XMLDumpContext |
This class is used on the server to group parameters that will guide
the server in doing an XML dump.
|
| xmlfield |
This class is a data holding structure that is intended to hold
object and field data for an XML object element for
xmlclient. |
| xmlobject |
This class is a data holding structure that is intended to hold
object and field data for an XML object element for
GanymedeXMLSession. |
| XMLTransmitter |
This class is used on the server to act as a FileTransmitter, a client
pulling data to do an xmlclient dump can make iterative calls on this object
over RMI in order to receive the file.
|
| xOption |
This class is used by the Ganymede XML client to represent
a permission field value.
|
| xPassword |
This class is used by the Ganymede XML client to represent
a password field data value.
|
| xPerm |
This class is used by the Ganymede XML client to represent
a permission field value.
|
| Enum | Description |
|---|---|
| DBLog.MailMode |
Enum used to specify whether the logging system should
calculate additional addresses to send an event to.
|
| DBObjectBase.EditingMode |
Enum of possible editing states for a DBObjectBase to be in.
|
| SyncRunner.SyncType |
Enum of possible modalities for a SyncRunner
|
| Exception | Description |
|---|---|
| CommitException |
This is a Ganymede-specific Exception that can be thrown by code in
the server during a transactional commit.
|
| CommitFatalException |
This is a Ganymede-specific Exception that can be thrown by code in
the server during a transactional commit.
|
| CommitNonFatalException |
This is a Ganymede-specific Exception that can be thrown by code in
the server during a transactional commit.
|
| GanymedeManagementException |
This is currently used when there is a problem instantiating a
custom DBEditObject subclass.
|
| GanymedeSilentStartupException |
This is a Ganymede-specific Exception that can be thrown during
the server's start up processing, and which will cause the server
to terminate without displaying any message to the console.
|
| GanymedeStartupException |
This is a Ganymede-specific Exception that can be thrown during
the server's start up processing.
|
| IntegrityConstraintException |
This is a Ganymede-specific RuntimeException that can be thrown by the
server if a piece of the server's code encounters a condition that violates
the fundamental integrity constraint guarantees of the Ganymede database.
|
| ResourceInitializationException |
This is a Ganymede-specific Exception that can be thrown by the
server if a piece of the server's code encounters a condition that
violates the fundamental integrity constraint guarantees of the
Ganymede database.
|
| ServiceFailedException |
This is a Ganymede-specific RuntimeException that is designed to be
thrown by GanymedeBuilderTask subclasses to communicate build
status information to the admin console.
|
| ServiceNotFoundException |
This is a Ganymede-specific RuntimeException that is designed to be
thrown by GanymedeBuilderTask subclasses to communicate build
status information to the admin console.
|
| XMLIntegrationException |
An internal exception used for flow control in
GanymedeXMLSession.integrateXMLTransaction().
|
| Error | Description |
|---|---|
| CommitError |
This is a Ganymede-specific Error that can be thrown by code in
the server during a transactional commit, signifying that a commit
failed in a possibly non-recoverable way.
|
The Ganymede server implementation.
Includes all classes and interfaces that comprise the Ganymede server and which are not intended to be directly referenced or used by the Ganymede client or admin console.
The Ganymede server's main() entrypoint is in the
Ganymede class. The main() method
is responsible for bootstrapping the Ganymede server and getting it
ready for use.
Here is the general order of operations for server startup:
DBStore singleton object is
created which manages Ganymede data storage. Data is loaded by
DBStore into memory from a ganymede.db file on disk,
supplemented by any non-consolidated transaction records in the
Ganymede journal file.GanymedeServer
object is created for the server's internal use.GanymedeScheduler which handles the
scheduling of server-side tasks on independent threads. GanymedeBuilderTask and SyncRunner objects which are specified in
the Ganymede data store are registered in the scheduler.DBLog object which handles logging and
email notification for the server. A Qsmtp object is
created which spawns a thread for transmitting email generated by
Ganymede.Server remote
interface. Methods in this interface can in turn return remote
references to other objects created in the Ganymede server, through
which work is done with the server.At this point, the server is started and ready for operations. All server operations from this point on will be initiated by the Ganymede Scheduler which is running on its own background thread, or by clients who have connected to the server through RMI. All RMI calls to the server are serviced on independent threads, which cooperate in a multithreaded context via a number of synchronization and queueing systems in the Ganymede server.
Normal clients connect to the server via a call to the Server
interface's Server.login(String,String)
method, which returns a remote RMI reference that implements the
Session interface which is backed on
the server by a client-facing GanymedeSession object. Each client has
its own GanymedeSession object, which lives in the server for the
duration of the client's connection and which is responsible for
tracking security restrictions on the client and providing
appropriately limited access.
Each GanymedeSession, in turn, references a unique DBSession object which is responsible for
supporting operations on the server's single underlying DBStore database object.
Each DBSession contains a reference to a unique DBEditSet transaction manager which
coordinates checkpointing, rollback, and commit for changes made by
that DBSession.