The API for programming the DSpace system.

DSpace System Architecture

Briefly, DSpace consists of a three-layer architecture:

Application Layer org.dspace.app.*
Business Logic Layer org.dspace.*
Storage Layer org.dspace.storage.*

Each layer is divided into subsystems. These are stored in separate packages. Only the public API of each subsystem should be used by other subsystems. Additionally, subsystems in the Application Layer should not use the Storage Layer directly.

The top level of each package must contain only public classes and methods that are part of the public API of the subsystem. This way, conservative use of import ensures that subsystems are only using appropriate public APIs.

Test classes for subsystems that have automatic self-tests reside in a test sub-package. For example, the browse subsystem tests reside in org.dspace.browse.test. Such test classes must also have a name that ends in Test.Java, for example BrowseTest.java.

Each of the layers and the packages that are part of them are described below.

Application Layer

Presently, the application layer consists of: Since this and other applications are "customers" of DSpace, they do not need to have strictly defined public APIs. Subsystems in the application layer should be sub-packages of org.dspace.app. Subsystems in the application layer should not use the storage layer directly.

Business Logic Layer

This is where the main smarts of the system lie. It consists of a number of subsystems, stored in sub-packages of org.dspace, and some core classes in org.dspace.core. Sub-packages of org.dspace that are not in org.dspace.app or org.dspace.storage are business logic subsystems.

org.dspace.content (the content management API) is probably the most useful to applications. Other subsystems are generally only directly used by applications providing administrative functionality.

Storage Layer

The storage layer currently consists of two subsystems: The relational database management system interface, and the bitstore. These are in packages org.dspace.storage.rdbms and org.dspace.storage.bitstore respectively. Any new storage subsystems should also be sub-packages of org.dspace.storage.

More Information

More detailed architectural information for the current stable release of DSpace can be found here:

http://dspace.org/technology/system-docs/

If you're using a beta or earlier version of DSpace, you should download the 'dspace-docs' documentation package corresponding to the version you're using from the SourceForge download page:

http://sourceforge.net/project/showfiles.php?group_id=19984