Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Module/class name

Description/Comments

Source code

dspace-api

DSpace API

http://scm.dspace.org/svn/repo/dspace/trunk/dspace-api

dspace-xmlui

XMLUI (Manakin)

http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui

storage-api

Constitute of DSpace 2 storage interfaces. Will be referenced from dspace-xmlui and other modules which will use new storage mechanism. Subject to change. (Update: heavily refactored - moved from mixin solution to services concept)

http://scm.dspace.org/svn/repo/modules/dspace-storage/trunk/api/

storage-legacy

Yet non existant module. Module will implement storage-api interfaces. Basically it will be the shim allowing modules to access DSpaceObjects (in dspace-api) using new storage-api.

http://scm.dspace.org/svn/repo/modules/storage-legacy/

dspace-services

DSpace services module. DSpace services framework will be used to manage and gain access to storage-api implementations.

http://scm.dspace.org/svn/repo/modules/dspace-services/

ProvidedStorageService

Class which acts as a mediator between caller and storage service implementations. However, its usage is questionable. (Update: since dspace-storage-api has been refactored and instead of mixin solution services way there chosen, this class or its modifications most likely will not be used.)

http://scm.dspace.org/svn/repo/modules/dspace-storage/trunk/impl/src/main/java/org/dspace/services/storage/ProvidedStorageService.java

...

  • Analysis part:
    • Analysis of dspace-api module
    • Analysis of dspace-services module
    • Deeper review of spring usage in DSpace
    • Analysis of dspace-database module
    • Analysis of dspace-storage-db-2.0.x module
    • Analysis of AIP prototype
  • Better dspace-api adaptation to changing needs:
  • Implementation of storage-legacy module
  • dspace-xmlui relation to storage-api
  • Creation of java documentation
    ...

...

  • Wiki Markup
    "StorageProperty\[\] parameters should be dropped from the StorageEntity object all together." \[DSPACE:2\]
  • Wiki Markup
    "StorageProperty service methods for performing CRUD operations on Storage properties be maintained on a separate mixin interface." \[DSPACE:2\]
  • Wiki Markup
    "StorageRelation be removed from the object model and relations be captured only by attaching StorageEntities as "values" of StorageProperties." \[DSPACE:2\]
  • "... remove methods like getEnititesAtLocation("/community/collection") and would recommend the use of the Search API instead for the retrieval..."
  • "Mapping a prefix to the provider should warrant needing a separate interface to be implemented. That could just be part of assigning the StorageService to the map it is cached in the ProvidedStorageService."

...

Update: after long discussions on how dspace-storage-api

...

Below is provided proposed storage-api "core" subset class/interface diagram, considering previously described changes. Interfaces are prefixed with "I" which will not necessarily be used in implemented interfaces.

  Image Removed
Observations:

...

should look like, it was chosen to refactor whole api and move from mixin solution to services concept, thus some of initial proposals on api changes does not reflect in current model implementation.

Proposed dspace-storage-api

Most current basic dspace-storage-api implementation class diagram provided below:

Image Added

Short reference history how dspace-storage-api class diagram evolved during discussions can be found here: http://andriusb.labt.lt/gsoc/ (PNG files only).

Provided api will evolve further, but most likely that basic components provided in diagram won't change or only minor changes can be introduced. Where are plans on incorporating interfaces for indexing, search and ContentModel services

...

.

Backporting strategies

There are different ways to backport dspace-storage into DSpace 1.x, some of these are described here.

...

Shim or "cover over" solution is chosen as backporting strategy. Diagram below describes it in more detail.

Elements in red are yet to be implementedbeing implemented.

Update: since dspace-storage-api was moved from mixin solution to services, class ProvidedStorageService is replaced with EntityStorageService, PropertyStorageService and BinaryStorageService.

References

1. GSOC 2010 proposal: Backport of DSpace 2 Storage Services API for DSpace 1.x, http://abandriusb.labt.lt/gsoc/2010/dspace/proposal1.html
2. GSoC Collaboration Scratchpad, https://wiki.duraspace.org/display/DSPACE/GSoC+Collaboration+Scratchpad