Last modified by Thomas Mortagne on 2017/03/24

Hide last authors
Thomas Mortagne 9.1 1 (% style="font-size:x-large;" %)
2 {{warning}}Before upgrading to this version, be sure to have a working backup of your database(s).{{/warning}}
Denis Gervalle 5.1 3
Thomas Mortagne 1.1 4 {{box cssClass="floatinginfobox" title="**Contents**"}}
5 {{toc/}}
6 {{/box}}
7
8 This is the first milestone of the XWiki Enterprise 4.0 version ([[Roadmap>>Main.Roadmap]]). This release brings reduced document database id collision and quite a few improvements and bug fixes.
9
10 = New and Noteworthy (since XWiki Enterprise 3.5 version) =
11
12 == Extension Manager improvements ==
13
Denis Gervalle 4.1 14 === Extension Manager ===
Thomas Mortagne 1.1 15
Thomas Mortagne 3.1 16 * Added possibility to choose on which wiki to install an extension
17 * 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.
18
Denis Gervalle 4.1 19 === XWiki Repository ===
Thomas Mortagne 3.1 20
21 * Added a button to update an imported extension
22 * It's now possible to extend an Extension sheet with custom informations. For example http://extensions.xwiki.org adds "Bundled with" and "Compatibility" fields.
23
Thomas Mortagne 1.1 24 = For developers =
25
Thomas Mortagne 1.2 26 == Extension Manager moved to commons ==
27
Sergiu Dumitriu 10.3 28 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.
Thomas Mortagne 1.2 29
30 == Classloader module moved to commons ==
31
Thomas Mortagne 2.1 32 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.
Thomas Mortagne 1.2 33
Thomas Mortagne 3.1 34 == New Job module ==
35
Sergiu Dumitriu 10.3 36 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.
Thomas Mortagne 3.1 37
Thomas Mortagne 1.1 38 == Component related improvements ==
39
Denis Gervalle 4.1 40 === Role moved from Class to Type ===
Thomas Mortagne 1.1 41
Sergiu Dumitriu 10.3 42 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.
Thomas Mortagne 1.1 43
44 === ComponentRole is deprecated ===
45
Sergiu Dumitriu 10.3 46 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).
Thomas Mortagne 1.1 47
48 === References resolver/serializer and Provider now support parameter type as part of the role ===
49
50 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.
51
52 Here are some example. Instead of:
53
54 {{code language="java"}}
55 @Inject
56 @Named("reference/default")
57 private DocumentReferenceResolver<EntityReference> resolver
58
59 @Inject
60 @Named("reference/current")
61 private DocumentReferenceResolver<EntityReference> resolver
62
63 @Inject
64 @Named("sometypeprovider")
65 private Provider<SomeType> resolver
66 {{/code}}
67
68 you will write
69
70 {{code language="java"}}
71 @Inject
72 private DocumentReferenceResolver<EntityReference> resolver
73
74 @Inject
75 @Named("current")
76 private DocumentReferenceResolver<EntityReference> resolver
77
78 @Inject
79 private Provider<SomeType> resolver
80 {{/code}}
81
82 All reference resolver and serializer provide static variables with the Type for both String and EntityReference. For example you can write:
83
84 {{code language="java"}}
85 DocumentReferenceResolver<EntityReference> resolver = componentManager.lookupComponent(DocumentReferenceResolver.TYPE_REFERENCE, "current")
86 {{/code}}
87
88 = Bug fixes and improvements =
89
Thomas Mortagne 14.1 90 * [[XE-1096>>https://jira.xwiki.org/browse/XE-1096]] The attachment selector should also work with the ##/edit/## action in 'Inline form' edit mode
91 * [[XE-1105>>https://jira.xwiki.org/browse/XE-1105]] Default class sheet doesn't display correctly the class title
92 * [[XWIKI-7411>>https://jira.xwiki.org/browse/XWIKI-7411]] Cannot import a XAR containing ##%3A## in its file name
93 * [[XWIKI-6305>>https://jira.xwiki.org/browse/XWIKI-6305]] Keep the current user in the administration application when editing user details
94 * [[XWIKI-7462>>https://jira.xwiki.org/browse/XWIKI-7462]] Improve the Profile breadcrumb to be more user friendly
95 * [[XWIKI-7484>>https://jira.xwiki.org/browse/XWIKI-7484]] Write a log line in the console instructing the user to open XWiki in a browser
Thomas Mortagne 1.1 96
Thomas Mortagne 14.1 97 See the full list of [[JIRA issues>>https://jira.xwiki.org/sr/jira.issueviews:searchrequest-printable/temp/SearchRequest.html?jqlQuery=project+in+%28XCOMMONS%2C+XRENDERING%2C+XWIKI%2C+XE%2C+XEM%29+and+status+%3D+Closed+and+resolution+%3D+Fixed+and+fixVersion+%3D+%224.0-milestone-1%22&tempMax=1000]] fixed in this release.
Thomas Mortagne 1.1 98
99 = For Developers =
100
Ecaterina Moraru (Valica) 11.1 101 * 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##
Thomas Mortagne 1.1 102
103 == Upgrades ==
104
105 The following dependencies have been upgraded:
106
Thomas Mortagne 7.1 107 * commons-codec 1.6
108 * commons-configuration 1.8
109 * commons-io 2.1
110 * commons-net 3.1
111 * HyperSQL 2.2.8
112 * Infinispan 5.1.1
113 * Junit 4.10
114 * Maven Clover plugin 3.1.4
115 * Selenium 2.20
Thomas Mortagne 1.1 116
117 = Tested Browsers =
118
Thomas Mortagne 9.2 119 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>>dev:Community.BrowserSupportStrategy]]):
120
Ecaterina Moraru (Valica) 11.1 121 {{browser name="firefox" version="10.0.1"/}}
Thomas Mortagne 10.1 122
Ecaterina Moraru (Valica) 11.1 123 {{browser name="chrome" version="17"/}}
Thomas Mortagne 10.1 124
Thomas Mortagne 1.1 125
126 = Known issues =
127
Thomas Mortagne 14.1 128 * [[Bugs we know about>>https://jira.xwiki.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=category+%3D+%22Top+Level+Projects%22+AND+issuetype+%3D+Bug+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC]]
Thomas Mortagne 1.1 129
130 = Test Report =
131
132 You can check the [[manual test report>>TestReports.ManualTestReportXE40M1]] to learn about what was tested and the results on various browsers.
133
134 = Backward Compatibility and Migration Notes =
135
Denis Gervalle 4.1 136 == Migration of database IDs ==
Thomas Mortagne 1.1 137
Denis Gervalle 4.1 138 You need to enable database migration (//xwiki.store.migration=1//) to upgrade existing databases to the new identifier format.
139
140 {{info}}
Sergiu Dumitriu 10.3 141 This is a major migration affecting almost all rows and relations in the database. I may takes a while before the wiki respond to your initial request when you are migrating a large database. The initial request may even timeout but the database migration continues in the background.
Denis Gervalle 4.1 142 {{/info}}
143
Thomas Mortagne 1.1 144 {{warning}}
Sergiu Dumitriu 10.3 145 Avoid interrupting the database migration process, you can check the current progress of the database migration in the console output or the log file. The progress may be slow, so be patient during document id and object id conversion.
Thomas Mortagne 1.1 146 {{/warning}}
147
Sergiu Dumitriu 10.3 148 In case of interruption, the migration procedure could be restarted by restarting XWiki, and it will continue from where it has been interrupted.
Denis Gervalle 4.1 149
150 {{warning}}
Sergiu Dumitriu 10.3 151 We have taken many precautions to provide a reliable migration procedure, but due to the large changes it made, and this release being an unstable one, you should be really careful and ensure that you keep an appropriate backup until you are sure that your data has been properly migrated.
Denis Gervalle 4.1 152 {{/warning}}
153
154 If you have custom mapped classes used externally, be aware that all internal identifier are now full 64bits longs.
155
156 == General Notes ==
157
158 {{info}}
159 If you're running in a multiwiki setup you'll also need to define the property //xwiki.store.migration.databases// in your //xwiki.cfg// file if you want to explicitly name some databases to be migrated as the default is now to migrate all databases. Database that are not migrated could not be accessed.
160 {{/info}}
161
Thomas Mortagne 1.1 162 You may also want to [[import the default wiki XAR>>Main.Download]] in order to benefit from all the improvements listed above.
163
164 {{warning}}
165 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.
166 {{/warning}}
167
168 == API Breakages ==
169
170 The following APIs were modified since version 3.5:
171
Thomas Mortagne 8.1 172 {{code language="none"}}
Thomas Mortagne 9.1 173 org.xwiki.component.descriptor.ComponentRole: Method 'public java.lang.reflect.Type getRoleType()' has been added to an interface
174 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
175 org.xwiki.component.manager.ComponentManager: Method 'public java.util.List getComponentDescriptorList(java.lang.reflect.Type)' has been added to an interface
176 org.xwiki.component.manager.ComponentManager: Method 'public boolean hasComponent(java.lang.reflect.Type)' has been added to an interface
177 org.xwiki.component.manager.ComponentManager: Method 'public boolean hasComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
178 org.xwiki.component.manager.ComponentManager: Method 'public java.lang.Object lookupComponent(java.lang.reflect.Type)' has been added to an interface
179 org.xwiki.component.manager.ComponentManager: Method 'public java.lang.Object lookupComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
180 org.xwiki.component.manager.ComponentManager: Method 'public java.util.List lookupList(java.lang.reflect.Type)' has been added to an interface
181 org.xwiki.component.manager.ComponentManager: Method 'public java.util.Map lookupMap(java.lang.reflect.Type)' has been added to an interface
182 org.xwiki.component.manager.ComponentManager: Method 'public void unregisterComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
183 org.xwiki.component.manager.ComponentManager: Method 'public void unregisterComponent(org.xwiki.component.descriptor.ComponentDescriptor)' has been added to an interface
184 org.xwiki.component.annotation.DefaultComponentDependencyFactory: Method 'protected java.lang.Class getFieldRole(java.lang.reflect.Field)' has been removed
Thomas Mortagne 8.1 185 {{/code}}

Get Connected