Release Notes for XWiki 12.9
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 brings improved display of liked pages and users who like pages, usability improvements when changing page syntax, finer configuration options for skipping the recycle bin and a new and improved Ratings API.
New and Noteworthy (since XWiki 12.8)
Full list of issues fixed and Dashboard for 12.9.
For Users
Liked pages are displayed in a LiveTable
Liked pages are now displayed in a live table in the user profile.
Like information are displayed in a live table
People liking a page are now displayed in a live table.
Changing Page Syntax from View
Changing the page syntax from the Information tab, while viewing the page, has suffered some updates:
- XWiki will now propose to convert the page content and meta data to the new syntax, if the conversion is supported, but note that the changes will be saved only after saving the syntax
- if the syntax conversion is not supported then XWiki will warn the user about the limitation
- the page title and content are reloaded in order to allow the user to preview the effect of the syntax change before saving the new syntax
- canceling the syntax change will also reload the page title and content
Changing Page Syntax from Wiki Editor
Changing the page syntax from the Wiki Editor has suffered some updates:
- the style of the syntax conversion confirmation modal has been improved to be consistent with the other modals we use in XWiki
- the syntax conversion is not saved right away anymore but when you save the Wiki Editor; canceling the Wiki Editor will also cancel any unsaved syntax change
- XWiki will warn you when the syntax conversion is not supported
Checkout the Page Editing documentation for additional information.
Changing Page Syntax from WYSIWYG Editor
Changing the page syntax from the WYSIWYG Editor has suffered some updates:
- we don't reload the entire page anymore but only the WYSIWYG editor instance (in order to take into account the new syntax); the WYSIWYG editor has to be reloaded because the page syntax affects core editor configuration that cannot be changed on the fly (see the CKEditor Integration documentation for more information);
- the WYSIWYG editor is always reloaded when changing the syntax, no matter whether you choose to convert the content or not (for the reason mentioned above)
- the editing mode (Source vs. WYSIWYG) is preserved on reload
- if the new syntax doesn't support WYSIWYG editing (e.g. because it doesn't have a renderer) then the WYSIWYG editor will force the Source mode after the reload and disable the WYSIWYG mode, warning the user about the current limitation.
Checkout the Page Editing documentation for additional information.
For Admins
Finer configuration of the "can skip the recycle bin" feature
Allowing Advanced user to skip the recycle bin can now be configured on three locations:
- In the global administration of the current wiki
- In the global administration of the main wiki
- In xwiki.properties (see the property details below)
If the default value is found on one location, the next one is tried. If no value is found, the recycle bin skipping is not activated.
Details of the configuration on xwiki.properties:
#-# Indicates whether skipping the recycle bin when deleting pages is allowed for Advanced users.
#-# It is disabled by default.
#-# This setting is only used if the wiki has a recycle bin activated (xwiki.recyclebin=1 in xwiki.cfg).
#-# This setting can be overloaded:
#-# * By the main wiki in the Refactoring.Code.RefactoringConfigurationClass class of the
#-# Refactoring.Code.RefactoringConfiguration document of the main wiki.
#-# * By sub-wikis in the Refactoring.Code.RefactoringConfigurationClass class of the
#-# Refactoring.Code.RefactoringConfiguration document of the sub-wikis (itself overloading the main wiki's
#-# configuration).
#-#
#-# The default value is:
# refactoring.isRecycleBinSkippingActivated = false
Miscellaneous
Mail Resender: XWiki can be configured to not resend failed emails at restart (it does by default).
The Delete section of the Content category of the global administration is now hidden when the recycle bin is not activated.
For Developers
Async Rendering improvements
When the context document is selected in an asynchronous rendering execution it's also added to "used" entities. That means that if that document is modified the cache result will be invalidated automatically.
Provide a new API for Ratings
The Ratings API has been rewritten in order to support new use-cases, such as performing rates on different kinds of elements (not only pages) but also using different scales for ratings. This works leads to breaking the existing Ratings API: the Rating Application is automatically supported (you just have to update the extension) but if you used directly the Ratings API for some custom extensions you might be interested about this small guide for migrating it.
Miscellaneous
URLTool improvement: A new toURL(String) has been added to the Velocity $urltool to convert a String to an URL object.
Upgrades
The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):
- CSS4J 3.0.0
- XWiki Syntax Highlighting Application 4.5.2
- Help Center Application 1.5.2
- CKEditor Integration 1.51
- httpclient 4.5.13
- cssparser 0.9.28
- Woodstox 6.2.3
- Snakeyaml 1.27
- PostgresSQL connector 42.2.17
- MariaDB connector 2.7.0
- Jackson 2.11.3
- JNR POSIX 3.1.2
- JNR Netdb 1.2.0
- JNR FFI 2.2.0
- JNR Constants 0.10.0
- JGroups 4.2.7
- JFFI 1.3.0
- JBoss Marshalling 2.0.10.Final
- Hibernate 5.4.22
- Commons Pool 2.9.0
- Commons Net 3.7.2
- Commons DBCP2 2.8.0
- Commons CLI 1.4
- Checker Qual 3.7.0
- Caffeine 2.8.6
- Byte Buddy 1.10.16
- ASM 9.0
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: | |
---|---|---|
Google Chrome 86 | Not Tested | |
Mozilla Firefox 81 | Jira Tickets Marked as Fixed in the Release Notes | |
Microsoft Edge 86 | Not Tested | |
Internet Explorer 11 | 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 | |
MySQL 8 | Not Tested | |
Oracle 19c | Jira Tickets Marked as Fixed in the Release Notes | |
PostgreSQL 12 | 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.39 | 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 12.9
Ratings API
The Ratings API have been rewritten in order to support more usecases, but we voluntarily broke the backward compatibility when doing so. If you are upgrading from XWiki 12.7RC1 or after, or from an XWiki version on which Ratings Application is installed, you might see some logs like that at first restart:
2020-10-16 17:39:53,897 [main] WARN ltInstalledExtensionRepository - Invalid extension [org.xwiki.platform:xwiki-platform-ratings-api/12.8] (InvalidExtensionException: Extension [org.xwiki.platform:xwiki-platform-ratings-api/12.8] already exists as a core extension)
2020-10-16 17:39:54,486 [main] ERROR .i.DefaultExtensionInitializer - Failed to initialize local extension [org.xwiki.platform:xwiki-platform-like-api/12.8]
java.lang.NoClassDefFoundError: org/xwiki/ratings/internal/SeparatePageRatingsManager
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.xwiki.component.annotation.ComponentAnnotationLoader.getComponentsDescriptors(ComponentAnnotationLoader.java:161)
at org.xwiki.component.annotation.ComponentAnnotationLoader.register(ComponentAnnotationLoader.java:217)
at org.xwiki.component.annotation.ComponentAnnotationLoader.initialize(ComponentAnnotationLoader.java:138)
at org.xwiki.extension.jar.internal.handler.JarExtensionHandler.loadComponents(JarExtensionHandler.java:251)
at org.xwiki.extension.jar.internal.handler.JarExtensionHandler.install(JarExtensionHandler.java:183)
at org.xwiki.extension.jar.internal.handler.JarExtensionHandler.initialize(JarExtensionHandler.java:144)
at org.xwiki.extension.handler.internal.DefaultExtensionHandlerManager.initialize(DefaultExtensionHandlerManager.java:154)
at org.xwiki.extension.handler.internal.DefaultExtensionInitializer.initializeExtensionInNamespace(DefaultExtensionInitializer.java:178)
at org.xwiki.extension.handler.internal.DefaultExtensionInitializer.initializeExtensionInNamespace(DefaultExtensionInitializer.java:151)
at org.xwiki.extension.handler.internal.DefaultExtensionInitializer.initializeExtension(DefaultExtensionInitializer.java:126)
at org.xwiki.extension.handler.internal.DefaultExtensionInitializer.initialize(DefaultExtensionInitializer.java:104)
at org.xwiki.extension.handler.internal.DefaultExtensionInitializer.initialize(DefaultExtensionInitializer.java:80)
at org.xwiki.component.embed.InitializableLifecycleHandler.handle(InitializableLifecycleHandler.java:39)
at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:365)
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:451)
at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:201)
at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:189)
at org.xwiki.container.servlet.XWikiServletContextListener.contextInitialized(XWikiServletContextListener.java:115)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1002)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:553)
at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:931)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:764)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:360)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1445)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1409)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:844)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:275)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:46)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:513)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:154)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:173)
at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:447)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:66)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:784)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:753)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:641)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:540)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:146)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:599)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:249)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.server.Server.start(Server.java:408)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at org.eclipse.jetty.server.Server.doStart(Server.java:372)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.xml.XmlConfiguration.lambda$main$1(XmlConfiguration.java:1929)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1878)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:218)
at org.eclipse.jetty.start.Main.start(Main.java:491)
at org.eclipse.jetty.start.Main.main(Main.java:77)
Caused by: java.lang.ClassNotFoundException: org.xwiki.ratings.internal.SeparatePageRatingsManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 73 common frames omitted
If not nice, those errors are expected: they are showing that our internal Extension Manager found that the Ratings API compatibility was broken. This error will prevent using the Ratings Application or the Like Application until you have completely performed the upgrade.
During the upgrade, you will be proposed to remove the old Ratings API extension: keep the default value for it (it should be checked) to avoid any inconsistency.
Also note that at first start, a data migration of Ratings and Likes will be performed, you might see some logs like that:
2020-10-16 17:40:31,319 [XWiki initialization] INFO .HibernateDataMigrationManager - Checking Hibernate mapping and updating schema if needed for wiki [xwiki]
2020-10-16 17:40:31,508 [XWiki initialization] INFO .HibernateDataMigrationManager - Starting data migration [R120901000XWIKI17761] with version [120901000] on database [xwiki]
2020-10-16 17:40:31,633 [XWiki initialization] INFO 0901000XWIKI17761DataMigration - [5] pages containing ratings xobjects have been found: those objects will be migrated to the new storage system and will be removed. The pages holding those xobjects will remain
2020-10-16 17:40:35,869 [XWiki Solr index thread] INFO .HibernateDataMigrationManager - Storage schema updates and data migrations are enabled
2020-10-16 17:40:36,415 [XWiki initialization] INFO 0901000XWIKI17761DataMigration - All pages have been handled to migrate their Ratings xobject. Total: [5] pages handled and [5] xobjects migrated.
2020-10-16 17:40:36,415 [XWiki initialization] INFO 0901000XWIKI17761DataMigration - Starting recomputation of average ratings on rated pages for consistency of data.
2020-10-16 17:40:37,088 [XWiki initialization] INFO 0901000XWIKI17761DataMigration - Average ratings have been recomputed on all [4] pages.
2020-10-16 17:40:37,089 [XWiki initialization] INFO 0901000XWIKI17761DataMigration - Starting migration of Likes information to the Ratings Solr Core.
2020-10-16 17:40:37,100 [XWiki initialization] INFO SolrDocumentMigration120900000 - [2] like information migrated.
2020-10-16 17:40:37,175 [XWiki initialization] INFO 0901000XWIKI17761DataMigration - The migration is now finished.
2020-10-16 17:40:37,178 [XWiki initialization] INFO .HibernateDataMigrationManager - Data migration [R120901000XWIKI17761] applied successfully, database [xwiki] upgraded to version [120901000]
Finally if you have a custom extension or custom scripts using the Ratings API, you will be interested about this migration guide.
API Breakages
The following APIs were modified since XWiki 12.8:
- Should not cause any retro compatibility issue in practice
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.extension.wrap.WrappingCoreExtension<T extends org.xwiki.extension.CoreExtension>
## New:
class org.xwiki.extension.wrap.WrappingCoreExtension<T extends org.xwiki.extension.CoreExtension>
- Violation type:
- Should not cause any retro compatibility issue in practice
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.extension.wrap.WrappingExtension<E extends org.xwiki.extension.Extension>
## New:
class org.xwiki.extension.wrap.WrappingExtension<E extends org.xwiki.extension.Extension>
- Violation type:
- Should not cause any retro compatibility issue in practice
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.extension.wrap.WrappingInstalledExtension<E extends org.xwiki.extension.InstalledExtension>
## New:
class org.xwiki.extension.wrap.WrappingInstalledExtension<E extends org.xwiki.extension.InstalledExtension>
- Violation type:
- Should not cause any retro compatibility issue in practice
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.extension.wrap.WrappingLocalExtension<T extends org.xwiki.extension.LocalExtension>
## New:
class org.xwiki.extension.wrap.WrappingLocalExtension<T extends org.xwiki.extension.LocalExtension>
- Violation type:
- Should not cause any retro compatibility issue in practice
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.extension.wrap.WrappingRatingExtension<T extends org.xwiki.extension.rating.RatingExtension>
## New:
class org.xwiki.extension.wrap.WrappingRatingExtension<T extends org.xwiki.extension.rating.RatingExtension>
- Violation type:
- Should not cause any retro compatibility issue in practice
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.extension.wrap.WrappingRemoteExtension<T extends org.xwiki.extension.RemoteExtension>
## New:
class org.xwiki.extension.wrap.WrappingRemoteExtension<T extends org.xwiki.extension.RemoteExtension>
- Violation type:
- Source breakage but not a backward compatible one. We consider it's acceptable
- Violation type:java.class.noLongerInheritsFromClass
- Code:## Old:
class org.xwiki.rendering.wikimodel.xhtml.impl.LocalEntityResolver
## New:
class org.xwiki.rendering.wikimodel.xhtml.impl.LocalEntityResolver
- Violation type:
- Source breakage but not a backward compatible one. We consider it's acceptable
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.rendering.wikimodel.xhtml.impl.LocalEntityResolver
## New:
class org.xwiki.rendering.wikimodel.xhtml.impl.LocalEntityResolver
- Violation type:
- Source breakage but not a backward compatible one. We consider it's acceptable
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.rendering.wikimodel.xhtml.impl.LocalEntityResolver
## New:
class org.xwiki.rendering.wikimodel.xhtml.impl.LocalEntityResolver
- Violation type:
- Unstable API: not breaking.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.like.LikedEntity org.xwiki.like.LikeManager::getEntityLikes(org.xwiki.model.reference.EntityReference) throws org.xwiki.like.LikeException
## New:
method long org.xwiki.like.LikeManager::getEntityLikes(org.xwiki.model.reference.EntityReference) throws org.xwiki.like.LikeException
- Violation type:
- Unstable API: not breaking.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method java.util.List<org.xwiki.user.UserReference> org.xwiki.like.LikeManager::getLikers(org.xwiki.model.reference.EntityReference, int, int) throws org.xwiki.like.LikeException
- Violation type:
- Unstable API: not breaking.
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method java.util.List<org.xwiki.like.LikedEntity> org.xwiki.like.LikeManager::getUserLikes(org.xwiki.user.UserReference) throws org.xwiki.like.LikeException
## New:
method java.util.List<org.xwiki.model.reference.EntityReference> org.xwiki.like.LikeManager::getUserLikes(org.xwiki.user.UserReference, int, int) throws org.xwiki.like.LikeException
- Violation type:
- Unstable API: not breaking.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.like.LikedEntity org.xwiki.like.LikeManager::saveLike(org.xwiki.user.UserReference, org.xwiki.model.reference.EntityReference) throws org.xwiki.like.LikeException
## New:
method long org.xwiki.like.LikeManager::saveLike(org.xwiki.user.UserReference, org.xwiki.model.reference.EntityReference) throws org.xwiki.like.LikeException
- Violation type:
- Unstable API: not breaking.
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.like.LikedEntity
- Violation type:
- Unstable API: not breaking.
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method java.util.List<org.xwiki.like.LikedEntity> org.xwiki.like.script.LikeScriptService::getUserLikes(org.xwiki.user.UserReference)
## New:
method java.util.List<org.xwiki.model.reference.EntityReference> org.xwiki.like.script.LikeScriptService::getUserLikes(org.xwiki.user.UserReference, int, int)
- Violation type:
- Redesign of Ratings API: this class has actually been moved to org.xwiki.ratings.events.AbstractRatingEvent but deeply changed internally.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.AbstractRatingEvent
- Violation type:
- Redesign of Ratings API: Several new methods have been added to AverageRating class.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method .+ org.xwiki.ratings.AverageRating::.+
- Violation type:
- Redesign of Ratings API: This method has been removed since it should be handled by a dedicated manager and not there.
- Violation type:java.method.removed
- Code:## Old:
method void org.xwiki.ratings.AverageRating::save() throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: this interface now only provide getters.
- Violation type:java.method.removed
- Code:## Old:
method void org.xwiki.ratings.AverageRating::set.+
- Violation type:
- Redesign of Ratings API: this method is no longer needed with the new architecture.
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.ratings.AverageRating::getMethod()
- Violation type:
- Redesign of Ratings API: only the AverageRating interface should now be used.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.AverageRatingApi
- Violation type:
- Redesign of Ratings API: this class is useless with the new architecture.
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.ratings.ConfiguredProvider<T>
- Violation type:
- Redesign of Ratings API: this class is useless with the new architecture.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.ConfiguredRatingsManagerProvider
- Violation type:
- Redesign of Ratings API: the reputation is no longer supported by this extension.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.ConfiguredReputationAlgorithmProvider
- Violation type:
- Redesign of Ratings API: this method is not directly related to rating.
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.ratings.Rating::display(java.lang.String, java.lang.String)
- Violation type:
- Redesign of Ratings API: this method was too generic for this API.
- Violation type:java.method.removed
- Code:## Old:
method java.lang.Object org.xwiki.ratings.Rating::get(java.lang.String)
- Violation type:
- Redesign of Ratings API: this method implied that Rating were always stored as xobject which is not always true.
- Violation type:java.method.removed
- Code:## Old:
method com.xpn.xwiki.objects.BaseObject org.xwiki.ratings.Rating::getAsObject() throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: Following our new User API practice, a user is represented by a UserReference.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.model.reference.DocumentReference org.xwiki.ratings.Rating::getAuthor()
## New:
method org.xwiki.user.UserReference org.xwiki.ratings.Rating::getAuthor()
- Violation type:
- Redesign of Ratings API: Rating interface expose now new data that are available through the interface.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method .+ org.xwiki.ratings.Rating::.+
- Violation type:
- Redesign of Ratings API: two dates are now available, the creation date and the last update date.
- Violation type:java.method.removed
- Code:## Old:
method java.util.Date org.xwiki.ratings.Rating::getDate()
- Violation type:
- Redesign of Ratings API: Rating is now not only for documents but for any entity. See Rating#getReference().
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.model.reference.DocumentReference org.xwiki.ratings.Rating::getDocumentReference()
- Violation type:
- Redesign of Ratings API: there is now a unique ID available with Rating#getId().
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.ratings.Rating::getGlobalRatingId()
- Violation type:
- Redesign of Ratings API: there is now a unique ID available with Rating#getId().
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.ratings.Rating::getRatingId()
- Violation type:
- Redesign of Ratings API: this API is now handled only through the RatingsManager.
- Violation type:java.method.removed
- Code:## Old:
method boolean org.xwiki.ratings.Rating::remove() throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: this API is now handled only through the RatingsManager.
- Violation type:java.method.removed
- Code:## Old:
method void org.xwiki.ratings.Rating::save() throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: Only getters are now available in this interface.
- Violation type:java.method.removed
- Code:## Old:
method void org.xwiki.ratings.Rating::set.+
- Violation type:
- Redesign of Ratings API: RatingsConfiguration now defines configuration methods for Ratings. Check out the documentation.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method .+ org.xwiki.ratings.RatingsConfiguration::.+
- Violation type:
- Redesign of Ratings API: RatingsConfiguration now defines configuration methods for Ratings. Check out the documentation.
- Violation type:java.method.removed
- Code:## Old:
method com.xpn.xwiki.doc.XWikiDocument org.xwiki.ratings.RatingsConfiguration::getConfigurationDocument(org.xwiki.model.reference.DocumentReference)
- Violation type:
- Redesign of Ratings API: RatingsConfiguration now defines configuration methods for Ratings. Check out the documentation.
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.ratings.RatingsConfiguration::getConfigurationParameter(org.xwiki.model.reference.DocumentReference, java.lang.String, java.lang.String)
- Violation type:
- Redesign of Ratings API: RatingsException does not extend anymore XWikiException.
- Violation type:java.field.removedWithConstant
- Code:## Old:
field .+ @ org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: Error codes have been removed from RatingsException, we only rely on meaningfull messages.
- Violation type:java.field.removedWithConstant
- Code:## Old:
field org.xwiki.ratings.RatingsException.[A-Z_]+
- Violation type:
- Redesign of Ratings API: Error codes have been removed from RatingsException, we only rely on meaningfull messages.
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method void org.xwiki.ratings.RatingsException::<init>()
## New:
method void org.xwiki.ratings.RatingsException::<init>(java.lang.String)
- Violation type:
- Redesign of Ratings API: Error codes have been removed from RatingsException, we only rely on meaningfull messages.
- Violation type:java.method.removed
- Code:## Old:
method .+ org.xwiki.ratings.RatingsException::.+
- Violation type:
- Redesign of Ratings API: RatingsException does not extend anymore XWikiException.
- Violation type:java.method.removed
- Code:## Old:
method .+ com.xpn.xwiki.XWikiException::.+ @ org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: RatingsException does not extend anymore XWikiException.
- Violation type:java.class.noLongerInheritsFromClass
- Code:## Old:
class org.xwiki.ratings.RatingsException
## New:
class org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: Constants have been removed from RatingsManager since they were tightly linked to the storage representation.
- Violation type:java.field.removedWithConstant
- Code:## Old:
field org.xwiki.ratings.RatingsManager.[A-Z_]+
- Violation type:
- Redesign of Ratings API: Constants have been removed from RatingsManager since they were tightly linked to the storage representation.
- Violation type:java.field.removed
- Code:## Old:
field org.xwiki.ratings.RatingsManager.[A-Z_]+
- Violation type:
- Redesign of Ratings API: some new methods have been added because of new needs.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method .+ org.xwiki.ratings.RatingsManager::.+
- Violation type:
- Redesign of Ratings API: ratings now apply on entities not just documents.
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter org.xwiki.ratings.AverageRating org.xwiki.ratings.RatingsManager::getAverageRating(===org.xwiki.model.reference.DocumentReference===) throws org.xwiki.ratings.RatingsException
## New:
parameter org.xwiki.ratings.AverageRating org.xwiki.ratings.RatingsManager::getAverageRating(===org.xwiki.model.reference.EntityReference===) throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: the API of RatingsManager have been greatly simplified.
- Violation type:java.method.removed
- Code:## Old:
method .+ org.xwiki.ratings.RatingsManager::.+
- Violation type:
- Redesign of Ratings API: the method to retrieve ratings in RatingsManager have been made more generic.
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method java.util.List<org.xwiki.ratings.Rating> org.xwiki.ratings.RatingsManager::getRatings(org.xwiki.model.reference.DocumentReference, int, int, boolean) throws org.xwiki.ratings.RatingsException
## New:
method java.util.List<org.xwiki.ratings.Rating> org.xwiki.ratings.RatingsManager::getRatings(java.util.Map<org.xwiki.ratings.RatingsManager.RatingQueryField, java.lang.Object>, int, int, org.xwiki.ratings.RatingsManager.RatingQueryField, boolean) throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: the method to remove a rating in RatingsManager now only take an identifier.
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter boolean org.xwiki.ratings.RatingsManager::removeRating(===org.xwiki.ratings.Rating===) throws org.xwiki.ratings.RatingsException
## New:
parameter boolean org.xwiki.ratings.RatingsManager::removeRating(===java.lang.String===) throws org.xwiki.ratings.RatingsException
- Violation type:
- Redesign of Ratings API: Reputation was never finished and is no longer supported in Ratings.
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.ratings.ReputationAlgorithm
- Violation type:
- Redesign of Ratings API: Reputation was never finished and is no longer supported in Ratings.
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.ratings.ReputationAlgorithmGroovy
- Violation type:
- Redesign of Ratings API: Reputation was never finished and is no longer supported in Ratings.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.ReputationException
- Violation type:
- Redesign of Ratings API: this class has been refactored, an equivalent is now in org.xwiki.ratings.events.UpdatedRatingEvent.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.UpdateRatingEvent
- Violation type:
- Redesign of Ratings API: we removed the begin/end event for Ratings. They only exist for AverageRating for technical reasons.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.UpdateRatingFailedEvent
- Violation type:
- Redesign of Ratings API: we removed the begin/end event for Ratings. They only exist for AverageRating for technical reasons.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.UpdatingRatingEvent
- Violation type:
- Redesign of Ratings API: only the Rating interface should now be used.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.ratings.script.RatingApi
- Violation type:
- Redesign of Ratings API: User reputation is not supported anymore.
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.ratings.AverageRatingApi org.xwiki.ratings.script.RatingsScriptService::getUserReputation.*
- Violation type:
- Redesign of Ratings API: this method was already deprecated.
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::getRating(com.xpn.xwiki.api.Document, java.lang.String)
- Violation type:
- Redesign of Ratings API: this method was already deprecated.
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.ratings.AverageRatingApi org.xwiki.ratings.script.RatingsScriptService::getAverageRating(com.xpn.xwiki.api.Document, java.lang.String)
- Violation type:
- Redesign of Ratings API: this method does not make sense in the new design.
- Violation type:java.method.removed
- Code:## Old:
method com.xpn.xwiki.api.Document org.xwiki.ratings.script.RatingsScriptService::getConfigurationDocument(org.xwiki.model.reference.DocumentReference)
- Violation type:
- Redesign of Ratings API: allow to retrieve average rating for any reference (not only DocumentReference).
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter org.xwiki.ratings.AverageRatingApi org.xwiki.ratings.script.RatingsScriptService::getAverageRating(===com.xpn.xwiki.api.Document===)
## New:
parameter java.util.Optional<org.xwiki.ratings.AverageRating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getAverageRating(===org.xwiki.model.reference.EntityReference===) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: use new best practices for script service return if type is nullable.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.ratings.AverageRatingApi org.xwiki.ratings.script.RatingsScriptService::getAverageRating(com.xpn.xwiki.api.Document)
## New:
method java.util.Optional<org.xwiki.ratings.AverageRating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getAverageRating(org.xwiki.model.reference.EntityReference) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: clean up of deprecated methods or methods that are not relevant on the new design.
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.ratings.AverageRatingApi org.xwiki.ratings.script.RatingsScriptService::getAverageRating.*
- Violation type:
- Redesign of Ratings API: this change shouldn't impact using the script service.
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.ratings.script.RatingsScriptService
## New:
class org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: allow to retrieve average rating for any reference (not only DocumentReference)
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::getRating(===com.xpn.xwiki.api.Document===, java.lang.String)
## New:
parameter java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getRating(===org.xwiki.model.reference.EntityReference===, org.xwiki.user.UserReference) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: use new best practices for specifying a user by using the UserReference.
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::getRating(com.xpn.xwiki.api.Document, ===java.lang.String===)
## New:
parameter java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getRating(org.xwiki.model.reference.EntityReference, ===org.xwiki.user.UserReference===) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: use new best practices for script service return if type is nullable.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::getRating(com.xpn.xwiki.api.Document, java.lang.String)
## New:
method java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getRating(org.xwiki.model.reference.EntityReference, org.xwiki.user.UserReference) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: the changes above actually apply to that one.
- Violation type:java.method.removed
- Code:## Old:
method org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::getRating(org.xwiki.model.reference.DocumentReference, org.xwiki.model.reference.DocumentReference)
- Violation type:
- Redesign of Ratings API: allow to retrieve rating for any reference (not only DocumentReference)
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter java.util.List<org.xwiki.ratings.script.RatingApi> org.xwiki.ratings.script.RatingsScriptService::getRatings(===com.xpn.xwiki.api.Document===, int, int)
## New:
parameter java.util.List<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getRatings(===org.xwiki.model.reference.EntityReference===, int, int) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: actually the method with this number of parameter existed (see below)
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method java.util.List<org.xwiki.ratings.script.RatingApi> org.xwiki.ratings.script.RatingsScriptService::getRatings(org.xwiki.model.reference.DocumentReference, int, int)
## New:
method java.util.List<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::getRatings(org.xwiki.model.reference.EntityReference, int, int, boolean) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: this method was actually not removed but we used an EntityReference instead of Document API. See above.
- Violation type:java.method.removed
- Code:## Old:
method java.util.List<org.xwiki.ratings.script.RatingApi> org.xwiki.ratings.script.RatingsScriptService::getRatings(org.xwiki.model.reference.DocumentReference, int, int, boolean)
- Violation type:
- Redesign of Ratings API: removal of deprecated methods using Document parameter.
- Violation type:java.method.removed
- Code:## Old:
method java.util.List<org.xwiki.ratings.script.RatingApi> org.xwiki.ratings.script.RatingsScriptService::getRatings(com.xpn.xwiki.api.Document, int, int, boolean)
- Violation type:
- Redesign of Ratings API: removal of deprecated methods using Document parameter. A new API has been introduced and revapi considers it replaces it.
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::setRating(com.xpn.xwiki.api.Document, java.lang.String, int)
## New:
method java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::setRating(org.xwiki.model.reference.EntityReference, int) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: use new best practices for script service return if type is nullable.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::setRating(com.xpn.xwiki.api.Document, java.lang.String, int)
## New:
method java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::setRating(org.xwiki.model.reference.EntityReference, int) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: allow to set rating for any reference (not only DocumentReference)
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::setRating(===org.xwiki.model.reference.DocumentReference===, org.xwiki.model.reference.DocumentReference, int)
## New:
parameter java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::setRating(===org.xwiki.model.reference.EntityReference===, org.xwiki.user.UserReference, int) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: use new best practices for specifying a user by using the UserReference.
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::setRating(org.xwiki.model.reference.DocumentReference, ===org.xwiki.model.reference.DocumentReference===, int)
## New:
parameter java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::setRating(org.xwiki.model.reference.EntityReference, ===org.xwiki.user.UserReference===, int) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Redesign of Ratings API: use new best practices for script service return if type is nullable.
- Violation type:java.method.returnTypeChanged
- Code:## Old:
method org.xwiki.ratings.script.RatingApi org.xwiki.ratings.script.RatingsScriptService::setRating(org.xwiki.model.reference.DocumentReference, org.xwiki.model.reference.DocumentReference, int)
## New:
method java.util.Optional<org.xwiki.ratings.Rating> org.xwiki.ratings.script.AbstractScriptRatingsManager::setRating(org.xwiki.model.reference.EntityReference, org.xwiki.user.UserReference, int) @ org.xwiki.ratings.script.RatingsScriptService
- Violation type:
- Unstable API.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method long org.xwiki.like.LikeManager::countUserLikes(org.xwiki.user.UserReference) throws org.xwiki.like.LikeException
- Violation type:
- Unstable API.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method void org.xwiki.like.LikeManager::clearCache()
- Violation type:
- Unstable API.
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method void org.xwiki.like.LikeManager::clearCache(org.xwiki.model.reference.EntityReference)
- Violation type:
- Unstable API: it has been moved in package org.xwiki.like.events.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.like.LikeEvent
- Violation type:
- Unstable API: it has been moved in package org.xwiki.like.events.
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.like.UnlikeEvent
- Violation type:
Credits
The following people have contributed code and translations to this release (sorted alphabetically):
Carlos Amengual
DenisF
Eduard Moraru
Francisco GarcĂa Moreno
ignatescustefan
Jarle Sandmo
jason
Manuel Leduc
Marius Dumitru Florea
Simon Urli
Thomas Mortagne
Vincent Massol
xrichard