Hi.
Thomas has explained to me how maven really works and it should not be a
problem to let xwiki-*-ui-all (all-in-one xars) in
xwiki-enterprise-distribution.
So this is the new structure:
xwiki-entreprise-ui (pom):
* xwiki-entreprise-ui-common (xar)
* xwiki-entreprise-ui-mainwiki (xar) (depends on xwiki-entreprise-ui-common
+ xwiki-platform-workspace-ui)
* xwiki-entreprise-ui-subwiki (xar) (depends on xwiki-entreprise-ui-common
+ xwiki-platform-workspace-template-features)
xwiki-enterprise-distribution (pom):
* xwiki-entreprise-ui-mainwiki-all (all-in-one xar) (depends on
xwiki-entreprise-ui-mainwiki)
* xwiki-entreprise-ui-subwiki-all (all-in-one xar) (depends on
xwiki-entreprise-ui-subwiki).
Thomas has also given me some advices about <xwiki.extension.features>.
We assume that we drop the support of XEM since XE will integrate
Workspaces by default.
So :
xwiki-entreprise-ui-common will implement what used to be the
xwiki-enterprise-ui feature.
xwiki-entreprise-ui-mainwiki will implement what used to be the
xwiki-manager-ui feature.
Also, I need to install xwiki-entreprise-ui-common for regular subwikis and
xwiki-entreprise-ui-subwiki for workspaces. This is because we don't want
to install the workspace features on a regular subwikis in 5.2
That means, if we upgrade:
A/ a standalone XE wiki: the distribution manager will see that the new XAR
(xwiki-entreprise-ui-mainwiki) depends on xwiki-entreprise-ui-common, so it
will upgrade (and replace) xwiki-entreprise-ui.
B/ the main wiki of a farm: the distribution manager will see that the new
XAR (xwiki-entreprise-ui-mainwiki) depends on xwiki-entreprise-ui-common,
so it will upgrade (and replace) xwiki-entreprise-ui, but
xwiki-entreprise-ui-mainwiki also implements xwiki-manager-ui, so it will
be upgraded (and replaced) too.
C/ a standard subwiki of a XEM (not a workspace): the distribution manager
will see that the new XAR (xwiki-entreprise-ui-common) so it will upgrade
(and replace) xwiki-entreprise-ui.
But the subwiki will not be listed in the "Subwikis Directory", since
"Subwikis Directory" only lists what we used to call "workspaces"
(XWikiServer pages that have a WorkspaceClass object.). I think it's ok for
5.2.
D/ a workspace: the distribution manager will see that the new XAR
(xwiki-entreprise-ui-subwiki) depends on xwiki-entreprise-ui-common, so it
will upgrade (and replace) xwiki-entreprise-ui AND
xwiki-platform-workspace-template-feature.
But dynamically selecting a specific XAR for the upgrade is not possible
now.
So Thomas and Marius (thanks to them) suggest me a temporary solution.
- create a new JAR, with a new component that extends
org.xwiki.extension.distribution.internal.DistributionScriptService and
override getUIExtensionId().
- then, in the DW, when the upgrade is triggered, it call this method to
know which XAR should be installed.
- in the getUIExtensionId(), it looks if the current wiki is a workspace or
not, and consequently returns the good XAR.
Of course, this hack will be removed when we will have flavors.
In 5.3, the upgrade will be much harder. Because we need to really merge
the concept of "Workspaces" and "SubWikis", which is still 2 use-cases
in
5.2. (the "subwiki" new term is only used on the translations).
Thanks,
Guillaume