@openui5/sap.ui.core 1.96.21 → 1.96.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  8. package/src/sap/base/util/restricted/_castArray.js +1 -1
  9. package/src/sap/base/util/restricted/_compact.js +1 -1
  10. package/src/sap/base/util/restricted/_curry.js +1 -1
  11. package/src/sap/base/util/restricted/_debounce.js +1 -1
  12. package/src/sap/base/util/restricted/_difference.js +1 -1
  13. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  14. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  15. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  16. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  17. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  18. package/src/sap/base/util/restricted/_flatten.js +1 -1
  19. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  20. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  21. package/src/sap/base/util/restricted/_intersection.js +1 -1
  22. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  23. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  24. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  25. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  26. package/src/sap/base/util/restricted/_isNil.js +1 -1
  27. package/src/sap/base/util/restricted/_max.js +1 -1
  28. package/src/sap/base/util/restricted/_merge.js +1 -1
  29. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  30. package/src/sap/base/util/restricted/_min.js +1 -1
  31. package/src/sap/base/util/restricted/_omit.js +1 -1
  32. package/src/sap/base/util/restricted/_pick.js +1 -1
  33. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  34. package/src/sap/base/util/restricted/_throttle.js +1 -1
  35. package/src/sap/base/util/restricted/_toArray.js +1 -1
  36. package/src/sap/base/util/restricted/_union.js +1 -1
  37. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  38. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  39. package/src/sap/base/util/restricted/_uniq.js +1 -1
  40. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  41. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  42. package/src/sap/base/util/restricted/_without.js +1 -1
  43. package/src/sap/base/util/restricted/_xor.js +1 -1
  44. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  45. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  46. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  47. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  48. package/src/sap/ui/Device.js +3 -3
  49. package/src/sap/ui/Global.js +4 -4
  50. package/src/sap/ui/base/Event.js +1 -1
  51. package/src/sap/ui/base/EventProvider.js +1 -1
  52. package/src/sap/ui/base/Interface.js +1 -1
  53. package/src/sap/ui/base/ManagedObject.js +1 -1
  54. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  55. package/src/sap/ui/base/Metadata.js +1 -1
  56. package/src/sap/ui/base/Object.js +1 -1
  57. package/src/sap/ui/base/ObjectPool.js +1 -1
  58. package/src/sap/ui/core/.library +1 -1
  59. package/src/sap/ui/core/BusyIndicator.js +1 -1
  60. package/src/sap/ui/core/Component.js +1 -1
  61. package/src/sap/ui/core/ComponentContainer.js +1 -1
  62. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  63. package/src/sap/ui/core/ComponentSupport.js +1 -1
  64. package/src/sap/ui/core/Control.js +1 -1
  65. package/src/sap/ui/core/Core.js +1 -1
  66. package/src/sap/ui/core/CustomData.js +1 -1
  67. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  68. package/src/sap/ui/core/Element.js +1 -1
  69. package/src/sap/ui/core/ElementMetadata.js +1 -1
  70. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  71. package/src/sap/ui/core/EventBus.js +1 -1
  72. package/src/sap/ui/core/Fragment.js +1 -1
  73. package/src/sap/ui/core/HTML.js +1 -1
  74. package/src/sap/ui/core/History.js +1 -1
  75. package/src/sap/ui/core/Icon.js +1 -1
  76. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  77. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  78. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  79. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  80. package/src/sap/ui/core/InvisibleText.js +1 -1
  81. package/src/sap/ui/core/Item.js +1 -1
  82. package/src/sap/ui/core/LabelEnablement.js +1 -1
  83. package/src/sap/ui/core/LayoutData.js +1 -1
  84. package/src/sap/ui/core/ListItem.js +1 -1
  85. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  86. package/src/sap/ui/core/Locale.js +1 -1
  87. package/src/sap/ui/core/LocaleData.js +1 -1
  88. package/src/sap/ui/core/Manifest.js +1 -1
  89. package/src/sap/ui/core/Message.js +1 -1
  90. package/src/sap/ui/core/RenderManager.js +1 -1
  91. package/src/sap/ui/core/Renderer.js +1 -1
  92. package/src/sap/ui/core/ResizeHandler.js +1 -1
  93. package/src/sap/ui/core/ScrollBar.js +1 -1
  94. package/src/sap/ui/core/SeparatorItem.js +1 -1
  95. package/src/sap/ui/core/Title.js +1 -1
  96. package/src/sap/ui/core/TooltipBase.js +1 -1
  97. package/src/sap/ui/core/UIArea.js +1 -1
  98. package/src/sap/ui/core/UIComponent.js +1 -1
  99. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  100. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  101. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  102. package/src/sap/ui/core/XMLComposite.js +1 -1
  103. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  104. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  105. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  106. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  107. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  108. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  109. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  110. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  111. package/src/sap/ui/core/library.js +3 -3
  112. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  113. package/src/sap/ui/core/message/Message.js +1 -1
  114. package/src/sap/ui/core/message/MessageManager.js +1 -1
  115. package/src/sap/ui/core/message/MessageParser.js +1 -1
  116. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  117. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  118. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  119. package/src/sap/ui/core/mvc/JSView.js +1 -1
  120. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  121. package/src/sap/ui/core/mvc/View.js +1 -1
  122. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  123. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  124. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  125. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  126. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  127. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  128. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  129. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  130. package/src/sap/ui/core/service/Service.js +1 -1
  131. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  132. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  133. package/src/sap/ui/core/support/Plugin.js +1 -1
  134. package/src/sap/ui/core/support/Support.js +1 -1
  135. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  136. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  137. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  138. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  139. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  140. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  141. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  142. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  143. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  144. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  145. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  146. package/src/sap/ui/core/tmpl/Template.js +1 -1
  147. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  148. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  149. package/src/sap/ui/core/util/Export.js +1 -1
  150. package/src/sap/ui/core/util/ExportCell.js +1 -1
  151. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  152. package/src/sap/ui/core/util/ExportRow.js +1 -1
  153. package/src/sap/ui/core/util/ExportType.js +1 -1
  154. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  155. package/src/sap/ui/core/util/File.js +1 -1
  156. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  157. package/src/sap/ui/core/util/MockServer.js +1 -1
  158. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  159. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  160. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  161. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  162. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  163. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  164. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  165. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  166. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  167. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  168. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  169. package/src/sap/ui/debug/ControlTree.js +1 -1
  170. package/src/sap/ui/debug/DebugEnv.js +1 -1
  171. package/src/sap/ui/debug/PropertyList.js +1 -1
  172. package/src/sap/ui/model/ClientModel.js +1 -1
  173. package/src/sap/ui/model/CompositeDataState.js +1 -1
  174. package/src/sap/ui/model/CompositeType.js +1 -1
  175. package/src/sap/ui/model/DataState.js +1 -1
  176. package/src/sap/ui/model/MetaModel.js +1 -1
  177. package/src/sap/ui/model/Model.js +1 -1
  178. package/src/sap/ui/model/SelectionModel.js +1 -1
  179. package/src/sap/ui/model/SimpleType.js +1 -1
  180. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  181. package/src/sap/ui/model/Type.js +1 -1
  182. package/src/sap/ui/model/json/JSONModel.js +1 -1
  183. package/src/sap/ui/model/message/MessageModel.js +1 -1
  184. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  185. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  186. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  187. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  188. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  189. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  190. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  191. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  192. package/src/sap/ui/model/odata/type/Date.js +1 -1
  193. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  194. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  195. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  196. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  197. package/src/sap/ui/model/odata/type/Double.js +1 -1
  198. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  199. package/src/sap/ui/model/odata/type/Int.js +1 -1
  200. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  201. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  202. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  203. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  204. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  205. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  206. package/src/sap/ui/model/odata/type/Single.js +1 -1
  207. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  208. package/src/sap/ui/model/odata/type/String.js +1 -1
  209. package/src/sap/ui/model/odata/type/Time.js +1 -1
  210. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  211. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  212. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  213. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  214. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  215. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  216. package/src/sap/ui/model/odata/v4/Context.js +3 -3
  217. package/src/sap/ui/model/odata/v4/ODataBinding.js +67 -39
  218. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +4 -3
  219. package/src/sap/ui/model/odata/v4/ODataListBinding.js +6 -5
  220. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +10 -11
  221. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  222. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +67 -32
  223. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -5
  224. package/src/sap/ui/model/odata/v4/lib/_Cache.js +3 -4
  225. package/src/sap/ui/model/odata/v4/lib/_Helper.js +5 -1
  226. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +1 -1
  227. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +4 -4
  228. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  229. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  230. package/src/sap/ui/model/type/Boolean.js +1 -1
  231. package/src/sap/ui/model/type/Currency.js +1 -1
  232. package/src/sap/ui/model/type/Date.js +1 -1
  233. package/src/sap/ui/model/type/DateInterval.js +1 -1
  234. package/src/sap/ui/model/type/DateTime.js +1 -1
  235. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  236. package/src/sap/ui/model/type/FileSize.js +1 -1
  237. package/src/sap/ui/model/type/Float.js +1 -1
  238. package/src/sap/ui/model/type/Integer.js +1 -1
  239. package/src/sap/ui/model/type/String.js +1 -1
  240. package/src/sap/ui/model/type/Time.js +1 -1
  241. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  242. package/src/sap/ui/model/type/Unit.js +1 -1
  243. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  244. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  245. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  246. package/src/sap/ui/util/Storage.js +1 -1
@@ -11,7 +11,6 @@ sap.ui.define([
11
11
  "./lib/_Helper",
12
12
  "sap/base/assert",
13
13
  "sap/base/Log",
14
- "sap/base/util/isEmptyObject",
15
14
  "sap/base/util/JSTokenizer",
16
15
  "sap/base/util/ObjectPath",
17
16
  "sap/ui/base/ManagedObject",
@@ -43,11 +42,11 @@ sap.ui.define([
43
42
  "sap/ui/model/odata/type/String",
44
43
  "sap/ui/model/odata/type/TimeOfDay",
45
44
  "sap/ui/thirdparty/URI"
46
- ], function (AnnotationHelper, ValueListType, _Helper, assert, Log, isEmptyObject, JSTokenizer,
47
- ObjectPath, ManagedObject, SyncPromise, BindingMode, ChangeReason, ClientListBinding,
48
- BaseContext, ContextBinding, MetaModel, PropertyBinding, OperationMode, Boolean, Byte,
49
- EdmDate, DateTimeOffset, Decimal, Double, Guid, Int16, Int32, Int64, Raw, SByte, Single,
50
- Stream, String, TimeOfDay, URI) {
45
+ ], function (AnnotationHelper, ValueListType, _Helper, assert, Log, JSTokenizer, ObjectPath,
46
+ ManagedObject, SyncPromise, BindingMode, ChangeReason, ClientListBinding, BaseContext,
47
+ ContextBinding, MetaModel, PropertyBinding, OperationMode, Boolean, Byte, EdmDate,
48
+ DateTimeOffset, Decimal, Double, Guid, Int16, Int32, Int64, Raw, SByte, Single, Stream,
49
+ String, TimeOfDay, URI) {
51
50
  "use strict";
52
51
  /*global Map */
53
52
  /*eslint max-nested-callbacks: 0 */
@@ -658,7 +657,7 @@ sap.ui.define([
658
657
  * @hideconstructor
659
658
  * @public
660
659
  * @since 1.37.0
661
- * @version 1.96.21
660
+ * @version 1.96.22
662
661
  */
663
662
  var ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
664
663
  /*
@@ -1587,7 +1586,7 @@ sap.ui.define([
1587
1586
  }
1588
1587
 
1589
1588
  if (mFormatOptions) {
1590
- if (isEmptyObject(mFormatOptions)) {
1589
+ if (_Helper.isEmptyObject(mFormatOptions)) {
1591
1590
  mFormatOptions = undefined;
1592
1591
  } else if ("parseKeepsEmptyString" in mFormatOptions
1593
1592
  && oProperty.$Type !== "Edm.String") {
@@ -3230,9 +3229,9 @@ sap.ui.define([
3230
3229
 
3231
3230
  // Each reference must have contributed at least one qualifier. So if oValueListInfo
3232
3231
  // is empty, there cannot have been a reference.
3233
- if (isEmptyObject(oValueListInfo)) {
3234
- throw new Error("No annotation '" + sValueListReferences.slice(1) + "' for " +
3235
- sPropertyPath);
3232
+ if (_Helper.isEmptyObject(oValueListInfo)) {
3233
+ throw new Error("No annotation '" + sValueListReferences.slice(1) + "' for "
3234
+ + sPropertyPath);
3236
3235
  }
3237
3236
 
3238
3237
  return aRelevantQualifiers && oContext && oContext.getBinding
@@ -210,7 +210,7 @@ sap.ui.define([
210
210
  * @extends sap.ui.model.Model
211
211
  * @public
212
212
  * @since 1.37.0
213
- * @version 1.96.21
213
+ * @version 1.96.22
214
214
  */
215
215
  var ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
216
216
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */
@@ -32,6 +32,7 @@ sap.ui.define([
32
32
  this.mAggregatedQueryOptions = {};
33
33
  // whether the aggregated query options are processed the first time
34
34
  this.bAggregatedQueryOptionsInitial = true;
35
+ this.mCanUseCachePromiseByChildPath = {};
35
36
  // auto-$expand/$select: promises to wait until child bindings have provided
36
37
  // their path and query options
37
38
  this.aChildCanUseCachePromises = [];
@@ -191,15 +192,16 @@ sap.ui.define([
191
192
  * "5.1.2 System Query Option $expand" and "5.1.3 System Query Option $select" in specification
192
193
  * "OData Version 4.0 Part 2: URL Conventions".
193
194
  *
194
- * @param {object} mQueryOptions The query options to be merged
195
- * @param {string} sBaseMetaPath This binding's meta path
196
- * @param {boolean} bCacheImmutable Whether the cache of this binding is immutable
195
+ * @param {object} mQueryOptions - The query options to be merged
196
+ * @param {string} sBaseMetaPath - This binding's meta path
197
+ * @param {boolean} bCacheImmutable - Whether the cache of this binding is immutable
198
+ * @param {boolean} [bIsProperty] - Whether the child is a property binding
197
199
  * @returns {boolean} Whether the query options can be fulfilled by this binding
198
200
  *
199
201
  * @private
200
202
  */
201
203
  ODataParentBinding.prototype.aggregateQueryOptions = function (mQueryOptions, sBaseMetaPath,
202
- bCacheImmutable) {
204
+ bCacheImmutable, bIsProperty) {
203
205
  var mAggregatedQueryOptionsClone = _Helper.merge({},
204
206
  bCacheImmutable && this.mLateQueryOptions || this.mAggregatedQueryOptions),
205
207
  bChanged = false,
@@ -208,14 +210,19 @@ sap.ui.define([
208
210
  /*
209
211
  * Recursively merges the given query options into the given aggregated query options.
210
212
  *
211
- * @param {object} mAggregatedQueryOptions The aggregated query options
212
- * @param {object} mQueryOptions0 The query options to merge into the aggregated query
213
- * options
214
- * @param {string} sMetaPath The meta path for the current $expand
215
- * @param {boolean} [bInsideExpand] Whether the given query options are inside a $expand
216
- * @param {boolean} [bAdd] Whether to add the given query options because they are in a
217
- * $expand that has not been aggregated yet
218
- * @returns {boolean} Whether the query options can be fulfilled by this binding
213
+ * @param {object} mAggregatedQueryOptions
214
+ * The aggregated query options
215
+ * @param {object} mQueryOptions0
216
+ * The query options to merge into the aggregated query options
217
+ * @param {string} [sMetaPath]
218
+ * The meta path for the current $expand (only used if cache is immutable)
219
+ * @param {boolean} [bInsideExpand]
220
+ * Whether the given query options are inside a $expand
221
+ * @param {boolean} [bAdd]
222
+ * Whether to add the given query options because they are in a $expand that has not been
223
+ * aggregated yet
224
+ * @returns {boolean}
225
+ * Whether the query options can be fulfilled by this binding
219
226
  */
220
227
  function merge(mAggregatedQueryOptions, mQueryOptions0, sMetaPath, bInsideExpand, bAdd) {
221
228
  /*
@@ -256,8 +263,9 @@ sap.ui.define([
256
263
 
257
264
  // Top-level all query options in the aggregate are OK, even if not repeated in the
258
265
  // child. In a $expand the child must also have them (and the second loop checks that
259
- // they're equal).
260
- return (!bInsideExpand || Object.keys(mAggregatedQueryOptions).every(function (sName) {
266
+ // they're equal). Property bindings are an exception to this rule.
267
+ return (bIsProperty || !bInsideExpand
268
+ || Object.keys(mAggregatedQueryOptions).every(function (sName) {
261
269
  return sName in mQueryOptions0 || sName === "$count" || sName === "$expand"
262
270
  || sName === "$select";
263
271
  }))
@@ -288,6 +296,9 @@ sap.ui.define([
288
296
  if (merge(mAggregatedQueryOptionsClone, mQueryOptions, sBaseMetaPath)) {
289
297
  if (!bCacheImmutable) {
290
298
  this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
299
+ if (this.mLateQueryOptions) {
300
+ merge(this.mLateQueryOptions, mQueryOptions);
301
+ }
291
302
  } else if (bChanged) {
292
303
  this.mLateQueryOptions = mAggregatedQueryOptionsClone;
293
304
  }
@@ -634,13 +645,15 @@ sap.ui.define([
634
645
  * @param {sap.ui.model.odata.v4.Context} oContext
635
646
  * A context of this binding which is the direct or indirect parent of the child binding.
636
647
  * Initially it is the child binding's parent context (See
637
- * {@link sap.ui.model.odata.v4.ODataBinding#fetchQueryOptionsForOwnCache}). When a binding
638
- * delegates up to its parent binding, it passes its own parent context adjusting
648
+ * {@link sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache}). When a
649
+ * binding delegates up to its parent binding, it passes its own parent context adjusting
639
650
  * <code>sChildPath</code> accordingly.
640
651
  * @param {string} sChildPath
641
652
  * The child binding's binding path relative to <code>oContext</code>
642
- * @param {object|sap.ui.base.SyncPromise} vChildQueryOptions
643
- * The child binding's (aggregated) query options or a promise resolving with them
653
+ * @param {object|sap.ui.base.SyncPromise} [vChildQueryOptions={}]
654
+ * The child binding's (aggregated) query options (if any) or a promise resolving with them
655
+ * @param {boolean} [bIsProperty]
656
+ * Whether the child is a property binding
644
657
  * @returns {sap.ui.base.SyncPromise}
645
658
  * A promise resolved with the reduced path for the child binding if the child binding can use
646
659
  * this binding's or an ancestor binding's cache; <code>undefined</code> otherwise.
@@ -649,11 +662,11 @@ sap.ui.define([
649
662
  * @see sap.ui.model.odata.v4.ODataMetaModel#getReducedPath
650
663
  */
651
664
  ODataParentBinding.prototype.fetchIfChildCanUseCache = function (oContext, sChildPath,
652
- vChildQueryOptions) {
665
+ vChildQueryOptions, bIsProperty) {
653
666
  // getBaseForPathReduction must be called early, because the (virtual) parent context may be
654
667
  // lost again when the path is needed
655
668
  var sBaseForPathReduction = this.getBaseForPathReduction(),
656
- sBaseMetaPath = _Helper.getMetaPath(oContext.getPath()),
669
+ sBaseMetaPath,
657
670
  bCacheImmutable,
658
671
  oCanUseCachePromise,
659
672
  // whether this binding is an operation or depends on one
@@ -708,6 +721,23 @@ sap.ui.define([
708
721
  return SyncPromise.resolve(sResolvedChildPath);
709
722
  }
710
723
 
724
+ oCanUseCachePromise = this.mCanUseCachePromiseByChildPath[sChildPath];
725
+ if (oCanUseCachePromise && bIsProperty) {
726
+ return oCanUseCachePromise.then(function (sOldReducedPath) {
727
+ if (!sOldReducedPath) {
728
+ return undefined;
729
+ }
730
+ // Note: sResolvedChildPath could be "/SalesOrderList('42')/SO_2_SOITEM/0/Note"
731
+ // w/ index (thus getMetaPath helps), but getStrippedMetaPath makes no difference
732
+ if (!sChildPath.includes("/")
733
+ || _Helper.getMetaPath(sOldReducedPath)
734
+ === _Helper.getMetaPath(sResolvedChildPath)) {
735
+ return sResolvedChildPath;
736
+ }
737
+ return oMetaModel.getReducedPath(sResolvedChildPath, sBaseForPathReduction);
738
+ });
739
+ }
740
+
711
741
  // Note: this.oCachePromise exists for all bindings except operation bindings; it might
712
742
  // become pending again
713
743
  bCacheImmutable = this.oCachePromise.isRejected()
@@ -715,16 +745,17 @@ sap.ui.define([
715
745
  || oContext.isKeepAlive() // kept-alive contexts have no index when not in aContexts
716
746
  || this.oCache === null
717
747
  || this.oCache && this.oCache.hasSentRequest();
748
+ sBaseMetaPath = _Helper.getMetaPath(oContext.getPath());
718
749
  aPromises = [
719
- this.doFetchQueryOptions(this.oContext),
750
+ this.doFetchOrGetQueryOptions(this.oContext),
720
751
  // After access to complete meta path of property, the metadata of all prefix paths
721
752
  // is loaded so that synchronous access in wrapChildQueryOptions via getObject is
722
- // possible
753
+ // possible - as well as #getReducedPath
723
754
  fetchPropertyAndType(),
724
755
  vChildQueryOptions
725
756
  ];
726
757
  oCanUseCachePromise = SyncPromise.all(aPromises).then(function (aResult) {
727
- var mChildQueryOptions = aResult[2],
758
+ var mChildQueryOptions = aResult[2] || {},
728
759
  mWrappedChildQueryOptions,
729
760
  mLocalQueryOptions = aResult[0],
730
761
  oProperty = aResult[1],
@@ -745,7 +776,7 @@ sap.ui.define([
745
776
  that.bHasPathReductionToParent = true;
746
777
  return that.oContext.getBinding().fetchIfChildCanUseCache(that.oContext,
747
778
  _Helper.getRelativePath(sResolvedChildPath, that.oContext.getPath()),
748
- vChildQueryOptions);
779
+ mChildQueryOptions, bIsProperty);
749
780
  }
750
781
 
751
782
  if (bDependsOnOperation || sReducedChildMetaPath === "$count"
@@ -761,7 +792,7 @@ sap.ui.define([
761
792
  if (bIsAdvertisement) {
762
793
  mWrappedChildQueryOptions = {"$select" : [sReducedChildMetaPath.slice(1)]};
763
794
  return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
764
- bCacheImmutable)
795
+ bCacheImmutable, bIsProperty)
765
796
  ? sReducedPath
766
797
  : undefined;
767
798
  }
@@ -773,7 +804,7 @@ sap.ui.define([
773
804
  that.oModel.oInterface.fetchMetadata);
774
805
  if (mWrappedChildQueryOptions) {
775
806
  return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
776
- bCacheImmutable)
807
+ bCacheImmutable, bIsProperty)
777
808
  ? sReducedPath
778
809
  : undefined;
779
810
  }
@@ -781,7 +812,7 @@ sap.ui.define([
781
812
  }
782
813
  if (sReducedChildMetaPath === "value") { // symbolic name for operation result
783
814
  return that.aggregateQueryOptions(mChildQueryOptions, sBaseMetaPath,
784
- bCacheImmutable)
815
+ bCacheImmutable, bIsProperty)
785
816
  ? sReducedPath
786
817
  : undefined;
787
818
  }
@@ -794,8 +825,8 @@ sap.ui.define([
794
825
  if (that.oCache) {
795
826
  that.oCache.setLateQueryOptions(that.mLateQueryOptions);
796
827
  } else if (that.oCache === null) {
797
- return that.oContext.getBinding().fetchIfChildCanUseCache(that.oContext,
798
- that.sPath, SyncPromise.resolve(that.mLateQueryOptions))
828
+ return that.oContext.getBinding()
829
+ .fetchIfChildCanUseCache(that.oContext, that.sPath, that.mLateQueryOptions)
799
830
  .then(function (sPath) {
800
831
  return sPath && sReducedPath;
801
832
  });
@@ -803,6 +834,9 @@ sap.ui.define([
803
834
  }
804
835
  return sReducedPath;
805
836
  });
837
+ if (bIsProperty && !oContext.getPath().includes("($uid=")) {
838
+ this.mCanUseCachePromiseByChildPath[sChildPath] = oCanUseCachePromise;
839
+ }
806
840
  this.aChildCanUseCachePromises.push(oCanUseCachePromise);
807
841
  this.oCachePromise = SyncPromise.all([this.oCachePromise, oCanUseCachePromise])
808
842
  .then(function (aResult) {
@@ -827,6 +861,7 @@ sap.ui.define([
827
861
  that.oModel.reportError(that + ": Failed to enhance query options for "
828
862
  + "auto-$expand/$select for child " + sChildPath, sClassName, oError);
829
863
  });
864
+
830
865
  return oCanUseCachePromise;
831
866
  };
832
867
 
@@ -947,7 +982,7 @@ sap.ui.define([
947
982
  * @private
948
983
  */
949
984
  ODataParentBinding.prototype.getQueryOptionsForPath = function (sPath, oContext) {
950
- if (Object.keys(this.mParameters).length) {
985
+ if (!_Helper.isEmptyObject(this.mParameters)) {
951
986
  // binding has parameters -> all query options need to be defined at the binding
952
987
  return _Helper.getQueryOptionsForPath(this.getQueryOptionsFromParameters(), sPath);
953
988
  }
@@ -976,8 +1011,8 @@ sap.ui.define([
976
1011
  * @function
977
1012
  * @name sap.ui.model.odata.v4.ODataParentBinding.getQueryOptionsFromParameters
978
1013
  * @private
979
- * @see sap.ui.model.odata.v4.ODataBinding#fetchQueryOptionsForOwnCache
980
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
1014
+ * @see sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache
1015
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
981
1016
  */
982
1017
 
983
1018
  /**
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * @mixes sap.ui.model.odata.v4.ODataBinding
58
58
  * @public
59
59
  * @since 1.37.0
60
- * @version 1.96.21
60
+ * @version 1.96.22
61
61
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
62
62
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
63
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -97,7 +97,7 @@ sap.ui.define([
97
97
  this.mQueryOptions = this.oModel.buildQueryOptions(_Helper.clone(mParameters),
98
98
  /*bSystemQueryOptionsAllowed*/sPath.endsWith("$count"));
99
99
  this.vValue = undefined;
100
- // BEWARE: #doFetchQueryOptions uses #isRoot which relies on this.oContext!
100
+ // BEWARE: #doFetchOrGetQueryOptions uses #isRoot which relies on this.oContext!
101
101
  this.fetchCache(oContext);
102
102
  oModel.bindingCreated(this);
103
103
  },
@@ -394,10 +394,10 @@ sap.ui.define([
394
394
 
395
395
  /**
396
396
  * @override
397
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
397
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
398
398
  */
399
- ODataPropertyBinding.prototype.doFetchQueryOptions = function () {
400
- return this.isRoot() ? SyncPromise.resolve(this.mQueryOptions) : SyncPromise.resolve({});
399
+ ODataPropertyBinding.prototype.doFetchOrGetQueryOptions = function () {
400
+ return this.isRoot() ? this.mQueryOptions : undefined;
401
401
  };
402
402
 
403
403
  /**
@@ -10,10 +10,9 @@ sap.ui.define([
10
10
  "./_Helper",
11
11
  "./_Requestor",
12
12
  "sap/base/Log",
13
- "sap/base/util/isEmptyObject",
14
13
  "sap/ui/base/SyncPromise",
15
14
  "sap/ui/model/odata/ODataUtils"
16
- ], function (_GroupLock, _Helper, _Requestor, Log, isEmptyObject, SyncPromise, ODataUtils) {
15
+ ], function (_GroupLock, _Helper, _Requestor, Log, SyncPromise, ODataUtils) {
17
16
  "use strict";
18
17
 
19
18
  var sClassName = "sap.ui.model.odata.v4.lib._Cache",
@@ -982,7 +981,7 @@ sap.ui.define([
982
981
  * @see #registerChange
983
982
  */
984
983
  _Cache.prototype.hasChangeListeners = function () {
985
- return !isEmptyObject(this.mChangeListeners);
984
+ return !_Helper.isEmptyObject(this.mChangeListeners);
986
985
  };
987
986
 
988
987
  /**
@@ -3029,7 +3028,7 @@ sap.ui.define([
3029
3028
  if (oData) {
3030
3029
  sHttpMethod = oData["X-HTTP-Method"] || sHttpMethod;
3031
3030
  delete oData["X-HTTP-Method"];
3032
- if (this.oRequestor.isActionBodyOptional() && !Object.keys(oData).length) {
3031
+ if (this.oRequestor.isActionBodyOptional() && _Helper.isEmptyObject(oData)) {
3033
3032
  oData = undefined;
3034
3033
  }
3035
3034
  }
@@ -1553,6 +1553,10 @@ sap.ui.define([
1553
1553
  return _Helper.getRelativePath(sPath, sBasePath) !== undefined;
1554
1554
  },
1555
1555
 
1556
+ // Trampoline property to allow for mocking function module in unit tests.
1557
+ // @see sap.base.util.isEmptyObject
1558
+ isEmptyObject : isEmptyObject,
1559
+
1556
1560
  /**
1557
1561
  * Tells whether the value is a safe integer.
1558
1562
  *
@@ -2164,7 +2168,7 @@ sap.ui.define([
2164
2168
  }
2165
2169
  }
2166
2170
  if (oProperty.$kind === "Property") {
2167
- if (Object.keys(mChildQueryOptions).length > 0) {
2171
+ if (!isEmptyObject(mChildQueryOptions)) {
2168
2172
  Log.error("Failed to enhance query options for auto-$expand/$select as the"
2169
2173
  + " child binding has query options, but its path '" + sChildMetaPath
2170
2174
  + "' points to a structural property",
@@ -476,7 +476,7 @@ sap.ui.define([
476
476
  _Requestor.prototype.checkForOpenRequests = function () {
477
477
  var that = this;
478
478
 
479
- if (Object.keys(this.mRunningChangeRequests).length // running change requests
479
+ if (!_Helper.isEmptyObject(this.mRunningChangeRequests) // running change requests
480
480
  || Object.keys(this.mBatchQueue).some(function (sGroupId) { // pending requests
481
481
  return that.mBatchQueue[sGroupId].some(function (vRequest) {
482
482
  return Array.isArray(vRequest) ? vRequest.length : true;
@@ -610,7 +610,7 @@ sap.ui.define([
610
610
  sClassName);
611
611
  }
612
612
  });
613
- if (aResult.length > 0) {
613
+ if (aResult.length) {
614
614
  oSemantics.type = {"EnumMember" : aResult.join(" ")};
615
615
  }
616
616
  }
@@ -689,7 +689,7 @@ sap.ui.define([
689
689
  sTarget = sEntityContainerName + "/" + sEntitySetName;
690
690
  mAnnotations = _Helper.merge(this.convertedV2Annotations[sTarget] || {},
691
691
  this.mEntityType2EntitySetAnnotation[oEntitySet.$Type]);
692
- if (Object.keys(mAnnotations).length) {
692
+ if (!_Helper.isEmptyObject(mAnnotations)) {
693
693
  this.convertedV2Annotations[sTarget] = mAnnotations;
694
694
  }
695
695
  }
@@ -697,7 +697,7 @@ sap.ui.define([
697
697
 
698
698
  if (this.schema.$Annotations) {
699
699
  this.mergeAnnotations(this.convertedV2Annotations, this.schema.$Annotations);
700
- } else if (Object.keys(this.convertedV2Annotations).length > 0) {
700
+ } else if (!_Helper.isEmptyObject(this.convertedV2Annotations)) {
701
701
  this.schema.$Annotations = this.convertedV2Annotations;
702
702
  }
703
703
  this.convertedV2Annotations = {}; // reset schema annotations for next schema
@@ -1613,4 +1613,4 @@ sap.ui.define([
1613
1613
  })(_V2MetadataConverter.prototype);
1614
1614
 
1615
1615
  return _V2MetadataConverter;
1616
- }, /* bExport= */false);
1616
+ }, /* bExport= */false);
@@ -759,7 +759,7 @@ sap.ui.define([
759
759
 
760
760
  // only if all (nested) query options are processed, all selects are known
761
761
  aSelects = Object.keys(mSelects);
762
- if (aSelects.length > 0) {
762
+ if (aSelects.length) {
763
763
  if (!mQueryOptions.$select) {
764
764
  aSelects.push("*");
765
765
  }
@@ -228,7 +228,7 @@ sap.ui.define([
228
228
  *
229
229
  * @extends sap.ui.model.Model
230
230
  * @public
231
- * @version 1.96.21
231
+ * @version 1.96.22
232
232
  */
233
233
  var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
234
234
 
@@ -19,7 +19,7 @@ sap.ui.define(['sap/ui/model/SimpleType', 'sap/ui/model/FormatException', 'sap/u
19
19
  * @extends sap.ui.model.SimpleType
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.96.21
22
+ * @version 1.96.22
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions]
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.model.CompositeType
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.96.21
35
+ * @version 1.96.22
36
36
  *
37
37
  * @public
38
38
  * @param {object} [oFormatOptions]
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.96.21
29
+ * @version 1.96.22
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @extends sap.ui.model.CompositeType
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.96.21
36
+ * @version 1.96.22
37
37
  *
38
38
  * @public
39
39
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.96.21
22
+ * @version 1.96.22
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.96.21
22
+ * @version 1.96.22
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.SimpleType
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.96.21
27
+ * @version 1.96.22
28
28
  *
29
29
  * @public
30
30
  * @param {object} [oFormatOptions] formatting options. Supports the same options as {@link sap.ui.core.format.FileSizeFormat.getInstance FileSizeFormat.getInstance}
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.96.21
29
+ * @version 1.96.22
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.96.21
29
+ * @version 1.96.22
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.SimpleType
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.96.21
27
+ * @version 1.96.22
28
28
  *
29
29
  * @alias sap.ui.model.type.String
30
30
  * @param {object} [oFormatOptions]
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.96.21
22
+ * @version 1.96.22
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.96.21
22
+ * @version 1.96.22
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  *
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.96.21
50
+ * @version 1.96.22
51
51
  *
52
52
  * @public
53
53
  * @param {object} [oFormatOptions]
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.model.ClientModel
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.96.21
50
+ * @version 1.96.22
51
51
  *
52
52
  * @param {object} oData either the URL where to load the XML from or an XML
53
53
  * @public
@@ -53,7 +53,7 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo"],
53
53
  * @namespace
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.96.21
56
+ * @version 1.96.22
57
57
  *
58
58
  * @public
59
59
  * @since 1.48.0
@@ -27,7 +27,7 @@ sap.ui.define([ 'sap/ui/core/Element', 'sap/ui/core/Control', 'sap/ui/core/Core'
27
27
  * @namespace
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.96.21
30
+ * @version 1.96.22
31
31
  *
32
32
  * @public
33
33
  * @since 1.48.0
@@ -250,7 +250,7 @@ sap.ui.define(["sap/base/assert"], function (assert) {
250
250
  *
251
251
  * @enum {string}
252
252
  * @public
253
- * @version 1.96.21
253
+ * @version 1.96.22
254
254
  */
255
255
  Storage.Type = {
256
256
  /**