Hide last authors
Ecaterina Moraru (Valica) 1.1 1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
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.
7 <insert description of release here>
Ecaterina Moraru (Valica) 1.3 9 = New and Noteworthy (since XWiki 7.0) =
Ecaterina Moraru (Valica) 1.1 10
Ecaterina Moraru (Valica) 1.3 11 [[Full list of issues fixed and Dashboard for 7.1>>http://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=13193]].
Ecaterina Moraru (Valica) 1.1 12
Ecaterina Moraru (Valica) 1.7 13 == Extension Manager ==
Ecaterina Moraru (Valica) 1.1 14
Ecaterina Moraru (Valica) 1.9 15 === Diff View Summary ===
Ecaterina Moraru (Valica) 1.7 16
Ecaterina Moraru (Valica) 1.5 17 Since [[XWiki 7.0RC1>>ReleaseNotes.ReleaseNotesXWiki70RC1||anchor="HExtensionDiffView"]] you can view the local changes that have been made to the wiki pages of an installed extension. In this release we have improved the diff view by adding a summary that will help you navigate the changes.
Ecaterina Moraru (Valica) 1.1 18
Ecaterina Moraru (Valica) 1.6 19 {{image reference="ReleaseNotesXWiki71M1@extensionDiffViewSummary.png"/}}
Ecaterina Moraru (Valica) 1.5 20
Ecaterina Moraru (Valica) 1.11 21 === Extension History ===
23 The [[Extension Manager Application>>extensions:Extension.Extension Manager Application]] has a new section that shows the history of the extension-related actions (e.g. install, uninstall, repair, etc.) offering support for selective export, import and replay of history records. This basically means that an administrator can:
25 * keep track of the extensions that are installed/uninstalled on his wiki (see who performed the action and when, in reverse chronological order, most recent first)
26 * perform a couple of actions (e.g. install/upgrade a group of extensions) on a single wiki and then replay those actions on multiple wikis
28 {{image reference="ReleaseNotesXWiki71RC1@extensionHistorySources.png"/}}
Ecaterina Moraru (Valica) 1.5 30 See the [[Extension Manager Application>>extensions:Extension.Extension Manager Application||anchor="HChanges"]] for more details.
Ecaterina Moraru (Valica) 1.7 32 == Solr Search ==
Ecaterina Moraru (Valica) 1.5 33
Ecaterina Moraru (Valica) 1.15 34 * We worked on making the search UI responsive on small screens. On mobile phones the list of search facets is now collapsed above the search results and the user can toggle it with a tap. We improved the way the search results of type Object and Object Property are displayed (check the result title and location / breadcrumb). We switched to using the icon themes for the search result icons and we also fixed some small spacing and alignment issues introduced by the migration from the old Colibri skin to the new Flamingo skin. Last but not least, we worked on refreshing the search UI without reloading the entire page when the user sorts the search results, uses the pagination or drills down the results using the search facets. (((
Ecaterina Moraru (Valica) 1.7 35
Ecaterina Moraru (Valica) 1.6 36 {{image reference="ReleaseNotesXWiki71M1@searchPageMobile.png"/}}
Ecaterina Moraru (Valica) 1.5 37
Ecaterina Moraru (Valica) 1.15 38 )))
39 * It's now possible to disable highlighting and faceting which are very slow tasks. Can be controlled directly from the search UI or from the Main.SolrSearchConfig document. (((
Ecaterina Moraru (Valica) 1.12 40
Ecaterina Moraru (Valica) 1.11 41 {{image reference="ReleaseNotesXWiki71RC1@solr_options.png"/}}
Ecaterina Moraru (Valica) 1.15 43 )))
Ecaterina Moraru (Valica) 1.5 45 See the [[Solr Search Application>>extensions:Extension.Solr Search Application]] documentation for more details.
Ecaterina Moraru (Valica) 1.7 47 == Watchlist ==
Ecaterina Moraru (Valica) 1.5 48
49 * The WatchList application now uses the new Mail API instead of the old and deprecated Mail Plugin.
50 * The WatchList Realtime notification option has been reworked and the previous performance penalty has been removed.
51 * A new option was added to Watch a page that was just shared by mail directly from the email's body.(((
Ecaterina Moraru (Valica) 1.6 52 {{image reference="ReleaseNotesXWiki71M1@share-footer-actions-watch.png"/}}
Ecaterina Moraru (Valica) 1.5 53 )))
Ecaterina Moraru (Valica) 1.11 54 * The realtime watchlist messages are now handled separately from the schedules (hourly, daily, weekly) notifications. We have a separate template for them and, because of this, can now display them in a more user-friendly way and they can be threaded/grouped by your email client by the document they occurred in. For more information and screenshots, please see the [[documentation>>extensions:Extension.Watchlist Application||anchor="HRealtimenotifications"]].(((
Ecaterina Moraru (Valica) 1.5 55
Ecaterina Moraru (Valica) 1.11 56 {{image reference="ReleaseNotesXWiki71RC1@watchlistRealtimeChangesMailConversation.png"}}{{/image}}
57 )))
Ecaterina Moraru (Valica) 1.10 58 * Running multiple XWiki instances on the same machine is now possible without affecting WatchList's realtime email threading/grouping. See the [[documentation>>extensions:Extension.Watchlist Application||anchor="HMultipleXWikiinstancesonthesamemachine"]] for more details.
Ecaterina Moraru (Valica) 1.7 60 See the [[Watchlist Application>>extensions:Extension.Watchlist Application]] documentation for more details.
Ecaterina Moraru (Valica) 1.10 62 == Flavors ==
64 {{warning}}
65 This feature is experimental and not bundled in XWiki by default. However, you can install and try it, but only for test purpose.
66 {{/warning}}
Ecaterina Moraru (Valica) 1.14 68 * In the future, XWiki will offer different Flavors. A Flavor is a collection of applications. When you install a Flavor, you get a wiki fully configured for a use-case. In this release, we have implemented the ability to chose a Flavor when you create a new wiki. (((
Ecaterina Moraru (Valica) 1.10 69 {{image reference="ReleaseNotesXWiki71M2@createwiki-flavors.png" width="50%"/}}
70 )))
Ecaterina Moraru (Valica) 1.14 72 * If no default distribution is configured, [[Distribution Wizard will now let you select the flavor to install>>platform:Features.DistributionWizard||anchor="HFlavor"]]. (((
Ecaterina Moraru (Valica) 1.11 73
74 {{image reference="ReleaseNotesXWiki71RC1@dw-flavor-step1.png"/}}
Ecaterina Moraru (Valica) 1.14 75 )))
Ecaterina Moraru (Valica) 1.11 76
Ecaterina Moraru (Valica) 1.10 77 See the [[Flavor Module>>extensions:Extension.Flavor Module]] documentation for more details.
Ecaterina Moraru (Valica) 1.16 79 == Debug mode ==
Ecaterina Moraru (Valica) 1.10 80
81 It's now possible to display various information about what happens during a request like the time spent on each step and sub steps.
Ecaterina Moraru (Valica) 1.11 82 The debug performance tree has been made a bit more dynamic to be able to open/close nodes.
Ecaterina Moraru (Valica) 1.10 83
Ecaterina Moraru (Valica) 1.13 84 {{image reference="ReleaseNotesXWiki71RC1@elapsedtimetree2.png"/}}
Ecaterina Moraru (Valica) 1.10 85
86 == Miscellaneous ==
Ecaterina Moraru (Valica) 1.5 88 * The Script Macro has been improved to [[return any type of value even no binding is used to output content>>extensions:Extension.Script Macro||anchor="HReturn"]].
89 * The default Java version triggered as dependency for the Debian packages is not Java 8
90 * In the [[extensions:Extension.Administration Application]], when you change the space you are administrating, you don't lose the current section anymore (if the current section exists in that space).(((
Ecaterina Moraru (Valica) 1.6 91 {{image reference="ReleaseNotesXWiki71M1@administration-change-space.png" width="50%"/}}
Ecaterina Moraru (Valica) 1.5 92 )))
93 * In edit mode, Password fields do not display the obfuscation placholder ({{{*******}}}) anymore when the password value is empty. For example this removes the confusion when editing the Mail Admin UI and users were thinking that the SMTP Server password was set.
94 * Not existing document won't end up in the document cache anymore. That mean request lots of not existing document won't ditch "real" documents from the cache anymore.
95 * In [[extensions:Extension.App Within Minutes Application]], the newly created applications don't have 'App Within Minutes' as parent, but the home page of the current wiki and their home page title doesn't contain the word 'Home' any more.
Ecaterina Moraru (Valica) 1.11 96 * The default document cache size has been increased from 100 to 500 elements
97 * Minor visual consistency improvement of the tag cloud header of the LiveTable
Ecaterina Moraru (Valica) 1.1 98
Ecaterina Moraru (Valica) 1.3 99 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+%227.1%22&tempMax=1000]] fixed in this release.
Ecaterina Moraru (Valica) 1.1 100
101 = For Developers =
Ecaterina Moraru (Valica) 1.17 103 == Trigger Prototype Event Listeners from jQuery ==
Ecaterina Moraru (Valica) 1.1 104
Ecaterina Moraru (Valica) 1.17 105 The event listeners registered from Prototype are now notified when a custom XWiki event is fired using the jQuery API.
Ecaterina Moraru (Valica) 1.1 106
Ecaterina Moraru (Valica) 1.17 107 {{code language="js"}}
108 // Prototype (old code that you don't have time to rewrite)
109 document.observe('xwiki:dom:updated', function(event) {
110 event.memo.elements.each(function(element) {
111 // Do something.
112 });
113 });
114 ...
115 // jQuery (new code, in a different file/page)
116 require(['jquery', 'xwiki-events-bridge'], function($) {
117 $(document).trigger('xwiki:dom:updated', {'elements': $('.some-container').toArray()});
118 });
119 {{/code}}
121 See the [[developer's guide>>platform:DevGuide.JavaScriptAPI||anchor="HBridgingcustomXWikieventsbetweenPrototypeandjQuery"]] for more details.
123 == Integration tests for JavaScript with Jasmine + RequireJS + WebJars ==
125 Using Jasmine, we have written a few integration tests for JavaScript code that uses AMD (RequireJS) and that has dependencies packaged as Webjars. We found out that the Jasmine Maven Plugin has support for both [[AMD>>http://searls.github.io/jasmine-maven-plugin/amd-support.html]] and [[WebJars>>http://searls.github.io/jasmine-maven-plugin/webjars-support.html]]. You can check out this [[commit>>https://github.com/xwiki/xwiki-platform/commit/a65618beeacb6c36aa5e6de178d7a495b6e18879]] to see how we configured the plugin in case you want to write similar tests for your extension or module.
Ecaterina Moraru (Valica) 1.18 127 == Mail API Improvements ==
Ecaterina Moraru (Valica) 1.17 128
Ecaterina Moraru (Valica) 1.18 129 * Send prepared mime message to multiple users as independent message. A new mime message cloning factory (hint "message") is available to be used with iterator factories. It duplicates a given source message as is, to allow sending it to multiple users as independent messages. See [[Example 5>>extensions:Extension.Mail Sender API||anchor="HExample5:SendapreparedMimeMessagetoalistofUsersandGroups"]] of the documentation for a sample.
130 * Mail API has been slightly modified to fix a bug when waiting for all mails to have been processed (the ##waitForProcessing()## wasn't really waiting!). As a consequence calls to ##MailResult.waitTillProcessed(long timeout)## and ##MailResult.isProcessed()## have been replaced by calls to ##MailStatusResult.waitTillProcessed(long timeout)## and ##MailStatusResult.isProcessed()##. Note that for backward compatibility reason the scripting API still supports the old API (but it's deprecated and you should move your code to use the new API).
131 * Mail Status Store API has been refactored to provides ordered result based on any status fields. A new method also ease loading a single status for a given messageId.
132 * When evaluating Velocity in Mail Templates, the Execution Context used is a clone of the one that was available when the ##send*(...)## method was called. Thus all Velocity bindings that were present are available from your Mail Template.
Ecaterina Moraru (Valica) 1.17 133
Ecaterina Moraru (Valica) 1.18 134 == Job Progress Improvements ==
136 It's now possible to associate message to each step of the progress. Also a new API have been added to make easier to notify about progress in scripts.
137 See http://extensions.xwiki.org/xwiki/bin/view/Extension/Job+Module#HNotifyaboutprogress for more details.
139 The progress is now a tree of step with an associated message and elapsed time for each one which can be retrieved during or after the progress is done. It's also automatically serialized in jobs statuses.
141 == Script oriented advanced extension search API ==
143 A new script oriented API has been added to use advanced extension search possibilities introduced in 7.0. See [[extensions:Extension.Extension Script Module||anchor="HSearch"]].
145 == Record and Replay Extension Actions ==
147 The [[Extension Module>>extensions:Extension.Extension Script Module]] has a new script service to access the extension history and to replay recorded history actions. The extension history records the extension related jobs (e.g. install, uninstall, etc.) along with the decisions taken by the user during the job execution (e.g. merge conflicts, delete unused pages). This means for instance that you can replay an upgrade without the need to handle again the merge conflicts.
149 The recording is performed by listening to the [[job events>>extensions:Extension.Job Module||anchor="HEvents"]] fired during the execution of an extension action, including the new ##QuestionAskedEvent## and ##QuestionAnsweredEvent## introduced in this release.
Ecaterina Moraru (Valica) 1.4 151 {{comment}}
Ecaterina Moraru (Valica) 1.1 152 == Deprecated and Retired projects ==
154 <description of deprecated and retired projects>
Ecaterina Moraru (Valica) 1.4 155 {{/comment}}
Ecaterina Moraru (Valica) 1.1 156
Ecaterina Moraru (Valica) 1.8 157 == Miscellaneous ==
Ecaterina Moraru (Valica) 1.17 159 * The XAR plugin's ##verify## mojo has been [[improved to allow passing a list of regexes to identify content and technical pages>>dev:Community.XARPlugin]]. For example:(((
160 {{code language="xml"}}
161 <plugin>
162 <groupId>org.xwiki.commons</groupId>
163 <artifactId>xwiki-commons-tool-xar-plugin</artifactId>
164 ...
165 <configuration>
166 ...
167 <!-- Consider all pages named *Translations as content pages by default -->
168 <contentPages>
169 <contentPage>.*Translations\.xml</contentPage>
170 </contentPages>
171 <!-- The EditTranslations page is not a Translation page and thus not a content page! -->
172 <technicalPages>
173 <technicalPage>EditTranslations\.xml</technicalPage>
174 </technicalPages>
175 </configuration>
176 </plugin>
177 {{/code}}
178 )))
179 * New ##$services.rendering.escape($content, $syntax)## method to escape XWiki syntax. See [[the documentation>>extensions:Extension.Rendering Module||anchor="HRenderingScriptService"]].
180 * The HTML5 renderer is now bundled in XWiki Enterprise.
181 * Added a new ##objectPolicy=updateOrCreate## parameter to the save action that allows editing and creating objects in one request. For more details, see [[the documentation>>platform:DevGuide.Standard URL Format||anchor="HParameter:objectPolicy"]].
182 * It is now possible to select the output syntax of a skin, in order to use the correct renderer.
183 * Ability to [[register a custom Resource Type>>extensions:Extension.Resource API||anchor="HAddinganewResourceTypeHandler"]].
184 * The WebJar integration now registers a ##webjar## URL type using a [[Resource Handler>>extensions:Extension.Resource API]] (it was reusing the ##bin## URL type before). The new WebJAR URL format is:(((
185 {{code language="none"}}
186 http://<server>/<context path>/webjars/<path/to/resource>[?version=<version>&evaluate=true|false]
187 {{/code}}
Ecaterina Moraru (Valica) 1.8 188
Ecaterina Moraru (Valica) 1.17 189 Note that you should use the [[exposed Script Service method to compute a WebJAR URL>>extensions:Extension.WebJars Integration]].
190 )))
191 * The mime type of uploaded attachment is now automatically stored in the database and won't be recalculated each time it's asked. Also a new API has been introduced in ##com.xpn.xwiki.doc.XWikiAttachment## to change it if needed.
192 * The ConfigurableClass mechanism now supports adding field hints / descriptions. See the [[documentation>>extensions:Extension.Administration Application||anchor="HFieldsyoucandefine"]].
193 * The ##xwiki-platform-legacy-crypto-script## legacy module has been removed as it was conflicting with the Bouncy Castle 1.52 upgrade and we considered that there was little chance that this module was used anywhere in any extension. If by chance (so to speak) you were using it, you'd need to use the newer ##xwiki-platform-crypto-script## module and rebuild your extension with it.
194 * Added advanced search support to ##org.xwiki.extension.repository.ExtensionRepositoryManager##
195 * The Velocity macros from the ##Main.SolrSearch## page have been moved to a separate page, ##Main.SolrSearchMacros##, which should ease the creation of a custom search page (e.g. if you want reuse some macros and to overwrite others).
196 * Added callable support to JobProgressManager. See [[extensions:Extension.Job Module||anchor="HNotifyaboutprogress"]].
Ecaterina Moraru (Valica) 1.18 197 * Extension upgrade plan job now support checking specific list of installed extensions (instead of the top level installed extensions)
198 * You can now [[disable the automatic start of Distribution Wizard>>platform:Features.DistributionWizard||anchor="HDisabletheautomaticstartofDistributionWizard"]] with two new options.
199 * It's possible to disable minification from xwiki.properties configuration file. Set ##debug.minify## to ##false##.
Ecaterina Moraru (Valica) 1.17 200
Ecaterina Moraru (Valica) 1.1 201 == Upgrades ==
203 The following dependencies have been upgraded:
Ecaterina Moraru (Valica) 1.17 205 * [[httpclient and httpcore 4.4.1>>http://jira.xwiki.org/browse/XCOMMONS-778]]
206 * [[Groovy 2.4.3>>http://jira.xwiki.org/browse/XCOMMONS-779]]
207 * [[logback 1.1.3>>http://jira.xwiki.org/browse/XCOMMONS-781]]
208 * [[cssparser 0.9.15>>http://jira.xwiki.org/browse/XCOMMONS-782]]
209 * [[JGroups 3.6.3>>http://jira.xwiki.org/browse/XWIKI-11980]]
210 * [[slf4j 1.7.12>>http://jira.xwiki.org/browse/XCOMMONS-786]]
211 * [[Quartz 2.2.1>>http://jira.xwiki.org/browse/XWIKI-6465]]
212 * [[commons-lang3 3.4>>http://jira.xwiki.org/browse/XCOMMONS-789]]
213 * [[Maven 3.3.3>>http://jira.xwiki.org/browse/XCOMMONS-769]]
214 * [[Bouncy Castle 1.52>>http://jira.xwiki.org/browse/XCOMMONS-794]]
215 * [[Tika 1.8>>http://jira.xwiki.org/browse/XCOMMONS-793]]
216 * [[Infinispan 7.1.1>>http://jira.xwiki.org/browse/XWIKI-12042]]
217 * [[Jython 2.7.0>>http://jira.xwiki.org/browse/XWIKI-12040]]
218 * [[Lucene and Solr 4.10.4>>http://jira.xwiki.org/browse/XWIKI-12044]]
219 * [[sisu-guice 3.2.6>>http://jira.xwiki.org/browse/XCOMMONS-796]]
220 * [[org.eclipse.sisu.plexus to 0.3.1>>http://jira.xwiki.org/browse/XCOMMONS-795]]
Ecaterina Moraru (Valica) 1.18 221 * [[Less4j 1.11.0>>http://jira.xwiki.org/browse/XWIKI-12000]]
222 * [[Infinispan 7.2.1>>http://jira.xwiki.org/browse/XWIKI-12097]]
223 * [[Bootstrap 3.3.4>>http://jira.xwiki.org/browse/XWIKI-11999]]
224 * [[Bootswatch 3.3.4+1>>http://jira.xwiki.org/browse/XWIKI-12100]]
225 * [[reflections 0.9.10>>http://jira.xwiki.org/browse/XCOMMONS-808]]
226 * [[Infinispan 7.2.2>>http://jira.xwiki.org/browse/XWIKI-12138]]
Ecaterina Moraru (Valica) 1.1 227
228 = Translations =
230 The following translations have been updated:
Ecaterina Moraru (Valica) 1.17 232 {{language codes="de,fr,lv"/}}
Ecaterina Moraru (Valica) 1.1 233
Ecaterina Moraru (Valica) 1.3 234 {{comment}}
Ecaterina Moraru (Valica) 1.1 235 = Tested Browsers & Databases =
237 {{include reference="TestReports.ManualTestReportTemplateSummary"/}}
Ecaterina Moraru (Valica) 1.3 238 {{/comment}}
Ecaterina Moraru (Valica) 1.1 239
Ecaterina Moraru (Valica) 1.3 240 {{comment}}
241 = Performances tests compared to 6.4.4 =
Ecaterina Moraru (Valica) 1.1 242
243 <a summary of the comparison with latest super stable version>
245 More details on <link to the test report>.
Ecaterina Moraru (Valica) 1.3 246 {{/comment}}
Ecaterina Moraru (Valica) 1.1 247
248 = Known issues =
250 * [[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]]
252 = Backward Compatibility and Migration Notes =
254 == General Notes ==
256 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.
Ecaterina Moraru (Valica) 1.3 258 {{comment}}
259 == Issues specific to XWiki 7.1 ==
Ecaterina Moraru (Valica) 1.1 260
261 <issues specific to the project>
Ecaterina Moraru (Valica) 1.3 262 {{/comment}}
Ecaterina Moraru (Valica) 1.1 263
Ecaterina Moraru (Valica) 1.19 264 == Loading JavaScript from WebJars with RequireJS ==
266 [[WebJars integration>>extensions:Extension.WebJars Integration]], available since 6.0M1, allows us to use JavaScript code that has been packaged as JAR and which has been included in the XWiki WAR or installed as an extension. Until this version the URL used to access a resource from a WebJar was looking like this:
268 {{code language="none"}}
269 /xwiki/bin/webjars/resources/path?value=angularjs/1.2.11/angular.js
270 {{/code}}
272 The file path was specified in the query string. As a consequence, if you wanted to load a JavaScript file from a WebJar using RequireJS you would have written:
274 {{code language="js"}}
275 require(["$services.webjars.url('angularjs', 'angular.js')"], function() {
276 ...
277 });
278 {{/code}}
280 Note that the **'.js'** extension had to be included because RequireJS doesn't add it automatically if the URL has a query string. Starting with this version, the WebJar URLs look like this:
282 {{code language="none"}}
283 http://<server>/<context path>/webjars/<path/to/resource>[?version=<version>&evaluate=true|false]
284 {{/code}}
286 Note that the resource path is not included in the query string any more. This means you need to update the "require" calls:
288 {{code language="js"}}
289 require(["$services.webjars.url('angularjs', 'angular')"], function() {
290 ...
291 });
292 {{/code}}
294 Otherwise RequireJS will attempt to load "angular.js.js". **BUT** note that even with the new URL format there are still cases when the WebJar URLs have a query string: e.g. when the resource must be evaluated. In this case you need to keep the ".js" extension:
296 {{code language="js"}}
297 require(["$!services.webjars.url('org.xwiki.platform:xwiki-platform-tree-webjar',
298 'require-config.min.js', {'evaluate': true})"], function() {
299 ...
300 });
301 {{/code}}
303 == Mail API changes ==
305 The young mail API has been refactored to provide better and more detailed error reporting.
307 The MailState enumeration has been extended to report more detailed mail state (##prepare_success##, ##prepare_error##, ##send_success##, ##send_error## and ##send_fatal_error##). The MailListener interface has been extended to provide more detailed event. Now each mail batch should use new independent listener. The listener receive the batch identifier of its own batch when the mail preparation starts (###onPrepareBegin()##), and have to keep it for all subsequent events. Independent success and error events for both the prepare and send phases are provided for each message (###onPrepareMessageSuccess()##, ###onPrepareMessageError()##, ###onSendMessageSuccess()##, ###onSendMessagError()##). Moreover, premature interruption of the prepare phase is caught and reported (###onPrepareFatalError##). Inability of the send phase to retrieve a message for sending is also explicitly reported (###onSendMessageFatalError()##).
309 There is now more than one message state representing an error, therefore, the MailStatusResult interface has been extended with a ###getAllError()## method to retrieve all message status in error. Moreover, the ###getTotalMailCount()# may represent a partial total in case of failure of the prepare phase. In that case, it represents the number of mails sent to the send phase. As a consequence, ###isProcessed()# and ###waitTillProcess()# now considerer the batch to be processed when all successfully prepared mail has been sent, or failed to be prepared or sent.##
311 The mail API is now tracking individual message based on the standard Message-ID headers, which made it fully compliant with RFC-822 WRT the mail identification. Caller that want to specify custom Message-ID may do so by extending MimeMessage to preserve the Message-ID of the message. Caller is also responsible to ensure that different messages are identified by unique message identifier.
313 {{warning}}
314 Sending multiple messages with the same Message-ID is no more supported since it does not respect the RFC-822 standard.
315 {{/warning}}
317 Reusing the same Message-ID for retrying a failed message is allowed and will be tracked by the same status if the batch identifier is also reused.
Ecaterina Moraru (Valica) 1.1 319 == API Breakages ==
Ecaterina Moraru (Valica) 1.3 321 The following APIs were modified since XWiki 7.0.1:
Ecaterina Moraru (Valica) 1.1 322
Ecaterina Moraru (Valica) 1.20 323 * Add support for advanced search(((
Ecaterina Moraru (Valica) 1.1 324 {{code language="none"}}
Ecaterina Moraru (Valica) 1.20 325 org.xwiki.extension.repository.ExtensionRepositoryManager: Method 'public org.xwiki.extension.repository.result.IterableResult search(org.xwiki.extension.repository.search.ExtensionQuery)' has been added to an interface
Ecaterina Moraru (Valica) 1.1 326 {{/code}}
Ecaterina Moraru (Valica) 1.20 327 )))
Ecaterina Moraru (Valica) 1.21 328 * Add support for named steps(((
Ecaterina Moraru (Valica) 1.20 329 {{code language="none"}}
Ecaterina Moraru (Valica) 1.21 330 org.xwiki.job.event.status.JobProgress: Method 'public org.xwiki.job.event.status.JobProgressStep getCurrentStep()' has been added to an interface
331 org.xwiki.job.event.status.JobProgress: Method 'public org.xwiki.job.event.status.JobProgressStep getRootStep()' has been added to an interface
332 org.xwiki.job.event.status.JobProgressManager: Method 'public void endStep(java.lang.Object)' has been added to an interface
333 org.xwiki.job.event.status.JobProgressManager: Method 'public void pushLevelProgress(java.lang.Object)' has been added to an interface
334 org.xwiki.job.event.status.JobProgressManager: Method 'public void startStep(java.lang.Object)' has been added to an interface
335 org.xwiki.job.event.status.JobProgressManager: Method 'public void startStep(java.lang.Object, java.lang.String)' has been added to an interface
336 org.xwiki.job.event.status.JobProgressManager: Method 'public void startStep(java.lang.Object, java.lang.String, java.lang.String, java.lang.Object[])' has been added to an interface
337 org.xwiki.job.event.status.JobProgressManager: Method 'public void startStep(java.lang.Object, org.xwiki.logging.Message)' has been added to an interface
Ecaterina Moraru (Valica) 1.20 338 {{/code}}
339 )))
Ecaterina Moraru (Valica) 1.21 340 * Add new helper(((
Ecaterina Moraru (Valica) 1.20 341 {{code language="none"}}
Ecaterina Moraru (Valica) 1.21 342 org.xwiki.job.event.status.JobProgressManager: Method 'public java.lang.Object call(java.util.concurrent.Callable, java.lang.Object)' has been added to an interface
343 org.xwiki.job.event.status.JobProgressManager: Method 'public java.lang.Object call(java.util.concurrent.Callable, int, java.lang.Object)' has been added to an interface
Ecaterina Moraru (Valica) 1.20 344 {{/code}}
345 )))
Ecaterina Moraru (Valica) 1.21 346 * Add a new method to this young API(((
Ecaterina Moraru (Valica) 1.20 347 {{code language="none"}}
Ecaterina Moraru (Valica) 1.21 348 org.xwiki.skin.Skin: Method 'public org.xwiki.rendering.syntax.Syntax getOutputSyntax()' has been added to an interface
Ecaterina Moraru (Valica) 1.20 349 {{/code}}
350 )))
351 * Not really been removed but now return Object. Breaks code building that use this method but should be ok for runtime.(((
352 {{code language="none"}}
353 com.xpn.xwiki.XWiki: Method 'public com.xpn.xwiki.render.XWikiRenderingEngine getRenderingEngine()' has been removed
354 {{/code}}
355 )))
356 * Not used since a long time now (XWikiRenderingEngine is a component) and impossible to implement it without a trigerring most of the old rendering engine.(((
357 {{code language="none"}}
358 com.xpn.xwiki.XWiki: Method 'public void setRenderingEngine(com.xpn.xwiki.render.XWikiRenderingEngine)' has been removed
359 {{/code}}
360 )))
Ecaterina Moraru (Valica) 1.21 361 * Young API. Added handling of URL parameters(((
Ecaterina Moraru (Valica) 1.20 362 {{code language="none"}}
Ecaterina Moraru (Valica) 1.21 363 org.xwiki.url.ExtendedURL: In method 'public ExtendedURL(java.net.URL)' the number of arguments has changed
Ecaterina Moraru (Valica) 1.20 364 {{/code}}
365 )))
366 * Never supposed to be an API(((
367 {{code language="none"}}
368 com.xpn.xwiki.plugin.scheduler.StatusListener: Class com.xpn.xwiki.plugin.scheduler.StatusListener removed
369 {{/code}}
370 )))
Ecaterina Moraru (Valica) 1.21 371 * Young API. Remove useless Session argument since the MimeMessage will be given a valid Session when it's deserialized from the mail content store for sending.(((
Ecaterina Moraru (Valica) 1.20 372 {{code language="none"}}
Ecaterina Moraru (Valica) 1.21 373 org.xwiki.mail.MimeMessageFactory: In method 'public java.lang.Object createMessage(javax.mail.Session, java.lang.Object, java.util.Map)' the number of arguments has changed
Ecaterina Moraru (Valica) 1.20 374 {{/code}}
375 )))
Ecaterina Moraru (Valica) 1.21 376 * Young API. Allow load a single message status and added sorting capabilities for multiple statuses.(((
377 {{code language="none"}}
378 org.xwiki.mail.MailStatusStore: In method 'public java.util.List load(java.util.Map, int, int)' the number of arguments has changed
379 org.xwiki.mail.MailStatusStore: Return type of method 'public java.util.List load(java.util.Map, int, int)' has been changed to org.xwiki.mail.MailStatus
380 org.xwiki.mail.MailStatusStore: Method 'public java.util.List load(java.util.Map, int, int, java.lang.String, boolean)' has been added to an interface
381 {{/code}}
382 )))
383 * Young API. Large refactoring for adding the ability to register new URL Resource Types(((
384 {{code language="none"}}
385 org.xwiki.resource.AbstractResourceReference: Parameter 2 of 'public void addParameter(java.lang.String, java.lang.String)' has changed its type to java.lang.Object
386 org.xwiki.resource.ResourceReference: Parameter 2 of 'public void addParameter(java.lang.String, java.lang.String)' has changed its type to java.lang.Object
387 org.xwiki.resource.ResourceReferenceHandlerManager: Method 'public boolean canHandle(java.lang.Object)' has been added to an interface
388 org.xwiki.resource.ResourceReferenceResolver: Removed field TYPE_URL
389 org.xwiki.resource.ResourceReferenceResolver: In method 'public org.xwiki.resource.ResourceReference resolve(java.lang.Object, java.util.Map)' the number of arguments has changed
390 org.xwiki.resource.ResourceType: Method 'public org.xwiki.resource.ResourceType fromString(java.lang.String)' has been removed
391 {{/code}}
392 )))
393 * Young API. Rename MimeMessageWrapper into ScriptMimeMessage (not a wrapper anymore). Velocity scripts are not affected by the change.(((
394 {{code language="none"}}
395 org.xwiki.mail.script.MailSenderScriptService: Return type of method 'public org.xwiki.mail.script.MimeMessageWrapper createMessage(java.lang.String, java.lang.Object, java.util.Map)' has been changed to org.xwiki.mail.script.ScriptMimeMessage
396 org.xwiki.mail.script.MailSenderScriptService: Return type of method 'public org.xwiki.mail.script.MimeMessageWrapper createMessage(java.lang.String, java.lang.Object)' has been changed to org.xwiki.mail.script.ScriptMimeMessage
397 org.xwiki.mail.script.MailSenderScriptService: Return type of method 'public org.xwiki.mail.script.MimeMessageWrapper createMessage()' has been changed to org.xwiki.mail.script.ScriptMimeMessage
398 org.xwiki.mail.script.MailSenderScriptService: Return type of method 'public org.xwiki.mail.script.MimeMessageWrapper createMessage(java.lang.String, java.lang.String)' has been changed to org.xwiki.mail.script.ScriptMimeMessage
399 org.xwiki.mail.script.MailSenderScriptService: Return type of method 'public org.xwiki.mail.script.MimeMessageWrapper createMessage(java.lang.String, java.lang.String, java.lang.String)' has been changed to org.xwiki.mail.script.ScriptMimeMessage
400 org.xwiki.mail.script.MimeMessageWrapper: Class org.xwiki.mail.script.MimeMessageWrapper removed
401 {{/code}}
402 )))
403 * Young API. Change of API to fix bug in waitForProcessin(). Scripting API has not been broken, only the Java API has(((
404 {{code language="none"}}
405 org.xwiki.mail.MailResult: Method 'public boolean isProcessed()' has been removed
406 org.xwiki.mail.MailResult: Method 'public void waitTillProcessed(long)' has been removed
407 org.xwiki.mail.MailStatusResult: Method 'public long getProcessedMailCount()' has been added to an interface
408 org.xwiki.mail.MailStatusResult: Method 'public long getSize()' has been removed
409 org.xwiki.mail.MailStatusResult: Method 'public long getTotalMailCount()' has been added to an interface
410 org.xwiki.mail.MailStatusResult: Method 'public boolean isProcessed()' has been added to an interface
411 org.xwiki.mail.MailStatusResult: Method 'public void waitTillProcessed(long)' has been added to an interface
412 {{/code}}
413 )))
414 * Young API. Class moved to the "script" package. Script service usage is unchanged.(((
415 {{code language="none"}}
416 org.xwiki.mail.MailStorageScriptService: Class org.xwiki.mail.MailStorageScriptService removed
417 {{/code}}
418 )))

Get Connected