Release Notes for XWiki 10.1

Last modified by Guillaume Delhumeau on 2018/08/13

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

Starting with this release the Watchlist Application has been disabled and fully replaced by the Notifications Application. We continue to add new improvements to Notifications (filters, preferences, etc.) so make sure to check them out.

The following regressions couldn't be fixed in this release and are fixed in XWiki 10.2:

  • XWIKI-15024: Annotations box remains stuck after adding an annotation
  • XCOMMONS-1362: XWiki does not work anymore on Tomcat 7

This release contains a bug that can affect the scalability of the service. Until the proper fix, it is highly recommended to make sure that the "autowatch" feature of the notifications is turned off. Note that starting with XWiki 10.7 (10.7RC1 to be precise), "autowatch" is turned off by default.
 
You can do that by adding in the xwiki.properties file the following lines:

# Disable autowatch until the following issue is fixed:
# https://jira.xwiki.org/browse/XWIKI-15445
xwiki.plugin.watchlist.automaticwatch=none

New and Noteworthy (since XWiki 10.0)

Full list of issues fixed and Dashboard for 10.1.

For Users

Notifications fully replace the Watchlist

 
It's finally done! In this version, we have decided to disable the Watchlist in XWiki, by default. Instead, the Notifications Application is now the central feature in XWiki for notifications. 

Don't forget to warn your users about the need to enable email in their notification settings!

Note: you can rollback this change by disabling the Notifications Application and enabling the Watchlist again.

All filters preferences are displayed in the same livetable

 
The "advanced filtering options" window has disappeared, and all filters are displayed in the same place.

Hiding notifications that are read

 
Since the introduction of the Notifications Application in XWiki, it was possible to mark some notifications as "read". They were displayed differently, and not counted in the red circle above the bell, but they were still there.

Now, it is possible to decide not to show them anymore thanks to an option in the user's notification settings.

Miscellaneous

  • Improved Multi-Term Search Relevancy: This is commonly referred to as sloppy phrase matching and allows for more "Googleish" query strings. The implementation allows for partial multi-term matching so that searching for long phrases won’t “hide” documents with a subset of shorter multi-term matches.

    For those interested in the more technical aspects:

    • The query string is split into groups of multi-term contiguous sequences (word shingles), ignoring stopwords where appropriate.
    • The higher the number of terms in close proximity the more relevant the document will appear.
    • While the order of the terms in the query string is important for forming word shingles, the order in which the terms appear in the document doesn’t affect the score.
    • Stemming is still used so that all forms of each word are considered matches even in multi-term relevancy calculations.
    • Exact matches are still returned when terms are encased in quotes.
  • Notification Filter Preferences that concern hidden pages are not listed anymore: Filters that concern hidden pages are not shown in the table, unless you enabled the option to see hidden pages. More informations: Hidden (technical) pages.

For Admins

  • Filesystem store improvements has changed format: Support for case insensitive filesystems has been added in the filesystem store. Among other things it means that most of the existing paths need to be modified (upper case characters are now escaped). There is an automatic migration for it but be careful if you are using some custom tool manipulating directly the store files (since the format has changed).

For Developers

  • Notifications settings are now available as macros: New macros have been created, so you can include your notification settings in many pages (such as the dashboard). These macros are:

    • {{notificationsEmailPreferences /}}
    • {{notificationsApplicationsPreferences /}}
    • {{notificationsFiltersPreferences /}}

Upgrades

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

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 64Jira Tickets Marked as Fixed in the Release Notes
Firefox30.pngMozilla Firefox 58Not Tested
Edge30.pngMicrosoft Edge 16Not 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.pngHyperSQLNot Tested
mysql.pngMySQL 5.7Jira Tickets Marked as Fixed in the Release Notes
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQL 10Not 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.

Issues specific to XWiki 10.1

Filesystem attachment store has changed format: Support for case insensitive filesystems has been added in the filesystem store. Among other things it means that most of the existing paths need to be modified (upper case characters are now escaped). There is an automatic migration for it but be careful if you are using some custom tool manipulating directly the store files (since the format has changed).

API Breakages

The following APIs were modified since XWiki 10.0:

  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.job.AbstractRequest.serialVersionUID

      ## New:
      field org.xwiki.job.AbstractRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.job.DefaultRequest.serialVersionUID

      ## New:
      field org.xwiki.job.DefaultRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.InstallRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.InstallRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.UninstallRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.UninstallRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.history.ReplayRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.history.ReplayRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.filter.job.FilterStreamConverterJobRequest.serialVersionUID

      ## New:
      field org.xwiki.filter.job.FilterStreamConverterJobRequest.serialVersionUID
  • No breakage. Just moved commons stuff in an abtract class.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.rendering.block.MacroBlock

      ## New:
      class org.xwiki.rendering.block.MacroBlock
  • No breakage. Just moved commons stuff in an abtract class.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.rendering.block.MacroMarkerBlock

      ## New:
      class org.xwiki.rendering.block.MacroMarkerBlock
  • No breakage. Just moved commons stuff in an abtract class.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.rendering.block.ExpandedMacroBlock

      ## New:
      class org.xwiki.rendering.block.ExpandedMacroBlock
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.CreateRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.CreateRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.EntityRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.EntityRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.MoveRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.MoveRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.RestoreRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.RestoreRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.platform.wiki.creationjob.WikiCreationRequest.serialVersionUID

      ## New:
      field org.xwiki.platform.wiki.creationjob.WikiCreationRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.annotation.attributeValueChanged
    • Code:
      ## Old:
      class org.xwiki.rest.model.jaxb.JobRequest

      ## New:
      class org.xwiki.rest.model.jaxb.JobRequest
  • Not a breakage in this context
    • Violation type:
      java.annotation.attributeValueChanged
    • Code:
      ## Old:
      class org.xwiki.rest.model.jaxb.JobStatus

      ## New:
      class org.xwiki.rest.model.jaxb.JobStatus
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, ===boolean===, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, ===org.xwiki.notifications.NotificationFormat===, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, boolean, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, org.xwiki.notifications.NotificationFormat, boolean, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method long org.xwiki.notifications.sources.NotificationManager::getEventsCount(java.lang.String, boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method long org.xwiki.notifications.sources.NotificationManager::getEventsCount(java.lang.String, int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(boolean, int, java.util.Date, java.lang.String[]) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(int, java.util.Date, java.lang.String[]) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(boolean, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method long org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEventsCount(boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method long org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEventsCount(int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(===int===, boolean) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(===java.lang.String===, int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(int, ===boolean===) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(java.lang.String, ===int===) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(java.lang.String, int, boolean) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(int) throws org.xwiki.notifications.NotificationException

Credits

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

Alexander Bilovol
Anca Luca
Arun Pattni
Ecaterina Moraru (Valica)
Eduard Moraru
Guillaume Delhumeau
Marius Dumitru Florea
Thomas Mortagne
Vincent Massol
akshitdewan
benmegson

Tags:
   

Get Connected