Release Notes for XWiki 4.2 Milestone 3
This is the release notes for XWiki Platform, XWiki Enterprise and XWiki Enterprise Manager. They share the same release notes as they are released together and have the same version.
This is the third and final milestone of the XWiki 4.2 version (Roadmap).
New and Noteworthy (since XWiki 4.2 Milestone 2)
Improved upload UI
The new HTML5 FileUploader has been integrated in a few places:
- The standard attachment upload form
- The Import section of the Administration
See below for more details about this feature.
New logging administration UI
It's now possible to review and modify the log level for all registered loggers.
Experimental install/upgrade wizard
Accessing a wiki page in view mode after an upgrade or when the database is empty (new install) will trigger a wizard that will allow you to install or update the default set of wiki pages and to upgrade or downgrade the extensions you may have previously installed.
The wizard currently has two steps. In the first step you can see which XWiki distribution you are running and what is its recommended default set of wiki pages (the default user interface). You should install, upgrade or downgrade the UI so that it matches the distribution version.
The step has three possible actions:
- Skip means 'go to the next step and ask me again after a server restart'
- Cancel means 'go to the next step and don't ask me again until I change my distribution'
- Continue, only after the recommended UI version is installed
In the second step you can upgrade the installed extensions. We group them in two categories:
- extensions that don't work with your current distribution but which have new versions available that are compatible with your current distribution. These extension require an upgrade.
- extensions that should work fine with your current distribution but which have upgrades available. Upgrading these extensions is optional.
You can refresh the list of extensions by clicking on the Reload button. The Skip and Cancel buttons have the same meaning as in the previous step. The Continue button is available only after the required upgrades are performed.
At the end you'll be redirected back to the wiki page you have accessed in the first place.
New Applications Panel
There's now a new "Applications" panel by default in XWiki Enterprise. This panel displays the applications present in your wiki.
Administrators will get a couple of additional links, allowing them to install applications through the Extension Manager, or to create new applications thanks to the App Within Minutes feature.
Chart Macro Improvements
- The Chart macro will now automatically default to the inline Data Source type when not specified and the Chart Macro has some content.
- Two new Chart types have been added: XY Line 3D and XY Step. Examples:
New Content Macro
The new Content macro allows to enter content in any of the supported Syntaxes and thus allows to have content written in various syntaxes. For example, in a page in XWiki Syntax 2.0:
This is in **bold**
{{content syntax="confluence/1.0"}}
This is *bold* too!
{{/content}}
Documents Macro improvements
The {{documents}} macro now supports specifying the list of columns to display. For example:
{{documents count="5" actions="false" space="Main" parent="Main.WebHome" columns="doc.title"/}}
would display:
Search improvements
The Lucene index also stores the MIME type of the indexed attachments, allowing to customize the search to only include or exclude attachments of a certain type. The new field is named mimetype and it contains a valid MIME type string, as returned by the container in which XWiki is running. For example, add -mimetype:image/* to a query to exclude all image attachments from the results, or add mimetype:application/pdf to only search inside PDF attachments.
Remember that in case of an upgrade, you have to rebuild the entire index to have this new field for existing documents.
Miscellaneous
- The IRC Bot Application now recognizes XAR import events and when receiving one, it doesn't send subsequent IRC notifications for modified or created documents to avoid spamming the IRC channel.
- Display the request URL in the IRC channel when the Link Checker bot listener is active and a broken link is found, thus making it easier to reproduce and debug the broken link
For Developers
New HTML5 File Upload widget
The File Upload widget can enhance HTML input elements of type file to provide an interactive upload UI. It can submit files either automatically when the user selects local files, or after the user presses the container form's submit button.
To use this widget, it is enough to create a new instance of XWiki.FileUploader passing the target input element as the first parameter, and an optional configuration object as the second parameter.
new XWiki.FileUploader(targetInput, {
autoUpload: true,
progressAutohide: true
});
JSRX and SSRX
It's now possible by default to add skin extensions located in JAR files. Example usage:
$xwiki.jsrx("/lib/codemirror.js")
$xwiki.ssrx("/lib/codemirror.css")
Attachment Picker improvements
It is now possible to specify a different document for the source (and target in case of uploads) of attachments, using the new targetdocname macro parameter.
Extension Manager improvements
- the custom Maven property <xwiki.extension.features> now accept any number of new lines and white spaces between elements
<xwiki.extension.features> org.xwiki.platform:xwiki-platform-oldcore, com.xpn.xwiki.platform:xwiki-core </xwiki.extension.features>
- new custom properties added to overwrite standard Maven properties:
- xwiki.extension.name to overwrite <name>
- xwiki.extension.summary to overwrite <description>
- xwiki.extension.website to overwrite <url>
XAR format improvement
It's now possible to indicate the extension identifier right in the XAR package descriptor (package.xml). Among other things this allow standard import UI to find what it currently importing and register it automatically as installed extension if it can be found in the registered repositories during import process.
The XAR Maven plugin automatically take care of adding this information to the generated package.xml for Maven project. If for some reason you need to indicate it by hand you can use the property <extensionId> under the the <infos> element in the package.xml file.
<package>
<infos>
<name>XWiki Platform - Extension - UI</name>
<description>XWiki Extension Manager, an application for managing extensions in a wiki.</description>
<licence></licence>
<author>XWiki.Admin</author>
<extensionId>org.xwiki.platform:xwiki-platform-extension-ui</extensionId>
<version>4.2-SNAPSHOT</version>
<backupPack>true</backupPack>
</infos>
<files>
[...]
</files>
</package>
New UI Extension mechanism (experimental)
We're in the process of allowing applications to insert custom content in pre-defined places in the user interface. A first Extension Point has been defined in the new "Applications" panel, you can read more about this in the UI Extension module documentation.
Upgrades
The following dependencies have been upgraded:
- Prototype.js 1.7.1
- Jython 2.5.3
- Pegdown 1.1.0 (used by the XWiki Markdown Parser)
- Xalan 2.7.1
Miscellaneous
- The AbstractMockingComponentTestCase testing framework class has been modified. Read the Testing page for more details on how to use it.
Translations
The following translations have been updated:
Tested Browsers
Here's the list of browsers tested with this version (i.e. browsers that we've tested as working - Check the list of supported browsers):
- Firefox
- 11.0
Known issues
Backward Compatibility and Migration Notes
General Notes
You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.
Issues specific to XWiki 4.2 Milestone 3
QueryFilter implementations must not be considered as singletons anymore
Since some QueryFilter such as the "hidden" filter are not singletons anymore (ie. now a new instance is created for each lookup), they need to be retrieved with a dynamic lookup.
If you were using injection to get filters, for example:
@Inject
@Named("hidden")
QueryFilter filter;
This MUST be replaced by the following in your code:
@Inject
@Named("hidden")
private Provider<QueryFilter> hiddenFilterProvider;
/* ... */
QueryFilter hiddenFilter = hiddenFilterProvider.get();
This code will work no matter the instantiation strategy of the implementation, Singleton or Per Lookup.
API Breakages
The following APIs were modified since version 4.1.4:
- The logging module is new and is still considered a "young API". Added new methods to manipulate loggers levels.
org.xwiki.logging.LoggerManager: Method 'public org.xwiki.logging.LogLevel getLoggerLevel(java.lang.String)' has been added to an interface org.xwiki.logging.LoggerManager: Method 'public java.util.Collection getLoggers()' has been added to an interface org.xwiki.logging.LoggerManager: Method 'public void setLoggerLevel(java.lang.String, org.xwiki.logging.LogLevel)' has been added to an interface
- The Job module is new and is still considered a "young API". Added two new methods to check and remove custom properties.
org.xwiki.job.Request: Method 'public boolean containsProperty(java.lang.String)' has been added to an interface org.xwiki.job.Request: Method 'public java.lang.Object removeProperty(java.lang.String)' has been added to an interface
- New InstalledExtension#isValid() method.
org.xwiki.extension.InstalledExtension: Method 'public boolean isValid(java.lang.String)' has been added to an interface
- The Extension module is relatively new and is still undergoing some API tuning. New method to access environment extension. Also added new methods to execute custom checking before installing/uninstalling an extension and new methods to access local:installed extensions.
org.xwiki.extension.repository.CoreExtensionRepository: Method 'public org.xwiki.extension.CoreExtension getEnvironmentExtension()' has been added to an interface org.xwiki.extension.handler.ExtensionHandler: Method 'public void checkInstall(org.xwiki.extension.Extension, java.lang.String, org.xwiki.job.Request)' has been added to an interface org.xwiki.extension.handler.ExtensionHandler: Method 'public void checkUninstall(org.xwiki.extension.InstalledExtension, java.lang.String, org.xwiki.job.Request)' has been added to an interface org.xwiki.extension.repository.InstalledExtensionRepository: Method 'public org.xwiki.extension.InstalledExtension getInstalledExtension(org.xwiki.extension.ExtensionId)' has been added to an interface org.xwiki.extension.repository.LocalExtensionRepository: Method 'public org.xwiki.extension.LocalExtension getLocalExtension(org.xwiki.extension.ExtensionId)' has been added to an interface
- Fix method name typo (adding new method). This interface is not really supposed to be implemented except by internal class.
org.xwiki.properties.PropertyDescriptor: Method 'public java.lang.reflect.Field getField()' has been added to an interface
- The method getPreviousBlockByType() was moved to Legacy. There's no API breakage for the user.
org.xwiki.rendering.block.CompatibilityBlock: Method 'public java.util.List getChildrenByType(java.lang.Class, boolean)' has been added to an interface
- Added method to get the author of the macro.
org.xwiki.rendering.macro.wikibridge.WikiMacro: Method 'public org.xwiki.model.reference.DocumentReference getAuthorReference()' has been added to an interface
- Add a method to the oldcore/wikimacro bridge.
org.xwiki.rendering.macro.wikibridge.WikiMacroFactory: Method 'public boolean isAllowed(org.xwiki.model.reference.DocumentReference, org.xwiki.rendering.macro.wikibridge.WikiMacroVisibility)' has been added to an interface
- These classes below have never been used. It was supposed to be the start of the removal of Struts but since it hasn't progressed so far we're removing stray code from master. Experiments should be done on feature branches.
org.xwiki.container.servlet.XWikiServlet: Class org.xwiki.container.servlet.XWikiServlet removed
- Removed protected method (registerWikiMacros) that was not supposed to be used from outside (was protected for unit tests hacks).
com.xpn.xwiki.XWiki: Method 'protected void registerWikiMacros()' has been removed
- Chart plugin has been moved from oldcore to its own module. There's no API breakage for the user.
com.xpn.xwiki.plugin.charts.Chart: Class com.xpn.xwiki.plugin.charts.Chart removed com.xpn.xwiki.plugin.charts.ChartCustomizer: Class com.xpn.xwiki.plugin.charts.ChartCustomizer removed com.xpn.xwiki.plugin.charts.ChartImpl: Class com.xpn.xwiki.plugin.charts.ChartImpl removed com.xpn.xwiki.plugin.charts.ChartingMacro: Class com.xpn.xwiki.plugin.charts.ChartingMacro removed com.xpn.xwiki.plugin.charts.ChartingPlugin: Class com.xpn.xwiki.plugin.charts.ChartingPlugin removed com.xpn.xwiki.plugin.charts.ChartingPluginApi: Class com.xpn.xwiki.plugin.charts.ChartingPluginApi removed com.xpn.xwiki.plugin.charts.CustomXWikiRenderingEngine: Class com.xpn.xwiki.plugin.charts.CustomXWikiRenderingEngine removed com.xpn.xwiki.plugin.charts.RadeoxHelper: Class com.xpn.xwiki.plugin.charts.RadeoxHelper removed com.xpn.xwiki.plugin.charts.actions.ChartingAction: Class com.xpn.xwiki.plugin.charts.actions.ChartingAction removed com.xpn.xwiki.plugin.charts.exceptions.ChartingException: Class com.xpn.xwiki.plugin.charts.exceptions.ChartingException removed com.xpn.xwiki.plugin.charts.exceptions.ColumnIndexOutOfBoundsException: Class com.xpn.xwiki.plugin.charts.exceptions.ColumnIndexOutOfBoundsException removed com.xpn.xwiki.plugin.charts.exceptions.DataSourceException: Class com.xpn.xwiki.plugin.charts.exceptions.DataSourceException removed com.xpn.xwiki.plugin.charts.exceptions.EmptyDataSourceException: Class com.xpn.xwiki.plugin.charts.exceptions.EmptyDataSourceException removed com.xpn.xwiki.plugin.charts.exceptions.GenerateException: Class com.xpn.xwiki.plugin.charts.exceptions.GenerateException removed com.xpn.xwiki.plugin.charts.exceptions.InvalidArgumentException: Class com.xpn.xwiki.plugin.charts.exceptions.InvalidArgumentException removed com.xpn.xwiki.plugin.charts.exceptions.InvalidParamException: Class com.xpn.xwiki.plugin.charts.exceptions.InvalidParamException removed com.xpn.xwiki.plugin.charts.exceptions.MissingArgumentException: Class com.xpn.xwiki.plugin.charts.exceptions.MissingArgumentException removed com.xpn.xwiki.plugin.charts.exceptions.MissingDataSourceException: Class com.xpn.xwiki.plugin.charts.exceptions.MissingDataSourceException removed com.xpn.xwiki.plugin.charts.exceptions.MissingMandatoryParamException: Class com.xpn.xwiki.plugin.charts.exceptions.MissingMandatoryParamException removed com.xpn.xwiki.plugin.charts.exceptions.NoHeaderColumnException: Class com.xpn.xwiki.plugin.charts.exceptions.NoHeaderColumnException removed com.xpn.xwiki.plugin.charts.exceptions.NoHeaderRowException: Class com.xpn.xwiki.plugin.charts.exceptions.NoHeaderRowException removed com.xpn.xwiki.plugin.charts.exceptions.ParamException: Class com.xpn.xwiki.plugin.charts.exceptions.ParamException removed com.xpn.xwiki.plugin.charts.exceptions.RowIndexOutOfBoundsException: Class com.xpn.xwiki.plugin.charts.exceptions.RowIndexOutOfBoundsException removed com.xpn.xwiki.plugin.charts.params.AbstractChartParam: Class com.xpn.xwiki.plugin.charts.params.AbstractChartParam removed com.xpn.xwiki.plugin.charts.params.BooleanChartParam: Class com.xpn.xwiki.plugin.charts.params.BooleanChartParam removed com.xpn.xwiki.plugin.charts.params.CategoryLabelPositionsChartParam: Class com.xpn.xwiki.plugin.charts.params.CategoryLabelPositionsChartParam removed com.xpn.xwiki.plugin.charts.params.ChartParam: Class com.xpn.xwiki.plugin.charts.params.ChartParam removed com.xpn.xwiki.plugin.charts.params.ChartParams: Class com.xpn.xwiki.plugin.charts.params.ChartParams removed com.xpn.xwiki.plugin.charts.params.ChoiceChartParam: Class com.xpn.xwiki.plugin.charts.params.ChoiceChartParam removed com.xpn.xwiki.plugin.charts.params.ColorChartParam: Class com.xpn.xwiki.plugin.charts.params.ColorChartParam removed com.xpn.xwiki.plugin.charts.params.DateChartParam: Class com.xpn.xwiki.plugin.charts.params.DateChartParam removed com.xpn.xwiki.plugin.charts.params.DateFormatChartParam: Class com.xpn.xwiki.plugin.charts.params.DateFormatChartParam removed com.xpn.xwiki.plugin.charts.params.DateTickMarkPositionChartParam: Class com.xpn.xwiki.plugin.charts.params.DateTickMarkPositionChartParam removed com.xpn.xwiki.plugin.charts.params.DateTickUnitChartParam: Class com.xpn.xwiki.plugin.charts.params.DateTickUnitChartParam removed com.xpn.xwiki.plugin.charts.params.DefaultChartParams: Class com.xpn.xwiki.plugin.charts.params.DefaultChartParams removed com.xpn.xwiki.plugin.charts.params.DefaultChartParams2: Class com.xpn.xwiki.plugin.charts.params.DefaultChartParams2 removed com.xpn.xwiki.plugin.charts.params.DoubleChartParam: Class com.xpn.xwiki.plugin.charts.params.DoubleChartParam removed com.xpn.xwiki.plugin.charts.params.FloatChartParam: Class com.xpn.xwiki.plugin.charts.params.FloatChartParam removed com.xpn.xwiki.plugin.charts.params.FontChartParam: Class com.xpn.xwiki.plugin.charts.params.FontChartParam removed com.xpn.xwiki.plugin.charts.params.HorizontalAlignmentChartParam: Class com.xpn.xwiki.plugin.charts.params.HorizontalAlignmentChartParam removed com.xpn.xwiki.plugin.charts.params.IntegerChartParam: Class com.xpn.xwiki.plugin.charts.params.IntegerChartParam removed com.xpn.xwiki.plugin.charts.params.ListChartParam: Class com.xpn.xwiki.plugin.charts.params.ListChartParam removed com.xpn.xwiki.plugin.charts.params.LocaleChartParam: Class com.xpn.xwiki.plugin.charts.params.LocaleChartParam removed com.xpn.xwiki.plugin.charts.params.MapChartParam: Class com.xpn.xwiki.plugin.charts.params.MapChartParam removed com.xpn.xwiki.plugin.charts.params.NumberFormatChartParam: Class com.xpn.xwiki.plugin.charts.params.NumberFormatChartParam removed com.xpn.xwiki.plugin.charts.params.NumberTickUnitChartParam: Class com.xpn.xwiki.plugin.charts.params.NumberTickUnitChartParam removed com.xpn.xwiki.plugin.charts.params.PlotOrientationChartParam: Class com.xpn.xwiki.plugin.charts.params.PlotOrientationChartParam removed com.xpn.xwiki.plugin.charts.params.Point2DChartParam: Class com.xpn.xwiki.plugin.charts.params.Point2DChartParam removed com.xpn.xwiki.plugin.charts.params.RangeTypeChartParam: Class com.xpn.xwiki.plugin.charts.params.RangeTypeChartParam removed com.xpn.xwiki.plugin.charts.params.RectangleAnchorChartParam: Class com.xpn.xwiki.plugin.charts.params.RectangleAnchorChartParam removed com.xpn.xwiki.plugin.charts.params.RectangleEdgeChartParam: Class com.xpn.xwiki.plugin.charts.params.RectangleEdgeChartParam removed com.xpn.xwiki.plugin.charts.params.RectangleInsetsChartParam: Class com.xpn.xwiki.plugin.charts.params.RectangleInsetsChartParam removed com.xpn.xwiki.plugin.charts.params.RendererClassChartParam: Class com.xpn.xwiki.plugin.charts.params.RendererClassChartParam removed com.xpn.xwiki.plugin.charts.params.ShapeChartParam: Class com.xpn.xwiki.plugin.charts.params.ShapeChartParam removed com.xpn.xwiki.plugin.charts.params.StringChartParam: Class com.xpn.xwiki.plugin.charts.params.StringChartParam removed com.xpn.xwiki.plugin.charts.params.StrokeChartParam: Class com.xpn.xwiki.plugin.charts.params.StrokeChartParam removed com.xpn.xwiki.plugin.charts.params.TimePeriodClassChartParam: Class com.xpn.xwiki.plugin.charts.params.TimePeriodClassChartParam removed com.xpn.xwiki.plugin.charts.params.VerticalAlignmentChartParam: Class com.xpn.xwiki.plugin.charts.params.VerticalAlignmentChartParam removed com.xpn.xwiki.plugin.charts.plots.AreaPlotFactory: Class com.xpn.xwiki.plugin.charts.plots.AreaPlotFactory removed com.xpn.xwiki.plugin.charts.plots.BarPlotFactory: Class com.xpn.xwiki.plugin.charts.plots.BarPlotFactory removed com.xpn.xwiki.plugin.charts.plots.CategoryPlotFactory: Class com.xpn.xwiki.plugin.charts.plots.CategoryPlotFactory removed com.xpn.xwiki.plugin.charts.plots.LinePlotFactory: Class com.xpn.xwiki.plugin.charts.plots.LinePlotFactory removed com.xpn.xwiki.plugin.charts.plots.PiePlotFactory: Class com.xpn.xwiki.plugin.charts.plots.PiePlotFactory removed com.xpn.xwiki.plugin.charts.plots.PlotFactory: Class com.xpn.xwiki.plugin.charts.plots.PlotFactory removed com.xpn.xwiki.plugin.charts.plots.TableXYDatasetFactory: Class com.xpn.xwiki.plugin.charts.plots.TableXYDatasetFactory removed com.xpn.xwiki.plugin.charts.plots.TimePlotFactory: Class com.xpn.xwiki.plugin.charts.plots.TimePlotFactory removed com.xpn.xwiki.plugin.charts.plots.TimeSeriesCollectionFactory: Class com.xpn.xwiki.plugin.charts.plots.TimeSeriesCollectionFactory removed com.xpn.xwiki.plugin.charts.plots.XYPlotFactory: Class com.xpn.xwiki.plugin.charts.plots.XYPlotFactory removed com.xpn.xwiki.plugin.charts.source.DataSource: Class com.xpn.xwiki.plugin.charts.source.DataSource removed com.xpn.xwiki.plugin.charts.source.DataSourceFactory: Class com.xpn.xwiki.plugin.charts.source.DataSourceFactory removed com.xpn.xwiki.plugin.charts.source.DefaultDataSource: Class com.xpn.xwiki.plugin.charts.source.DefaultDataSource removed com.xpn.xwiki.plugin.charts.source.MainDataSourceFactory: Class com.xpn.xwiki.plugin.charts.source.MainDataSourceFactory removed com.xpn.xwiki.plugin.charts.source.ObjectDataSourceFactory: Class com.xpn.xwiki.plugin.charts.source.ObjectDataSourceFactory removed com.xpn.xwiki.plugin.charts.source.ObjectidDataSourceFactory: Class com.xpn.xwiki.plugin.charts.source.ObjectidDataSourceFactory removed com.xpn.xwiki.plugin.charts.source.TableDataSource: Class com.xpn.xwiki.plugin.charts.source.TableDataSource removed com.xpn.xwiki.plugin.charts.source.TableDataSourceFactory: Class com.xpn.xwiki.plugin.charts.source.TableDataSourceFactory removed com.xpn.xwiki.plugin.charts.wizard.DatasourceDefaultsHelper: Class com.xpn.xwiki.plugin.charts.wizard.DatasourceDefaultsHelper removed com.xpn.xwiki.plugin.charts.wizard.FontHelper: Class com.xpn.xwiki.plugin.charts.wizard.FontHelper removed
org.xwiki.chart.model.ChartModel: Method 'public org.jfree.chart.axis.Axis getAxis(int)' has been added to an interface org.xwiki.chart.model.ChartModel: Method 'public java.lang.Number getCellValue(int, int)' has been removed org.xwiki.chart.model.ChartModel: Method 'public int getColumnCount()' has been removed org.xwiki.chart.model.ChartModel: Method 'public java.lang.String getColumnHeader(int)' has been removed org.xwiki.chart.model.ChartModel: Method 'public org.jfree.data.general.Dataset getDataset()' has been added to an interface org.xwiki.chart.model.ChartModel: Method 'public int getRowCount()' has been removed org.xwiki.chart.model.ChartModel: Method 'public java.lang.String getRowHeader(int)' has been removed org.xwiki.chart.model.DefaultChartModel: Class org.xwiki.chart.model.DefaultChartModel removed org.xwiki.rendering.macro.chart.ChartDataSource: Field PARAMS has been removed, but it was previously a constant org.xwiki.rendering.macro.chart.ChartDataSource: Field SOURCE has been removed, but it was previously a constant
Andreas, please explain why we have to break backward compatibility for the Chart module.- The getParametersMap() should never have been a public API. I was probably added there just as a way to reduce the Class Fan Out, which is the wrong solution.
org.xwiki.rendering.macro.chart.ChartMacroParameters: Method 'public java.util.Map getParametersMap()' has been removed