Release Notes for XWiki 13.0
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 release introduces the new Live Data macro and starts using it in the Administration Logging section. Additionally, administration sections now get proper rights handling by inheriting from each of their authors. Under the hood, struts had finally been replaced by XWiki components, the "viewrev" action has been deprecated and changes have been made to the rights that a script has when executing.
New and Noteworthy (since XWiki 12.10.3)
Full list of issues fixed and Dashboard for 13.0.
For Users
Live Data Macro
A new Live Data rendering macro is available to display dynamic lists of data. You can see it as a replacement of the existing Live Table macro, but it's not limited to that. We plan to add support for:
- multiple layouts (table, cards, etc.)
- advanced filtering
- multi-sort
- selection and batch actions
- in-place data editing and creation (including support for editing the data structure)
- real-time synchronization
For Admins
Logging Administration uses Live Data Macro
The Logging Administration section is now using the new Live Data macro to list the available loggers, instead of the old live table.
Miscellaneous
Maven extension repositories can be configured with custom HTTP headers: It is now possible to define extra HTTP headers to be used when connecting to a maven extension repository. See the maven extension repository connector documentation to learn more.
For Developers
Administration sections executed with the right author
The content of the administration sections used to be inserted as is into the general administration code forcing it to disable programming right to avoid dangerous code injection. Configuration section content is now executed with the right of its author and with all the rights of its author so not longer require display macro based hacks to workaround the previous limitation.
Upgrades
The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):
- CSS4J 3.2.0
- CKEditor Integration 1.52
- Netty to 4.1.58
- Antlr 4.9.1
- Apache PDFBox 2.0.22
- Apache Xerces 2.12.1
- Bean Validation 2.0.2
- Bouncy Castle 1.68
- Byte Buddy 1.10.19
- Caffeine 2.8.8
- Checker Qual 3.9.1
- Closure Compiler v20210106
- Error Prone annotations 2.5.1
- Groovy 2.5.14
- Guava 30.1
- HTTP Core 4.4.14
- Hibernate 5.4.27
- Hibernate Validator 6.2.0
- Infinispan 11.0.8
- JFFI 1.3.1
- JNR Constants 0.10.1
- JNR FFI 2.2.1
- JNR POSIX 3.1.4
- JSqlParser 4.0
- Jackson 2.12.1
- Joda-Time 2.10.9
- MariaDB connector 2.7.1
- Protobuf Java 3.14.0
- Protostream 4.3.5
- Tika 1.25
- JAXB 2.3.3
- XStream 1.4.15
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:
Browser | Tested on: | |
---|---|---|
Mozilla Firefox 85 | Jira Tickets Marked as Fixed in the Release Notes | |
Microsoft Edge 88 | Not Tested | |
Internet Explorer 11 | Not Tested | |
Google Chrome 88 | Not Tested | |
Safari 14 | Not Tested |
Here is the list of databases we support and how they have been tested for this release:
Database | Tested on: | |
---|---|---|
HyperSQL 2.5.1 | Not Tested | |
Oracle 19c | Jira Tickets Marked as Fixed in the Release Notes | |
MySQL 8 | Not Tested | |
PostgreSQL 13 | Not Tested | |
MariaDB 10.5 | Not Tested |
Here is the list of Servlet Containers we support and how they have been tested for this release:
Servlet Container | Tested on: | |
---|---|---|
Tomcat 9.0.41 | Jira Tickets Marked as Fixed in the Release Notes | |
Jetty 9.4.29 (XWiki Standalone packaging) | Not Tested | |
Jetty 9.4.29 | Not Tested |
Known issues
Backward Compatibility and Migration Notes
General Notes
- When upgrading make sure you compare and merge the following XWiki configuration files since some parameters may have been modified, removed or added:
- xwiki.cfg
- xwiki.properties
- web.xml
- hibernate.cfg.xml
- Add xwiki.store.migration=1 in xwiki.cfg so that XWiki will attempt to automatically migrate your current database to any new schema. Make sure you backup your Database before doing anything.
Issues specific to XWiki 13.0
No more Struts
XWiki used to use the highly outdated Struts 1.3.10 as entry point to the (deprecated) actions system. In pratice Struts was not used for much (basically just mapping an action name with an action class) already and the very last bit has finally been removed but it's a breaking change for any custom action:
- actions are now XWiki components implementing the role com.xpn.xwiki.internal.web.LegacyAction
- no more struts-config.xml, the component now indicate its own name to match in the URL and the only way to disable an action is to remove/uninstall it
That being said the old XWiki actions system has been deprecated for a long time now and the recommended way to make a custom action up to date is to convert it to an Entity Resource Reference handler.
FileUploadPlugin#getFileItems order changed
Another side effect of the removing of Struts 1.3 is that the order of the elements returned by FileUploadPlugin#getFileItems(XWikiContext) which used to always be ordered (even if not documented as such) now depends on the multipart/form Servlet implementation (for example Tomcat used Apache FileUpload to parse the request which respect the order but Jetty does not). In any case it's recommended to use directly the HTTPServlet#getParts which is a standard instead of the old FileUploadPlugin.
The viewrev action is deprecated
The viewrev action is now deprecated and the view action should be used instead with the same parameters.
Author right is now important when saving
An experimental new behavior of the document save script API is now the default: both the current user and author rights are checked when saving a document. Among other things it implies the follow two important changes for scripts authors who don't have programming right:
- the registered author of a document saved by the script will be the author instead of the current user
- if the script author does not have edit right on some document the API Document#save call will fail for that document
While not recommended it's possible to go back to previous behavior by using security.script.save.checkAuthor=false in xwiki.properties configuration file.
API Breakages
The following APIs were modified since XWiki 12.10.3:
- We don't use Struts anymore
- Violation type:.*
- Code:## Old:
.*org.apache.struts.*
- Violation type:
- We don't use Struts anymore
- Violation type:java.annotation.added
- Code:## Old:
class com.xpn.xwiki.web.*
## New:
class com.xpn.xwiki.web.*
- Violation type:
- We don't use Struts anymore
- Violation type:java.annotation.added
- Code:## Old:
class com.xpn.xwiki.web.*
## New:
class com.xpn.xwiki.web.*
- Violation type:
- We don't use Struts anymore
- Violation type:java.annotation.added
- Code:## Old:
class com.xpn.xwiki.web.*
## New:
class com.xpn.xwiki.web.*
- Violation type:
- We don't use Struts anymore
- Violation type:java.class.noLongerInheritsFromClass
- Code:## Old:
class com.xpn.xwiki.web.*Form
## New:
class com.xpn.xwiki.web.*Form
- Violation type:
- We don't use Struts anymore
- Violation type:java.class.noLongerImplementsInterface
- Code:## Old:
class com.xpn.xwiki.web.*Form
## New:
class com.xpn.xwiki.web.*Form
- Violation type:
- We don't use Struts anymore
- Violation type:java.class.noLongerInheritsFromClass
- Code:## Old:
class com.xpn.xwiki.web.*Action
## New:
class com.xpn.xwiki.web.*Action
- Violation type:
- We don't use Struts anymore
- Violation type:java.class.removed
- Code:## Old:
class com.xpn.xwiki.web.XWikiRequestProcessor
- Violation type:
- We don't use Struts anymore
- Violation type:java.class.noLongerInheritsFromClass
- Code:## Old:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
## New:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
- Violation type:
- We don't use Struts anymore
- Violation type:java.annotation.added
- Code:## Old:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
## New:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
- Violation type:
- We don't use Struts anymore
- Violation type:java.annotation.added
- Code:## Old:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
## New:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
- Violation type:
- We don't use Struts anymore
- Violation type:java.annotation.added
- Code:## Old:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
## New:
class com.xpn.xwiki.plugin.charts.actions.ChartingAction
- Violation type:
- Unstable API: don't serialize unset fields to JSON
- Violation type:java.annotation.added
- Code:## Old:
class org.xwiki.livedata.LiveDataActionDescriptor
## New:
class org.xwiki.livedata.LiveDataActionDescriptor
- Violation type:
- Unstable API: moved to edit action descriptor
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.livedata.LiveDataEntryDescriptor::getAllowEditProperty()
- Violation type:
- Unstable API: moved to edit action descriptor
- Violation type:java.method.removed
- Code:## Old:
method void org.xwiki.livedata.LiveDataEntryDescriptor::setAllowEditProperty(java.lang.String)
- Violation type:
- Unstable API: replaced by 'save'
- Violation type:java.method.removed
- Code:## Old:
method java.util.Optional<java.lang.Object> org.xwiki.livedata.LiveDataEntryStore::add(java.util.Map<java.lang.String, java.lang.Object>) throws org.xwiki.livedata.LiveDataException
- Violation type:
- Unstable API: moved to entry descriptor
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.livedata.LiveDataEntryStore::getIdProperty()
- Violation type:
- Unstable API: replaced by 'save'
- Violation type:java.method.removed
- Code:## Old:
method java.util.Optional<java.lang.Object> org.xwiki.livedata.LiveDataEntryStore::update(java.util.Map<java.lang.String, java.lang.Object>) throws org.xwiki.livedata.LiveDataException
- Violation type:
- Unstable API: replaced by 'save'
- Violation type:java.method.removed
- Code:## Old:
method boolean org.xwiki.livedata.LiveDataPropertyDescriptorStore::add(org.xwiki.livedata.LiveDataPropertyDescriptor) throws org.xwiki.livedata.LiveDataException
- Violation type:
- Unstable API: replaced by 'save'
- Violation type:java.method.removed
- Code:## Old:
method boolean org.xwiki.livedata.LiveDataPropertyDescriptorStore::update(org.xwiki.livedata.LiveDataPropertyDescriptor) throws org.xwiki.livedata.LiveDataException
- Violation type:
- Unstable API: Use the default LiveDataConfigurationResolver instead
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.livedata.LiveDataPropertyDescriptorStore org.xwiki.livedata.LiveDataSource::getPropertyTypes()
- Violation type:
- Not breaking: this annotation should not be used anymore.
- Violation type:java.annotation.removed
- Code:## Old:
method void org.xwiki.security.authentication.script.AuthenticationScriptService::resetAuthenticationFailureCounter(java.lang.String)
## New:
method void org.xwiki.security.authentication.script.AuthenticationScriptService::resetAuthenticationFailureCounter(java.lang.String)
- Violation type:
Credits
The following people have contributed code and translations to this release (sorted alphabetically):
Christian Fröhlich
Clemens Robbenhaar
Clément Aubin
Clément Desableau
Eduard Moraru
Francisco García Moreno
iLocIT!
Jarle Sandmo
jingkaimori
Lars Pelzer
Mahendran Mookkiah
Marius Dumitru Florea
Roman Ivanov
Simon Urli
Thomas Mortagne
Vincent Massol
xrichard