Release Notes for XWiki Enterprise 3.3 Milestone 1

Last modified by Thomas Mortagne on 2017/03/24

First milestone of the XWiki Enterprise 3.3 version (Roadmap). Since we're getting closer to the end of the 3.x cycle, there are fewer new features in this release, most of the changes being internal.

We've found that this release is a lot  more memory-hungry than XWiki Enterprise 3.1 and before. The technical reason is because we're caching the rendering of pages in the document cache and those objects are very big (up to 27MB for a very large page). In XWiki Enterprise 3.3 RC1+ we've optimized the space taken in memory by those objects. As a consequence we recommend using a reduced document cache size with this version and/or increasing the memory allocated to the JVM.

New and Noteworthy (since XWiki Enterprise 3.2 version)

Preview of the upcoming application designer

A key element of the Application Within Minutes feature, the application designer makes its debut in this release with a preview of the new class editor. While not ready for production yet, you're invited to test it and provide feedback on the interaction and user experience, by commenting on the issue or replying to the email thread.

classEditor.png

You can give it a try by simply adding an object of type XWiki.DocumentSheetBinding to an existing class or a new document, setting the sheet property to AppWithinMinutes.ClassEditSheet and then editing that document in "Inline form" edit mode.

Debian packages

Starting with 3.3 Milestone 1 Debian packages and repositories are released.

You can add one of the following list files to /etc/debian/apt/source.list.d/:

sudo wget http://maven.xwiki.org/stable/xwiki-stable.list -P /etc/apt/sources.list.d

LDAP user membership improvements

Organization unit and search filter support have been added in the group membership mapping settings. To use them, replace the group DN with an organization unit DN or with any search filter.

Attachments improvements

Since the filesystem attachment storage allows uploading very large files, a necessary improvement is to be able to pause and resume downloads. Starting with this version, it is possible to do so, since the /download/ action now respects the Range HTTP header.

Several bugs with downloading attachments when the filesystem storage is enabled have also been fixed, making this feature ready for production use.

Link Checker

It's now possible to tell XWiki to check for validity of external links found in the Wiki (to verify broken links for example). This is implemented through a Link Checker Transformation.

It's not enabled by default. To enable it, edit the xwiki.properties file and add linkchecker to the list of transformations to execute. For example:

rendering.transformations = macro, icon, linkchecker

Note that there's no UI for it yet (planned for 3.3 Milestone 2) but the Link States can be access through a Script Service. For example from Velocity:

{{velocity}}
#set ($states = $services.linkchecker.getLinkStates())
{{/velocity}}

For Developers

Script services for Application Manager and Wiki Manager

There are script services now available for the old application and wiki manager plugins. You can access them via $services.applicationmanager and $services.wikimanager, and call all the methods previously exposed by their respective plugin APIs. For the moment the plugins are still there, with the script services just bridging them to the new prefered way of accessing APIs from Velocity scripts.

Cache improvements

Several bugfixes and improvements have been committed, affecting the rendering cache, the cache macro, and the cache infrastructure in general. An important change is the introduction of an infinispan-based cache implementation, replacing JBossCache as the default one.

New xdom+xml syntax

The rendering now come with two reference XML based syntaxes which are the exact representation of rendering events.

Two variants are provided:

  • 1.0: a stable syntax which represent the rendering events in the state they had when this version has been released. If anything change a new version of the syntax will be created (1.1, etc.)
  • current: always in sync with rendering events whatever the version but also mean that it can change anytime without warning, only use that for internal use when you are sure you will render and parse with the same version of XWiki Rendering

XE and XEM XAR changes

The XAR plugin by default doesn't bundle dependencies anymore, so the XE and XEM XARs now come in two variants:

  • the old xwiki-enterprise-wiki module has been renamed into xwiki-enterprise-ui, and produces a XAR only with the documents specific to XWiki Enterprise, without dependencies;
  • the full XAR with all the dependencies bundled in it is now produced by the xwiki-enterprise-ui-all module.

Upgrades

The following dependencies have been upgraded:

  • CSS4J 0.13
  • Groovy 1.8.3
  • JGroups 2.12.2
  • reflections 0.9.6
  • Selenium 2.11
  • SLF4J 1.6.3

Miscellaneous

  • Make it simple to add Icon Transformation mappings when using the Rendering in standalone mode
  • Add support for being able to override components more than once TODO: Document it and linke to the documentation
  • Bundle the Icon and WikiWord Transformations in the Rendering Standalone JAR
  • Comments Macro is not bundled in the Rendering Standalone JAR
  • Allow setting time to live and max entries when using the Cache macro
  • IRC Bot application improvements
  • Move to JBoss Infinispan as default cache implementation
  • Application Manager and Wiki Manager plugins now expose a ScriptService and don't need to be added as plugin in xwiki.cfg file anymore. You can access they using $services.applicationmanager and $services.wikimanager.

Translations

The following translations have been updated:

Supported Browsers

Here's the list of supported browsers for this version (i.e. browsers that we've tested as working):

Internet Explorer
8
Internet Explorer
9
Firefox
3.6.23
Firefox
7.0.1
Chrome
15

Known issues

Test Report

You can check the manual test report to learn about what was tested and the results on various browsers.

Backward Compatibility and Migration Notes

General Notes

If you're running in a multiwiki setup you'll also need to define the property xwiki.store.migration.databases=all to your xwiki.cfg file or explicitly name all databases to be migrated as in xwiki.store.migration.databases=db1,db2,....

You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.

Always make sure you compare your xwiki.cfg and xwiki.properties files with the newest version since some configuration parameters were 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.

Issues specific to XWiki Enterprise 3.3 Milestone 1

Default Cache implementation changed

As mentioned above, a new cache implementation based on the successor of JBossCache, Infinispan, has been implemented and selected as the default cache provider. Any custom code that deals with caches should be checked for eventual incompatibilities.

Maven XAR plugin behavior changed

The Maven plugin used for packaging XAR modules has been changed so that by default it doesn't bundle the XAR dependencies. This is reflected in the default XE wiki, which now comes in two variants, described above. If you're counting on the old behavior for your custom projects, you can configure the plugin to bundle dependencies by setting the includeDependencies property to true.

API Breakages

Internals of the filesystem attachment store were moved around, there are not API and were never intended that way and not useful as API but clirr sees them as API so it is technically a break. See: XWIKI-7085.

The following APIs were modified since <project> <version - 1>:

org.xwiki.component.annotation.ComponentAnnotationLoader: In method 'public void initialize(org.xwiki.component.manager.ComponentManager, java.lang.ClassLoader, java.util.List, java.util.List)' the number of arguments has changed
com.xpn.xwiki.plugin.applicationmanager.ApplicationManagerPlugin: Removed org.xwiki.observation.EventListener from the set of implemented interfaces
com.xpn.xwiki.plugin.applicationmanager.ApplicationManagerPlugin: Method 'public java.util.List getEvents()' has been removed
com.xpn.xwiki.plugin.applicationmanager.ApplicationManagerPlugin: Method 'public void onEvent(org.xwiki.observation.event.Event, java.lang.Object, java.lang.Object)' has been removed
org.xwiki.cache.eviction.EntryEvictionConfiguration: Method 'public void setAlgotithm(org.xwiki.cache.eviction.EntryEvictionConfiguration$Algorithm)' has been removed
org.xwiki.model.reference.ObjectPropertyReferenceResolver: Method 'public org.xwiki.model.reference.ObjectPropertyReference resolve(java.lang.Object, java.lang.Object[])' has been added to an interface
org.xwiki.model.reference.ObjectReferenceResolver: Method 'public org.xwiki.model.reference.ObjectReference resolve(java.lang.Object, java.lang.Object[])' has been added to an interface
com.xpn.xwiki.api.XWiki: Method 'public com.xpn.xwiki.plugin.query.XWikiQuery createQueryFromRequest(java.lang.String)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearch(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearch(java.lang.String, java.lang.String, com.xpn.xwiki.plugin.query.XWikiCriteria)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearch(java.lang.String, java.lang.String, java.lang.String, com.xpn.xwiki.plugin.query.XWikiCriteria)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearchColumns(java.lang.String, com.xpn.xwiki.plugin.query.XWikiQuery)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearchColumns(java.lang.String, java.lang.String, com.xpn.xwiki.plugin.query.XWikiQuery)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearchOrder(java.lang.String, com.xpn.xwiki.plugin.query.XWikiQuery)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String displaySearchOrder(java.lang.String, java.lang.String, com.xpn.xwiki.plugin.query.XWikiQuery)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.util.List search(com.xpn.xwiki.plugin.query.XWikiQuery)' has been removed
com.xpn.xwiki.api.XWiki: Method 'public java.lang.String searchAsTable(com.xpn.xwiki.plugin.query.XWikiQuery)' has been removed
com.xpn.xwiki.doc.DeletedFilesystemAttachment: Class com.xpn.xwiki.doc.DeletedFilesystemAttachment removed
com.xpn.xwiki.doc.FilesystemAttachmentContent: Class com.xpn.xwiki.doc.FilesystemAttachmentContent removed
com.xpn.xwiki.doc.ListAttachmentArchive: Class com.xpn.xwiki.doc.ListAttachmentArchive removed
com.xpn.xwiki.doc.MutableDeletedFilesystemAttachment: Class com.xpn.xwiki.doc.MutableDeletedFilesystemAttachment removed
com.xpn.xwiki.store.AttachmentArchiveDeleteRunnable: Class com.xpn.xwiki.store.AttachmentArchiveDeleteRunnable removed
com.xpn.xwiki.store.AttachmentArchiveSaveRunnable: Class com.xpn.xwiki.store.AttachmentArchiveSaveRunnable removed
com.xpn.xwiki.store.AttachmentContentStreamProvider: Class com.xpn.xwiki.store.AttachmentContentStreamProvider removed
com.xpn.xwiki.store.FilesystemAttachmentRecycleBinStore: Class com.xpn.xwiki.store.FilesystemAttachmentRecycleBinStore removed
com.xpn.xwiki.store.FilesystemAttachmentStore: Class com.xpn.xwiki.store.FilesystemAttachmentStore removed
com.xpn.xwiki.store.FilesystemAttachmentVersioningStore: Class com.xpn.xwiki.store.FilesystemAttachmentVersioningStore removed
com.xpn.xwiki.store.HibernateTransaction: Class com.xpn.xwiki.store.HibernateTransaction removed
com.xpn.xwiki.store.XWikiHibernateTransaction: Class com.xpn.xwiki.store.XWikiHibernateTransaction removed
org.xwiki.workspace.WorkspaceManagerException: Class org.xwiki.workspace.WorkspaceManagerException removed

Get Connected