Project Team

Project Description

Problem Statement: Separation of processing logic from presentation layer at the Web UI component in the DSpace application layer.

Problem Elaboration: Although the DSpace three-tier architecture follows the model-view-controller (MVC) architecture, with most of the logic encapsulated in the logic layer, there is still a fair amount of processing logic involved in the Web UI component at the application layer. For example, in the "full.jsp" file under the browse folder of DSpace JSP-UI, there is a thick chunk of scriplet logic embedded from lines 30 to 164.

Solution: *The current proposal is to adopt the *Spring Web MVC framework as a means to enforce the MVC framework architecture and the use of the Freemarker template engine as a means to enforce the amount of logic at the presentation layer.

Freemarker offers an alternative to JSP and JSTL tags in reducing scriplet logic via the use of more data model flexibility, providing the use of customized template snippets via #macro definitions and etc... Freemarker provides a lethal combination with the Spring MVC framework in reducing presentation layer logic by the following breakdown of goals:

Breakdown of goals within Spring MVC framework

Views: Freemarker restricts dynamic content display to the use of Expression Languages variables. ${output} and certain logic/sequence operations via the use of its unique syntax that are ignored by the web browser. Eg: #if, #assign #list tags.

Dispatcher Servlet: Dispatcher servlets act as the "front gate" role in identifying urls, and delegating the appropriate controller class to handle the request via bean tags definitions.

Controller classes: To handle request urls from the dispatcher servlet, delegate the appropriate method/class method calls via the use of request/response annotations, correspond in parsing data values to the model component for logic processing, and delegating the appropriate response views. The full path url of the views will be automatically resolved by the dispatcher servlet by gearing it with the appropriate prefix and suffix.

Model and View: Represents a Class to represent a model and view returned by a handler used by a DispatcherServlet. The view can take the form of a reference to a View object, or a String view name which will need to be resolved by a ViewResolver object. The model is a Map, allowing the use of multiple data objects keyed by name. These keys will be utilize by the #assign syntax of Freemarker to provide dynamic content for views.

Model: To ensure that complex logic algorithms computation is handled entirely at the business logic layer. For example, session beans, web services.

Project Timeline

Before April 20:

April 20 – May 23 (Before the official coding time):

May 23 – June 18 (Official coding period starts):

June 18 – July 5:

JULY 6th MID TERM EVALUATION

July 6 – July 15:

July 15 – July 25:

July 25 – July 31:

A Buffer of two weeks has been kept for any unpredictable delay.

NOTE: Require webmvc documentation and update dspace 1.7.0 API library.