I’m working (slowly) on a simple alternate web frontend for DSpace:
I was thinking that it would be nice if DSpace provided some implementation-agnostic utilities for a generic HttpServlet context.
For example, XMLUI and JSPUI provide their own wrappers for things like browsing, searching, recent submissions, etc., but in many cases the code used is very similar and not dependent on the specific framework.
It would be possible to abstract out a lot of the functionality of these wrappers into utility methods that have signatures like `HttpServletRequest req, HttpServletResponse resp`.
As a specific example, consider
RecentSubmissionUtils. There is no reason this class has to be XMLUI specific; if it was in some shared package, JSPUI or any other framework could just use it directly to generate a list of recent submissions for a community or collection.
There are already a couple of servlet-related utilities in dspace-api at org.dspace.app.util.Util.
I don’t know if anything like this has ever been discussed, or if there are reasons it wouldn’t work. I know it would require a lot of collaboration between JSPUI and XMLUI developers. I guess this is something
that should go on a DSpace “wishlist”; I apologize if this isn’t the correct place for that—
* In case anyone wants more information: this application is written in Scala and uses:
the DSpace API (5.x) for working with a local DSpace repository
Jersey for request routing (and not much else)
Twirl for HTML templating
xsbt-web-plugin for running in development and WAR packaging
Bower and Gulp for frontend asset management
In a little over 700 lines of Scala and a handful of HTML templates, this application provides a good portion (but certainly not all) of the non-administrative functionality of a normal XMLUI site, including home, community, collection,
and item view pages, and search and browse interfaces (including sidebar facets).
Getting started should be as easy as:
This application is under active development and is not a finished/polished product. Parts of it may be untested or in need of improvement. While this application should be mostly “read-only” in relation to your local DSpace installation,
I would recommend against running it on a production server at this point. Use at your own risk.