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 | |
---|
3 | Play 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 | |
---|
12 | However, one can easily add a new plugin to an application. |
---|
13 | |
---|
14 | 1. 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)) |
---|
15 | 2. this plugin should be available in the application either through pulling in it from a maven repository and referencing it |
---|
16 | as an app dependency or the plugin code can be part of a play application |
---|
17 | 3. 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)) |
---|
18 | 4. 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.