Hi xwikiers,
Some of us discussed that for a while and created/improved
http://design.xwiki.org/xwiki/bin/view/Proposal/DeprecatingSpaceAndSpaceRef…
and I finally started working on it.
So here is what I pushed on master already:
= PAGE EntityType and Page*Reference classes
First thing first we now have a few new type in EntityType and the
corresponding typed Page*Reference helpers. One for each of the
element you can have in a page:
* PAGE
* PAGE_ATTACHMENT
* PAGE_OBJECT
* PAGE_OBJECT_PROPERTY
* PAGE_CLASS_PROPERTY
= Corresponding resolvers/serializer/providers
Each of the already existing DOCUMENT oriented resolvers and
serializers have their PAGE oriented implementation.
= Conversion from DOCUMENT to PAGE world
The entity resolvers automatically convert from/to DOCUMENT from/to
PAGE world references. Do yes using a resolver is the official way to
do that conversion.
= Model script service
The $services.model API also got his own new helpers to manipulate pages
= New syntax
Last but not least: pages reference have a very different syntax.
To summarize it's a filesystem path syntax with support for parameters.
Here is are a few examples:
wiki:page1/page2;param1=value1;param2=value2;en_US
wiki:page1/page2/attachment
../siblingpage
* separator: "/" between all elements except WIKI which is still ":"
* escaping: still "\"
* current, parent support: like in a filesystem you can refer to the
current page or parent page/wiki using "." and ".."
* parameters: we now have syntax to express the parameters of an
EntityReference. Each parameter is separated by a ";" at the end of
the entity name
* default parameter: the syntax have the concept of default parameter
which mean a parameter for which you don't need to indicate the name.
For example PAGE reference default parameter is "locale"
= TODO
The next elements on the short term TODO list are:
* support for page references in XWiki#getDocument (which essentially
means add a fallback)
* support for page references in various macros (generally means
adding a "page" parameter as alternative to the existing "reference"
or "document" parameter)
Thanks,
--
Thomas Mortagne