Hi,

I'm almost done with the plugin API, however, in order to keep the build
running and still being being backwards compatibility, it's going to be
quite a somewhat big commit, ~50 files touched, so just to be sure:

Classes affected:
@Deprecated methods/classes
 -> all classes / methods anotated with @Deprecated because of the API
changes will be removed
       in 2.10 timeframe
      * the plugin api is still depending on WikiContext and PluginContent,
but this should change shortly
        (I'd rather release the files now that I've an stabilized build and
continue later on)

api
-> new package org.apache.wiki.api, which should compile without depending
on other packages

exceptions
 -> new package org.apache.wiki.api.exceptions with copies of the original
Exceptions declared by
    the API methods
 -> to retain backwards compatibility, "old" exceptions will inherit new
ones, also the former ones
    are marked as @Deprecated
      * e.g.: org.apache.wiki.plugin.PluginException will inherit
        org.apache.wiki.api.exceptions.PluginException which (ultimately)
inherits WikiException
      * note that, until the API is completed, regarding exceptions there
will be an somewhat
        awkward jump: org.apache.wiki.api.exceptions.*Exception ->
org.apache.wiki.WikiException ->
        org.apache.wiki.api.exceptions.WikiException. It allows us to
achieve compatibility with
        2.9 derived source (regarding exceptions).

org.apache.wiki.plugin.PluginManager
 -> new interface org.apache.wiki.api.PluginManager
 -> moved to org.apache.wiki.plugin.DefaultPluginManager
 -> @Deprecated public static boolean isPluginLink( String link )
      * equivalent method on org.apache.wiki.parser.JSPWikiMarkupParser
 -> WikiEngine.getPluginManager now has the following signature, in order
to retain backward
    compatibility: public < T extends PluginManager > T getPluginManager()
      * In 2.10 this should change to public PluginManager
getPluginManager()

org.apache.wiki.plugin.InitializablePlugin
 -> new interface org.apache.wiki.api.InitializablePlugin
 -> all core wikiplugins and wikiforms implementing the "old" interface now
implement the new one
 -> org.apache.wiki.plugin.InitializablePlugin marked with @Deprecated +
extends
    org.apache.wiki.api.InitializablePlugin

org.apache.wiki.plugin.ParserStagePlugin
 -> new interface org.apache.wiki.api.ParserStagePlugin
 -> all core wikiplugins and wikiforms implementing the "old" interface now
implement the new one
 -> org.apache.wiki.plugin.ParserStagePlugin marked with @Deprecated +
extends
    org.apache.wiki.api.ParserStagePlugin

org.apache.wiki.plugin.WikiPlugin
 -> new interface org.apache.wiki.api.WikiPlugin
 -> all wikiplugins and wikiforms implement the new interface
 -> org.apache.wiki.plugin.WikiPlugin marked with @Deprecated + extends
org.apache.wiki.api.WikiPlugin

Any ideas/comment/objections will be welcomed, but I'd like to do the
commit tomorrow evening.. O:-)


br,
juan pablo


On Wed, Dec 12, 2012 at 1:17 AM, Juan Pablo Santos Rodríguez <
[email protected]> wrote:

> Hello again,
>
> I was going through 3.0 JIRA issues, and I've came across with JSPWIKI-303
> [#1], defining an API for JSPWiki under [com.ecyrd|org.apache].wiki.api,
> not only as a mean of providing access to JSPWiki internals, but as a mean
> of breaking cycles between classes and packages (red squares at [#2]).
> Basically this would mean better testability and modularity, and easier
> manteinance.
>
> My intention is to do this gradually, trying to mantain binary
> compatibility whenever possible, targeting for 2.10.x scope (but hey, if it
> happens to be done for 2.9.x, so be it). This most probably means marking
> some methods with @Deprecated with the intention of deleting them in 2.10.x.
>
> As of candidates for wiki.api package, I'd look both in [#3] and
> WikiEngine#initialize(Properties), lines 523-587, making the appropiate
> changes so ClassUtils returns always interfaces. As I've had to take a look
> at the plugins recently, I was about to begin with PluginManager +
> WikiPlugin.
>
> thoughts?
>
>
> [#1] https://issues.apache.org/jira/browse/JSPWIKI-303
> [#2]
> https://analysis.apache.org/plugins/resource/110730?page=org.sonar.plugins.design.ui.page.DesignPage
> [#3] http://www.jspwiki.org/wiki/JSPWiki3APIDesignProposal
>

Reply via email to