Changes between Version 5 and Version 6 of AnotherPluginDevelopmentGuide


Ignore:
Timestamp:
30.06.2012 13:29:22 (13 years ago)
Author:
Christiane
Comment:

spellchecking

Legend:

Unmodified
Added
Removed
Modified
  • AnotherPluginDevelopmentGuide

    v5 v6  
    1212 * Migration management. 
    1313 
     14 
    1415= What a plugin can do = 
    1516 
    16  * Provide new topic types or extending extisting ones. 
     17 * Provide new topic types or extend extisting ones. 
    1718 * Provide and migrate topic instances and associations. 
    1819 * Provide application logic. 
    1920   * React upon server events. 
    2021   * Provide REST resources. 
    21  * Extending the browser client. 
     22 * Extend the browser client. 
    2223   * React upon UI events. 
    2324   * Add page and field renderer. 
     
    2526   * Extend the REST client. 
    2627 
     28 
    2729= Creating a plugin project = 
    2830 
     
    3638The structure within your plugin project directory is determined by a combination of 
    3739Maven and DeepaMehta conventions. All possible plugin constituents are optional (besides the POM). 
    38 Obviously an useful plugin will provide some (or all) constituents. Which one these are depends 
     40Obviously a useful plugin will provide some (or all) constituents. Which one these are depends 
    3941on the nature of your plugin. Every snippet on this page can be found in the example reference 
    4042project [https://github.com/dgf/dm4-example dm4-example]. 
     
    6971|||| . . . . . screen.css                   || 
    7072 
     73 
    7174= Setting up the development environment = 
    7275 
     
    97100'''TBD''' describe 
    98101 
     102 
    99103== Hotdeploy the plugin bundle == 
    100104 
    101 In an ongoing development it make sense to use the hotdeploy setup, that automatically monitors all 
     105In an ongoing development it makes sense to use the hotdeploy setup that automatically monitors all 
    102106configured bundle archives. To start using it, create a directory where your development should  
    103107take place and [BuildFromSource build] DeepaMehta from source. Then adapt the  
     
    145149individual to your plugin project. These comprise of: 
    146150 
    147  * Human-readable Project name. 
    148  * Project identification in the Maven space (group ID, artifact ID, and version number). 
     151 * Human-readable project name. 
     152 * Project identification in the Maven space (group ID, artifact ID and version number). 
    149153 * Instructions for the OSGi bundle packager. 
    150154 
     
    199203= Migrations = #migration 
    200204 
    201 There are two ways to create and migrate the model of your plugin. An initially setup can be 
    202 described in declarative style. To update exiting data or change the model in the lifetime 
     205There are two ways to create and migrate the model of your plugin. A initially setup can be 
     206described in declarative style. To update existing data or change the model in the lifetime 
    203207of your plugin project use the programmatic way and implement a Java migration. An order of 
    204208execution is determined with the increasing file name number suffix. To configure the required 
     
    290294 
    291295DeepaMehta tries to find out most of the plugin behaviors by convention, nevertheless 
    292 some of configurations have to be done and these are written down in the plugin.properties file. 
     296some configurations have to be done manually, written down in the plugin.properties file. 
    293297 
    294298plugin.properties example: 
     
    358362    }) 
    359363 
    360     // register an additional create command 
     364    // register a additional create command 
    361365    dm4c.register_listener("post_refresh_create_menu", function(type_menu) { 
    362366        type_menu.add_separator() 
     
    395399 
    396400{{{#!js 
    397 // a simple field renderer that renders an example topic name with an additional CSS class 
     401// a simple field renderer that renders a example topic name with a additional CSS class 
    398402function ExampleContentFieldRenderer(field_model) { 
    399403    this.field_model = field_model 
     
    420424 
    421425{{{#!js 
    422 // a page render that simply renders the value of an example content topic instance 
     426// a page renderer that simply renders the value of an example content topic instance 
    423427function ExampleContentPageRenderer() { 
    424428 
     
    645649 
    646650    /** 
    647      * Increase the count of an attached <code>Example</code> topic. 
     651     * Increase the count of a attached <code>Example</code> topic. 
    648652     */ 
    649653    @GET 
     
    664668=== Provider === #provider 
    665669 
    666 To provide an automatically serialisation of your Java domain model classes, your can implement 
     670To provide a automatically serialisation of your Java domain model classes, you can implement 
    667671a specific provider or use the JSONEnabled interface. There is no need for proprietary message 
    668672body writer providers as long as the object implements JSONEnabled. Every object that is about 
    669 to be send over the wire is supposed to do so. A generic reader provider of course is a different 
     673to be send over the wire is supposed to do so. Of course, a generic reader provider is a different 
    670674story and does not yet exist. 
    671675