Hi xwikiers, Some of us discussed that for a while and created/improved http://design.xwiki.org/xwiki/bin/view/Proposal/DeprecatingSpaceAndSpaceReference 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