@openui5/sap.ui.core 1.108.17 → 1.108.18

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 (250) 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/Configuration.js +1 -1
  65. package/src/sap/ui/core/Control.js +1 -1
  66. package/src/sap/ui/core/Core.js +1 -1
  67. package/src/sap/ui/core/CustomData.js +1 -1
  68. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  69. package/src/sap/ui/core/Element.js +1 -1
  70. package/src/sap/ui/core/ElementMetadata.js +1 -1
  71. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  72. package/src/sap/ui/core/EventBus.js +1 -1
  73. package/src/sap/ui/core/Fragment.js +1 -1
  74. package/src/sap/ui/core/HTML.js +1 -1
  75. package/src/sap/ui/core/History.js +1 -1
  76. package/src/sap/ui/core/Icon.js +1 -1
  77. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  78. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  79. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  80. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  81. package/src/sap/ui/core/InvisibleText.js +1 -1
  82. package/src/sap/ui/core/Item.js +1 -1
  83. package/src/sap/ui/core/LabelEnablement.js +1 -1
  84. package/src/sap/ui/core/LayoutData.js +1 -1
  85. package/src/sap/ui/core/ListItem.js +1 -1
  86. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  87. package/src/sap/ui/core/Locale.js +1 -1
  88. package/src/sap/ui/core/LocaleData.js +1 -1
  89. package/src/sap/ui/core/Manifest.js +1 -1
  90. package/src/sap/ui/core/Message.js +1 -1
  91. package/src/sap/ui/core/RenderManager.js +1 -1
  92. package/src/sap/ui/core/Renderer.js +1 -1
  93. package/src/sap/ui/core/ResizeHandler.js +1 -1
  94. package/src/sap/ui/core/ScrollBar.js +1 -1
  95. package/src/sap/ui/core/SeparatorItem.js +1 -1
  96. package/src/sap/ui/core/Title.js +1 -1
  97. package/src/sap/ui/core/TooltipBase.js +1 -1
  98. package/src/sap/ui/core/UIArea.js +1 -1
  99. package/src/sap/ui/core/UIComponent.js +1 -1
  100. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  101. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  102. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  103. package/src/sap/ui/core/XMLComposite.js +1 -1
  104. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  105. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  106. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  107. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  108. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  109. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  110. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  111. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  112. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  113. package/src/sap/ui/core/library.js +3 -3
  114. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  115. package/src/sap/ui/core/message/Message.js +1 -1
  116. package/src/sap/ui/core/message/MessageManager.js +1 -1
  117. package/src/sap/ui/core/message/MessageParser.js +1 -1
  118. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  119. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  120. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  121. package/src/sap/ui/core/mvc/JSView.js +1 -1
  122. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  123. package/src/sap/ui/core/mvc/View.js +1 -1
  124. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  125. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  126. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  127. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  128. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  129. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  130. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  131. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  132. package/src/sap/ui/core/service/Service.js +1 -1
  133. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  134. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  135. package/src/sap/ui/core/support/Plugin.js +1 -1
  136. package/src/sap/ui/core/support/Support.js +1 -1
  137. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  138. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  139. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  140. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  141. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  142. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  143. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  144. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  145. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  146. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  147. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  148. package/src/sap/ui/core/tmpl/Template.js +1 -1
  149. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  150. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  151. package/src/sap/ui/core/util/Export.js +1 -1
  152. package/src/sap/ui/core/util/ExportCell.js +1 -1
  153. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  154. package/src/sap/ui/core/util/ExportRow.js +1 -1
  155. package/src/sap/ui/core/util/ExportType.js +1 -1
  156. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  157. package/src/sap/ui/core/util/File.js +1 -1
  158. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  159. package/src/sap/ui/core/util/MockServer.js +1 -1
  160. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  161. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  162. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  163. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  164. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  165. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  166. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  167. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  168. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  169. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  170. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  171. package/src/sap/ui/debug/ControlTree.js +1 -1
  172. package/src/sap/ui/debug/DebugEnv.js +1 -1
  173. package/src/sap/ui/debug/PropertyList.js +1 -1
  174. package/src/sap/ui/model/ClientModel.js +1 -1
  175. package/src/sap/ui/model/CompositeDataState.js +1 -1
  176. package/src/sap/ui/model/CompositeType.js +1 -1
  177. package/src/sap/ui/model/DataState.js +1 -1
  178. package/src/sap/ui/model/MetaModel.js +1 -1
  179. package/src/sap/ui/model/Model.js +1 -1
  180. package/src/sap/ui/model/SelectionModel.js +1 -1
  181. package/src/sap/ui/model/SimpleType.js +1 -1
  182. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  183. package/src/sap/ui/model/Type.js +1 -1
  184. package/src/sap/ui/model/json/JSONModel.js +1 -1
  185. package/src/sap/ui/model/message/MessageModel.js +1 -1
  186. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  187. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  188. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  189. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  190. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  191. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  192. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  193. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  194. package/src/sap/ui/model/odata/type/Date.js +1 -1
  195. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  196. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  197. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  198. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  199. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  200. package/src/sap/ui/model/odata/type/Double.js +1 -1
  201. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  202. package/src/sap/ui/model/odata/type/Int.js +1 -1
  203. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  204. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  205. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  206. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  207. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  208. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  209. package/src/sap/ui/model/odata/type/Single.js +1 -1
  210. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  211. package/src/sap/ui/model/odata/type/String.js +1 -1
  212. package/src/sap/ui/model/odata/type/Time.js +1 -1
  213. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  214. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  215. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  216. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  217. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  218. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  219. package/src/sap/ui/model/odata/v4/Context.js +3 -3
  220. package/src/sap/ui/model/odata/v4/ODataBinding.js +65 -38
  221. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +5 -4
  222. package/src/sap/ui/model/odata/v4/ODataListBinding.js +7 -6
  223. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +8 -9
  224. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  225. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +58 -27
  226. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -5
  227. package/src/sap/ui/model/odata/v4/lib/_Cache.js +11 -7
  228. package/src/sap/ui/model/odata/v4/lib/_Helper.js +5 -1
  229. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +1 -1
  230. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +3 -3
  231. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  232. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  233. package/src/sap/ui/model/type/Boolean.js +1 -1
  234. package/src/sap/ui/model/type/Currency.js +1 -1
  235. package/src/sap/ui/model/type/Date.js +1 -1
  236. package/src/sap/ui/model/type/DateInterval.js +1 -1
  237. package/src/sap/ui/model/type/DateTime.js +1 -1
  238. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  239. package/src/sap/ui/model/type/FileSize.js +1 -1
  240. package/src/sap/ui/model/type/Float.js +1 -1
  241. package/src/sap/ui/model/type/Integer.js +1 -1
  242. package/src/sap/ui/model/type/String.js +1 -1
  243. package/src/sap/ui/model/type/Time.js +1 -1
  244. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  245. package/src/sap/ui/model/type/Unit.js +1 -1
  246. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  247. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  248. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  249. package/src/sap/ui/test/generic/TestBase.js +1 -1
  250. package/src/sap/ui/util/Storage.js +1 -1
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
58
58
  * @public
59
59
  * @since 1.37.0
60
- * @version 1.108.17
60
+ * @version 1.108.18
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
@@ -445,7 +445,7 @@ sap.ui.define([
445
445
  sApply = _AggregationHelper.buildApply(mParameters.$$aggregation).$apply;
446
446
  }
447
447
  this.mQueryOptions = this.oModel.buildQueryOptions(mParameters, true);
448
- this.oQueryOptionsPromise = undefined; // @see #doFetchQueryOptions
448
+ this.oQueryOptionsPromise = undefined; // @see #doFetchOrGetQueryOptions
449
449
  this.mParameters = mParameters; // store mParameters at binding after validation
450
450
  if (sApply) {
451
451
  this.mQueryOptions.$apply = sApply;
@@ -1211,9 +1211,9 @@ sap.ui.define([
1211
1211
 
1212
1212
  /**
1213
1213
  * @override
1214
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
1214
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
1215
1215
  */
1216
- ODataListBinding.prototype.doFetchQueryOptions = function (oContext) {
1216
+ ODataListBinding.prototype.doFetchOrGetQueryOptions = function (oContext) {
1217
1217
  // Note: an absolute binding needs no parent context :-)
1218
1218
  var sMetaPath = oContext && _Helper.getMetaPath(oContext.getPath()),
1219
1219
  that = this;
@@ -2659,7 +2659,7 @@ sap.ui.define([
2659
2659
  ODataListBinding.prototype.inheritQueryOptions = function (mQueryOptions, oContext) {
2660
2660
  var mInheritedQueryOptions;
2661
2661
 
2662
- if (!Object.keys(this.mParameters).length) {
2662
+ if (_Helper.isEmptyObject(this.mParameters)) {
2663
2663
  // mix-in inherited static query options
2664
2664
  mInheritedQueryOptions = this.getQueryOptionsForPath("", oContext);
2665
2665
  if (mQueryOptions.$orderby && mInheritedQueryOptions.$orderby) {
@@ -2734,7 +2734,7 @@ sap.ui.define([
2734
2734
  // When suspended it matches if it already has contexts. Then its getKeepAliveContext fails.
2735
2735
  return this.mParameters.$$getKeepAliveContext && this.getResolvedPath() === sPath
2736
2736
  && (!this.isRootBindingSuspended() || this.aContexts.length
2737
- || Object.keys(this.mPreviousContextsByPath).length);
2737
+ || !_Helper.isEmptyObject(this.mPreviousContextsByPath));
2738
2738
  };
2739
2739
 
2740
2740
  /**
@@ -3721,6 +3721,7 @@ sap.ui.define([
3721
3721
  }
3722
3722
  if (this.bHasPathReductionToParent && this.oModel.bAutoExpandSelect
3723
3723
  && !this.mParameters.$$aggregation) {
3724
+ this.mCanUseCachePromiseByChildPath = {};
3724
3725
  this.sChangeReason = "AddVirtualContext"; // JIRA: CPOUI5ODATAV4-848
3725
3726
  }
3726
3727
  if (oContext.getBinding
@@ -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
  /*eslint max-nested-callbacks: 0 */
53
52
 
@@ -157,7 +156,7 @@ sap.ui.define([
157
156
  * @hideconstructor
158
157
  * @public
159
158
  * @since 1.37.0
160
- * @version 1.108.17
159
+ * @version 1.108.18
161
160
  */
162
161
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
163
162
  constructor : constructor
@@ -1629,7 +1628,7 @@ sap.ui.define([
1629
1628
  }
1630
1629
 
1631
1630
  if (mFormatOptions) {
1632
- if (isEmptyObject(mFormatOptions)) {
1631
+ if (_Helper.isEmptyObject(mFormatOptions)) {
1633
1632
  mFormatOptions = undefined;
1634
1633
  } else if ("parseKeepsEmptyString" in mFormatOptions
1635
1634
  && oProperty.$Type !== "Edm.String") {
@@ -3273,7 +3272,7 @@ sap.ui.define([
3273
3272
 
3274
3273
  // Each reference must have contributed at least one qualifier. So if oValueListInfo
3275
3274
  // is empty, there cannot have been a reference.
3276
- if (isEmptyObject(oValueListInfo)) {
3275
+ if (_Helper.isEmptyObject(oValueListInfo)) {
3277
3276
  throw new Error("No annotation '" + sValueListReferences.slice(1) + "' for "
3278
3277
  + sPropertyPath);
3279
3278
  }
@@ -218,7 +218,7 @@ sap.ui.define([
218
218
  * @extends sap.ui.model.Model
219
219
  * @public
220
220
  * @since 1.37.0
221
- * @version 1.108.17
221
+ * @version 1.108.18
222
222
  */
223
223
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
224
224
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -31,6 +31,7 @@ sap.ui.define([
31
31
  this.mAggregatedQueryOptions = {};
32
32
  // whether the aggregated query options are processed the first time
33
33
  this.bAggregatedQueryOptionsInitial = true;
34
+ this.mCanUseCachePromiseByChildPath = {};
34
35
  // auto-$expand/$select: promises to wait until child bindings have provided
35
36
  // their path and query options
36
37
  this.aChildCanUseCachePromises = [];
@@ -215,7 +216,7 @@ sap.ui.define([
215
216
  * @param {object} mQueryOptions - The query options to be merged
216
217
  * @param {string} sBaseMetaPath - This binding's meta path
217
218
  * @param {boolean} bCacheImmutable - Whether the cache of this binding is immutable
218
- * @param {boolean} bIsProperty - Whether the child is a property binding
219
+ * @param {boolean} [bIsProperty] - Whether the child is a property binding
219
220
  * @returns {boolean} Whether the query options can be fulfilled by this binding
220
221
  *
221
222
  * @private
@@ -229,14 +230,19 @@ sap.ui.define([
229
230
  /*
230
231
  * Recursively merges the given query options into the given aggregated query options.
231
232
  *
232
- * @param {object} mAggregatedQueryOptions The aggregated query options
233
- * @param {object} mQueryOptions0 The query options to merge into the aggregated query
234
- * options
235
- * @param {string} sMetaPath The meta path for the current $expand
236
- * @param {boolean} [bInsideExpand] Whether the given query options are inside a $expand
237
- * @param {boolean} [bAdd] Whether to add the given query options because they are in a
238
- * $expand that has not been aggregated yet
239
- * @returns {boolean} Whether the query options can be fulfilled by this binding
233
+ * @param {object} mAggregatedQueryOptions
234
+ * The aggregated query options
235
+ * @param {object} mQueryOptions0
236
+ * The query options to merge into the aggregated query options
237
+ * @param {string} [sMetaPath]
238
+ * The meta path for the current $expand (only used if cache is immutable)
239
+ * @param {boolean} [bInsideExpand]
240
+ * Whether the given query options are inside a $expand
241
+ * @param {boolean} [bAdd]
242
+ * Whether to add the given query options because they are in a $expand that has not been
243
+ * aggregated yet
244
+ * @returns {boolean}
245
+ * Whether the query options can be fulfilled by this binding
240
246
  */
241
247
  function merge(mAggregatedQueryOptions, mQueryOptions0, sMetaPath, bInsideExpand, bAdd) {
242
248
  /*
@@ -306,10 +312,13 @@ sap.ui.define([
306
312
  }
307
313
 
308
314
  if (merge(mAggregatedQueryOptionsClone, mQueryOptions, sBaseMetaPath)) {
309
- if (!bCacheImmutable) {
310
- this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
311
- } else {
315
+ if (bCacheImmutable) {
312
316
  this.mLateQueryOptions = mAggregatedQueryOptionsClone;
317
+ } else {
318
+ this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
319
+ if (this.mLateQueryOptions) {
320
+ merge(this.mLateQueryOptions, mQueryOptions);
321
+ }
313
322
  }
314
323
  return true;
315
324
  }
@@ -660,14 +669,14 @@ sap.ui.define([
660
669
  * @param {sap.ui.model.odata.v4.Context} oContext
661
670
  * A context of this binding which is the direct or indirect parent of the child binding.
662
671
  * Initially it is the child binding's parent context (See
663
- * {@link sap.ui.model.odata.v4.ODataBinding#fetchQueryOptionsForOwnCache}). When a binding
664
- * delegates up to its parent binding, it passes its own parent context adjusting
672
+ * {@link sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache}). When a
673
+ * binding delegates up to its parent binding, it passes its own parent context adjusting
665
674
  * <code>sChildPath</code> accordingly.
666
675
  * @param {string} sChildPath
667
676
  * The child binding's binding path relative to <code>oContext</code>
668
- * @param {object|sap.ui.base.SyncPromise} vChildQueryOptions
669
- * The child binding's (aggregated) query options or a promise resolving with them
670
- * @param {boolean} bIsProperty
677
+ * @param {object|sap.ui.base.SyncPromise} [vChildQueryOptions={}]
678
+ * The child binding's (aggregated) query options (if any) or a promise resolving with them
679
+ * @param {boolean} [bIsProperty]
671
680
  * Whether the child is a property binding
672
681
  * @returns {sap.ui.base.SyncPromise}
673
682
  * A promise resolved with the reduced path for the child binding if the child binding can use
@@ -682,7 +691,7 @@ sap.ui.define([
682
691
  // getBaseForPathReduction must be called early, because the (virtual) parent context may be
683
692
  // lost again when the path is needed
684
693
  var sBaseForPathReduction = this.getBaseForPathReduction(),
685
- sBaseMetaPath = _Helper.getMetaPath(oContext.getPath()),
694
+ sBaseMetaPath,
686
695
  bCacheImmutable,
687
696
  oCanUseCachePromise,
688
697
  // whether this binding is an operation or depends on one
@@ -737,6 +746,23 @@ sap.ui.define([
737
746
  return SyncPromise.resolve(sResolvedChildPath);
738
747
  }
739
748
 
749
+ oCanUseCachePromise = this.mCanUseCachePromiseByChildPath[sChildPath];
750
+ if (oCanUseCachePromise && bIsProperty) {
751
+ return oCanUseCachePromise.then(function (sOldReducedPath) {
752
+ if (!sOldReducedPath) {
753
+ return undefined;
754
+ }
755
+ // Note: sResolvedChildPath could be "/SalesOrderList('42')/SO_2_SOITEM/0/Note"
756
+ // w/ index (thus getMetaPath helps), but getStrippedMetaPath makes no difference
757
+ if (!sChildPath.includes("/")
758
+ || _Helper.getMetaPath(sOldReducedPath)
759
+ === _Helper.getMetaPath(sResolvedChildPath)) {
760
+ return sResolvedChildPath;
761
+ }
762
+ return oMetaModel.getReducedPath(sResolvedChildPath, sBaseForPathReduction);
763
+ });
764
+ }
765
+
740
766
  // Note: this.oCachePromise exists for all bindings except operation bindings; it might
741
767
  // become pending again
742
768
  bCacheImmutable = this.oCachePromise.isRejected()
@@ -744,16 +770,17 @@ sap.ui.define([
744
770
  || oContext.isKeepAlive() // kept-alive contexts have no index when not in aContexts
745
771
  || this.oCache === null
746
772
  || this.oCache && this.oCache.hasSentRequest();
773
+ sBaseMetaPath = _Helper.getMetaPath(oContext.getPath());
747
774
  aPromises = [
748
- this.doFetchQueryOptions(this.oContext),
775
+ this.doFetchOrGetQueryOptions(this.oContext),
749
776
  // After access to complete meta path of property, the metadata of all prefix paths
750
777
  // is loaded so that synchronous access in wrapChildQueryOptions via getObject is
751
- // possible
778
+ // possible - as well as #getReducedPath
752
779
  fetchPropertyAndType(),
753
780
  vChildQueryOptions
754
781
  ];
755
782
  oCanUseCachePromise = SyncPromise.all(aPromises).then(function (aResult) {
756
- var mChildQueryOptions = aResult[2],
783
+ var mChildQueryOptions = aResult[2] || {},
757
784
  mWrappedChildQueryOptions,
758
785
  mLocalQueryOptions = aResult[0],
759
786
  oProperty = aResult[1],
@@ -774,7 +801,7 @@ sap.ui.define([
774
801
  that.bHasPathReductionToParent = true;
775
802
  return that.oContext.getBinding().fetchIfChildCanUseCache(that.oContext,
776
803
  _Helper.getRelativePath(sResolvedChildPath, that.oContext.getPath()),
777
- vChildQueryOptions);
804
+ mChildQueryOptions, bIsProperty);
778
805
  }
779
806
 
780
807
  if (bDependsOnOperation || sReducedChildMetaPath === "$count"
@@ -823,8 +850,8 @@ sap.ui.define([
823
850
  if (that.oCache) {
824
851
  that.oCache.setLateQueryOptions(that.mLateQueryOptions);
825
852
  } else if (that.oCache === null) {
826
- return that.oContext.getBinding().fetchIfChildCanUseCache(that.oContext,
827
- that.sPath, SyncPromise.resolve(that.mLateQueryOptions))
853
+ return that.oContext.getBinding()
854
+ .fetchIfChildCanUseCache(that.oContext, that.sPath, that.mLateQueryOptions)
828
855
  .then(function (sPath) {
829
856
  return sPath && sReducedPath;
830
857
  });
@@ -832,6 +859,9 @@ sap.ui.define([
832
859
  }
833
860
  return sReducedPath;
834
861
  });
862
+ if (bIsProperty && !oContext.getPath().includes("($uid=")) {
863
+ this.mCanUseCachePromiseByChildPath[sChildPath] = oCanUseCachePromise;
864
+ }
835
865
  this.aChildCanUseCachePromises.push(oCanUseCachePromise);
836
866
  this.oCachePromise = SyncPromise.all([this.oCachePromise, oCanUseCachePromise])
837
867
  .then(function (aResult) {
@@ -857,6 +887,7 @@ sap.ui.define([
857
887
  that.oModel.reportError(that + ": Failed to enhance query options for "
858
888
  + "auto-$expand/$select for child " + sChildPath, sClassName, oError);
859
889
  });
890
+
860
891
  return oCanUseCachePromise;
861
892
  };
862
893
 
@@ -980,7 +1011,7 @@ sap.ui.define([
980
1011
  * @private
981
1012
  */
982
1013
  ODataParentBinding.prototype.getQueryOptionsForPath = function (sPath, oContext) {
983
- if (Object.keys(this.mParameters).length) {
1014
+ if (!_Helper.isEmptyObject(this.mParameters)) {
984
1015
  // binding has parameters -> all query options need to be defined at the binding
985
1016
  return _Helper.getQueryOptionsForPath(this.getQueryOptionsFromParameters(), sPath);
986
1017
  }
@@ -1009,8 +1040,8 @@ sap.ui.define([
1009
1040
  * @function
1010
1041
  * @name sap.ui.model.odata.v4.ODataParentBinding.getQueryOptionsFromParameters
1011
1042
  * @private
1012
- * @see sap.ui.model.odata.v4.ODataBinding#fetchQueryOptionsForOwnCache
1013
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
1043
+ * @see sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache
1044
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
1014
1045
  */
1015
1046
 
1016
1047
  /**
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @mixes sap.ui.model.odata.v4.ODataBinding
43
43
  * @public
44
44
  * @since 1.37.0
45
- * @version 1.108.17
45
+ * @version 1.108.18
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -103,7 +103,7 @@ sap.ui.define([
103
103
  this.mQueryOptions = this.oModel.buildQueryOptions(_Helper.clone(mParameters),
104
104
  /*bSystemQueryOptionsAllowed*/sPath.endsWith("$count"));
105
105
  this.vValue = undefined;
106
- // BEWARE: #doFetchQueryOptions uses #isRoot which relies on this.oContext!
106
+ // BEWARE: #doFetchOrGetQueryOptions uses #isRoot which relies on this.oContext!
107
107
  this.fetchCache(oContext);
108
108
  oModel.bindingCreated(this);
109
109
  }
@@ -401,10 +401,10 @@ sap.ui.define([
401
401
 
402
402
  /**
403
403
  * @override
404
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
404
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
405
405
  */
406
- ODataPropertyBinding.prototype.doFetchQueryOptions = function () {
407
- return this.isRoot() ? SyncPromise.resolve(this.mQueryOptions) : SyncPromise.resolve({});
406
+ ODataPropertyBinding.prototype.doFetchOrGetQueryOptions = function () {
407
+ return this.isRoot() ? this.mQueryOptions : undefined;
408
408
  };
409
409
 
410
410
  /**
@@ -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
  /*eslint max-nested-callbacks: 0 */
19
18
 
@@ -877,7 +876,7 @@ sap.ui.define([
877
876
  }
878
877
  }
879
878
 
880
- if (!this.mLateQueryOptions) {
879
+ if (!(this.mLateQueryOptions || this.mQueryOptions && this.mQueryOptions.$select)) {
881
880
  return false; // no autoExpandSelect
882
881
  }
883
882
 
@@ -890,10 +889,15 @@ sap.ui.define([
890
889
  aUpdateProperties = [sRequestedPropertyPath];
891
890
 
892
891
  sFullResourceMetaPath = _Helper.buildPath(this.sMetaPath, sResourceMetaPath);
892
+ mQueryOptions = this.mLateQueryOptions
893
+ || { // ensure that $select precedes $expand in the resulting query
894
+ $select : this.mQueryOptions.$select,
895
+ $expand : this.mQueryOptions.$expand
896
+ };
893
897
  // sRequestedPropertyPath is also a metapath because the binding does not accept a path with
894
898
  // a collection-valued navigation property for a late property
895
899
  mQueryOptions = _Helper.intersectQueryOptions(
896
- _Helper.getQueryOptionsForPath(this.mLateQueryOptions, sResourcePath),
900
+ _Helper.getQueryOptionsForPath(mQueryOptions, sResourcePath),
897
901
  [sRequestedPropertyPath], this.oRequestor.getModelInterface().fetchMetadata,
898
902
  sFullResourceMetaPath);
899
903
  if (!mQueryOptions) {
@@ -1130,7 +1134,7 @@ sap.ui.define([
1130
1134
  /**
1131
1135
  * Returns this cache's query options.
1132
1136
  *
1133
- * @returns {object} The query options
1137
+ * @returns {object|undefined} The query options, if any
1134
1138
  *
1135
1139
  * @public
1136
1140
  * @see #setQueryOptions
@@ -1190,7 +1194,7 @@ sap.ui.define([
1190
1194
  * @see #registerChangeListener
1191
1195
  */
1192
1196
  _Cache.prototype.hasChangeListeners = function () {
1193
- return !isEmptyObject(this.mChangeListeners);
1197
+ return !_Helper.isEmptyObject(this.mChangeListeners);
1194
1198
  };
1195
1199
 
1196
1200
  /**
@@ -3741,7 +3745,7 @@ sap.ui.define([
3741
3745
  if (oData) {
3742
3746
  sHttpMethod = oData["X-HTTP-Method"] || sHttpMethod;
3743
3747
  delete oData["X-HTTP-Method"];
3744
- if (this.oRequestor.isActionBodyOptional() && !Object.keys(oData).length) {
3748
+ if (this.oRequestor.isActionBodyOptional() && _Helper.isEmptyObject(oData)) {
3745
3749
  oData = undefined;
3746
3750
  }
3747
3751
  }
@@ -1688,6 +1688,10 @@ sap.ui.define([
1688
1688
  && !mParameters.$$aggregation.hierarchyQualifier;
1689
1689
  },
1690
1690
 
1691
+ // Trampoline property to allow for mocking function module in unit tests.
1692
+ // @see sap.base.util.isEmptyObject
1693
+ isEmptyObject : isEmptyObject,
1694
+
1691
1695
  /**
1692
1696
  * Tells whether the value is a safe integer.
1693
1697
  *
@@ -2502,7 +2506,7 @@ sap.ui.define([
2502
2506
  }
2503
2507
  }
2504
2508
  if (!oProperty || oProperty.$kind === "Property") {
2505
- if (Object.keys(mChildQueryOptions).length > 0) {
2509
+ if (!isEmptyObject(mChildQueryOptions)) {
2506
2510
  Log.error("Failed to enhance query options for auto-$expand/$select as the"
2507
2511
  + " child binding has query options, but its path '" + sChildMetaPath
2508
2512
  + "' points to a structural property",
@@ -477,7 +477,7 @@ sap.ui.define([
477
477
  _Requestor.prototype.checkForOpenRequests = function () {
478
478
  var that = this;
479
479
 
480
- if (Object.keys(this.mRunningChangeRequests).length // running change requests
480
+ if (!_Helper.isEmptyObject(this.mRunningChangeRequests) // running change requests
481
481
  || Object.keys(this.mBatchQueue).some(function (sGroupId) { // pending requests
482
482
  return that.mBatchQueue[sGroupId].some(function (vRequest) {
483
483
  return Array.isArray(vRequest) ? vRequest.length : true;
@@ -611,7 +611,7 @@ sap.ui.define([
611
611
  sClassName);
612
612
  }
613
613
  });
614
- if (aResult.length > 0) {
614
+ if (aResult.length) {
615
615
  oSemantics.type = {EnumMember : aResult.join(" ")};
616
616
  }
617
617
  }
@@ -690,7 +690,7 @@ sap.ui.define([
690
690
  sTarget = sEntityContainerName + "/" + sEntitySetName;
691
691
  mAnnotations = _Helper.merge(this.convertedV2Annotations[sTarget] || {},
692
692
  this.mEntityType2EntitySetAnnotation[oEntitySet.$Type]);
693
- if (Object.keys(mAnnotations).length) {
693
+ if (!_Helper.isEmptyObject(mAnnotations)) {
694
694
  this.convertedV2Annotations[sTarget] = mAnnotations;
695
695
  }
696
696
  }
@@ -698,7 +698,7 @@ sap.ui.define([
698
698
 
699
699
  if (this.schema.$Annotations) {
700
700
  this.mergeAnnotations(this.convertedV2Annotations, this.schema.$Annotations);
701
- } else if (Object.keys(this.convertedV2Annotations).length > 0) {
701
+ } else if (!_Helper.isEmptyObject(this.convertedV2Annotations)) {
702
702
  this.schema.$Annotations = this.convertedV2Annotations;
703
703
  }
704
704
  this.convertedV2Annotations = {}; // reset schema annotations for next schema
@@ -760,7 +760,7 @@ sap.ui.define([
760
760
 
761
761
  // only if all (nested) query options are processed, all selects are known
762
762
  aSelects = Object.keys(mSelects);
763
- if (aSelects.length > 0) {
763
+ if (aSelects.length) {
764
764
  if (!mQueryOptions.$select) {
765
765
  aSelects.push("*");
766
766
  }
@@ -229,7 +229,7 @@ sap.ui.define([
229
229
  *
230
230
  * @extends sap.ui.model.Model
231
231
  * @public
232
- * @version 1.108.17
232
+ * @version 1.108.18
233
233
  */
234
234
  var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
235
235
 
@@ -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.108.17
22
+ * @version 1.108.18
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.108.17
35
+ * @version 1.108.18
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.108.17
29
+ * @version 1.108.18
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.108.17
36
+ * @version 1.108.18
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.108.17
22
+ * @version 1.108.18
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.108.17
22
+ * @version 1.108.18
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.108.17
27
+ * @version 1.108.18
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.108.17
29
+ * @version 1.108.18
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.108.17
29
+ * @version 1.108.18
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.108.17
27
+ * @version 1.108.18
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.108.17
22
+ * @version 1.108.18
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.108.17
22
+ * @version 1.108.18
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}.
@@ -48,7 +48,7 @@ sap.ui.define([
48
48
  *
49
49
  *
50
50
  * @author SAP SE
51
- * @version 1.108.17
51
+ * @version 1.108.18
52
52
  *
53
53
  * @public
54
54
  * @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.108.17
50
+ * @version 1.108.18
51
51
  *
52
52
  * @param {XMLDocument|string} oData
53
53
  * Either the URL where to load the XML from or an XML document
@@ -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.108.17
56
+ * @version 1.108.18
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.108.17
30
+ * @version 1.108.18
31
31
  *
32
32
  * @public
33
33
  * @since 1.48.0
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.base.Object
25
25
  * @abstract
26
26
  * @author SAP SE
27
- * @version 1.108.17
27
+ * @version 1.108.18
28
28
  * @since 1.100
29
29
  */
30
30
  return BaseObject.extend("sap.ui.test.generic.TestBase", {