Wiki source code of Release Notes for XWiki 7.2

Version 15.1 by Guillaume Delhumeau on 2015/09/23

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 This is the release notes for [[XWiki Commons>>http://commons.xwiki.org]], [[XWiki Rendering>>http://rendering.xwiki.org]], [[XWiki Platform>>http://platform.xwiki.org]] and [[XWiki Enterprise>>http://enterprise.xwiki.org]]. They share the same release notes as they are released together and have the same version.
6
7 <insert description of release here>
8
9 = New and Noteworthy (since XWiki 7.1) =
10
11 [[Full list of issues fixed and Dashboard for <version>>>http://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=<fill id here>]].
12
13 == Nested Pages ==
14
15 It's now possible to create wiki pages inside other wiki pages. More specifically we've decided to drop the concept of Space in the UI (it's still there at the API/platform level) and instead, to replace it with the concept of Nested Pages.
16
17 We've also decided to drop the concept of Parent/Child relationship since it was too complex for end users to have 2 hierarchies: the Space/Page hierarchy and the Parent/Child hierarchy. The Parent/Child hierarchy also had limitations: you couldn't inherit page permissions for example. Thus the idea is to have a single hierarchy based on Nested Pages.
18
19 Advantages of Nested Pages:
20
21 * The URL reflects the page hierarchy
22 * Finer-grained control: Ability to set permissions at each level
23 * Generally speaking, a nicer and simpler way to organize your content hierarchically
24 * Moving and Deleting pages updates the hierarchy
25
26 Terminology:
27
28 * **Nested Page** (a.k.a **Non-Terminal Page**): This is a wiki page that can have children pages. Technically a Nested Page is implemented as a Nested Space (i.e. a **WebHome** page).
29 * **Non-Nested Page** (a.k.a **Terminal Page**): This a wiki page that cannot have children pages. Applications and script can create Terminal Pages. Advanced Users will also be able to create Terminal Pages from the UI. Standard Users will only be able to create Nested Pages.
30 * **Nested Space**: A Space which has another Space as parent. As mentioned above, a Nested Page is technically implemented as a Nested Space. You will used the term Nested Space when speaking technically about XWiki APIs for example but when talking about UI you should favor using the term Nested Page instead.
31
32 For more information, see [[Content Organization>>platform:Features.ContentOrganization||anchor="HHistory"]].
33
34 == Script right ==
35
36 A new Script Right has been added to allow controlling who has the right to write Scripts. Specifically anyone with Edit rights can edit a page and write a Script in it. However, when the page is rendered the script will only execute if the last author of the page has the Script right.
37
38 {{image reference="ReleaseNotesXWiki72M1@scriptright.png"/}}
39
40 Example when the author of a script doesn't have the Script right:
41
42 {{image reference="ReleaseNotesXWiki72M1@scriptRightsErrorNotAllowed.png"/}}
43
44 The Script Right is set to DENY by default, meaning that if you do not have it explicitly, you will not be able to execute the scripts that you write with your user account.
45
46 However, for backward-compatibility reasons, the standard XWiki Enterprise distribution comes with the Script Right being allowed for all users at the main wiki level, so that, unless you (as an Admin) explicitly revoke the right for some users or explicitly deny it, they will be able to execute the scripts they wrote, just like before.
47
48 {{image reference="ReleaseNotesXWiki72M2@scriptRightsExplicitlyAllowedInXWikiPreferences.png"/}}
49
50 == Hiding of the Parent-Child Relationship ==
51
52 Following our decision to drop the Parent-Child relationship (see above), it's now been turned off by default in favor of Nested Pages.
53
54 Note that it's possible to go back to the previous behavior, in which the Breadcrumb was following the Parent/Child relationship, by setting the ##core.hierarchyMode## property to ##parentchild## in the ##xwiki.properties## configuration file.
55
56 === New Breadcrumb ===
57
58 The Breadcrumb has been reworked to reflect the location of a Page in the reference hierarchy. For example for a Page "CEO" inside a Page "Boarding" inside a Page "Management" inside a Page "Staff" you would have the following Breadcrumb:
59
60 {{image reference="ReleaseNotesXWiki72M2@breadcrumb.png"/}}
61
62 === New Index Tree ===
63
64 The Index Tree is now using the [[reworked Document Tree Macro>>extensions:Extension.Document Tree Macro]] and is thus honoring the Nested Pages hierarchy. For example:
65
66 {{image reference="ReleaseNotesXWiki72M2@indextree.png"/}}
67
68 === Updated Edit Mode ===
69
70 In Edit mode, the ability to change the Parent has been removed by default since we're now honoring the Nested Pages hierarchy. For example:
71
72 {{image reference="ReleaseNotesXWiki72M2@editmode.png"/}}
73
74 == Miscellaneous ==
75
76 <insert misc user stuff and important bug fix descriptions here in a list, when they are too small to warrant a section by themselves - Change the version in the URL below!>
77
78 * When a space home page has an empty title (and the space home page doesn't have a sheet or the sheet doesn't control the title) then the displayed title is now the space name instead of 'WebHome'.
79 * The [[Document Tree Macro>>extensions:Extension.Document Tree Macro]] has a new parameter called ##showSpaceAsDocument## which allows you to merge the space nodes with the space home page nodes.
80 * The list of available template providers is now sorted by document full name.
81 * The [[Orphaned Pages>>extensions:Extension.Index Application||anchor="HAllorphanedDocuments"]] tab from the [[Document Index>>extensions:Extension.Index Application||anchor="HAccessingtheIndexes"]] is now displayed only when [[the Parent-Child Hierarchy Mode>>ReleaseNotesXWiki72M2||anchor="HHidingoftheParent-ChildRelationship"]] is enabled (which is not the case by default).
82 * Import UI move to new standard tree(((
83 {{image reference="ReleaseNotesXWiki72M2@import.png"/}}
84 )))
85 * The size of the Job status cache is now configurable. See ##job.statusCacheSize## property in ##xwiki.properties## files.
86 * The Spaces macro (which lists all Spaces) is now working fine when there are Nested Spaces (some links were failing).
87 * The LiveTable macro is now working fine when there are Nested Spaces (some links were failing).
88 * The Solr Search is now able to correctly find nested documents. The Search UI still needs to be fixed though (some links may be broken and the document location/paths are not correctly displayed) but otherwise the results should be accurate.
89
90 See the [[full list of JIRA issues>>http://jira.xwiki.org/sr/jira.issueviews:searchrequest-printable/temp/SearchRequest.html?jqlQuery=project+in+%28XCOMMONS%2C+XRENDERING%2C+XWIKI%2C+XE%29+and+status+%3D+Closed+and+resolution+%3D+Fixed+and+fixVersion+%3D+%22<version>%22&tempMax=1000]] fixed in this release.
91
92 = For Developers =
93
94 == Nested Spaces ==
95
96 Since Nested Spaces were already planned and supported in APIs like ##DocumentReference## there are not too many changes for those who were using recent APIs but there is still some and here are the main ones.
97
98 === Space Reference instead of Space name ===
99
100 The heart of the implementation is that the field that used to contain the unique document space now contain the possibly Nested Space Reference. In practice it means that:
101
102 * "##.##" (dot), "##:##" (colon) and "##\##" (baskslash) characters, which are part of a Space name will now be escaped (using the "##\##" character) in the ##space## (##XWD_WEB##) field from the Document's table in the Database. For example a space named ##Space:with.special\char## will be stored as ##{{{Space\:with\.special\\char}}}##.
103 * Same as for the database, the ##XWikiDocument/Document#getSpace()## methods now return a serialized Reference to the Space instead of what used to be the unique Space name (basically it return what's in the database). Same logic for ##XWikiDocument#setSpace()##. Those field have been deprecated a long time ago but they are still used in lots of places...
104 * Various APIs are also affected by this Space name to Space Reference input change:
105 ** ##XWiki#getSpaceDocsName## methods (both in the public and private XWiki API)
106 ** All the default ##XWikiURLFactory## implementation methods accepting a Space as parameter have been modified to accept a serialized Space Reference. Extensions/code implementing ##XWikiURLFactory## (or extending classes implementing ##XWikiURLFactory## such as ##XWikiServletURLFactory##) will need to be modified to handle nested spaces passed in the ##space## parameter of the various APIs. Here's how to parse Spaces passed as a String:(((
107 {{code language="java"}}
108 private EntityReferenceResolver<String> relativeEntityReferenceResolver =
109 Utils.getComponent(EntityReferenceResolver.TYPE_STRING, "relative");
110 ...
111 or
112 ...
113 @Inject
114 @Named("relative")
115 private EntityReferenceResolver<String> relativeEntityReferenceResolver;
116 ...
117 private List<String> extractSpaceNames(String spaces)
118 {
119 List<String> spaceNames = new ArrayList<>();
120 // Parse the spaces list into Space References
121 EntityReference spaceReference = this.relativeEntityReferenceResolver.resolve(spaces, EntityType.SPACE);
122 for (EntityReference reference : spaceReference.getReversedReferenceChain()) {
123 spaceNames.add(reference.getName());
124 }
125 return spaceNames;
126 }
127 {{/code}}
128 )))
129 ** Extensions/code implementing ##ExportURLFactoryActionHandler## will also need to be modified to handle nested Spaces passed in the ##space## parameter.
130 * Extensions/code implementing ##EntityReferenceSerializer## or ##DocumentReferenceResolver## must now handle Nested Spaces (in the past they were already supposed to handle Nested Spaces but since it was not used they could take shortcuts and it wasn't visible. It's now going to fail, see [[XWIKI-12191>>http://jira.xwiki.org/browse/XWIKI-12191]]).
131
132 === Space separator properly taken into account ===
133
134 The Reference syntax specification was already indication that "##.##" was supposed to be escaped in the space part of the Reference but it was not really taken into account so not escaping it was not making any difference. This is now fixed in the various standard String Reference resolvers so a Reference that don't follow the specification and did not escaped the "##.##" in the space part will be cut is several nested spaces. Anything that was serialized with one of the standard serializers was properly escaped so not worry here, the issue will be more for hand written or hardcoded String References.
135
136 === New XAR format ===
137
138 To support exporting/importing nested spaces some changes has been made to the XAR format. The format remain upward and downward compatible (except that you won't get nested spaces in your < 7.2 instance obviously).
139
140 Two new attributes has been added to the ##<xwikidoc>## root XML element
141
142 * ##reference##: the complete local Reference of the document in standard Reference format. ##<web>## and ##<name>## are deprecated (but still set). ##<web>## keep containing the (unescaped) space name when there is only one space and will contain the space Reference when there is several (when imported in a < 7.2 instance a document exported from a nested space will end up in a space having as name the space reference).
143 * ##locale##: the locale of the document. ##<language>## is deprecated. It was not technically needed in the context of nested spaces but it makes having the Reference as attribute more consistent. It also make getting all the entries from a new format XAR easier and faster since document space and name would be placed anywhere in the document.
144
145 === REST module ===
146
147 * The REST module now supports Nested Spaces. Example of url to access the page ##A.B.C.MyPage##: ##/xwiki/rest/wikis/xwiki/spaces/A/spaces/B/spaces/C/pages/MyPage##.
148
149 === URL modules ===
150
151 The URL modules have been modified to support Nested Spaces. As a consequence the [[URL formats supported by the ##standard## URL scheme have been modified>>extensions:Extension.Standard URL API]].
152
153 === New Rename/Delete Jobs ===
154
155 New code has been developed to support Nested Documents/Nested Spaces and Script Services have been provided and they now run inside Jobs to better handle the fact that they are long-running operations.
156
157 However you can start to test this by using the following Script Services APIs:
158
159 * Copy a Space(((
160 {{code language="none"}}
161 #set ($source = $services.model.resolveSpace('Path.To.Source'))
162 #set ($destination = $services.model.resolveSpace('Path.To.New.Parent'))
163 $services.refactoring.copy($source, $destination).join()
164 {{/code}}
165 )))
166 * Copy a Space As(((
167 {{code language="none"}}
168 #set ($source = $services.model.resolveSpace('Path.To.Source'))
169 #set ($destination = $services.model.resolveSpace('Path.To.New.Name'))
170 $services.refactoring.copyAs($source, $destination).join()
171 {{/code}}
172 )))
173 * Move a Space(((
174 {{code language="none"}}
175 #set ($source = $services.model.resolveSpace('Path.To.Source'))
176 #set ($destination = $services.model.resolveSpace('Path.To.New.Parent'))
177 $services.refactoring.move($source, $destination).join()
178 {{/code}}
179 )))
180 * Move a Document(((
181 {{code language="none"}}
182 #set ($source = $services.model.resolveDocument('Path.To.Source.WebHome'))
183 #set ($destination = $services.model.resolveSpace('Path.To.New.Parent'))
184 $services.refactoring.move($source, $destination).join()
185 {{/code}}
186 )))
187 * Rename a Space(((
188 {{code language="none"}}
189 #set ($source = $services.model.resolveSpace('Path.To.Source'))
190 $services.refactoring.rename($source, 'NewName').join()
191 {{/code}}
192 )))
193 * Rename a Document(((
194 {{code language="none"}}
195 #set ($source = $services.model.resolveDocument('Path.To.Source.WebHome'))
196 $services.refactoring.rename($source, 'NewName').join()
197 {{/code}}
198 )))
199 * Delete a Document(((
200 {{code language="none"}}
201 #set ($source = $services.model.resolveDocument('Path.To.Source.WebHome'))
202 $services.refactoring.delete($source).join()
203 {{/code}}
204 )))
205 * Delete a Space(((
206 {{code language="none"}}
207 #set ($source = $services.model.resolveSpace('Path.To.Source'))
208 $services.refactoring.delete($source).join()
209 {{/code}}
210 )))
211 * Convert a Terminal Document to a Nested Document(((
212 {{code language="none"}}
213 #set ($source = $services.model.resolveDocument('Path.To.Page'))
214 $services.refactoring.convertToNestedDocument($source).join()
215 {{/code}}
216 )))
217 * Convert a Nested Document to a Terminal Document(((
218 {{code language="none"}}
219 #set ($source = $services.model.resolveDocument('Path.To.Source.WebHome'))
220 $services.refactoring.convertToTerminalDocument($source).join()
221 {{/code}}
222 )))
223
224 === New create action parameters and logic ===
225
226 The create action now accepts a ##spaceReference## parameter and a ##name## parameter, together with an optional ##tocreate=terminal## parameter (usable on non-terinal documents). The previous space parameters was not scalable in the context of Nested Spaces since it was just a top-level space name so it did not allow the creation of deeper space levels. More details are available in the [[create action's documentation>>platform:DevGuide.Standard URL Format||anchor="HAction:create"]].
227
228 These logic is now also available in the improved create UI, with the terminal pages option appearing only for advanced users and being checked or unchecked by default, depending on the type of the current document:
229 {{image reference="ReleaseNotesXWiki72M1@createUINestedDocuments.png"/}}
230
231 == New Reference-related APIs ==
232
233 Various new API around References has been introduced while adding support for nested spaces.
234
235 === Complete References Providers ===
236
237 Complete References Providers (for DocumentReference, SpaceReference and WikiReference) with default or ##current## hints. They allow getting complete Reference created from each default or current part of those references (for example in SpaceReference you end up with the space of the XWikiContext document and the XWikiContext wiki)
238
239 {{code language="java"}}
240 @Inject
241 Provider<DocumentReference> defaultDocumentReference;
242
243 @Inject
244 @Named("current")
245 Provider<DocumentReference> currentDocumentReference;
246 {{/code}}
247
248 === org.xwiki.model.reference.EntityReferenceProvider ===
249
250 ##org.xwiki.model.reference.EntityReferenceProvider## replaces ##org.xwiki.model.reference.EntityReferenceValueProvider##. It's essentially the same thing but with ##EntityReference## instead of string which allow getting multiple spaces when you ask for the current ##EntityType.SPACE## for example.
251
252 {{code language="java"}}
253 @Inject
254 EntityReferenceProvider provider;
255 {{/code}}
256
257 === Properly support any kind of References in getDocument and getURL ===
258
259 ##com.xpn.xwiki.XWiki#getDocument(EntityReference)## and ##com.xpn.xwiki.api.XWiki#getDocument(EntityReference)## support any kind of Reference properly (e.g. a Space Reference will return the space home page, an Object Reference will return the Object Document Reference, etc).
260
261 Same for ##com.xpn.xwiki.XWiki#getURL(EntityReference)## and ##com.xpn.xwiki.api.XWiki#getURL(EntityReference)##.
262
263 === New helpers in EntityReference ===
264
265 * ##boolean equals(EntityReference otherReference, EntityType to)##: same as equals but only take into account Reference parts up to the passed entity type (included)
266 * ##boolean equals(EntityReference otherReference, EntityType from, EntityType to)##: same as equals but only take into account Reference parts between passed entity types (included)
267 * ##boolean equalsNonRecursive(EntityReference otherReference)##: same as equals but does not take into account the parent
268
269 === New helpers in LocalDocumentReference ===
270
271 * ##LocalDocumentReference(String pageName, EntityReference spaceReference)##: allowed created a LocalDocumentReference from a Space Reference instead of just the space name
272
273 === org.xwiki.model.reference.SpaceReferenceResolver ===
274
275 New default ##String## and ##EntityReference## based SpaceReferenceResolver has been added. It's the same behavior then ##DocumentReferenceBehavior## but for spaces.
276
277 {{code language="java"}}
278 @Inject
279 SpaceReferenceResolver<String> stringResolver;
280
281 @Inject
282 SpaceReferenceResolver<EntityReference> referenceResolver;
283 {{/code}}
284
285 === New model Script Service helpers ===
286
287 * new help to escape an entity name according to default Reference syntax as in:(((
288 {{code language="velocity"}}
289 $services.model.escape('some.space:with\specialchars', 'SPACE')
290 {{/code}}
291
292 will print
293
294 {{code language="nonde"}}
295 some\.space\:with\\specialchars
296 {{/code}}
297 )))
298 * you can retrieve a node from an ##EntityReferenceTree## using its reference:(((
299 {{code language="velocity"}}
300 #set ($alice = $services.model.resolveDocument('wiki:Users.Alice.WebHome'))
301 #set ($bob = $services.model.resolveDocument('wiki:Users.Directory'))
302 #set ($tree = $services.model.toTree($alice, $bob))
303 #set ($usersNode = $tree.get($bob.lastSpaceReference))
304 {{/code}}
305 )))
306
307 === New components to generate REST URLs ===
308
309 * The component ##RestURLGenerator## has been added. Its role, in the long terme, is to generate a REST URL for any kind of EntityReference. It currently handles ##DocumentReference## and ##SpaceReference##.
310 * The corresponding script service has been added: ##$services.rest## with the method ##$services.rest.url($entityReference)##.
311
312 === Resolve nested spaces in JavaScript ===
313
314 {{code language="js"}}
315 var spaceReference = XWiki.Model.resolve('A.B.C', XWiki.EntityType.SPACE);
316 spaceReference.getReversedReferenceChain().map(function(entityReference) {
317 return entityReference.name;
318 }).join(' > ');
319 // Produces: A > B > C
320 {{/code}}
321
322 See the [[JavaScript API documentation>>platform:DevGuide.JavaScriptAPI||anchor="HWorkwithEntityReferences"]] for more details.
323
324 == New readonly XWikiContext provider ==
325
326 You can inject a new "readonly" XWikiContext the following way:
327
328 {{code language="java"}}
329 @Inject
330 @Named("readonly")
331 Provider<XWikiContext> roXWikiContextProvider;
332 {{/code}}
333
334 The difference with default provider is that the readonly one won't try to create a new XWikiContext and will return null if it can't find any. It's been introduce for some low level components that were used during XWikiContext creation but in general it should be used by any component that only search for some XWikiContext property that might be null even in a valid XWikiContext.
335
336 == New Space/XWikiSpace table ==
337
338 A [[new table dedicated to Spaces has been introduced>>platform:DevGuide.DatabaseSchema]], in order to have performant and scalable Space-related queries (like supporting getting paginated Space which is useful for the Document Tree macro for example).
339
340 == Queries improvement ==
341
342 === Allow executing complete SELECT queries ===
343
344 In HQL and XWQL it's now possible to execute full ##SELECT## queries without Programming Right as long as you follow some rules currently defined in ##com.xpn.xwiki.internal.store.hibernate.query.HqlQueryUtils##, which contains a list of the database field allowed in the SELECT clause. Namely:
345
346 * For the ##Document##/##XWikiDocument## table: ##fullName##, ##name##, ##space##, ##language##, ##defaultLanguage##, ##translation##, ##hidden##
347 * For the ##Space##/##XWikiSpace## table: ##reference##, ##name##, ##parent##, ##hidden##
348
349 This is also true for the Named Queries located in the ##queries.hbm.xml## file.
350
351 === New Secure Query ===
352
353 The right to execute or not some Query is now controlled by each ##org.xwiki.query.QueryExecutor##.
354
355 Anyone can ask the executor to check or ignore Right through the new ##org.xwiki.query.SecureQuery## extending ##org.xwiki.query.Query##:
356
357 * ##checkCurrentAuthor()##: indicate if the current author right should be checked
358 * ##checkCurrentUser()##: indicate if the result should be filtered based on current user Right (only implemented by SOLR right now)
359
360 == JS API Improvements ==
361
362 * It's now possible to create a Nested Spaces Reference using XWiki's Javascript API. For example:(((
363 {{code language="javascript"}}
364 // Construct a Nested Space reference
365 var reference = new XWiki.SpaceReference('wiki', ['space1', 'space2']);
366 expect(XWiki.Model.serialize(reference)).toEqual('wiki:space1.space2');
367 reference = new XWiki.DocumentReference('wiki', ['space1', 'space2'], 'page');
368 expect(XWiki.Model.serialize(reference)).toEqual('wiki:space1.space2.page');
369 // Construct a non-Nested Space reference
370 reference = new XWiki.SpaceReference('wiki', 'space');
371 expect(XWiki.Model.serialize(reference)).toEqual('wiki:space');
372 // Try passing non-valid space parameters
373 expect(function() {new XWiki.SpaceReference('wiki', [])}).toThrow('Missing mandatory space name or invalid type for: []');
374 expect(function() {new XWiki.SpaceReference('wiki', 12)}).toThrow('Missing mandatory space name or invalid type for: [12]');
375 {{/code}}
376 )))
377 * A new ##XWiki.EntityReference.equals()## method has been added. For example:(((
378 {{code language="javascript"}}
379 var reference1 = new XWiki.DocumentReference('wiki', ['space1', 'space2'], 'page');
380 var reference2 = new XWiki.DocumentReference('wiki', ['space1', 'space2'], 'page');
381 var reference3 = new XWiki.DocumentReference('wiki2', ['space1', 'space2'], 'page');
382 expect(reference1.equals(reference2)).toBe(true);
383 expect(reference1.equals(reference3)).toBe(false);
384 {{/code}}
385 )))
386 * A new ##XWiki.EntityReference.fromJSONObject(obejct)## has been added to create a Javascript ##XWiki.EntityReference## from a Java ##EntityReference## directly serialized as JSON:(((
387 {{code language="javascript"}}
388 var reference = XWiki.EntityReference.fromJSONObject(jsonText.evalJSON());
389 {{/code}}
390 )))
391 * A new ##XWiki.EntityReferenceTree## JS class has been added, which partially mimics the Java ##EntityReferenceTree## Class. It's still missing features though as it was introduced mostly to make it easier to manipulate a serialized Java ##EntityReferenceTree##.
392
393 == Updated Document Tree Macro ==
394
395 The [[Document Tree Macro>>extensions:Extension.Document Tree Macro]] now supports Nested Documents and Nested Spaces modes. Specifically, the following changes have been made:
396
397 * removed the ##showSpaceAsDocument## parameter (was introduced recently in 7.2M1)
398 * deprecated the ##showChildDocuments## parameter
399 * added the ##hierarchyMode## parameter with two supported values: ##reference## (default) and ##parentchild##
400
401 As a result, you can use the document tree macro like this:
402
403 * Nested Document Tree(((
404 {{code language="none"}}
405 {{documentTree/}}
406 {{/code}}
407 )))
408 * Nested Space + Page Tree(((
409 {{code language="none"}}
410 {{documentTree showSpaces="true" /}}
411 {{/code}}
412 )))
413 * Parent-Child Document Tree(((
414 {{code language="none"}}
415 {{documentTree hierarchyMode="parentchild" /}}
416 {{/code}}
417 )))
418 * Old Document Index Tree (i.e. Parent-Child mixed with space grouping)(((
419 {{code language="none"}}
420 {{documentTree hierarchyMode="parentchild" showSpaces="true" /}}
421 {{/code}}
422 )))
423
424 == Reference Scripting API for Nested Spaces ==
425
426 The Script API for Entity References has been updated with new APIs to support creating Nested Spaces references. For example:
427
428 {{code language="none"}}
429 {{velocity}}
430 $services.model.createDocumentReference("wiki", ["space1", "space2"], "page")
431 $services.model.createDocumentReference("wiki", ["space1", "space2"], "page", "default")
432 $services.model.createSpaceReference(["space1", "space2"], $services.model.createWikiReference("wiki"))
433 {{/velocity}}
434 {{/code}}
435
436
437 == Deprecated and Retired projects ==
438
439 * The [[OSCache-based Cache Extension>>extensions:Extension.Cache OSCache]] has been [[moved to ##xwiki-contrib##>>https://github.com/xwiki-contrib/xwiki-platform-cache-oscache]] since we've been using the Infinispan implementation for a while now and the XWiki Core developers don't intend to continue supporting the OSCache-based one (it can be maintained by the Community, by whoever's interested in supporting it).
440
441 == Upgrades ==
442
443 The following dependencies have been upgraded:
444
445 * [[httpclient 4.5>>http://jira.xwiki.org/browse/XCOMMONS-815]]
446 * [[cssparser 0.9.16>>http://jira.xwiki.org/browse/XCOMMONS-817]]
447 * [[less4j 1.12.0>>http://jira.xwiki.org/browse/XWIKI-12161]]
448 * [[Joda-Time 2.8.1>>http://jira.xwiki.org/browse/XWIKI-12159]]
449 * [[Bootstrap 3.3.5>>http://jira.xwiki.org/browse/XWIKI-12211]]
450 * [[Infinispan 7.2.3>>http://jira.xwiki.org/browse/XWIKI-12227]]
451 * [[HSQLDB 2.3.3>>http://jira.xwiki.org/browse/XE-1491]]
452 * [[JGroups 3.6.4>>http://jira.xwiki.org/browse/XWIKI-12215]]
453 * [[Groovy 2.4.4>>http://jira.xwiki.org/browse/XCOMMONS-831]]
454 * [[Tika 1.9>>http://jira.xwiki.org/browse/XWIKI-12274]]
455 * [[JRuby 1.7.21>>http://jira.xwiki.org/browse/XWIKI-12344]]
456 * [[Jackson 2.6.0>>http://jira.xwiki.org/browse/XCOMMONS-833]]
457 * [[Hibernate Validator 4.3.2>>http://jira.xwiki.org/browse/XWIKI-12365]]
458
459 == Miscellaneous ==
460
461 * Objects, attachments and the document's class are now clearly not considered content, but metadata. Thus, any change in these will set the document's (XWikiDocument) metadataDirty flag to true and not touch the document's contentDirty flag unless there is an actual change in the document's content or title fields. This is also in line with the original intent of the contentAuthor document field. The direct impact of this is that the contentAuthor field will be updated only when the content is changed and thus the programming/script rights of a document will be changed much less often than before and much less by accident.
462 * custom Maven properties which have a special meaning (like ##xwiki.extension.features##) are not ##duplicated## in Extension custom properties anymore
463 * standard fields names have been added to ##org.xwiki.extension.rating.RatingExtension##
464 * URL configuration now use default ConfigurationSource provider instead of only ##xwiki.properties## one which means it's possible to overwrite properties for each wiki among other things
465 * Added ability to set and change the URL scheme to use in the Execution Context. This allows code to dynamically change the generated URLs when Rendering a document (useful when performing an Export for example).
466 * Started a new ##filesystem## URL Scheme for exporting Resources to the filesystem and generating URLs to them (useful for the HTML Export for example). At the moment, only the ##webjars## Resource Type is using it and all other Resource Types are using the old ##XWikiURLFactory## class.
467 * A new DocumentModelBridge.getContentAuthorReference() method has been added to allow accessing the content author of a document without depending on oldcore.
468 * Deprecate XWiki.parseContent(...) since it is was misleading and outdated. Its documentation mentioned that the passed content is parsed as velocity code, but it was actually doing much more than that and had some unwanted side-effect. Instead, use the parse/renderer that is specific to the type of content you have. See more details in [[XWIKI-12299>>http://jira.xwiki.org/browse/XWIKI-12299]].
469 * A new script service is available to retrieve the status of a specified job or the status of the currently running job from a specified group. See the [[Job Module>>extensions:Extension.Job Module||anchor="HScriptService"]] documentation for details.
470 * Custom displayers are now executed with the Rights of the user who wrote them (i.e. author of the class document or content author of the displayer document), and not the Rights of the user who wrote the script that uses them (i.e. current context document's content author). See [[XWIKI-12306>>http://jira.xwiki.org/browse/XWIKI-12306]] for more details.
471 * In the [[Active Install Extension>>extensions:Extension.Active Installs Server Application]], a new Velocity Macro has been introduced to compute the number of Active Installs having a specific Extension. Example usage:(((
472 {{code language="none"}}
473 {{include reference="ActiveInstalls.ExtensionCount"/}}
474
475 {{velocity}}
476 #set ($extensionIds = [
477 'org.xwiki.contrib:xwiki-totem-application',
478 'jsimard:event-reporter-application',
479 'mouhb:likeapplication'
480 ])
481 |=Extension Id|=Count
482 #foreach($extensionId in $extensionIds)
483 #countActiveInstallsUsingExtension($extensionId $count)
484 |$extensionId|$count
485 #end
486 {{/velocity}}
487 {{/code}}
488 )))
489 * Better support of non-DOCUMENT ##EntityReferences## in ##DocumentReferenceConverter##. It now behaves like ##XWiki#getDocument(EntityReference)##
490 * The Copy/Rename/Delete UI actions are now using the [[Refactoring Module's Script Services>>extensions:Extension.Refactoring Module]].
491
492 = Translations =
493
494 The following translations have been updated:
495
496 {{language codes="none, none"/}}
497
498 = Tested Browsers & Databases =
499
500 {{include reference="TestReports.ManualTestReportTemplateSummary"/}}
501
502 = Performances tests compared to 6.4.5 =
503
504 There hasn't really been much performance work on this version so we get mostly the same result than in [[7.1 release note>>ReleaseNotesXWiki71]]. The important point here was to check if nested spaces ha much impact on performances.
505
506 {{display reference="test:Performances.Jetty HSQLDB single wiki 645 to 72" section="HSummary"/}}
507
508 More details on [[performance comparison on single wiki between 7.2 and 6.4.5>>test:Performances.Jetty HSQLDB single wiki 645 to 72]].
509
510 = Known issues =
511
512 * [[Bugs we know about>>http://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]]
513
514 = Backward Compatibility and Migration Notes =
515
516 == General Notes ==
517
518 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.
519
520 == Issues specific to XWiki 7.2 ==
521
522 === Nested spaces ===
523
524 See [[previous Nested spaces section>>||anchor="HNestedSpaces"]] for details on what changes in the way some API and the database are dealing with the Document Space.
525
526 Note that some existing Extensions are impacted and may break slightly: Extensions taking some user input and creating Spaces based on that will most likely display {{{"\."}}}, {{{"\:"}}} and {{{"\\"}}} in the UI. Unless they already clean the user input and remove ".", ":" and "\" characters. So for example if a user enter a Space name of "my.space":
527
528 * before 7.2: the Extension would create/display a Space named "my.space"
529 * after 7.2: the Extension will create/display a Space named "my\.space"
530
531 === URLs ===
532
533 In order to support Nested Documents and have the ability that typing a URL such as ##/A## will lead to ##A.WebHome## we have stopped supporting URLs that don't specify the ##view## action (when ##xwiki.showviewaction=1##). Thus URLs such as ##/xwiki/bin/Something## now need to be written as ##/xwiki/bin/view/Something##. If ##xwiki.showviewaction=0## then you can still write ##/xwiki/bin/<something>## provided that ##<something>## isn't equal to ##view##. If it is (you have a space named ##view##) then you need to use ##/xwiki/bin/view/view[...]##.
534
535 === Templates ===
536
537 All the templates specific to [[extensions:Extension.Colibri Skin]] had been moved to it. If your skin depends on some of these templates, you should set Colibri as parent of your skin.
538
539 == API Breakages ==
540
541 The following APIs were modified since XWiki 7.1:
542
543 {{code language="none"}}
544 <clirr output here>
545 {{/code}}

Get Connected