Release Notes for XWiki 4.2 Milestone 1
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 first milestone of the XWiki 4.2 version (Roadmap). This release brings a couple of bug fixes and improvements to the Extension Manager as well as two new extensions integrated into the platform but not bundled by default: an improved JIRA macro and a Git module that lets you perform Git operations from within wiki pages.
New and Noteworthy (since XWiki 4.1 version)
JIRA Macro
A new JIRA Macro is now part of the Platform but is not bundled by default (you'll need to install it with the Extension Manager). We previously had a Contributed JIRA Macro but we decided that the JIRA macro was a good candidate to have in the Platform and thus supported by the XWiki Development Team. Compared to the older Contributed JIRA Macro, the new Macro has the following advantages:
- No Programming Rights required
- Supports issue ordering
- Supports ability to register new Styles, new Data Sources and new Field Displayers
- Displays closed issues as Striked-out
- Written in Java with automated tests
Extension Manager improvements
Main improvements:
- Starting with this version you can downgrade an extension. In other words, you can install an older version of an extension even if a newer version is currently installed. This doesn't apply to core extensions, which cannot be uninstalled, upgraded or downgraded individually. In order to downgrade an extension that is already installed you need to search for an older version. Currently this is possible only using the advanced search.
- From the main wiki of a wiki farm you now have the option to trigger extension jobs (install, uninstall, upgrade, downgrade, etc.) that target all the wikis. For instance, as you can see below, you can install an extension on the entire wiki farm:
- The log messages have been improved to include links to the affected documents or extensions as indicated in the following image:
Other small improvements include:
- the progress tab is selected by default when you view the extension details if there is a job running (e.g. install in progress) for that extension
- when there is a merge conflict, the 'Show changes' button updates the changes asynchronously without reloading the entire page
- attachments of pages installed with the extension manager now have the right author set: the current user instead of the author from the XAR as it used to be
- the file size of attachments installed with the extension manager is now properly set
- the installation process is now more robust with respect to the exceptions that can occur while installing a JAR extension with components
Miscellaneous
- Document attachments so far have been displayed in the order in which they are returned by the database, which most of the time happened to be the upload date. Starting with this version attachments are displayed ordered by their filename, which makes it easier to find an attachment, but support for selecting a different order (date, size, author...) will be added soon.
- Uploading attachments with '+' character in their file names using the WebDAV interface shouldn't pose any more problems.
- It's now possible to use Velocity scripts in the Copyright field in the Administration.
- The XWiki Installer now fully works on Windows 7. The XWiki Data is now put in the %APPDATA%\XWiki Enterprise <version>\data directory, while the binaries are installed in Program Files.
- It is no longer allowed to use scripts in comments. This reduces the security risk from users that only have comment rights.
- Macro parameters may now contain macro syntax. Example: {{box title="{{info}}Hello!{{/info}}" }}Lorem ipsum ...{{/box}}
- Improve OOB support for JBoss AS7:
- Removed Struts Taglibs completely since we don't use them and some were defined but not made available, causing errors in deployments on JBoss AS7 ()
- Fixed Logging conflict between JBoss AS and XWiki ()
For Developers
New Git Module
A new, optional (i.e. not installed by default), Git Module has been added. It allows to easily perform Git operations from within wiki pages. For example to count all commits for the past year and list all committers who's committed code during this period, you could write in a wiki page:
import org.apache.commons.io.*
import org.eclipse.jgit.api.*
import org.eclipse.jgit.lib.*
import org.eclipse.jgit.revwalk.*
import org.eclipse.jgit.storage.file.*
import org.gitective.core.*
import org.gitective.core.filter.commit.*
def service = services.get("git")
def commonsRepository = service.getRepository("git://github.com/xwiki/xwiki-commons.git", "xwiki-commons")
// Do a Git pull to get latest commits
new Git(commonsRepository).pull().call()
def finder = new CommitFinder(commonsRepository)
def dateFilter = new CommitterDateFilter(System.currentTimeMillis() - 365*24*60*60*1000L)
def countFilter = new CommitCountFilter()
def authorFilter = new AuthorSetFilter()
def filters = new AndCommitFilter()
filters.add(countFilter, authorFilter)
finder.setFilter(dateFilter)
finder.setMatcher(filters)
finder.find()
println "There have been ${countFilter.count} commits in the past year!"
println ""
println "The following committers have participated in those commits:"
authorFilter.getPersons().each() {
println "* ${it.name} (${it.emailAddress})"
}
{{/groovy}}
Miscellaneous
- The transformation context have a "restricted" flag to indicate that macros and other transformations should not perform modifications to the database, expensive computations or other potentially harmful operations. Developers of macros and other rendering extensions should pay attention to this flag.
- The messageSender macro now accepts 3 parameters that allow you to customize it by overriding the default displayed visibility levels for a message (that a user can choose from), the default selected visibility level and the default value (in case of user or group visibility). More details on .
- The new experimental Security API that was first released in XWiki 4.0 is now bundled by default in XWiki Enterprise.
- It's now possible to access root ComponentManager using "root" role hint:@Inject
@Named("root")
private ComponentManager rootComponentManager; - A Provider has been added to easily access the context ComponentManager (a proxy which choose the right ComponentManager depending on context information like the current user and the current wiki)@Inject
@Named("context")
private Provider<ComponentManager> contextComponentManager;
Upgrades
The following dependencies have been upgraded:
- Infinispan 5.1.5
- JDeb 0.11
- JGroups 3.1.0
- Selenium 2.22
- Tika 1.2
Translations
The following translations have been updated:
Test Report
You can check the manual test report to learn about what was tested and the results on various browsers.
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
- 13.0.1
Tested Databases
- HyperSQL
- 2.2.8
Known issues
Upgrade Notes
Version-specific Upgrade Notes
- The xwiki.work.dir and xwiki.temp.dir properties in the xwiki.cfg configuration file are no longer taken into account. The XWiki work dir (now called XWiki Data Directory or XWiki Permanent Directory) is now configured either by setting the xwiki.data.dir System property or by setting the xwiki.properties's environment.permanentDirectory property. The temporary directory is not configurable within XWiki but can be configured through your Servlet Container (since XWiki uses the Servlet container's temporary directory). See also Configuring directories.
General Upgrade Notes
You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.
Comments stored with a custom mapping or custom annotation class
If you happened to use a custom mapping for storing XWiki.XWikiComments objects in a separate table, you may have experienced problems with the migration R40001XWIKI7540. Dealing with custom mappings is outside the scope of the migration so now, if such a custom mapping is detected, the migration is simply skipped. The migration is also skipped if you use a custom annotation class for your annotation objects, other than the default AnnotationCode.AnnotationClass.
If you are in one of the two cases above and the migration is skipped, you will want to make sure that the Annotations docextra tab is still visible. To make it visible, set Administration > Look & Feel > Page Elements > Document metadata visibility > Show document annotations to Yes. You will continue to use your custom annotations (in the Annotations tab) or custom mapped comments (in the Comments tab) as before, without them being merged into one Comments tab, as it happens by default in the latest versions.
Please see for more details.
Custom displayers in the XWikiUsers class
If you have added some custom displayers to new or existing fields in the XWiki.XWikiUsers class, you need to check and make sure that they are written in 2.1 wiki syntax. This is required because the XWikiUsers document will now be forced to use the 2.1 wiki syntax, no matter what syntax you save it with. If your custom displayers are written in 1.0 syntax, for example, and the class document is in 2.1 syntax, they will not render.
API Breakages
The following APIs were modified since version 4.1.3:
- The Job module is new and is still considered a "young API". Moved from Exception to Throwable parameter for extending jobs.org.xwiki.job.AbstractJob: Parameter 1 of 'protected void jobFinished(java.lang.Exception)' has changed its type to java.lang.Throwable
- 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.org.xwiki.extension.repository.CoreExtensionRepository: Method 'public org.xwiki.extension.CoreExtension getEnvironmentExtension()' 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
- 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.