This is 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.

This is a bugfix release that covers important issues that we have discovered since 9.11.4 has been released. It also includes a feature from XWiki 10.4: the notifications macro, that is designed to replace Activity Stream some day.

New and Noteworthy (since XWiki 9.11.5)

Full list of issues fixed and Dashboard for <version>.

All Changes

Translations

The following translations have been updated: 

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 <version>

<issues specific to the project>

API Breakages

The following APIs were modified since XWiki 9.11.4:

  • Class wrongly made public in previous releases! See
    • Violation type:
      java.class.removed
    • Code:
      ## Old:
      class org.xwiki.notifications.filters.watchlistbridge.WatchlistBridgeProvider
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat)

      ## New:
      method org.xwiki.notifications.filters.NotificationFilter.FilterPolicy org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat)

      ## New:
      method org.xwiki.notifications.filters.NotificationFilter.FilterPolicy org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat)

      ## New:
      method org.xwiki.notifications.filters.NotificationFilter.FilterPolicy org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method org.xwiki.notifications.filters.expression.ExpressionNode org.xwiki.notifications.filters.NotificationFilter::filterExpression(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat)

      ## New:
      method org.xwiki.notifications.filters.expression.ExpressionNode org.xwiki.notifications.filters.NotificationFilter::filterExpression(org.xwiki.model.reference.DocumentReference, java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method org.xwiki.notifications.filters.expression.ExpressionNode org.xwiki.notifications.filters.NotificationFilter::filterExpression(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.preferences.NotificationPreference)

      ## New:
      method org.xwiki.notifications.filters.expression.ExpressionNode org.xwiki.notifications.filters.NotificationFilter::filterExpression(org.xwiki.model.reference.DocumentReference, java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.preferences.NotificationPreference)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.Collection<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method java.util.Collection<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(boolean) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getEnabledFilters(java.util.Collection<org.xwiki.notifications.filters.NotificationFilter>, java.util.Map<java.lang.String, java.lang.Boolean>)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(===org.xwiki.model.reference.DocumentReference===, org.xwiki.notifications.filters.NotificationFilter) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(===java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>===, org.xwiki.notifications.filters.NotificationFilter)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilter) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilter)
  • Young API
    • Violation type:
      java.method.exception.checkedRemoved
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilter) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilter)
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(===org.xwiki.model.reference.DocumentReference===, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(===java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>===, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType)
  • Young API
    • Violation type:
      java.method.exception.checkedRemoved
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType)
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(===org.xwiki.model.reference.DocumentReference===, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(===java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>===, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.exception.checkedRemoved
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilterPreference> org.xwiki.notifications.filters.NotificationFilterManager::getFilterPreferences(java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.filters.NotificationFilter, org.xwiki.notifications.filters.NotificationFilterType, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getFilters(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.preferences.NotificationPreference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getFiltersRelatedToNotificationPreference(java.util.Collection<org.xwiki.notifications.filters.NotificationFilter>, org.xwiki.notifications.preferences.NotificationPreference)
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getToggleableFilters(===org.xwiki.model.reference.DocumentReference===) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getToggleableFilters(===java.util.Collection<org.xwiki.notifications.filters.NotificationFilter>===)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getToggleableFilters(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getToggleableFilters(java.util.Collection<org.xwiki.notifications.filters.NotificationFilter>)
  • Young API
    • Violation type:
      java.method.exception.checkedRemoved
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getToggleableFilters(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.stream.Stream<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getToggleableFilters(java.util.Collection<org.xwiki.notifications.filters.NotificationFilter>)
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.script.NotificationFiltersScriptService::getFilters() throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.Collection<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.script.NotificationFiltersScriptService::getFilters() throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.exception.checkedAdded
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedEntityReference::isWatched(org.xwiki.model.reference.DocumentReference)

      ## New:
      method boolean org.xwiki.notifications.filters.watch.WatchedEntityReference::isWatched(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method void org.xwiki.notifications.filters.watch.WatchedLocationReference::<init>(org.xwiki.model.reference.EntityReference, java.lang.String, org.xwiki.model.reference.EntityReferenceResolver<java.lang.String>, org.xwiki.notifications.filters.internal.scope.ScopeNotificationFilterLocationStateComputer)

      ## New:
      method void org.xwiki.notifications.filters.watch.WatchedLocationReference::<init>(org.xwiki.model.reference.EntityReference, java.lang.String, org.xwiki.model.reference.EntityReferenceResolver<java.lang.String>, org.xwiki.notifications.filters.internal.scope.ScopeNotificationFilterLocationStateComputer, org.xwiki.notifications.filters.NotificationFilterManager)
  • Young API
    • Violation type:
      java.method.exception.checkedAdded
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedLocationReference::isWatched(org.xwiki.model.reference.DocumentReference)

      ## New:
      method boolean org.xwiki.notifications.filters.watch.WatchedLocationReference::isWatched(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method void org.xwiki.notifications.filters.watch.WatchedUserReference::<init>(java.lang.String, org.xwiki.notifications.filters.internal.user.EventUserFilterPreferencesGetter)

      ## New:
      method void org.xwiki.notifications.filters.watch.WatchedUserReference::<init>(java.lang.String, org.xwiki.notifications.filters.internal.user.EventUserFilterPreferencesGetter, org.xwiki.notifications.filters.NotificationFilterManager)
  • Young API
    • Violation type:
      java.method.exception.checkedAdded
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedUserReference::isWatched(org.xwiki.model.reference.DocumentReference)

      ## New:
      method boolean org.xwiki.notifications.filters.watch.WatchedUserReference::isWatched(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method java.util.Map<java.lang.String, java.lang.Boolean> org.xwiki.notifications.filters.NotificationFilterManager::getToggeableFilterActivations(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method org.xwiki.notifications.filters.NotificationFilter.FilterPolicy org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat)

      ## New:
      method org.xwiki.notifications.filters.NotificationFilter.FilterPolicy org.xwiki.notifications.filters.NotificationFilter::filterEvent(org.xwiki.eventstream.Event, org.xwiki.model.reference.DocumentReference, java.util.Collection<org.xwiki.notifications.filters.NotificationFilterPreference>, org.xwiki.notifications.NotificationFormat)
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method java.util.Collection<java.lang.String> org.xwiki.notifications.filters.watch.WatchedEntitiesManager::getWatchedUsers(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.Collection<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(org.xwiki.model.reference.DocumentReference, boolean) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method java.util.Set<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.Collection<org.xwiki.notifications.filters.NotificationFilter> org.xwiki.notifications.filters.NotificationFilterManager::getAllFilters(org.xwiki.model.reference.DocumentReference, boolean) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method void org.xwiki.notifications.filters.NotificationFilterManager::setStartDateForUser(org.xwiki.model.reference.DocumentReference, java.util.Date) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method void org.xwiki.notifications.filters.NotificationFilterPreferenceProvider::setStartDateForUser(org.xwiki.model.reference.DocumentReference, java.util.Date) throws org.xwiki.notifications.NotificationException

Credits

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

  • Adel Atallah
  • Alex Cotiugă
  • Clemens Klein-Robbenhaar
  • Clément Aubin
  • Guillaume Delhumeau
  • Marc Sladek
  • Pascal Bastien
  • Thomas Mortagne
  • Vincent Massol
Tags:
   

Get Connected