Version 15.4 by Marius Dumitru Florea on 2013/12/07

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 This is the release notes for [[XWiki Commons>>http://commokns.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 5.3 Milestone 2) =
10
11 [[Full list of issues fixed and Dashboard for 5.3>>http://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=11698]].
12
13 == Solr Search Facet Improvements ==
14
15 * We added a hint to explain the 'No language' value in the language search facet(((
16 {{image reference="search-languageFacet-noLanguageHint.png"/}}
17 )))
18 * We improved the way a custom interval is specified in the date search facet(((
19 {{image reference="searchDateFacet.png"/}}
20 )))
21 * We improved the 'Object Type' facet(((
22 {{image reference="searchClassFacet.png"/}}
23 )))
24
25 See the [[Solr Search Application>>extensions:Extension.Solr Search Application]] for more details.
26
27 == Import large XARs ==
28
29 It's possible to enable the use of new [[WikiStream>>doc:extensions:Extension.Wiki Stream Module]] framework in standard import action (used in the standard import UI for example). Among other things it allows importing a wiki XAR of pretty much any size.
30
31 [[WikiStream>>doc:extensions:Extension.Wiki Stream Module]] is too young to be enabled by default and will require heavy testing. In the meantime you can try it by uncommenting {{code}}#xwiki.action.import.xar.usewikistream=1{{/code}} at the end of xwiki.cfg file.
32
33 == Miscellaneous ==
34
35 * Added new configuration parameter for the Link Checker: ##rendering.transformation.linkchecker.excludedReferencePatterns## (See [[Reference documentation>>extensions:Extension.Link Checker Transformation]]).
36 * If you want to change the wiki owner or the prettyname of the wiki, you cannot go to the "Wiki" section of the Wiki Administration anymore since it's been removed for the moment due to some technical issue. Instead, go to the Wiki Index and then click on the "edit" action corresponding to the wiki for which to update the settings.
37 * When creating an empty wiki you now get the Distribution Wizard even when ##ALLINONE## upgrade is selected (this used to disable the Distribution Wizard on subwikis)
38
39 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%2C+XEM%29+and+status+%3D+Closed+and+resolution+%3D+Fixed+and+fixVersion+%3D+%225.3-rc-1%22&tempMax=1000]] fixed in this release.
40
41 = For Developers =
42
43 == Search for Documents Matching Specific Values in Multiple XObject Properties ==
44
45 Unlike a relational database, the Solr index has a single 'table'. So normally you index just one type of entity. Still, in XWiki you can search for documents, attachments, objects and object properties (see the 'Result Type' advanced search option). This is possible because we use a 'type' column in the index. So basically we index multiple types of entities, and we use the 'type' column to determine the type of entity an index row corresponds to. The entities are related though (the documents have objects and attachments, the objects have properties) and so you often need to put constraints on different entity types when performing a search (e.g. search for documents that have an object of a specific type with a property that matches a given value). In a relational database when you have the information spread in multiple places (tables) you do joins. [[Solr supports joins>>http://wiki.apache.org/solr/Join]] but the query syntax is complex and not as powerful as the SQL version. Plus, each join means ##index X index## where X is the cartesian product, which can be expensive if the index is very large.
46
47 In this version we removed the need to perform joins when searching for documents matching specific values in multiple XObject properties. We achieved this by indexing XObject data on the document rows also. Of course, this means the index will have redundant information (XObject data is duplicated on document and object rows), but we believe this is not a problem and the increase in the Solr index size pays off when you take into the accout the search speed and the simplified query syntax.
48
49 Here's a short summary of what we implemented:
50
51 * We're using an encoding scheme similar to the URL-encoding to support special characters in the Solr index field names. We didn't use directly the URL-encoding because '+' (plus) and '%' (percent) have special meaning in Solr query syntax. Also, we didn't want to encode Unicode letters.(((
52 {{code language="none"}}
53 E.g. "Somé Spâce.Bob's Claß" is encoded as "Somé$20Spâce.Bob$27s$20Claß"
54 {{/code}}
55 )))
56 * We wanted to be able to extract the class and property reference from a field name in order to display the location where the search text has been found. We couldn't use the default class / property reference serialization syntax because '\' and '^' have special meaning in the Solr query syntax. So we implemented a simple serialization syntax that uses only '.' as entity separator and the dot is escaped by repeating it.(((
57 {{code language="none"}}
58 E.g. "wiki:Some\.Space.My\.Class^color" is serialized as "wiki.Some..Space.My..Class.color"
59 {{/code}}
60 )))
61 * We added the following fields to a document's index:
62 ** ##object## : all types of objects found on the indexed document, e.g. ['Blog.BlogPostClass', 'XWiki.TagClass']
63 ** ##object.Space.Class## : collects the values from all the properties of ##Space.Class## objects found on the indexed document
64 ** ##property.Space.Class.propName## : indexes the values of ##Space.Class^propName## (multiple values if there are multiple objects of type ##Space.Class##)
65 * ##object.*## and ##property.*## are multilingual fields so they are indexed in multiple languages. We added support for dynamic aliases (for dynamic fields) so we can write:(((
66 {{code language="none"}}
67 object:Blog.BlogPostClass AND property.Blog.BlogPostClass.title:text AND object.XWiki.TagClass:news
68 {{/code}}
69
70 and it will be expanded into
71
72 {{code language="none"}}
73 object:Blog.BlogPostClass AND
74 (property.Blog.BlogPostClass.title_en:text OR property.Blog.BlogPostClass.title_fr:text OR ...) AND
75 (object.XWiki.TagClass_en:news OR object.XWiki.TagClass_fr:news OR ...)
76 {{/code}}
77
78 Note that Solr doesn't support dynamic fields as default fields, i.e. as fields that are matched when you search for free text (without field:value in the query). This is not a problem for the search results, as dynamic fields like ##object.*## and ##property.*## are copied and aggregated in ##objcontent## which is a default field. The issue is that we can't know what is exactly the XClass property that was matched by a free text search, we just know that the text was found inside an object.
79 )))
80 * We also added support for indexing non-string XObject properties based on their type. This means Boolean, Number (int, long, float, double) and Date properties are now correctly indexed (on document rows) and we can write something like:(((
81 {{code language="none"}}
82 property.Blog.BlogPostClass.publishDate:[NOW-1MONTH TO NOW]
83 {{/code}}
84 )))
85
86 === Faceting and Sorting on Object Properties ===
87
88 We added support for faceting and sorting on XObject properties. See the [[Solr Search Query API>>extensions:Extension.Solr Search Query API]] for details.
89
90 See also the [[Solr schema design>>design:Design.SolrSchema]] for the full list of fields that can be used in search queries.
91
92 == Miscellaneous ==
93
94 * You can now easily [[run functional tests using PhantomJS>>dev:Community.Testing||anchor="HSelenium2-basedFramework"]] by using ##-Dbrowser=*phantomjs##.
95
96 = Translations =
97
98 The following translations have been updated:
99
100 {{language codes="de, fr, lv, nl, ru"/}}
101
102 = Tested Browsers & Databases =
103
104 {{include reference="TestReports.ManualTestReportXWiki53RC1Summary"/}}
105
106 = Known issues =
107
108 * [[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]]
109
110 = Backward Compatibility and Migration Notes =
111
112 == General Notes ==
113
114 == General Notes ==
115
116 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.
117
118 == Issues specific to XWiki <version> ==
119
120 <issues specific to the project>
121
122 == API Breakages ==
123
124 The following APIs were modified since XWiki 5.2.1:
125
126 * Requesting a dependency without indicating the namespace does not really make sense. This interface is not really supposed to be implemented anyway.
127
128 {{code language="none"}}
129 org.xwiki.extension.ExtensionManager: Method 'public org.xwiki.extension.Extension resolveExtension(org.xwiki.extension.ExtensionDependency, java.lang.String)' has been added to an interface
130 {{/code}}
131
132 * Needed to filter search by namespace. This interface is not really supposed to be implemented anyway.
133
134 {{code language="none"}}
135 org.xwiki.extension.repository.InstalledExtensionRepository: Method 'public org.xwiki.extension.repository.result.IterableResult searchInstalledExtensions(java.lang.String, java.lang.String, int, int)' has been added to an interface
136 {{/code}}
137
138 * Young API. Not supposed to be implemented from outside.
139
140 {{code language="none"}}
141 org.xwiki.filter.xml.parser.XMLParserFactory: Method 'public javax.xml.stream.XMLEventWriter createXMLEventWriter(java.lang.Object, org.xwiki.filter.xml.XMLConfiguration)' has been added to an interface
142 org.xwiki.filter.xml.serializer.XMLSerializerFactory: Method 'public java.lang.Object createSerializer(java.lang.Class[], javax.xml.transform.Result, org.xwiki.filter.xml.XMLConfiguration)' has been added to an interface
143 {{/code}}
144
145 * Young API. Not supposed to be implemented from outside.
146
147 {{code language="none"}}
148 org.xwiki.filter.FilterDescriptorManager: Method 'public java.lang.Object createCompositeFilter(java.lang.ClassLoader, java.lang.Object[])' has been added to an interface
149 org.xwiki.filter.FilterDescriptorManager: Method 'public java.lang.Object createFilterProxy(java.lang.Object, java.lang.ClassLoader, java.lang.Class[])' has been added to an interface
150 {{/code}}
151
152 * Young API that has been refactored to introduce the new Resource module.
153
154 {{code language="none"}}
155 org.xwiki.url.AbstractXWikiURL: Class org.xwiki.url.AbstractXWikiURL removed
156 org.xwiki.url.URLCreationException: Class org.xwiki.url.URLCreationException removed
157 org.xwiki.url.UnsupportedURLException: Class org.xwiki.url.UnsupportedURLException removed
158 org.xwiki.url.XWikiEntityURL: Class org.xwiki.url.XWikiEntityURL removed
159 org.xwiki.url.XWikiURL: Class org.xwiki.url.XWikiURL removed
160 org.xwiki.url.XWikiURLFactory: Class org.xwiki.url.XWikiURLFactory removed
161 org.xwiki.url.XWikiURLManager: Class org.xwiki.url.XWikiURLManager removed
162 org.xwiki.url.XWikiURLSerializer: Class org.xwiki.url.XWikiURLSerializer removed
163 org.xwiki.url.XWikiURLType: Class org.xwiki.url.XWikiURLType removed
164 {{/code}}
165
166 * XWikiURL (now Resource) should only be in the Execution Context and not in the Request.
167
168 {{code language="none"}}
169 org.xwiki.container.servlet.ServletRequest: Method 'public org.xwiki.url.XWikiURL getURL()' has been removed
170 org.xwiki.container.servlet.ServletRequest: Method 'public void setXWikiURL(org.xwiki.url.XWikiURL)' has been removed
171 org.xwiki.container.portlet.PortletRequest: Method 'public org.xwiki.url.XWikiURL getURL()' has been removed
172 org.xwiki.container.portlet.PortletRequest: Method 'public void setXWikiURL(org.xwiki.url.XWikiURL)' has been removed
173 org.xwiki.container.Request: Field XWIKI_URL has been removed, but it was previously a constant
174 {{/code}}
175
176 * Lots of refactoring in WikiStream.
177
178 {{code language="none"}}
179 org.xwiki.wikistream.WikiStream: Class org.xwiki.wikistream.WikiStream removed
180 org.xwiki.wikistream.descriptor.DefaultWikiStreamBeanParameterDescriptor: Method 'public java.lang.reflect.Type getPropertyType()' has been removed
181 org.xwiki.wikistream.descriptor.WikiStreamPropertyDescriptor: Method 'public java.lang.reflect.Type getPropertyType()' has been removed
182 org.xwiki.wikistream.descriptor.WikiStreamPropertyDescriptor: Method 'public java.lang.reflect.Type getType()' has been added to an interface
183 org.xwiki.wikistream.filter.FarmFilter: Class org.xwiki.wikistream.filter.FarmFilter removed
184 org.xwiki.wikistream.filter.WikiAttachmentFilter: Class org.xwiki.wikistream.filter.WikiAttachmentFilter removed
185 org.xwiki.wikistream.filter.WikiClassFilter: Class org.xwiki.wikistream.filter.WikiClassFilter removed
186 org.xwiki.wikistream.filter.WikiClassPropertyFilter: Class org.xwiki.wikistream.filter.WikiClassPropertyFilter removed
187 org.xwiki.wikistream.filter.WikiDocumentFilter: Class org.xwiki.wikistream.filter.WikiDocumentFilter removed
188 org.xwiki.wikistream.filter.WikiFilter: Class org.xwiki.wikistream.filter.WikiFilter removed
189 org.xwiki.wikistream.filter.WikiObjectFilter: Class org.xwiki.wikistream.filter.WikiObjectFilter removed
190 org.xwiki.wikistream.filter.WikiObjectPropertyFilter: Class org.xwiki.wikistream.filter.WikiObjectPropertyFilter removed
191 org.xwiki.wikistream.filter.WikiSpaceFilter: Class org.xwiki.wikistream.filter.WikiSpaceFilter removed
192 org.xwiki.wikistream.input.BeanInputWikiStreamFactory: Removed org.xwiki.wikistream.WikiStream from the set of implemented interfaces
193 org.xwiki.wikistream.input.InputWikiStreamFactory: Removed org.xwiki.wikistream.WikiStream from the set of implemented interfaces
194 org.xwiki.wikistream.output.BeanOutputWikiStreamFactory: Removed org.xwiki.wikistream.WikiStream from the set of implemented interfaces
195 org.xwiki.wikistream.output.BeanOutputWikiStreamFactory: Method 'public org.xwiki.wikistream.output.OutputWikiStream creaOutputWikiStream(java.lang.Object)' has been removed
196 org.xwiki.wikistream.output.BeanOutputWikiStreamFactory: Method 'public org.xwiki.wikistream.output.OutputWikiStream createOutputWikiStream(java.lang.Object)' has been added to an interface
197 org.xwiki.wikistream.output.OutputWikiStreamFactory: Removed org.xwiki.wikistream.WikiStream from the set of implemented interfaces
198 org.xwiki.wikistream.output.OutputWikiStreamFactory: Method 'public org.xwiki.wikistream.output.OutputWikiStream creaOutputWikiStream(java.util.Map)' has been removed
199 org.xwiki.wikistream.output.OutputWikiStreamFactory: Method 'public org.xwiki.wikistream.output.OutputWikiStream createOutputWikiStream(java.util.Map)' has been added to an interface
200 org.xwiki.wikistream.type.WikiStreamType: Removed field XWIKI_XAR
201 org.xwiki.wikistream.instance.input.AbstractInstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.FarmFilter from the set of implemented interfaces
202 org.xwiki.wikistream.instance.input.AbstractInstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.WikiDocumentFilter from the set of implemented interfaces
203 org.xwiki.wikistream.instance.input.AbstractInstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.WikiFilter from the set of implemented interfaces
204 org.xwiki.wikistream.instance.input.AbstractInstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.WikiSpaceFilter from the set of implemented interfaces
205 org.xwiki.wikistream.instance.input.EntityEventGenerator: Method 'public org.xwiki.wikistream.descriptor.WikiStreamDescriptor getDescriptor()' has been added to an interface
206 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.FarmFilter from the set of implemented interfaces
207 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.WikiDocumentFilter from the set of implemented interfaces
208 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.WikiFilter from the set of implemented interfaces
209 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Removed org.xwiki.wikistream.filter.WikiSpaceFilter from the set of implemented interfaces
210 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Method 'public org.xwiki.wikistream.descriptor.WikiStreamDescriptor getDescriptor()' has been added to an interface
211 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Method 'public java.util.Collection getFilterInterfaces()' has been added to an interface
212 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Method 'public void setWikiDocumentParameters(java.lang.String, org.xwiki.filter.FilterEventParameters)' has been added to an interface
213 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Method 'public void setWikiFarmParameters(org.xwiki.filter.FilterEventParameters)' has been added to an interface
214 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Method 'public void setWikiParameters(java.lang.String, org.xwiki.filter.FilterEventParameters)' has been added to an interface
215 org.xwiki.wikistream.instance.input.InstanceInputEventGenerator: Method 'public void setWikiSpaceParameters(java.lang.String, org.xwiki.filter.FilterEventParameters)' has been added to an interface
216 org.xwiki.wikistream.instance.output.OutputInstanceWikiStreamFactory: Removed org.xwiki.wikistream.WikiStream from the set of implemented interfaces
217 org.xwiki.wikistream.instance.script.InstanceWikiStreamScriptService: Method 'public void export(org.xwiki.wikistream.type.WikiStreamType, org.xwiki.wikistream.instance.internal.input.InstanceInputProperties, java.util.Map)' has been removed
218 org.xwiki.wikistream.script.WikiStreamScriptService: Method 'public void convert(org.xwiki.wikistream.type.WikiStreamType, java.util.Map, org.xwiki.wikistream.type.WikiStreamType, java.util.Map)' has been removed
219 org.xwiki.wikistream.script.WikiStreamScriptService: Method 'public org.xwiki.wikistream.input.InputWikiStream createInputWikiStream(org.xwiki.wikistream.type.WikiStreamType, java.util.Map)' has been removed
220 org.xwiki.wikistream.script.WikiStreamScriptService: Method 'public org.xwiki.wikistream.output.OutputWikiStream createOutputWikiStream(org.xwiki.wikistream.type.WikiStreamType, java.util.Map)' has been removed
221 {{/code}}

Get Connected