Hi,

I'm almost done with JSPWIKI-120 (aka big refactor on WikiEngine) and,
after it, I'd like to retake JSPWIKI-303
(JSPWiki public api) before next release.

As of now, I've came up with the following classes/interfaces for the
public API, that should be enough for most
of the typical JSPWiki extensions out there. We could add further
classes/packages later on, but I think it's ok for a first approach:

* o.a.w.api.core: core API interfaces
** Engine and Context, extracted from WikiEngine and WikiContext
** Page and Attachment, extracted from WikiPage and Attachment
** Acl and AclEntry, promoted from the o.a.w.auth.acl package (as they are
used by Page, Attachment and Context)
** Command, promoted from the o.a.w.ui package (as WikiContext is
implementing Command)
** o.a.w.Release promoted to this package?
* o.a.w.api.exceptions: JSPWiki custom exceptions
* o.a.w.api.filters: Filters API (modified to require Context instead of
WikiContext)
* o.a.w.api.plugin: Plugins API (modified to require Context instead of
WikiContext)
* o.a.w.api.providers: Page providers API, it would contain WikiProvider
and WikiAttachmentProvider from org.apache.wiki.providers

Some of the classes from which the API is extracted also rely on classes on
the o.a.w.event package, so there's a slight
chance that the o.a.w.event package will become a dependency of the public
API. Have to take a better look at it. As of
now, the o.a.w.event package can be extracted to its own independent
module, so it shouldn't be a big deal.

As of this quarter release, I think right now it makes sense to skip it:
current changes related to JSPWIKI-120 have a
good probability of breaking existing 3rd party plugins/filters (most
likely if they interact with the WikiEngine), and that is
likely to happen again when introducing the public API. Also, this quarter
work has been mainly around JSPWIKI-120, so
releasing now wouldn't unlock new features or bugfixes, but rather just
have a release which may break current 3rd party
integrations. This was bound to happen sometime, but in order to minimize
the chances of breaking again the JSPWiki
API I think it's better to skip this station.

Thoughts? Am I missing something, should the API include more things, or is
it too wide,..?


best regards,
juan pablo

Reply via email to