Last updated by
4 years ago
Page: Roadmap, Version:1
Grails Roadmap
1.1 Release Planning
Headline Features
- JPA Support
- JSP Tag Library Support
- DB Migrations
- Portlet Support
- Java Content Repository (JCR) Support
- Security API
- Mail Support
- Maven 2 Support (help test it!)
- Continuous Testing
Improvements to Core
The above features will require some re-work to core and hence are dependant on certain improvements mainly to the plug-in systemRefactor and split out Grails so individual parts are more re-usable
- Standalone GORM
- Standalone GSP
- Standalone BeanBuilder (already possible but provide ComponentContextLoader)
- Create a standard Spring MVC application without the rest of Grails, just GORM enabled?
- Create a standard Spring MVC application without the rest of Grails but configured with BeanBuilder?
- Create a standard Spring MVC application without the rest of Grailsbut with a GSP view?
- Or any combination of the above?
Support for Global plugins
The plug-in mechanism needs to work not sure on a per app basis but on a global basis to, with a flag you should be able to install a plugin for all applications:grails install-plugin -global jsecurity
Refactor and Split Grails core into real Grails plugins
Currently Grails core plug-ins are kept within jars, these need to be made real Grails plug-ins and they need to have their own jar files for example hibernate support should reside inGRAILS_HOME/plugins/hibernate
Implement class loader isolation for plugins
Currently plugins are not isolated from each other which can lead to class loader conflicts, we should implement class loader isolation so that individual plugins don't conflict with each otherSome implications of this is you will no longer be able to have plugins that references classes directly within the plugin from web.xml. For this we should implement DelegatingServletFilter, DelegatingServlet etc. that are capable of delegating to particular pluginsImprove plug-in testing
Currently its hard to test plugins because its near impossible to mock artefacts, we should be able to, within a plugin, have a test/projects directory that contains real grails projects that can be bootstrapped and then tested with a new command such as:grails test-project foo
Proper plugin eviction
Currently when you evict a core Grails plug-in it doesn't exclude the jar files for that plugin. We need to refactor LoaderConfiguration so that it is plugin aware to avoid jar conflictsAutomatic Plugin Discovery and Install
When you dograils install-plugin jsecurity
Dependency Resolution for Plugins
As above Plugins should be able to declaritively specify their dependencies and have those automatically downloaded including any plugins that the plugin depends on (transitive dependency management)Plugin Uninstall
We should provide a plugin uninstall command that removes the plugin and any resources it may have added to the provide and then executes an _Uninstall.groovy script if it exists in the pluginInteractive mode
A new Grails interactive mode that you run with:grails interactive
run-app test-app stop-app create-controller foo run-app
Headline Feature TODO List
JPA Support
- Write as a plugin, will need to evict Hibernate plug-in
- Planned support includes most GORM like oeprations excluding criteria (no support in JPA)
- Test against TopLink for compatibility
JSP Tag Library Support
- Look at freemarker as an example of how this is done
- JSP tags will require a <%@taglib %> directive unlike GSP tags
DB Migrations
- Possible a Liquibase or GSQL DSL?
Portlet Support
- Depends on JSP tag library support
Post Grails 1.0
- Implement support for JPA
- Implement generation of domain model from DB (Middlegen integration)
- Add server-side scripting of client Javascript (javascript DSL)
- Refactor scaffolding to make it more pluggable and extensible
- Implement support for JSP custom tag libraries in GSP
- Fork GSQL and use to add support for database migrations
- Add XML-RPC support for Service classes
- Implement Grails-AOP an AOP mechanism built on the Groovy MOP
- Add scaffolding of user authentication code
- Start to build up a UI component tag library