Quick start for developers
For developers here is a quick tutorial on how to set OpenSyllabus project into Eclipse
Installation Guide
Eclipse Configuration
Perhaps the greatest advantage of using GWT is having the capability to leverage advanced software engineering and use established Java integrated development environment (IDE). We suggest to use Eclipse IDE since it works very well and has support with GWT to help integration.
OpenSyllabus Code Structure
Let's have a look at the OpenSyllabus code structure.
- Code Structure
- Frontend project (GWT code)
- client
- public
- shared
- Backend project (Sakai's tool code)
- api dir
- impl dir
- tool dir
- Frontend project (GWT code)
To keep it simple, in our developpement we created two separate projects (we mean Eclipse/Maven projects) : One project for the client part where you will find al the GWT source code and one project for the backend part where stands the Sakai's tool code.
OpenSyllabus frontend is essentially organized around the recommended GWT project structure where we have replaced the server side code by a shared package and moved server RPC API definition (i.e. Interfaces files OsylEditorGwtService.java & OsylEditorGwtServiceAsync.java) into a rpc subpackage of the client.
-
- Frontend project (GWT code)
- client
- controller
- event
- OsylController.java
- OsylRPCController.java
- OsylViewContext.java
- OsylImageBundle
- rpc
- OsylEditorGwtService.java
- OsylEditorGwtServiceAsync.java
- view
- controller
- public
- css
- img
- html
- shared
- api
- events
- model
- client
- Frontend project (GWT code)
Package |
Purpose |
---|---|
org/sakaiquebec/opensyllabus/ |
The project root package contains modules XML files (i.e OsylEditorEntryPoint.gwt.xml) |
org/sakaiquebec/opensyllabus/client/ |
Client-side source files and subpackages |
org/sakaiquebec/opensyllabus/client/controller/ |
GUI controller and RPC controller, plus GUI's event subpackage and ViewContext utility |
org/sakaiquebec/opensyllabus/client/OsylImageBundle/ |
All the images resources to be compressed |
org/sakaiquebec/opensyllabus/shared/ |
Server-side code, including Interfaces, Model update events, Model definition |
org/sakaiquebec/opensyllabus/public/ |
Static resources that can be served publicly |
The project was initially created following the instruction of Creating an Application from Scratch (with Eclipse)
OpenSyllabus backend is organized as a classical Sakai's tool following a File Structure based on classic Sakai's tool directories, such as : API (interfaces), Impl (implementations) and Tool (webapp) directory. In the Tool directory, there are RPC Servlets and RPC Interfaces for Remote Procedure Call exchanges in the src/Java folder. In addition, the Tool directory contains the Index.jsp and something new : the compiled GWT content (all the generated GWT stuff : pure JavaScript and HTML)in the src/webapp folder.
- Code Structure
- Frontend project (GWT code)
- client
- public
- shared
- client
- Backend project (Sakai's tool code)
- api dir
- impl dir
- tool dir
- java
- client
- rpc
- OsylEditorGwtService.java (RPC Servlet)
- OsylEditorGwtServiceAsync.java (RPC Async Interface)
- server
- OsylBackingBean.java
- OsylEditorGwtServiceImpl.java
- rpc
- client
- webap
- index.jsp
- org.sakaiquebec.opensyllabus.OsylEditorEntryPoint (all generated JS code + HTML + images)
- osylcoconfigs (configuration files) I18N properties files, skin: images & css, rules.xml)
- java
- Frontend project (GWT code)
Development Cycle
Thus, the developer can code and debug all in Java by working depending to his needs in the backend project or in the client project.
Since the server is not available, in the client project you have to plan to write into your code mockups of server. For instance, you can simulate the server by using static fake data code.
We've found 3 possible use cases:
- Use case A - client update only
-
- Hosted Mode
During most of your development, your GWT code runs in "Hosted Mode" that lets you debug like a normal Java application (edit, run, and debug cycle) inside your Eclipse IDE.
In "Hosted Mode", a JVM executes the GWT code as Java bytecode inside a special embedded browser window (before your Java code having been translated into JavaScript).
To launch a hosted mode session with OpenSyllabus from Eclipse
Your startup file is OsylEditorEntryPoint-shell.cmd (select it, right-click on it + Open With + Default Editor). It should launch a program from the console.
-
- Deployment in Web Mode
When you have made a client code update only. In this use case, you have to invoke the JavaScript compilation then move the compiled JavaScript to the backend code. Also if your backend code is already deployed in Tomcat, just replace the JavaScript code by the new one.
- Use case B - backend update only
You only have to invoke Sakai Application Compilation and deployment with maven.
- Use case C - full compilation
The full compilation process is necessary when for example you change the interfaces of the Remote Procedure Call (RPC).
Note
To save time, use hosted mode as much as possible for client code developments, because,it is faster than a GWT compilation.