Release Notes for XWiki Enterprise 4.0 Milestone 1
This is the first milestone of the XWiki Enterprise 4.0 version (Roadmap). This release brings reduced document database id collision and quite a few improvements and bug fixes.
New and Noteworthy (since XWiki Enterprise 3.5 version)
Extension Manager improvements
Extension Manager
- Added possibility to choose on which wiki to install an extension
- When installing/uninstalling extension or any other background job, the result of the job executing is stored on the filesystem so that it can be reviewed later. There is no UI to access it yet but it's always possible to access the saved file on filesystem directly.
XWiki Repository
- Added a button to update an imported extension
- It's now possible to extend an Extension sheet with custom informations. For example http://extensions.xwiki.org adds "Bundled with" and "Compatibility" fields.
For developers
Extension Manager moved to commons
Everything not specifically related to XWiki is now part of xwiki-commons. That means that anyone can get all Extension Manager features (easy live JAR installation/uninstallation from remote repositories, dependency management, etc.) in any Java application.
Classloader module moved to commons
Mostly been moved as Extension Manager dependency but also useful on it own as a tool to dynamically add new URLs in a classloader at runtime.
New Job module
The code to execute a task in background and provide related progress and isolated log has been extracted from Extension Manager and is now in its own module.
Component related improvements
Role moved from Class to Type
In order to support parameterized role like DocumentReferenceResolver<String>, all the APIs of ComponentManager and Component descriptors have been changed to take Type instead of Class. All the old APIs are still available and working, but have been deprecated.
ComponentRole is deprecated
You should now use @Role instead of @ComponentRole. The difference is that when using @Role the generic parameters will be taken into account as part of the role while with @ComponentRole the role stays the Class of the component role so be careful when you do this change, it might break everything if you don't want to take into account parameters (that's why a new annotation has been introduced instead of changing the behavior of ComponentRole).
References resolver/serializer and Provider now support parameter type as part of the role
This mean that declaring or injecting a such component no longer require any hint unless you want to provide/inject a variant for the same type.
Here are some example. Instead of:
@Named("reference/default")
private DocumentReferenceResolver<EntityReference> resolver
@Inject
@Named("reference/current")
private DocumentReferenceResolver<EntityReference> resolver
@Inject
@Named("sometypeprovider")
private Provider<SomeType> resolver
you will write
private DocumentReferenceResolver<EntityReference> resolver
@Inject
@Named("current")
private DocumentReferenceResolver<EntityReference> resolver
@Inject
private Provider<SomeType> resolver
All reference resolver and serializer provide static variables with the Type for both String and EntityReference. For example you can write:
Bug fixes and improvements
- XE-1096 The attachment selector should also work with the /edit/ action in 'Inline form' edit mode
- XE-1105 Default class sheet doesn't display correctly the class title
- XWIKI-7411 Cannot import a XAR containing %3A in its file name
- XWIKI-6305 Keep the current user in the administration application when editing user details
- XWIKI-7462 Improve the Profile breadcrumb to be more user friendly
- XWIKI-7484 Write a log line in the console instructing the user to open XWiki in a browser
See the full list of JIRA issues fixed in this release.
For Developers
- We added some new ColorThemes variables: $theme.fieldGradientColor, $theme.buttonPrimaryGradientColor, $theme.buttonSecondaryGradientColor, $theme.panelHeaderGradientColor, $theme.panelCollapsedGradientColor, $theme.menuGradientColor, $theme.menuContentBackgroundColor, $theme.menuContentLinkColor, $theme.menuContentGradientColor, $theme.submenuContentBackgroundColor
Upgrades
The following dependencies have been upgraded:
- commons-codec 1.6
- commons-configuration 1.8
- commons-io 2.1
- commons-net 3.1
- HyperSQL 2.2.8
- Infinispan 5.1.1
- Junit 4.10
- Maven Clover plugin 3.1.4
- Selenium 2.20
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
- 10.0.1
- Chrome
- 17
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
Migration of database IDs
You need to enable database migration (xwiki.store.migration=1) to upgrade existing databases to the new identifier format.
In case of interruption, the migration procedure could be restarted by restarting XWiki, and it will continue from where it has been interrupted.
If you have custom mapped classes used externally, be aware that all internal identifier are now full 64bits longs.
General Notes
You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.
API Breakages
The following APIs were modified since version 3.5:
org.xwiki.component.manager.ComponentManager: Method 'public org.xwiki.component.descriptor.ComponentDescriptor getComponentDescriptor(java.lang.reflect.Type, java.lang.String)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public java.util.List getComponentDescriptorList(java.lang.reflect.Type)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public boolean hasComponent(java.lang.reflect.Type)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public boolean hasComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public java.lang.Object lookupComponent(java.lang.reflect.Type)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public java.lang.Object lookupComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public java.util.List lookupList(java.lang.reflect.Type)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public java.util.Map lookupMap(java.lang.reflect.Type)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public void unregisterComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
org.xwiki.component.manager.ComponentManager: Method 'public void unregisterComponent(org.xwiki.component.descriptor.ComponentDescriptor)' has been added to an interface
org.xwiki.component.annotation.DefaultComponentDependencyFactory: Method 'protected java.lang.Class getFieldRole(java.lang.reflect.Field)' has been removed