@openui5/sap.ui.core 1.142.1 → 1.143.1

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 (273) 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/Event.js +1 -1
  8. package/src/sap/base/Eventing.js +1 -1
  9. package/src/sap/base/config.js +1 -1
  10. package/src/sap/base/i18n/LanguageTag.js +1 -1
  11. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  12. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  13. package/src/sap/base/util/restricted/_castArray.js +1 -1
  14. package/src/sap/base/util/restricted/_compact.js +1 -1
  15. package/src/sap/base/util/restricted/_curry.js +1 -1
  16. package/src/sap/base/util/restricted/_debounce.js +1 -1
  17. package/src/sap/base/util/restricted/_difference.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  23. package/src/sap/base/util/restricted/_flatten.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_intersection.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isNil.js +1 -1
  32. package/src/sap/base/util/restricted/_max.js +1 -1
  33. package/src/sap/base/util/restricted/_merge.js +1 -1
  34. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  35. package/src/sap/base/util/restricted/_min.js +1 -1
  36. package/src/sap/base/util/restricted/_omit.js +1 -1
  37. package/src/sap/base/util/restricted/_pick.js +1 -1
  38. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  39. package/src/sap/base/util/restricted/_throttle.js +1 -1
  40. package/src/sap/base/util/restricted/_toArray.js +1 -1
  41. package/src/sap/base/util/restricted/_union.js +1 -1
  42. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  43. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  44. package/src/sap/base/util/restricted/_uniq.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  47. package/src/sap/base/util/restricted/_without.js +1 -1
  48. package/src/sap/base/util/restricted/_xor.js +1 -1
  49. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  50. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  53. package/src/sap/ui/Device.js +3 -3
  54. package/src/sap/ui/Global.js +3 -3
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Exception.js +9 -7
  58. package/src/sap/ui/base/ExpressionParser.js +8 -7
  59. package/src/sap/ui/base/Interface.js +1 -1
  60. package/src/sap/ui/base/ManagedObject.js +1 -1
  61. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  62. package/src/sap/ui/base/Metadata.js +1 -1
  63. package/src/sap/ui/base/Object.js +1 -1
  64. package/src/sap/ui/base/ObjectPool.js +1 -1
  65. package/src/sap/ui/core/.library +2 -2
  66. package/src/sap/ui/core/BusyIndicator.js +1 -1
  67. package/src/sap/ui/core/Component.js +7 -6
  68. package/src/sap/ui/core/ComponentContainer.js +1 -1
  69. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  70. package/src/sap/ui/core/ComponentSupport.js +1 -1
  71. package/src/sap/ui/core/Configuration.js +1 -1
  72. package/src/sap/ui/core/Control.js +1 -1
  73. package/src/sap/ui/core/Core.js +6 -3
  74. package/src/sap/ui/core/CustomData.js +1 -1
  75. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  76. package/src/sap/ui/core/Element.js +1 -1
  77. package/src/sap/ui/core/ElementMetadata.js +1 -1
  78. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  79. package/src/sap/ui/core/EventBus.js +1 -1
  80. package/src/sap/ui/core/Fragment.js +1 -1
  81. package/src/sap/ui/core/HTML.js +1 -1
  82. package/src/sap/ui/core/History.js +1 -1
  83. package/src/sap/ui/core/Icon.js +1 -1
  84. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  85. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  86. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  87. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  88. package/src/sap/ui/core/InvisibleText.js +1 -1
  89. package/src/sap/ui/core/Item.js +1 -1
  90. package/src/sap/ui/core/LabelEnablement.js +6 -4
  91. package/src/sap/ui/core/LayoutData.js +1 -1
  92. package/src/sap/ui/core/ListItem.js +1 -1
  93. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  94. package/src/sap/ui/core/Locale.js +1 -1
  95. package/src/sap/ui/core/LocaleData.js +1 -1
  96. package/src/sap/ui/core/Manifest.js +1 -1
  97. package/src/sap/ui/core/Message.js +1 -1
  98. package/src/sap/ui/core/RenderManager.js +1 -1
  99. package/src/sap/ui/core/Renderer.js +1 -1
  100. package/src/sap/ui/core/ResizeHandler.js +1 -1
  101. package/src/sap/ui/core/ScrollBar.js +1 -1
  102. package/src/sap/ui/core/SeparatorItem.js +1 -1
  103. package/src/sap/ui/core/ShortcutHintsMixin.js +1 -13
  104. package/src/sap/ui/core/Title.js +1 -1
  105. package/src/sap/ui/core/TooltipBase.js +1 -1
  106. package/src/sap/ui/core/UIArea.js +1 -1
  107. package/src/sap/ui/core/UIComponent.js +1 -1
  108. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  109. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  110. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  111. package/src/sap/ui/core/XMLComposite.js +1 -1
  112. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  113. package/src/sap/ui/core/date/UI5Date.js +1 -1
  114. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  115. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  116. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  117. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  118. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  119. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  120. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  121. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  122. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  123. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  124. package/src/sap/ui/core/library.js +11 -11
  125. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  126. package/src/sap/ui/core/message/Message.js +1 -1
  127. package/src/sap/ui/core/message/MessageManager.js +1 -1
  128. package/src/sap/ui/core/message/MessageParser.js +1 -1
  129. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  130. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  131. package/src/sap/ui/core/messagebundle_es.properties +20 -20
  132. package/src/sap/ui/core/messagebundle_id.properties +2 -2
  133. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  134. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  135. package/src/sap/ui/core/mvc/JSView.js +1 -1
  136. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  137. package/src/sap/ui/core/mvc/View.js +1 -1
  138. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  139. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  140. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  141. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  142. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  143. package/src/sap/ui/core/routing/History.js +8 -4
  144. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  145. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  146. package/src/sap/ui/core/service/Service.js +1 -1
  147. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  148. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  149. package/src/sap/ui/core/support/Plugin.js +1 -1
  150. package/src/sap/ui/core/support/Support.js +1 -1
  151. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  152. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  153. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  154. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  155. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  156. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  157. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  158. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  159. package/src/sap/ui/core/themes/base/BrowserScrollbar.less +1 -1
  160. package/src/sap/ui/core/themes/base/DragAndDrop.less +21 -20
  161. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  162. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  163. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  164. package/src/sap/ui/core/tmpl/Template.js +1 -1
  165. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  166. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  167. package/src/sap/ui/core/util/Export.js +1 -1
  168. package/src/sap/ui/core/util/ExportCell.js +1 -1
  169. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  170. package/src/sap/ui/core/util/ExportRow.js +1 -1
  171. package/src/sap/ui/core/util/ExportType.js +1 -1
  172. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  173. package/src/sap/ui/core/util/File.js +1 -1
  174. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  175. package/src/sap/ui/core/util/MockServer.js +1 -1
  176. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  177. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +2 -2
  178. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +1 -1
  179. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +2 -2
  180. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  181. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  182. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  183. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  184. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  185. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  186. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  187. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  188. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  189. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  190. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  191. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  192. package/src/sap/ui/debug/ControlTree.js +1 -1
  193. package/src/sap/ui/debug/DebugEnv.js +1 -1
  194. package/src/sap/ui/debug/PropertyList.js +1 -1
  195. package/src/sap/ui/model/ClientModel.js +1 -1
  196. package/src/sap/ui/model/ClientTreeBinding.js +56 -7
  197. package/src/sap/ui/model/CompositeDataState.js +1 -1
  198. package/src/sap/ui/model/CompositeType.js +1 -1
  199. package/src/sap/ui/model/DataState.js +1 -1
  200. package/src/sap/ui/model/MetaModel.js +1 -1
  201. package/src/sap/ui/model/Model.js +1 -1
  202. package/src/sap/ui/model/SelectionModel.js +1 -1
  203. package/src/sap/ui/model/SimpleType.js +1 -1
  204. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  205. package/src/sap/ui/model/Type.js +1 -1
  206. package/src/sap/ui/model/json/JSONModel.js +2 -2
  207. package/src/sap/ui/model/message/MessageModel.js +1 -1
  208. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  209. package/src/sap/ui/model/odata/ODataMessageParser.js +31 -64
  210. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  211. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  212. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  213. package/src/sap/ui/model/odata/type/Boolean.js +8 -4
  214. package/src/sap/ui/model/odata/type/Byte.js +8 -4
  215. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  216. package/src/sap/ui/model/odata/type/Date.js +2 -2
  217. package/src/sap/ui/model/odata/type/DateTime.js +2 -2
  218. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  219. package/src/sap/ui/model/odata/type/DateTimeOffset.js +8 -4
  220. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  221. package/src/sap/ui/model/odata/type/Decimal.js +8 -4
  222. package/src/sap/ui/model/odata/type/Double.js +8 -4
  223. package/src/sap/ui/model/odata/type/Guid.js +8 -4
  224. package/src/sap/ui/model/odata/type/Int.js +9 -4
  225. package/src/sap/ui/model/odata/type/Int16.js +8 -4
  226. package/src/sap/ui/model/odata/type/Int32.js +8 -4
  227. package/src/sap/ui/model/odata/type/Int64.js +8 -4
  228. package/src/sap/ui/model/odata/type/ODataType.js +6 -7
  229. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  230. package/src/sap/ui/model/odata/type/SByte.js +8 -4
  231. package/src/sap/ui/model/odata/type/Single.js +8 -4
  232. package/src/sap/ui/model/odata/type/Stream.js +2 -2
  233. package/src/sap/ui/model/odata/type/String.js +8 -4
  234. package/src/sap/ui/model/odata/type/Time.js +2 -2
  235. package/src/sap/ui/model/odata/type/TimeOfDay.js +2 -2
  236. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  237. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  238. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  239. package/src/sap/ui/model/odata/v2/ODataModel.js +6 -11
  240. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  241. package/src/sap/ui/model/odata/v4/Context.js +2 -1
  242. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
  243. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  244. package/src/sap/ui/model/odata/v4/ODataListBinding.js +19 -2
  245. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +7 -29
  246. package/src/sap/ui/model/odata/v4/ODataModel.js +17 -16
  247. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +13 -8
  248. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  249. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +26 -11
  250. package/src/sap/ui/model/odata/v4/lib/_Cache.js +5 -3
  251. package/src/sap/ui/model/odata/v4/lib/_Helper.js +45 -31
  252. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  253. package/src/sap/ui/model/type/Boolean.js +1 -1
  254. package/src/sap/ui/model/type/Currency.js +1 -1
  255. package/src/sap/ui/model/type/Date.js +1 -1
  256. package/src/sap/ui/model/type/DateInterval.js +1 -1
  257. package/src/sap/ui/model/type/DateTime.js +1 -1
  258. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  259. package/src/sap/ui/model/type/FileSize.js +1 -1
  260. package/src/sap/ui/model/type/Float.js +1 -1
  261. package/src/sap/ui/model/type/Integer.js +1 -1
  262. package/src/sap/ui/model/type/String.js +1 -1
  263. package/src/sap/ui/model/type/Time.js +1 -1
  264. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  265. package/src/sap/ui/model/type/Unit.js +1 -1
  266. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  267. package/src/sap/ui/model/xml/XMLTreeBinding.js +10 -0
  268. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  269. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  270. package/src/sap/ui/test/generic/TestBase.js +1 -1
  271. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +6 -0
  272. package/src/sap/ui/util/Storage.js +1 -1
  273. package/src/ui5loader.js +2 -8
@@ -7,10 +7,9 @@
7
7
  /**
8
8
  * The types in this namespace are {@link sap.ui.model.SimpleType simple types} corresponding
9
9
  * to OData primitive types for both
10
- * {@link http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem OData V2}
10
+ * {@link https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338 OData V4.01}
11
11
  * and
12
- * {@link http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html OData V4} (see
13
- * "4.4 Primitive Types").
12
+ * {@link https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem OData V2}.
14
13
  *
15
14
  * They can be used in any place where simple types are allowed (and the model representation
16
15
  * matches), but they are of course most valuable when used in bindings to a
@@ -92,9 +91,9 @@ sap.ui.define([
92
91
  * Constructor for a new <code>ODataType</code>.
93
92
  *
94
93
  * @class This class is an abstract base class for all OData primitive types (see {@link
95
- * http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part3-csdl/odata-v4.0-errata02-os-part3-csdl-complete.html#_The_edm:Documentation_Element
96
- * OData V4 Edm Types} and
97
- * {@link http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem
94
+ * https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338
95
+ * OData V4.01 Edm Types} and
96
+ * {@link https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem
98
97
  * OData V2 Edm Types}). All subtypes implement the interface of
99
98
  * {@link sap.ui.model.SimpleType}. That means they implement next to the constructor:
100
99
  * <ul>
@@ -116,7 +115,7 @@ sap.ui.define([
116
115
  * @extends sap.ui.model.SimpleType
117
116
  *
118
117
  * @author SAP SE
119
- * @version 1.142.1
118
+ * @version 1.143.1
120
119
  *
121
120
  * @abstract
122
121
  * @alias sap.ui.model.odata.type.ODataType
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.model.odata.type.ODataType
31
31
  * @public
32
32
  * @since 1.37.0
33
- * @version 1.142.1
33
+ * @version 1.143.1
34
34
  */
35
35
  var Raw = ODataType.extend("sap.ui.model.odata.type.Raw", {
36
36
  constructor : function (oFormatOptions, oConstraints) {
@@ -14,9 +14,13 @@ sap.ui.define([
14
14
  /**
15
15
  * Constructor for a primitive type <code>Edm.SByte</code>.
16
16
  *
17
- * @class This class represents the OData primitive type <a
18
- * href="http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
19
- * <code>Edm.SByte</code></a>.
17
+ * @class This class represents the OData primitive type <code>Edm.SByte</code>, see
18
+ * <a
19
+ * href="https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338">
20
+ * type definition for OData V4.01</a> or
21
+ * <a
22
+ * href="https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
23
+ * type definition for OData V2</a>.
20
24
  *
21
25
  * In both {@link sap.ui.model.odata.v2.ODataModel} and {@link sap.ui.model.odata.v4.ODataModel}
22
26
  * this type is represented as a <code>number</code>.
@@ -24,7 +28,7 @@ sap.ui.define([
24
28
  * @extends sap.ui.model.odata.type.Int
25
29
  *
26
30
  * @author SAP SE
27
- * @version 1.142.1
31
+ * @version 1.143.1
28
32
  *
29
33
  * @alias sap.ui.model.odata.type.SByte
30
34
  * @param {object} [oFormatOptions]
@@ -64,9 +64,13 @@ sap.ui.define([
64
64
  /**
65
65
  * Constructor for a primitive type <code>Edm.Single</code>.
66
66
  *
67
- * @class This class represents the OData primitive type <a
68
- * href="http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
69
- * <code>Edm.Single</code></a>.
67
+ * @class This class represents the OData primitive type <code>Edm.Single</code>, see
68
+ * <a
69
+ * href="https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338">
70
+ * type definition for OData V4.01</a> or
71
+ * <a
72
+ * href="https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
73
+ * type definition for OData V2</a>.
70
74
  *
71
75
  * In both {@link sap.ui.model.odata.v2.ODataModel} and {@link sap.ui.model.odata.v4.ODataModel}
72
76
  * this type is represented as a <code>number</code>.
@@ -74,7 +78,7 @@ sap.ui.define([
74
78
  * @extends sap.ui.model.odata.type.ODataType
75
79
  *
76
80
  * @author SAP SE
77
- * @version 1.142.1
81
+ * @version 1.143.1
78
82
  *
79
83
  * @alias sap.ui.model.odata.type.Single
80
84
  * @param {object} [oFormatOptions]
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @alias sap.ui.model.odata.type.Stream
51
51
  * @author SAP SE
52
52
  * @class This class represents the OData V4 primitive type {@link
53
- * http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part3-csdl/odata-v4.0-errata02-os-part3-csdl-complete.html#_The_edm:Documentation_Element
53
+ * https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338
54
54
  * <code>Edm.Stream</code>}. The values for stream properties do not appear in the entity
55
55
  * payload. Instead, the values are read or written through URLs.
56
56
  *
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @extends sap.ui.model.odata.type.ODataType
61
61
  * @public
62
62
  * @since 1.51.0
63
- * @version 1.142.1
63
+ * @version 1.143.1
64
64
  */
65
65
  var Stream = ODataType.extend("sap.ui.model.odata.type.Stream", {
66
66
  constructor : function (oFormatOptions, oConstraints) {
@@ -75,9 +75,13 @@ sap.ui.define([
75
75
  /**
76
76
  * Constructor for an OData primitive type <code>Edm.String</code>.
77
77
  *
78
- * @class This class represents the OData primitive type <a
79
- * href="http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
80
- * <code>Edm.String</code></a>.
78
+ * @class This class represents the OData primitive type <code>Edm.String</code>, see
79
+ * <a
80
+ * href="https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338">
81
+ * type definition for OData V4.01</a> or
82
+ * <a
83
+ * href="https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
84
+ * type definition for OData V2</a>.
81
85
  *
82
86
  * In both {@link sap.ui.model.odata.v2.ODataModel} and {@link sap.ui.model.odata.v4.ODataModel}
83
87
  * this type is represented as a <code>string</code>.
@@ -85,7 +89,7 @@ sap.ui.define([
85
89
  * @extends sap.ui.model.odata.type.ODataType
86
90
  *
87
91
  * @author SAP SE
88
- * @version 1.142.1
92
+ * @version 1.143.1
89
93
  *
90
94
  * @alias sap.ui.model.odata.type.String
91
95
  * @param {object} [oFormatOptions]
@@ -125,7 +125,7 @@ sap.ui.define([
125
125
  * Constructor for an OData primitive type <code>Edm.Time</code>.
126
126
  *
127
127
  * @class This class represents the OData V2 primitive type <a
128
- * href="http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
128
+ * href="https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
129
129
  * <code>Edm.Time</code></a>.
130
130
  *
131
131
  * In {@link sap.ui.model.odata.v2.ODataModel ODataModel} this type is represented as an
@@ -138,7 +138,7 @@ sap.ui.define([
138
138
  * @extends sap.ui.model.odata.type.ODataType
139
139
  *
140
140
  * @author SAP SE
141
- * @version 1.142.1
141
+ * @version 1.143.1
142
142
  *
143
143
  * @alias sap.ui.model.odata.type.Time
144
144
  * @param {object} [oFormatOptions]
@@ -86,14 +86,14 @@ sap.ui.define([
86
86
  * @alias sap.ui.model.odata.type.TimeOfDay
87
87
  * @author SAP SE
88
88
  * @class This class represents the OData V4 primitive type {@link
89
- * http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part3-csdl/odata-v4.0-errata02-os-part3-csdl-complete.html#_The_edm:Documentation_Element
89
+ * https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338
90
90
  * <code>Edm.TimeOfDay</code>}.
91
91
  * In {@link sap.ui.model.odata.v4.ODataModel} this type is represented as a
92
92
  * <code>string</code>.
93
93
  * @extends sap.ui.model.odata.type.ODataType
94
94
  * @public
95
95
  * @since 1.37.0
96
- * @version 1.142.1
96
+ * @version 1.143.1
97
97
  */
98
98
  var TimeOfDay = ODataType.extend("sap.ui.model.odata.type.TimeOfDay", {
99
99
  constructor : function (oFormatOptions, oConstraints) {
@@ -72,7 +72,7 @@ sap.ui.define([
72
72
  * @extends sap.ui.model.type.Unit
73
73
  * @public
74
74
  * @since 1.63.0
75
- * @version 1.142.1
75
+ * @version 1.143.1
76
76
  */
77
77
  var Unit = BaseUnit.extend("sap.ui.model.odata.type.Unit", {
78
78
  constructor : function (oFormatOptions, oConstraints, aDynamicFormatOptionNames) {
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @hideconstructor
65
65
  * @public
66
66
  * @since 1.93.0
67
- * @version 1.142.1
67
+ * @version 1.143.1
68
68
  */
69
69
  var Context = BaseContext.extend("sap.ui.model.odata.v2.Context", {
70
70
  constructor : function (oModel, sPath, sDeepPath, oCreatePromise, bInactive,
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @class Annotation loader for OData V2 services
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.142.1
41
+ * @version 1.143.1
42
42
  *
43
43
  * @public
44
44
  * @since 1.37.0
@@ -53,13 +53,12 @@ sap.ui.define([
53
53
  "sap/ui/model/odata/OperationMode",
54
54
  "sap/ui/model/odata/UpdateMethod",
55
55
  "sap/ui/thirdparty/datajs",
56
- "sap/ui/thirdparty/URI",
57
56
  "sap/ui/util/isCrossOriginURL"
58
57
  ], function(_CreatedContextsCache, Context, ODataAnnotations, ODataContextBinding, ODataListBinding, ODataTreeBinding,
59
58
  assert, Log, Localization, encodeURL, deepEqual, deepExtend, each, extend, isEmptyObject, isPlainObject, merge,
60
59
  uid, SyncPromise, Messaging, Message, MessageParser, MessageType, Supportability, _Helper, BindingMode,
61
60
  BaseContext, FilterProcessor, Model, CountMode, MessageScope, ODataMetadata, ODataMetaModel, ODataMessageParser,
62
- ODataPropertyBinding, ODataUtils, OperationMode, UpdateMethod, OData, URI, isCrossOriginURL
61
+ ODataPropertyBinding, ODataUtils, OperationMode, UpdateMethod, OData, isCrossOriginURL
63
62
  ) {
64
63
 
65
64
  "use strict";
@@ -219,7 +218,7 @@ sap.ui.define([
219
218
  * This model is not prepared to be inherited from.
220
219
  *
221
220
  * @author SAP SE
222
- * @version 1.142.1
221
+ * @version 1.143.1
223
222
  *
224
223
  * @public
225
224
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -1407,15 +1406,13 @@ sap.ui.define([
1407
1406
  };
1408
1407
 
1409
1408
  /**
1410
- * Extracts the server base URL from the service URL
1409
+ * Computes and returns the server base URL from the service URL.
1410
+ *
1411
1411
  * @returns {string} The server base URL
1412
1412
  * @private
1413
1413
  */
1414
- ODataModel.prototype._getServerUrl = function() {
1415
- var oServiceURI, sURI;
1416
- oServiceURI = new URI(this.sServiceUrl).absoluteTo(document.baseURI);
1417
- sURI = new URI("/").absoluteTo(oServiceURI).toString();
1418
- return sURI;
1414
+ ODataModel.prototype._getServerUrl = function () {
1415
+ return new URL("/", new URL(this.sServiceUrl, document.baseURI)).href;
1419
1416
  };
1420
1417
 
1421
1418
  /**
@@ -2236,8 +2233,6 @@ sap.ui.define([
2236
2233
  * {@link sap.ui.model.odata.OperationMode.Server OperationMode.Server} or
2237
2234
  * {@link sap.ui.model.odata.OperationMode.Auto OperationMode.Auto} is used.
2238
2235
  * @param {boolean} [mParameters.restoreTreeStateAfterChange]
2239
- * This parameter is experimental as of version 1.141.0.
2240
- *
2241
2236
  * Whether the tree state is restored on hierarchy maintenance, such as adding, removing, or deleting a node.
2242
2237
  * This is only supported if the following conditions are met: <ul>
2243
2238
  * <li>The binding has to use {@link sap.ui.model.odata.OperationMode.Server OperationMode.Server}</li>
@@ -105,7 +105,7 @@ sap.ui.define([
105
105
  * @extends sap.ui.model.TreeBinding
106
106
  * @hideconstructor
107
107
  * @public
108
- * @version 1.142.1
108
+ * @version 1.143.1
109
109
  */
110
110
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
111
111
 
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.142.1
45
+ * @version 1.143.1
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -1269,6 +1269,7 @@ sap.ui.define([
1269
1269
  */
1270
1270
  Context.prototype.isAggregated = function () {
1271
1271
  this.oBinding.checkSuspended();
1272
+ // see _AggregationCache#isAggregated
1272
1273
  const bAggregated = this.oBinding.mParameters.$$aggregation?.$leafLevelAggregated;
1273
1274
  if (bAggregated === undefined) {
1274
1275
  return false;
@@ -548,6 +548,9 @@ sap.ui.define([
548
548
  this.oCachePromise = SyncPromise.all(aPromises).then(function (aResult) {
549
549
  var mQueryOptions = aResult[0].mQueryOptions;
550
550
 
551
+ if (oCallToken.initiallySuspended) {
552
+ return null;
553
+ }
551
554
  if (aResult[0].sReducedPath) {
552
555
  that.sReducedPath = aResult[0].sReducedPath;
553
556
  }
@@ -74,7 +74,7 @@ sap.ui.define([
74
74
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
75
75
  * @public
76
76
  * @since 1.37.0
77
- * @version 1.142.1
77
+ * @version 1.143.1
78
78
  *
79
79
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
80
80
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
61
61
  * @public
62
62
  * @since 1.37.0
63
- * @version 1.142.1
63
+ * @version 1.143.1
64
64
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
65
65
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
66
66
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -143,6 +143,10 @@ sap.ui.define([
143
143
  this.oHeaderContext = this.bRelative
144
144
  ? null
145
145
  : Context.createNewContext(oModel, this, sPath);
146
+ this.bInitial = true;
147
+ Promise.resolve().then(() => {
148
+ this.bInitial = false; // ensure to reset the initial flag after the synchronous part
149
+ });
146
150
  this.sOperationMode = mParameters.$$operationMode || oModel.sOperationMode;
147
151
  // map<string,sap.ui.model.odata.v4.Context>
148
152
  // Maps a string path to a v4.Context with that path. A context may either be
@@ -774,7 +778,7 @@ sap.ui.define([
774
778
 
775
779
  iCount ??= this.oCache.collapse(
776
780
  _Helper.getRelativePath(oContext.getPath(), this.oHeaderContext.getPath()),
777
- bAll ? this.lockGroup() : undefined, bSilent, false, this.getKeepAlivePredicates());
781
+ bAll ? this.lockGroup() : undefined, bSilent);
778
782
 
779
783
  if (iCount > 0) {
780
784
  const aContexts = this.aContexts;
@@ -1728,6 +1732,18 @@ sap.ui.define([
1728
1732
  */
1729
1733
  ODataListBinding.prototype.doSetProperty = function () {};
1730
1734
 
1735
+ /**
1736
+ * @override
1737
+ * @see sap.ui.model.odata.v4.ODataParentBinding#doSuspend
1738
+ */
1739
+ ODataListBinding.prototype.doSuspend = function () {
1740
+ // if auto-$expand/$select is not used, this.oFetchCacheCallToken may be reset already
1741
+ if (this.bInitial && this.oFetchCacheCallToken) {
1742
+ this.oFetchCacheCallToken.initiallySuspended = true;
1743
+ this.oCache = null;
1744
+ }
1745
+ };
1746
+
1731
1747
  /**
1732
1748
  * Expands the group node that the given context points to by the given number of levels.
1733
1749
  *
@@ -3476,6 +3492,7 @@ sap.ui.define([
3476
3492
  */
3477
3493
  // @override sap.ui.model.Binding#initialize
3478
3494
  ODataListBinding.prototype.initialize = function () {
3495
+ this.bInitial = false;
3479
3496
  if (this.isResolved()) {
3480
3497
  this.checkDataState();
3481
3498
  if (this.isRootBindingSuspended()) {
@@ -40,13 +40,12 @@ sap.ui.define([
40
40
  "sap/ui/model/odata/type/Single",
41
41
  "sap/ui/model/odata/type/Stream",
42
42
  "sap/ui/model/odata/type/String",
43
- "sap/ui/model/odata/type/TimeOfDay",
44
- "sap/ui/thirdparty/URI"
43
+ "sap/ui/model/odata/type/TimeOfDay"
45
44
  ], function (AnnotationHelper, ValueListType, _Helper, assert, Log, JSTokenizer, ObjectPath,
46
45
  ManagedObject, SyncPromise, BindingMode, ChangeReason, ClientListBinding, BaseContext,
47
46
  ContextBinding, MetaModel, PropertyBinding, OperationMode, Boolean, Byte, EdmDate,
48
47
  DateTimeOffset, Decimal, Double, Guid, Int16, Int32, Int64, Raw, SByte, Single, Stream,
49
- String, TimeOfDay, URI) {
48
+ String, TimeOfDay) {
50
49
  "use strict";
51
50
  /*eslint max-nested-callbacks: 0 */
52
51
 
@@ -204,7 +203,7 @@ sap.ui.define([
204
203
  * @hideconstructor
205
204
  * @public
206
205
  * @since 1.37.0
207
- * @version 1.142.1
206
+ * @version 1.143.1
208
207
  */
209
208
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
210
209
  constructor : constructor
@@ -2294,27 +2293,6 @@ sap.ui.define([
2294
2293
  });
2295
2294
  };
2296
2295
 
2297
- /**
2298
- * Returns the absolute service URL corresponding to the given relative $metadata URL.
2299
- *
2300
- * @param {string} sUrl
2301
- * A $metadata URL, for example "../ValueListService/$metadata?sap-client=123", interpreted
2302
- * relative to this meta model's URL
2303
- * @returns {string}
2304
- * The corresponding absolute service URL
2305
- *
2306
- * @private
2307
- */
2308
- ODataMetaModel.prototype.getAbsoluteServiceUrl = function (sUrl) {
2309
- // Note: make our $metadata URL absolute because URI#absoluteTo requires an absolute base
2310
- // URL (and it fails if the base URL starts with "..")
2311
- var sAbsoluteUrl = new URI(this.sUrl).absoluteTo(document.baseURI).pathname().toString();
2312
-
2313
- // sUrl references the metadata document, make it absolute based on our $metadata URL to get
2314
- // rid of ".." segments and remove the filename part
2315
- return new URI(sUrl).absoluteTo(sAbsoluteUrl).filename("").toString();
2316
- };
2317
-
2318
2296
  /**
2319
2297
  * Builds the completely reduced path or a list of all reductions of the given path based on
2320
2298
  * metadata. Removes adjacent partner navigation properties and reduces binding paths to
@@ -2612,7 +2590,7 @@ sap.ui.define([
2612
2590
  */
2613
2591
  ODataMetaModel.prototype.getOrCreateSharedModel = function (sUrl, bCopyAnnotations,
2614
2592
  bAutoExpandSelect, sQualifiedParentName) {
2615
- sUrl = this.getAbsoluteServiceUrl(sUrl);
2593
+ sUrl = _Helper.makeAbsolute(sUrl, this.sUrl, /*bServiceUrl*/true);
2616
2594
  const sMapKey = !!bAutoExpandSelect + sUrl; // no separator needed as sUrl.startsWith("/")
2617
2595
  let mSharedModelByUrl = this.mSharedModelByUrl;
2618
2596
  if (!bCopyAnnotations) {
@@ -2868,8 +2846,8 @@ sap.ui.define([
2868
2846
  return null;
2869
2847
  }
2870
2848
 
2871
- sUrl = that.getAbsoluteServiceUrl(
2872
- _Helper.setLanguage(oCodeList.Url, that.sLanguage));
2849
+ sUrl = _Helper.makeAbsolute(_Helper.setLanguage(oCodeList.Url, that.sLanguage),
2850
+ that.sUrl, /*bServiceUrl*/true);
2873
2851
  // separator needed (Note: path must not include hash)
2874
2852
  sCacheKey = oCodeList.CollectionPath + "#" + sUrl;
2875
2853
  oPromise = mCodeListUrl2Promise[sCacheKey];
@@ -3781,7 +3759,7 @@ sap.ui.define([
3781
3759
  for (sReferenceUri in mScope.$Reference) {
3782
3760
  oReference = mScope.$Reference[sReferenceUri];
3783
3761
  // interpret reference URI relative to metadata URL
3784
- sReferenceUri = new URI(sReferenceUri).absoluteTo(this.sUrl).toString();
3762
+ sReferenceUri = _Helper.makeAbsolute(sReferenceUri, this.sUrl);
3785
3763
 
3786
3764
  if ("$IncludeAnnotations" in oReference) {
3787
3765
  this._reportAndThrowError("Unsupported IncludeAnnotations", sUrl);
@@ -7,9 +7,6 @@
7
7
  /**
8
8
  * Model and related classes like bindings for OData V4.
9
9
  *
10
- * <b>Note:</b> Smart controls (<code>sap.ui.comp</code> library) do not support the SAPUI5 OData V4
11
- * model. Also controls such as {@link sap.ui.table.TreeTable} and
12
- * {@link sap.ui.table.AnalyticalTable} are not supported together with the SAPUI5 OData V4 model.
13
10
  * The interface for applications has been changed for easier and more efficient use of the model.
14
11
  * For a summary of these changes, see
15
12
  * {@link topic:abd4d7c7548d4c29ab8364d3904a6d74 Changes Compared to OData V2 Model}.
@@ -45,12 +42,11 @@ sap.ui.define([
45
42
  "sap/ui/model/BindingMode",
46
43
  "sap/ui/model/Context",
47
44
  "sap/ui/model/Model",
48
- "sap/ui/model/odata/OperationMode",
49
- "sap/ui/thirdparty/URI"
45
+ "sap/ui/model/odata/OperationMode"
50
46
  ], function (ODataContextBinding, ODataListBinding, ODataMetaModel, ODataPropertyBinding,
51
47
  SubmitMode, _GroupLock, _Helper, _MetadataRequestor, _Parser, _Requestor, assert, Log,
52
48
  Localization, SyncPromise, Messaging, Rendering, Supportability, CacheManager,
53
- Message, MessageType, BindingMode, BaseContext, Model, OperationMode, URI) {
49
+ Message, MessageType, BindingMode, BaseContext, Model, OperationMode) {
54
50
  "use strict";
55
51
 
56
52
  /**
@@ -156,6 +152,8 @@ sap.ui.define([
156
152
  * "cross-service references". Supported since 1.81.0
157
153
  * @param {string} [mParameters.odataVersion="4.0"]
158
154
  * The version of the OData service. Supported values are "2.0", "4.0", and "4.01".
155
+ * <b>Note:</b> "2.0" is deprecated since 1.143.0. We recommend migrating your service to
156
+ * OData V4.
159
157
  * @param {sap.ui.model.odata.OperationMode} [mParameters.operationMode]
160
158
  * The operation mode for filtering and sorting. Since 1.39.0, the operation mode
161
159
  * {@link sap.ui.model.odata.OperationMode.Server} is supported. All other operation modes
@@ -242,7 +240,7 @@ sap.ui.define([
242
240
  * @extends sap.ui.model.Model
243
241
  * @public
244
242
  * @since 1.37.0
245
- * @version 1.142.1
243
+ * @version 1.143.1
246
244
  */
247
245
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
248
246
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -273,8 +271,8 @@ sap.ui.define([
273
271
  sParameter,
274
272
  mQueryParams,
275
273
  sServiceUrl,
276
- oUri,
277
274
  mUriParameters,
275
+ sUrlParameters,
278
276
  that = this;
279
277
 
280
278
  // do not pass any parameters to Model
@@ -298,8 +296,10 @@ sap.ui.define([
298
296
  if (!sServiceUrl) {
299
297
  throw new Error("Missing service root URL");
300
298
  }
301
- oUri = new URI(sServiceUrl);
302
- if (oUri.path()[oUri.path().length - 1] !== "/") {
299
+ // we don't expect the sServiceUrl to contain a "#" hash part, because it is not relevant
300
+ // for OData requests
301
+ [sServiceUrl, sUrlParameters] = sServiceUrl.split("?");
302
+ if (sServiceUrl.at(-1) !== "/") {
303
303
  throw new Error("Service root URL must end with '/'");
304
304
  }
305
305
  if (mParameters.operationMode && mParameters.operationMode !== OperationMode.Server) {
@@ -307,15 +307,16 @@ sap.ui.define([
307
307
  + mParameters.operationMode);
308
308
  }
309
309
  this.sOperationMode = mParameters.operationMode;
310
+ mUriParameters = _Helper.getUrlParameters(sUrlParameters);
310
311
  // Note: strict checking for model's URI parameters, but "sap-*" is allowed
311
- mUriParameters = this.buildQueryOptions(oUri.query(true), false, true);
312
+ mUriParameters = this.buildQueryOptions(mUriParameters, false, true);
312
313
  // BEWARE: these are shared across all bindings!
313
314
  this.mUriParameters = mUriParameters;
314
315
  if (Supportability.isStatisticsEnabled()) {
315
316
  // Note: this way, "sap-statistics" is not sent within $batch
316
317
  mUriParameters = Object.assign({"sap-statistics" : true}, mUriParameters);
317
318
  }
318
- this.sServiceUrl = oUri.query("").toString();
319
+ this.sServiceUrl = sServiceUrl;
319
320
  this.sGroupId = mParameters.groupId;
320
321
  if (this.sGroupId === undefined) {
321
322
  this.sGroupId = "$auto";
@@ -967,10 +968,10 @@ sap.ui.define([
967
968
  * An array of navigation property names which are omitted from the main list request (since
968
969
  * 1.137.0). Instead, each of them is loaded in a separate request. This results in the main
969
970
  * list becoming available faster, while the separate properties are merged as soon as the
970
- * data is received. Note that the separate properties must be single valued and part of the
971
- * '$expand' system query option, either automatically via the "autoExpandSelect" model
972
- * parameter (see {@link #constructor}) or manually. The <code>$$separate</code> parameter
973
- * must not be combined with <code>$$aggregation</code>.
971
+ * data is received. Note that the separate properties must be single valued. If they are not
972
+ * part of the '$expand' system query option, either automatically via the "autoExpandSelect"
973
+ * model parameter (see {@link #constructor}) or manually, they are ignored. The
974
+ * <code>$$separate</code> parameter must not be combined with <code>$$aggregation</code>.
974
975
  * @param {boolean} [mParameters.$$sharedRequest]
975
976
  * Whether multiple bindings for the same resource path share the data, so that it is
976
977
  * requested only once.
@@ -731,11 +731,11 @@ sap.ui.define([
731
731
  /**
732
732
  * Binding specific code for suspend.
733
733
  *
734
+ * @abstract
735
+ * @function
736
+ * @name sap.ui.model.odata.v4.ODataParentBinding#doSuspend
734
737
  * @private
735
738
  */
736
- ODataParentBinding.prototype.doSuspend = function () {
737
- // nothing to do here
738
- };
739
739
 
740
740
  /**
741
741
  * Determines whether a child binding with the given context and path can use
@@ -823,9 +823,15 @@ sap.ui.define([
823
823
 
824
824
  if (bDependsOnOperation && !sResolvedChildPath.includes("/$Parameter/")
825
825
  || this.isRootBindingSuspended()
826
- || _Helper.isDataAggregation(this.mParameters)) {
827
- // With data aggregation, no auto-$expand/$select is needed, but the child may still use
828
- // the parent's cache
826
+ || _Helper.isDataAggregation(this.mParameters)
827
+ && (oContext === this.getHeaderContext?.() || oContext.isAggregated()
828
+ || this.mParameters.$$aggregation.aggregate[sChildPath]?.name)) {
829
+ // In general there is no need for auto-$expand/$select, if the given context is a
830
+ // header context. But exiting here always, if a header context is used, changes the
831
+ // timing.
832
+ // With data aggregation, no auto-$expand/$select is needed for a header context, a
833
+ // context referencing aggregated data, or a dynamic property, but the child may still
834
+ // use the parent's cache; in case of a single record auto-$expand/$select is used.
829
835
  // Note: Operation bindings do not support auto-$expand/$select yet
830
836
  return SyncPromise.resolve(sResolvedChildPath);
831
837
  }
@@ -891,8 +897,7 @@ sap.ui.define([
891
897
  mChildQueryOptions, bIsProperty);
892
898
  }
893
899
 
894
- if (oProperty?.["@$ui5.$count"]
895
- && oContext !== oContext.getBinding().getHeaderContext?.()
900
+ if (oProperty?.["@$ui5.$count"] && oContext !== that.getHeaderContext?.()
896
901
  // avoid new $count handling in case of "manual" $expand
897
902
  // Note: sChildPath.slice(0, -7) is the navigation property name
898
903
  && !mLocalQueryOptions.$expand?.[sChildPath.slice(0, -7)]) {
@@ -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.142.1
45
+ * @version 1.143.1
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