Release Notes for XWiki 9.3

Last modified by Thomas Mortagne on 2017/04/25

This is the release notes for XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise. They share the same release notes as they are released together and have the same version.

This release brings a couple of small, but very useful improvements like the ability to filter the sections in Administration, reset changes done to extension pages and alternative configuration locations. Developers get some helpful API in writing clean queries when escaping and filtering, a new API to find documents belonging to extensions and more control through a new extension point for the content menu.

The following regressions were found after this version was released. We recommend using the 9.3.1 release which fixes the problem.

New and Noteworthy (since XWiki 9.2)

Full list of issues fixed and Dashboard for 9.3.

For Users

Wiki Links with Auto-Generated Label in CKEditor

 
We upgraded CKEditor Integration to the latest version which brings support for creating wiki links with auto-generated label. The XWiki Rendering supports these type of links since a long time. They look like this in wiki syntax:

[[Path.To.Page]]

As you can see the link label is missing and so it is generated automatically when the page is rendered. The way the labels are generated can be configured. The new version of CKEditor Integration adds support for creating such links, but it's not enabled by default. You can enable it using the following in the Advanced configuration:

config['xwiki-link'] = config['xwiki-link'] || {};
config['xwiki-link'].autoGenerateLabels = true;

The reason we disabled this feature by default in CKEditor is because XWiki uses the page name (not the page title) for auto-generated link labels by default at the moment, which can confuse the users because we display the page title in the page tree and in the page suggest. But if you change the way the link labels are generated then you may want to enable this feature.

Miscellaneous

  • Disabling emoticons: It's now possible to disable default emoticons by editing xwiki.properties and overriding the mapping with an empty value. For example to disable (n) you'd add:

    rendering.transformation.icon.mappings = (n) =
  • Mail resending at startup: At startup, mails that weren't sent yet are now resent automatically.

For Admins

Reset Extension changes

 
It's now possible to reset changes listed in the Extension diff.

Live Search in Administration

 
The administration menu now has a search input at the top that can be used to filter the administration categories and sections. At the moment the live search matches only the category/section name and description.

Miscellaneous

  • Configuration in /etc/xwiki: XWiki will now try to find xwiki.cfg and xwiki.properties in /etc/xwiki/ on file system before looking in the webapp resources.

  • Admin user as a Simple user: When using the Jetty/HSQLDB demo packaging, the Admin user used to be an Advanced user, and this was troubling for users discovering XWiki since they were seing advanced features from the onset. The Admin user is now a Simple user, matching what you get in other packagings in which the admin user is created in the Distribution Wizard when XWiki is executed the first time.

  • The default value of xwiki.users.initialGroups now depends on xwiki.authentication.group.allgroupimplicit value (users are not added to XWikiAllGroup anymore when xwiki.authentication.group.allgroupimplicit is enabled).

For Developers

Safe escaping when querying

 
When writing XWQL or HQL, it's easy to forget to escape the %, _ or even the [ character in LIKE clauses. It's also easy to forget that MySQL considers the default escape character to be \ and thus when you have a serialized Entity Reference in a LIKE you need to change the escape character as otherwise pages with dots (.) in their names won't match!

To avoid bother we're introducing a new Query Manager API when binding a value.

Example usage:

$services.query.xwql("xwqlstatement like :ref").bindValue("ref").literal("${documentReference}.").anyChars().query().execute()

Link document to corresponding extensions

 
A new set of scripting APIs have been introduced to link documents from the database to the corresponding installed extension.

Content Menu UIXP

 
You are now able to contribute new content menu buttons, in addition to the existing Edit, Add, Admin and More Actions by implementing the org.xwiki.plaftorm.menu.content UI Extension Point and specifying the order.

Filtering Query parameters

 
It's now possible to filter not only Query statements but also Query parameters or in general any value returned by a Query object. This is achieved through a new method in QueryFilter. See the Query Module for more details. Example:

@Component
@Named("myfilter")
@Singleton
public class MyQueryFilter implements QueryFilter
{
...
   @Override
   public Query filterQuery(Query query)
   {
       return new WrappingQuery(query)
           {
               @Override
               public String getStatement()
               {
                   return ... modified statement here...
               }
           };
   }
}

Moved Modules

  • Blog Application has been moved from XWiki Platform to Contrib.

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise):

Translations

The following translations have been updated: 

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

BrowserTest Result
Chrome30.pngGoogle Chrome 58Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features
Firefox30.pngMozilla FirefoxNot Tested
IE30.pngInternet Explorer 10Not Tested
IE30.pngInternet Explorer 11Not Tested

Here is the list of databases we support and how they have been tested for this release:

DatabaseTest Result
hypersql.pngHyperSQL 2.4.0Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features
mysql.pngMySQLNot Tested
oracle.pngOracleNot Tested
postgresql.pngPostgreSQLNot Tested

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your xwiki.cfg, xwiki.properties and web.xml files with the newest version since some configuration parameters may have been modified or added. Note that you should add xwiki.store.migration=1 so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.

API Breakages

The following APIs were modified since XWiki 9.3:

  • Really don't see how adding a new constructor could be a breakage...
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.ExtensionException.serialVersionUID

      ## New:
      field org.xwiki.extension.ExtensionException.serialVersionUID
  • Not a binary breakage and should not change anything at build either time most of the time
    • Violation type:
      java.generics.formalTypeParameterAdded
    • Code:
      ## Old:
      method <T> T org.xwiki.extension.script.AbstractExtensionScriptService::safe(T)

      ## New:
      method <S, T> S org.xwiki.extension.script.AbstractExtensionScriptService::safe(T)
  • Not a binary breakage and should not change anything at build either time most of the time
    • Violation type:
      java.generics.formalTypeParameterAdded
    • Code:
      ## Old:
      method <T> T org.xwiki.extension.script.AbstractExtensionScriptService::safe(T) @ org.xwiki.extension.xar.script.XarExtensionScriptService

      ## New:
      method <S, T> S org.xwiki.extension.script.AbstractExtensionScriptService::safe(T) @ org.xwiki.extension.xar.script.XarExtensionScriptService
  • Not a binary breakage and should not change anything at build either time most of the time
    • Violation type:
      java.generics.formalTypeParameterAdded
    • Code:
      ## Old:
      method <T> T org.xwiki.extension.script.AbstractExtensionScriptService::safe(T) @ org.xwiki.platform.flavor.script.FlavorManagerScriptService

      ## New:
      method <S, T> S org.xwiki.extension.script.AbstractExtensionScriptService::safe(T) @ org.xwiki.platform.flavor.script.FlavorManagerScriptService
  • Not a breakage
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.xar.job.diff.DocumentVersionReference.serialVersionUID

      ## New:
      field org.xwiki.extension.xar.job.diff.DocumentVersionReference.serialVersionUID

Credits

The following people have contributed code to this release (sorted alphabetically):

Ecaterina Moraru (Valica)
Eduard Moraru
Guillaume Delhumeau
Krzysztof PÅ‚achno
Marius Dumitru Florea
Thomas Mortagne
Vincent Massol

Tags:
   

Get Connected