This is the release notes for XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise. They share the same release notes as they are released together and have the same version.

This release brings many improvements to the Mail Application and its API, including support for mail throttling. A new 'Wikis' category is available in the administration that groups together sections with wiki-related configuration options. Other smaller improvements (23) and a few bug fixes (15) complete this release. Would be great if you can give it a try and report whatever issues you may find so that we can fix them before the 6.4 final release.

New and Noteworthy (since XWiki 6.4-milestone-3)

Full list of issues fixed and Dashboard for 6.4.

Mail Sender API Improvements

  • You can now specify the delay to wait between each mail being sent, in milliseconds. This is done to support mail throttling and not be considered a spammer by mail servers. For example if you wish to wait 10 seconds (if not specified the default is 8 seconds, which is 450 mails per hour), set the following in your xwiki.properties:
    mail.sender.sendWaitTime = 10000

    The configuration parameter can also be changed from the Mail Admin UI:

    sendmailwait.png

  • We now save both an error summary and a full error description when a mail fails to be sent when using the Database Mail Listener. This allows to see the full stack trace of the problem to more easily debug it.

    sendmailerror.png

  • The Mail Type is now displayed in the Mail Sender Status Admin UI:

    mailtype.png

  • The MailResult.isSent() API has been renamed to MailResult.isProcessed() to avoid thinking that it'll return true if all mails have been sent successfully. What it does is simply return true when all mails have been processed, whether they've been sent successfully or not.
  • A new scripting API has been added to set the mail type:
    $message.setType("Some type")
  • In the Mail Sender Status Admin UI we now only display mails sent by the current wiki unless we're on the main wiki.
  • The Mail Application doesn't require Programming Rights for installation anymore.
  • Account Validation email results are now saved and visible in the Mail Application.
  • Some new Mail Sender Storage script services have been added: ability to delete mail statuses for a single mail and for a whole batch, and ability to load mail statuses with criteria.

Wikis

  • A "Wikis" category has been created in the administration, where the configuration have been moved and split in different sections:
    Left menuRight menu
    AdminWikis.pngAdminWikis2.png

Extension Manager incompatible exceptions

When trying to install an incompatible extension (i.e. you are running XWiki 6.2.4 and want to install FAQ Application 6.3), you are now displayed a proper error instead of having to read through the install log to understand what went wrong, and you are instructed to use the Description > Stable Versions section to manually (for now) find a compatible version of the extension that you want to install.

incompatibleExtensionError.png

Miscellaneous

  • A click to the Document Index does not lead to an other space anymore.
  • Tag Cloud Macro has now a new parameter (spaces) to display a tag cloud from multiple spaces.

See the full list of JIRA issues fixed in this release.

For Developers

Miscellaneous

  • You can now control in which order the sections added via the ConfigurableClass are displayed in the administration.
  • New APIs to generate unescaped display user name:
    • com.xpn.xwiki.XWiki#getPlainUserName(DocumentReference userReference, XWikiContext context)
    • com.xpn.xwiki.XWiki#getUserName(DocumentReference userReference, String format, boolean link, boolean escapeXML, XWikiContext context)
    • com.xpn.xwiki.api.XWiki#getPlainUserName(DocumentReference userReference)
  • New script oriented APIs to get document author/contentAuthor/creator as DocumentReference

Translations

The following translations have been updated: 

  • French

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

BrowserTest Result
Chrome30.pngGoogle Chrome 39Jira Tickets Marked as Fixed in the Release Notes
Firefox30.pngMozilla Firefox 35Not Tested
IE30.pngInternet Explorer 8Not Tested
IE30.pngInternet Explorer 9Not Tested

Here is the list of databases we support and how they have been tested for this release:

DatabaseTest Result
hypersql.pngHyperSQL 2.3.2Not Tested
mysql.pngMySQL 5.6.17Not Tested
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQL 9.4.0Jira Tickets Marked as Fixed in the Release Notes
For the full list of tests see this page.

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your xwiki.cfg, xwiki.properties and web.xml files with the newest version since some configuration parameters may have been modified or added. Note that you should add xwiki.store.migration=1 so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.

API Breakages

The following APIs were modified since XWiki 6.3:

  • It's very unlikely that this class is implemented by anything else and it does not make much sense to not have this method, since this is not really a cache behind it but a Map that keep engines forever it may create a memory leak on a big farm running for a long time
    org.xwiki.velocity.VelocityFactory: Method 'public org.xwiki.velocity.VelocityEngine removeVelocityEngine(java.lang.String)' has been added to an interface
  • This shouldn't be a backward incompatible change since it's a method addition on an Annotation.
    org.xwiki.component.annotation.Component: Method 'public boolean staticRegistration()' has been added to an interface
  • Does not make much sense allowing to register a JMX bean and not to unregister it.
    org.xwiki.management.JMXBeanRegistration: Method 'public void unregisterMBean(java.lang.String)' has been added to an interface
  • Young API, this method needs to be available for consistency with the getMainWikiDescriptor/Id pair of methods
    org.xwiki.wiki.descriptor.WikiDescriptorManager: Method 'public org.xwiki.wiki.descriptor.WikiDescriptor getCurrentWikiDescriptor()' has been added to an interface
  • WYSIWYG's MacroService API was not previously considering a multiwiki environment.
    org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroService: Method 'public org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDescriptor getMacroDescriptor(java.lang.String, java.lang.String, java.lang.String)' has been added to an interface
    org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroService: Method 'public java.util.List getMacroDescriptors(java.lang.String, java.lang.String)' has been added to an interface
    org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroServiceAsync: Method 'public void getMacroDescriptor(java.lang.String, java.lang.String, java.lang.String, com.google.gwt.user.client.rpc.AsyncCallback)' has been added to an interface
    org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroServiceAsync: Method 'public void getMacroDescriptors(java.lang.String, java.lang.String, com.google.gwt.user.client.rpc.AsyncCallback)' has been added to an interface
  • Young API. Add new methods to the Icon Set Module
    org.xwiki.icon.IconManager: Method 'public java.util.List getIconNames()' has been added to an interface
    org.xwiki.icon.IconManager: Method 'public java.util.List getIconNames(java.lang.String)' has been added to an interface
    org.xwiki.icon.IconSetManager: Method 'public java.util.List getIconSetNames()' has been added to an interface
  • Young API. LESS refactoring.
    org.xwiki.lesscss.LessCompilerScriptService: Method 'public boolean clearCacheFromFileSystemSkin(java.lang.String)' has been removed
    org.xwiki.lesscss.LessCompilerScriptService: Return type of method 'public org.xwiki.lesscss.ColorTheme getColorThemeFromSkinFile(java.lang.String)' has been changed to org.xwiki.lesscss.colortheme.ColorTheme
    org.xwiki.lesscss.LessCompilerScriptService: Return type of method 'public org.xwiki.lesscss.ColorTheme getColorThemeFromSkinFile(java.lang.String, java.lang.String)' has been changed to org.xwiki.lesscss.colortheme.ColorTheme
    org.xwiki.lesscss.ColorTheme: Class org.xwiki.lesscss.ColorTheme removed
    org.xwiki.lesscss.ColorThemeCache: Class org.xwiki.lesscss.ColorThemeCache removed
    org.xwiki.lesscss.LESSCache: Class org.xwiki.lesscss.LESSCache removed
    org.xwiki.lesscss.LESSColorThemeConverter: Class org.xwiki.lesscss.LESSColorThemeConverter removed
    org.xwiki.lesscss.LESSCompiler: Class org.xwiki.lesscss.LESSCompiler removed
    org.xwiki.lesscss.LESSCompilerException: Class org.xwiki.lesscss.LESSCompilerException removed
    org.xwiki.lesscss.LESSSkinFileCache: Class org.xwiki.lesscss.LESSSkinFileCache removed
    org.xwiki.lesscss.LESSSkinFileCompiler: Class org.xwiki.lesscss.LESSSkinFileCompiler removed
  • Young API. Lots of refactoring on the new Mail module
    org.xwiki.mail.MailResultListener: Class org.xwiki.mail.MailResultListener removed
    org.xwiki.mail.MailSender: Method 'public void send(javax.mail.internet.MimeMessage, javax.mail.Session)' has been removed
    org.xwiki.mail.MailSender: Parameter 1 of 'public void sendAsynchronously(javax.mail.internet.MimeMessage, javax.mail.Session, org.xwiki.mail.MailResultListener)' has changed its type to java.lang.Iterable
    org.xwiki.mail.MailSender: Parameter 3 of 'public void sendAsynchronously(javax.mail.internet.MimeMessage, javax.mail.Session, org.xwiki.mail.MailResultListener)' has changed its type to org.xwiki.mail.MailListener
    org.xwiki.mail.MailSender: Return type of method 'public void sendAsynchronously(javax.mail.internet.MimeMessage, javax.mail.Session, org.xwiki.mail.MailResultListener)' has been changed to org.xwiki.mail.MailResult
    org.xwiki.mail.MailSender: Method 'public void waitTillSent(long)' has been removed
    org.xwiki.mail.MailSenderConfiguration: Method 'public java.util.List getBCCAddresses()' has been added to an interface
    org.xwiki.mail.MailSenderConfiguration: Method 'public java.lang.String getScriptServicePermissionCheckerHint()' has been added to an interface
    org.xwiki.mail.MailSenderConfiguration: Method 'public long getSendWaitTime()' has been added to an interface
    org.xwiki.mail.script.MimeMessageWrapper: In method 'public MimeMessageWrapper(org.xwiki.mail.internal.ExtendedMimeMessage, javax.mail.Session, org.xwiki.mail.MailSender, org.xwiki.context.Execution, org.xwiki.component.manager.ComponentManager)' the number of arguments has changed
    org.xwiki.mail.script.MimeMessageWrapper: Accessibility of method 'public MimeMessageWrapper(org.xwiki.mail.internal.ExtendedMimeMessage, javax.mail.Session, org.xwiki.mail.MailSender, org.xwiki.context.Execution, org.xwiki.component.manager.ComponentManager)' has been decreased from public to package
    org.xwiki.mail.script.MimeMessageWrapper: Method 'public java.util.concurrent.BlockingQueue getErrors()' has been removed
    org.xwiki.mail.script.MimeMessageWrapper: Method 'public void send()' has been removed
    org.xwiki.mail.script.MimeMessageWrapper: Method 'public void sendAsynchronously()' has been removed
    org.xwiki.mail.script.MimeMessageWrapper: Method 'public void waitTillSent(long)' has been removed
  • Switched to the generics-aware commons-collections4.
    com.xpn.xwiki.monitor.api.MonitorPlugin: Return type of method 'public org.apache.commons.collections.buffer.CircularFifoBuffer getLastTimerData()' has been changed to org.apache.commons.collections4.queue.CircularFifoQueue
    com.xpn.xwiki.monitor.api.MonitorPlugin: Return type of method 'public org.apache.commons.collections.buffer.CircularFifoBuffer getLastUnfinishedTimerData()' has been changed to org.apache.commons.collections4.queue.CircularFifoQueue
Tags:
Created by Guillaume Delhumeau on 2015/01/07
   

Get Connected