source: Dev/branches/play-2.0.1/documentation/manual/sandbox/Scalaplugin.md @ 322

Last change on this file since 322 was 322, checked in by hendrikvanantwerpen, 13 years ago

Added Play! framework and application with Jena dependency. Working on
the basic things now (login/register), after that start implementing
our data model.

File size: 2.0 KB
Line 
1# Writing Plugins
2
3Play 2.0 comes with a few plugins predefined for all applications, these plugins are the following:
4
5* ```DBPlugin``` -> providing a JDBC datasource
6* ```EvolutionPlugin``` -> provides migration  _(only available if db was configured)_
7* ```EbeanPlugin``` -> provides Ebean support _(only available if db was configured)_
8* ```MessagesPlugin``` - > provides i18n support
9* ```BasicCachePlugin``` -> provides in-memory caching
10* ```GlobalPlugin``` -> executes application's settings
11
12However, one can easily add a new plugin to an application.
13
141. first step is to implement play.api.Plugin trait which has three methods: onStart, onStop and enabled - [for example](https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/cache/Cache.scala))
152. this plugin should be available in the application either through pulling in it from a maven repository and referencing it
16as an app dependency or the plugin code can be part of a play application
173. you can use it directly like ```app.plugin[MyPlugin].map(_.api.mymethod).getOrElse(throwMyerror)``` (where ```app``` is  a reference to the current application which can be obtain by importing play.api.Play.current) however, it's recommended to wrap it for convenience (for example, see [this](https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/cache/Cache.scala))
184. in your app create a file: ``conf/play.plugins``` and add a reference to your plugin, just like this ```5000:com.example.MyPlugin```
19
20
21_the number represents the plugin loading order, by setting it to > 1000 we can make sure it's loaded after the global plugins_
22
23_Tip: If you are a scala developer but you want to share your plugin with java developers, you will need make sure your API is wrapped for Java users (see [this](https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/cache/Cache.scala) and [this](https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/java/play/cache/Cache.java) for an example)_
24
Note: See TracBrowser for help on using the repository browser.