Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add informational note, provide latest status of module refactor
Tip
titleThis API refactoring was approved for the DSpace 6.0 release

This Service based API refactoring was approved for release in DSpace 6.0 via a vote taken on the 'dspace-devel' mailing list.

This Service API was presented/discussed in a Special Topic Developer Meeting on July 23, 2015.  Slides and video from that meeting are now available:

  • Presentation Slides (from Ben Bosman): Service Based API.pdf
  • Video of meeting (~60mins including Q&A, requires Flash to view): http://educause.acms.com/p7hebf8ddc7/
  • Latest Code: https://github.com/KevinVdV/DSpace/tree/dspace-service-api
    Noteinfo
    titleAPI Adoption To-Do List (Please claim one or more modules)!What is the Service-based API refactoring?

    The Service-based API refactoring will take place on the DS-2701-service-api feature branch. As this API is NOT backwards compatible, all existing DSpace Modules will need to be refactored to utilize this new API. 

    If you would like to help out, please claim one or more DSpace Modules, and submit a PR (against the above "DS-2701-service-api" branch) which fixes that module. A module is considered "fixed" when it compiles (against the new API) and all its unit tests (if any) pass. Please submit one PR per module. (NOTE: PLEASE WAIT FOR THE INITIAL API merger before starting any module refactors)

    Once all modules successfully compile and pass all unit tests, the feature branch will be merged into "master" and more extensive testing will be performed.

    Info
    titleAdditional Resources

    a major refactoring of the "dspace-api" (DSpace's Java API) to better support "separation of concerns/responsibilities". Simply put, often, in the existing (5.x and below) API, there is an intermingling of business logic and database logic which is difficult to maintain, debug and/or build against. One of the most obvious examples is how we deal with database software support (PostgreSQL vs. Oracle), but such intermingling of logic exists in many of our core classes. The DSpace "Service-based API" attempts to tease apart the database logic from the business logic into separate layers, while also adding support for Hibernate.  The goal is to provide an easier to maintain, more modular API, while also enhancing how we deal with database logic in general (via Hibernate).

    • This is essentially a new Java API for DSpace. (Some areas of our API are still the same, but most have been refactored)
      • NOTE: It is not backwards compatible with the existing (5.x and below) Java API.
    • It modularizes our primary API in a way that makes it much easier to achieve future goals on our Roadmap (especially, moving us towards potentially better support of third-party modules)
    • It cleans up one of the "messiest" areas of our existing API, the Database management / hardcoded Oracle and PostgreSQL queries, in favor of using Hibernate.  This allows us the potential to support additional database platforms in the future (e.g. MySQL or similar). It decreases the likelihood of Oracle-specific bugs (which have always been a problem), as the Oracle queries are delegated to Hibernate. It also simplifies the process of testing for database-specific problems in general (as again, all queries are delegated to Hibernate).
    • It begins teasing apart a true "business logic layer" in the API (see the "service layer" of this new API)
    • It provides (internal) globally unique UUIDs for all DSpace objects (instead of existing incremental, non-unique database identifiers)
    • The refactored API itself should not affect the fresh installation or upgrade process of DSpace 6.0, provided that you have not made local changes that rely on the existing Java API (dspace-api). If you have made such local API changes, your refactor process should not be difficult. But, it will be necessary before you can successfully upgrade to 6.0. See "Tutorials" below for examples.
    Info
    titleAdditional Resources

    This Service API was presented/discussed in a Special Topic Developer Meeting on July 23, 2015.  Slides and video from that meeting are now available:

    Note
    titleModule refactoring now COMPLETE!

     

    All existing DSpace interfaces/user interfaces have been refactored to support the new API, and all unit tests succeed. This refactoring took place on the DS-2701-service-api feature branch.

    We'd like to thank the following individuals for their hard work in helping to refactor and test our various modules to support this new API:

     

     

    Table of Contents
    outlinetrue

    ...