@openui5/sap.ui.core 1.141.2 → 1.143.0

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 (364) hide show
  1. package/.dtsgenrc +22 -0
  2. package/README.md +2 -2
  3. package/REUSE.toml +39 -1
  4. package/THIRDPARTY.txt +36 -3
  5. package/package.json +1 -1
  6. package/src/jquery.sap.global.js +1 -1
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.storage.js +3 -3
  11. package/src/sap/base/Event.js +1 -1
  12. package/src/sap/base/Eventing.js +1 -1
  13. package/src/sap/base/config.js +1 -1
  14. package/src/sap/base/i18n/LanguageTag.js +1 -1
  15. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  16. package/src/sap/base/util/resolveReference.js +1 -1
  17. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  18. package/src/sap/base/util/restricted/_castArray.js +1 -1
  19. package/src/sap/base/util/restricted/_compact.js +1 -1
  20. package/src/sap/base/util/restricted/_curry.js +1 -1
  21. package/src/sap/base/util/restricted/_debounce.js +1 -1
  22. package/src/sap/base/util/restricted/_difference.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  24. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_flatten.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  30. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  31. package/src/sap/base/util/restricted/_intersection.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  33. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  35. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  36. package/src/sap/base/util/restricted/_isNil.js +1 -1
  37. package/src/sap/base/util/restricted/_max.js +1 -1
  38. package/src/sap/base/util/restricted/_merge.js +1 -1
  39. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  40. package/src/sap/base/util/restricted/_min.js +1 -1
  41. package/src/sap/base/util/restricted/_omit.js +1 -1
  42. package/src/sap/base/util/restricted/_pick.js +1 -1
  43. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  44. package/src/sap/base/util/restricted/_throttle.js +1 -1
  45. package/src/sap/base/util/restricted/_toArray.js +1 -1
  46. package/src/sap/base/util/restricted/_union.js +1 -1
  47. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  48. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  49. package/src/sap/base/util/restricted/_uniq.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  51. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  52. package/src/sap/base/util/restricted/_without.js +1 -1
  53. package/src/sap/base/util/restricted/_xor.js +1 -1
  54. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  55. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  57. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  58. package/src/sap/ui/Device.js +3 -3
  59. package/src/sap/ui/Global.js +3 -3
  60. package/src/sap/ui/base/Event.js +1 -1
  61. package/src/sap/ui/base/EventProvider.js +1 -1
  62. package/src/sap/ui/base/Exception.js +9 -7
  63. package/src/sap/ui/base/ExpressionParser.js +8 -7
  64. package/src/sap/ui/base/Interface.js +1 -1
  65. package/src/sap/ui/base/ManagedObject.js +1 -1
  66. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  67. package/src/sap/ui/base/Metadata.js +1 -1
  68. package/src/sap/ui/base/Object.js +1 -1
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/core/.library +7 -7
  71. package/src/sap/ui/core/AppCacheBuster.js +21 -19
  72. package/src/sap/ui/core/BusyIndicator.js +1 -1
  73. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  74. package/src/sap/ui/core/Component.js +52 -40
  75. package/src/sap/ui/core/ComponentContainer.js +1 -1
  76. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  77. package/src/sap/ui/core/ComponentSupport.js +1 -1
  78. package/src/sap/ui/core/Configuration.js +1 -1
  79. package/src/sap/ui/core/Control.js +1 -1
  80. package/src/sap/ui/core/Core.js +6 -3
  81. package/src/sap/ui/core/CustomData.js +1 -1
  82. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  83. package/src/sap/ui/core/Element.js +3 -5
  84. package/src/sap/ui/core/ElementMetadata.js +1 -1
  85. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  86. package/src/sap/ui/core/EventBus.js +1 -1
  87. package/src/sap/ui/core/Fragment.js +1 -1
  88. package/src/sap/ui/core/HTML.js +1 -1
  89. package/src/sap/ui/core/History.js +1 -1
  90. package/src/sap/ui/core/Icon.js +1 -1
  91. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  92. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  93. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  94. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  95. package/src/sap/ui/core/InvisibleText.js +1 -1
  96. package/src/sap/ui/core/Item.js +1 -1
  97. package/src/sap/ui/core/LabelEnablement.js +6 -4
  98. package/src/sap/ui/core/LayoutData.js +1 -1
  99. package/src/sap/ui/core/Lib.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +1 -1
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +21 -20
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Popup.js +13 -6
  107. package/src/sap/ui/core/RenderManager.js +13 -2
  108. package/src/sap/ui/core/Renderer.js +1 -1
  109. package/src/sap/ui/core/ResizeHandler.js +1 -1
  110. package/src/sap/ui/core/ScrollBar.js +1 -1
  111. package/src/sap/ui/core/SeparatorItem.js +1 -1
  112. package/src/sap/ui/core/Title.js +1 -1
  113. package/src/sap/ui/core/TooltipBase.js +1 -1
  114. package/src/sap/ui/core/UIArea.js +1 -1
  115. package/src/sap/ui/core/UIComponent.js +1 -1
  116. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  117. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  118. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  119. package/src/sap/ui/core/XMLComposite.js +1 -1
  120. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  121. package/src/sap/ui/core/_UrlResolver.js +31 -29
  122. package/src/sap/ui/core/date/UI5Date.js +1 -1
  123. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  124. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  125. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  126. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  127. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  128. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  129. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  130. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  131. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  133. package/src/sap/ui/core/interaction/KeyboardInteractionDisplay.js +21 -2
  134. package/src/sap/ui/core/library.js +11 -11
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +1 -1
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle.properties +2 -0
  141. package/src/sap/ui/core/messagebundle_ar.properties +1 -0
  142. package/src/sap/ui/core/messagebundle_bg.properties +1 -0
  143. package/src/sap/ui/core/messagebundle_ca.properties +1 -0
  144. package/src/sap/ui/core/messagebundle_cnr.properties +1 -0
  145. package/src/sap/ui/core/messagebundle_cs.properties +1 -0
  146. package/src/sap/ui/core/messagebundle_cy.properties +1 -0
  147. package/src/sap/ui/core/messagebundle_da.properties +1 -0
  148. package/src/sap/ui/core/messagebundle_de.properties +1 -0
  149. package/src/sap/ui/core/messagebundle_el.properties +1 -0
  150. package/src/sap/ui/core/messagebundle_en.properties +1 -0
  151. package/src/sap/ui/core/messagebundle_en_GB.properties +1 -0
  152. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  153. package/src/sap/ui/core/messagebundle_es.properties +21 -20
  154. package/src/sap/ui/core/messagebundle_es_MX.properties +1 -0
  155. package/src/sap/ui/core/messagebundle_et.properties +3 -2
  156. package/src/sap/ui/core/messagebundle_fi.properties +2 -1
  157. package/src/sap/ui/core/messagebundle_fr.properties +1 -0
  158. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -0
  159. package/src/sap/ui/core/messagebundle_hi.properties +1 -0
  160. package/src/sap/ui/core/messagebundle_hr.properties +1 -0
  161. package/src/sap/ui/core/messagebundle_hu.properties +1 -0
  162. package/src/sap/ui/core/messagebundle_id.properties +3 -2
  163. package/src/sap/ui/core/messagebundle_it.properties +2 -1
  164. package/src/sap/ui/core/messagebundle_iw.properties +1 -0
  165. package/src/sap/ui/core/messagebundle_ja.properties +1 -0
  166. package/src/sap/ui/core/messagebundle_kk.properties +9 -8
  167. package/src/sap/ui/core/messagebundle_ko.properties +1 -0
  168. package/src/sap/ui/core/messagebundle_lt.properties +1 -0
  169. package/src/sap/ui/core/messagebundle_lv.properties +1 -0
  170. package/src/sap/ui/core/messagebundle_mk.properties +1 -0
  171. package/src/sap/ui/core/messagebundle_ms.properties +1 -0
  172. package/src/sap/ui/core/messagebundle_nl.properties +1 -0
  173. package/src/sap/ui/core/messagebundle_no.properties +1 -0
  174. package/src/sap/ui/core/messagebundle_pl.properties +1 -0
  175. package/src/sap/ui/core/messagebundle_pt.properties +1 -0
  176. package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -0
  177. package/src/sap/ui/core/messagebundle_ro.properties +1 -0
  178. package/src/sap/ui/core/messagebundle_ru.properties +1 -0
  179. package/src/sap/ui/core/messagebundle_sh.properties +1 -0
  180. package/src/sap/ui/core/messagebundle_sk.properties +1 -0
  181. package/src/sap/ui/core/messagebundle_sl.properties +1 -0
  182. package/src/sap/ui/core/messagebundle_sr.properties +1 -0
  183. package/src/sap/ui/core/messagebundle_sv.properties +1 -0
  184. package/src/sap/ui/core/messagebundle_th.properties +2 -1
  185. package/src/sap/ui/core/messagebundle_tr.properties +1 -0
  186. package/src/sap/ui/core/messagebundle_uk.properties +2 -1
  187. package/src/sap/ui/core/messagebundle_vi.properties +1 -0
  188. package/src/sap/ui/core/messagebundle_zh_CN.properties +1 -0
  189. package/src/sap/ui/core/messagebundle_zh_TW.properties +1 -0
  190. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  191. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  192. package/src/sap/ui/core/mvc/JSView.js +1 -1
  193. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  194. package/src/sap/ui/core/mvc/View.js +1 -1
  195. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  196. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  197. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  198. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  199. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  200. package/src/sap/ui/core/routing/History.js +8 -4
  201. package/src/sap/ui/core/routing/Router.js +31 -33
  202. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  203. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  204. package/src/sap/ui/core/service/Service.js +1 -1
  205. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  206. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  207. package/src/sap/ui/core/support/Plugin.js +1 -1
  208. package/src/sap/ui/core/support/Support.js +1 -1
  209. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  210. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  211. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  212. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  213. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  214. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  215. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  216. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  217. package/src/sap/ui/core/themes/base/BlindLayer.less +4 -9
  218. package/src/sap/ui/core/themes/base/BrowserScrollbar.less +1 -1
  219. package/src/sap/ui/core/themes/base/BusyIndicator.less +322 -1
  220. package/src/sap/ui/core/themes/base/CommandShortcutHints.less +9 -9
  221. package/src/sap/ui/core/themes/base/DragAndDrop.less +21 -20
  222. package/src/sap/ui/core/themes/base/Icon.less +36 -35
  223. package/src/sap/ui/core/themes/base/library.source.less +0 -3
  224. package/src/sap/ui/core/themes/base/parameterClasses.less +32 -20
  225. package/src/sap/ui/core/themes/base/shared.less +5 -0
  226. package/src/sap/ui/core/theming/Parameters.js +6 -12
  227. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  228. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  229. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  230. package/src/sap/ui/core/tmpl/Template.js +1 -1
  231. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  232. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  233. package/src/sap/ui/core/util/Export.js +1 -1
  234. package/src/sap/ui/core/util/ExportCell.js +1 -1
  235. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  236. package/src/sap/ui/core/util/ExportRow.js +1 -1
  237. package/src/sap/ui/core/util/ExportType.js +1 -1
  238. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  239. package/src/sap/ui/core/util/File.js +1 -1
  240. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  241. package/src/sap/ui/core/util/MockServer.js +1 -1
  242. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  243. package/src/sap/ui/core/util/_LocalizationHelper.js +1 -1
  244. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  245. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  246. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  247. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  248. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  249. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  250. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  251. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  252. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  253. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  254. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  255. package/src/sap/ui/core/ws/WebSocket.js +7 -11
  256. package/src/sap/ui/debug/ControlTree.js +1 -1
  257. package/src/sap/ui/debug/DebugEnv.js +1 -1
  258. package/src/sap/ui/debug/PropertyList.js +1 -1
  259. package/src/sap/ui/events/FocusEventFix.js +36 -0
  260. package/src/sap/ui/model/ClientModel.js +1 -1
  261. package/src/sap/ui/model/ClientTreeBinding.js +50 -7
  262. package/src/sap/ui/model/CompositeDataState.js +1 -1
  263. package/src/sap/ui/model/CompositeType.js +1 -1
  264. package/src/sap/ui/model/DataState.js +1 -1
  265. package/src/sap/ui/model/MetaModel.js +1 -1
  266. package/src/sap/ui/model/Model.js +52 -3
  267. package/src/sap/ui/model/SelectionModel.js +1 -1
  268. package/src/sap/ui/model/SimpleType.js +1 -1
  269. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  270. package/src/sap/ui/model/Type.js +1 -1
  271. package/src/sap/ui/model/base/ManagedObjectModel.js +7 -4
  272. package/src/sap/ui/model/json/JSONModel.js +9 -4
  273. package/src/sap/ui/model/message/MessageModel.js +1 -1
  274. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  275. package/src/sap/ui/model/odata/ODataMessageParser.js +31 -64
  276. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  277. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  278. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  279. package/src/sap/ui/model/odata/type/Boolean.js +8 -4
  280. package/src/sap/ui/model/odata/type/Byte.js +8 -4
  281. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  282. package/src/sap/ui/model/odata/type/Date.js +2 -2
  283. package/src/sap/ui/model/odata/type/DateTime.js +2 -2
  284. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  285. package/src/sap/ui/model/odata/type/DateTimeOffset.js +8 -4
  286. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  287. package/src/sap/ui/model/odata/type/Decimal.js +50 -18
  288. package/src/sap/ui/model/odata/type/Double.js +8 -4
  289. package/src/sap/ui/model/odata/type/Guid.js +8 -4
  290. package/src/sap/ui/model/odata/type/Int.js +9 -4
  291. package/src/sap/ui/model/odata/type/Int16.js +8 -4
  292. package/src/sap/ui/model/odata/type/Int32.js +8 -4
  293. package/src/sap/ui/model/odata/type/Int64.js +8 -4
  294. package/src/sap/ui/model/odata/type/ODataType.js +6 -7
  295. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  296. package/src/sap/ui/model/odata/type/SByte.js +8 -4
  297. package/src/sap/ui/model/odata/type/Single.js +8 -4
  298. package/src/sap/ui/model/odata/type/Stream.js +2 -2
  299. package/src/sap/ui/model/odata/type/String.js +8 -4
  300. package/src/sap/ui/model/odata/type/Time.js +2 -2
  301. package/src/sap/ui/model/odata/type/TimeOfDay.js +2 -2
  302. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  303. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  304. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  305. package/src/sap/ui/model/odata/v2/ODataModel.js +24 -16
  306. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +20 -7
  307. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +50 -50
  308. package/src/sap/ui/model/odata/v4/Context.js +44 -33
  309. package/src/sap/ui/model/odata/v4/ODataBinding.js +6 -3
  310. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -6
  311. package/src/sap/ui/model/odata/v4/ODataListBinding.js +63 -23
  312. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +37 -62
  313. package/src/sap/ui/model/odata/v4/ODataModel.js +58 -53
  314. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +18 -13
  315. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  316. package/src/sap/ui/model/odata/v4/ODataUtils.js +6 -6
  317. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +46 -46
  318. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +21 -1
  319. package/src/sap/ui/model/odata/v4/lib/_Cache.js +26 -27
  320. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +6 -7
  321. package/src/sap/ui/model/odata/v4/lib/_Helper.js +52 -38
  322. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +2 -1
  323. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +5 -5
  324. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +105 -38
  325. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +10 -3
  326. package/src/sap/ui/model/odata/v4/ts.js +2 -2
  327. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  328. package/src/sap/ui/model/type/Boolean.js +1 -1
  329. package/src/sap/ui/model/type/Currency.js +1 -1
  330. package/src/sap/ui/model/type/Date.js +1 -1
  331. package/src/sap/ui/model/type/DateInterval.js +1 -1
  332. package/src/sap/ui/model/type/DateTime.js +1 -1
  333. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  334. package/src/sap/ui/model/type/FileSize.js +1 -1
  335. package/src/sap/ui/model/type/Float.js +1 -1
  336. package/src/sap/ui/model/type/Integer.js +1 -1
  337. package/src/sap/ui/model/type/String.js +1 -1
  338. package/src/sap/ui/model/type/Time.js +1 -1
  339. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  340. package/src/sap/ui/model/type/Unit.js +1 -1
  341. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  342. package/src/sap/ui/model/xml/XMLTreeBinding.js +10 -0
  343. package/src/sap/ui/performance/Measurement.js +18 -24
  344. package/src/sap/ui/performance/trace/FESR.js +3 -2
  345. package/src/sap/ui/performance/trace/Interaction.js +35 -2
  346. package/src/sap/ui/performance/trace/_InteractionImpl.js +254 -166
  347. package/src/sap/ui/qunit/qunit-coverage.js +1 -1
  348. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  349. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  350. package/src/sap/ui/test/_BrowserLogCollector.js +1 -4
  351. package/src/sap/ui/test/generic/TestBase.js +1 -1
  352. package/src/sap/ui/test/launchers/componentLauncher.js +3 -2
  353. package/src/sap/ui/test/launchers/iFrameLauncher.js +3 -1
  354. package/src/sap/ui/test/starter/_setupAndStart.js +3 -1
  355. package/src/sap/ui/test/starter/_utils.js +5 -59
  356. package/src/sap/ui/test/starter/config.js +555 -0
  357. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +6 -0
  358. package/src/sap/ui/thirdparty/require.js +255 -162
  359. package/src/sap/ui/util/Storage.js +1 -1
  360. package/src/sap/ui/util/_URL.js +158 -0
  361. package/src/ui5loader.js +3 -9
  362. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +0 -293
  363. package/src/sap/ui/core/themes/base/Shadow.less +0 -3
  364. package/src/sap/ui/core/themes/base/TechnicalInfo.less +0 -157
@@ -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
  }
@@ -1576,9 +1579,9 @@ sap.ui.define([
1576
1579
  * @param {string} sGroupId
1577
1580
  * The group ID to be used for requesting side effects
1578
1581
  * @param {string[]} aPaths
1579
- * The "14.5.11 Expression edm:NavigationPropertyPath" or
1580
- * "14.5.13 Expression edm:PropertyPath" strings describing which properties need to be loaded
1581
- * because they may have changed due to side effects of a previous update
1582
+ * The "14.4.1.5 Expression edm:NavigationPropertyPath" or
1583
+ * "14.4.1.6 Expression edm:PropertyPath" strings describing which properties need to be
1584
+ * loaded because they may have changed due to side effects of a previous update
1582
1585
  * @param {sap.ui.model.odata.v4.Context} [oContext]
1583
1586
  * The context for which to request side effects; if missing, the whole binding is affected
1584
1587
  * @param {Promise[]} aPromises
@@ -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.141.2
77
+ * @version 1.143.0
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
@@ -1215,7 +1215,7 @@ sap.ui.define([
1215
1215
  * 1. Operation is bound.
1216
1216
  * 2. Operation has single entity return value. Note: existence of EntitySetPath
1217
1217
  * implies the return value is an entity or a collection thereof;
1218
- * see OData V4 spec part 3, 12.1.3. It thus ensures the "entity" in this condition.
1218
+ * see [OData-CSDL-XML-v4.01], 12.6. It thus ensures the "entity" in this condition.
1219
1219
  * 3. EntitySetPath of operation is the binding parameter.
1220
1220
  * 4. Operation binding has
1221
1221
  * (a) a V4 parent context which
@@ -1454,7 +1454,7 @@ sap.ui.define([
1454
1454
  * 1. Operation is bound.
1455
1455
  * 2. Operation has single entity return value. Note: existence of EntitySetPath
1456
1456
  * implies the return value is an entity or a collection thereof;
1457
- * see OData V4 spec part 3, 12.1.3. It thus ensures the "entity" in this condition.
1457
+ * see [OData-CSDL-XML-v4.01], 12.6. It thus ensures the "entity" in this condition.
1458
1458
  * 3. EntitySetPath of operation is the binding parameter.
1459
1459
  * 4. Operation binding has
1460
1460
  * (a) a V4 parent context.
@@ -1633,7 +1633,7 @@ sap.ui.define([
1633
1633
  *
1634
1634
  * @param {sap.ui.model.odata.v4.Context} oContext
1635
1635
  * The context to refresh
1636
- * @param {string} sGroupId
1636
+ * @param {string} [sGroupId]
1637
1637
  * The group ID for the refresh
1638
1638
  * @param {boolean} [bKeepCacheOnError]
1639
1639
  * If <code>true</code>, the binding data remains unchanged if the refresh fails
@@ -1685,8 +1685,8 @@ sap.ui.define([
1685
1685
  * Returns a promise on the value for the given path relative to this binding. The function
1686
1686
  * allows access to the complete data the binding points to (if <code>sPath</code> is "") or
1687
1687
  * any part thereof. The data is a JSON structure as described in
1688
- * <a href="https://docs.oasis-open.org/odata/odata-json-format/v4.0/">
1689
- * "OData JSON Format Version 4.0"</a>.
1688
+ * <a href="https://docs.oasis-open.org/odata/odata-json-format/v4.01/">
1689
+ * "OData JSON Format Version 4.01"</a>.
1690
1690
  * Note that the function clones the result. Modify values via
1691
1691
  * {@link sap.ui.model.odata.v4.Context#setProperty}.
1692
1692
  *
@@ -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.141.2
63
+ * @version 1.143.0
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
@@ -970,6 +974,7 @@ sap.ui.define([
970
974
  oEntityData,
971
975
  sGroupId = this.getUpdateGroupId(),
972
976
  oGroupLock,
977
+ bRefresh,
973
978
  sResolvedPath = this.getResolvedPath(),
974
979
  sTransientPredicate = "($uid=" + _Helper.uid() + ")",
975
980
  sTransientPath = sResolvedPath + sTransientPredicate,
@@ -1013,7 +1018,6 @@ sap.ui.define([
1013
1018
  // clone data to avoid modifications outside the cache
1014
1019
  // remove any property starting with "@$ui5."
1015
1020
  oEntityData = _Helper.publicClone(oInitialData, true) || {};
1016
- let bRefresh;
1017
1021
  if (oAggregation) {
1018
1022
  if (!bSkipRefresh) {
1019
1023
  throw new Error("Missing bSkipRefresh");
@@ -1098,7 +1102,7 @@ sap.ui.define([
1098
1102
  // currently the optimized update w/o bSkipRefresh is restricted to deep create
1099
1103
  return bSkipRefresh || bDeepCreate
1100
1104
  ? oContext.updateAfterCreate(bSkipRefresh, sGroupId0)
1101
- : that.refreshSingle(oContext, that.lockGroup(sGroupId0));
1105
+ : that.refreshSingle(oContext, sGroupId0);
1102
1106
  }, function (oError) {
1103
1107
  oGroupLock.unlock(true); // createInCache failed, so the lock might still be blocking
1104
1108
  throw oError;
@@ -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
  *
@@ -2148,7 +2164,7 @@ sap.ui.define([
2148
2164
 
2149
2165
  return oPromise.then((oEntityType) => {
2150
2166
  const oAggregation = this.mParameters.$$aggregation;
2151
- if (oEntityType) {
2167
+ if (oEntityType && oAggregation) {
2152
2168
  oAggregation.$leafLevelAggregated = !oEntityType.$Key?.every((sKey) => {
2153
2169
  // "group" and "additionally" determine groupby()
2154
2170
  return sKey in oAggregation.group
@@ -2674,7 +2690,7 @@ sap.ui.define([
2674
2690
  oContext.oBinding = that;
2675
2691
  });
2676
2692
  oCache = oBinding.oCache;
2677
- oCache.setQueryOptions(mQueryOptions);
2693
+ oCache.setQueryOptions(mQueryOptions, /*bForce*/true);
2678
2694
  // avoid that the cache is set inactive or that contexts are destroyed
2679
2695
  oBinding.oCache = null;
2680
2696
  oBinding.oCachePromise = SyncPromise.resolve(null);
@@ -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()) {
@@ -4095,8 +4112,10 @@ sap.ui.define([
4095
4112
  *
4096
4113
  * @param {sap.ui.model.odata.v4.Context} oContext
4097
4114
  * The context object for the entity to be refreshed
4098
- * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
4099
- * A lock for the group ID to be used for refresh
4115
+ * @param {string} [sGroupId]
4116
+ * The group ID to be used
4117
+ * @param {boolean} [bLocked]
4118
+ * Whether the group lock created from the given group ID is locked
4100
4119
  * @param {boolean} [bAllowRemoval]
4101
4120
  * Allows the list binding to remove the given context from its collection because the
4102
4121
  * entity does not match the binding's filter anymore, see {@link #filter}; a removed context
@@ -4115,11 +4134,12 @@ sap.ui.define([
4115
4134
  * or rejects if the refresh failed.
4116
4135
  * @throws {Error}
4117
4136
  * If the given context does not represent a single entity (see {@link #getHeaderContext}), or
4118
- * if <code>bAllowRemoval && bWithMessages</code> are combined
4137
+ * if <code>bAllowRemoval</code> is combined with <code>bWithMessages</code> or with a
4138
+ * recursive hierarchy
4119
4139
  *
4120
4140
  * @private
4121
4141
  */
4122
- ODataListBinding.prototype.refreshSingle = function (oContext, oGroupLock, bAllowRemoval,
4142
+ ODataListBinding.prototype.refreshSingle = function (oContext, sGroupId, bLocked, bAllowRemoval,
4123
4143
  bKeepCacheOnError, bWithMessages) {
4124
4144
  var sContextPath = oContext.getPath(),
4125
4145
  sResourcePathPrefix = sContextPath.slice(1),
@@ -4128,6 +4148,15 @@ sap.ui.define([
4128
4148
  if (oContext === this.oHeaderContext) {
4129
4149
  throw new Error("Unsupported header context: " + oContext);
4130
4150
  }
4151
+ if (this.mParameters.$$aggregation?.hierarchyQualifier) {
4152
+ if (!oContext.isEffectivelyKeptAlive()
4153
+ && this.aContexts[oContext.iIndex] !== oContext) {
4154
+ throw new Error("Not currently part of the hierarchy: " + oContext);
4155
+ }
4156
+ if (bAllowRemoval) {
4157
+ throw new Error("Unsupported parameter bAllowRemoval: " + bAllowRemoval);
4158
+ }
4159
+ }
4131
4160
  if (bAllowRemoval && bWithMessages) {
4132
4161
  throw new Error("Unsupported: bAllowRemoval && bWithMessages");
4133
4162
  }
@@ -4206,6 +4235,7 @@ sap.ui.define([
4206
4235
  throw new Error("Cannot refresh. Hint: Side-effects refresh in parallel? "
4207
4236
  + oContext);
4208
4237
  }
4238
+ const oGroupLock = that.lockGroup(sGroupId, bLocked);
4209
4239
  aPromises.push(
4210
4240
  (bAllowRemoval
4211
4241
  ? oCache.refreshSingleWithRemove(oGroupLock, sPath, iModelIndex, sPredicate,
@@ -4221,8 +4251,8 @@ sap.ui.define([
4221
4251
  aUpdatePromises.push(oContext.checkUpdateInternal());
4222
4252
  if (bAllowRemoval) {
4223
4253
  aUpdatePromises.push(
4224
- oContext.refreshDependentBindings(sResourcePathPrefix,
4225
- oGroupLock.getGroupId(), false, bKeepCacheOnError));
4254
+ oContext.refreshDependentBindings(sResourcePathPrefix, sGroupId,
4255
+ false, bKeepCacheOnError));
4226
4256
  }
4227
4257
  }
4228
4258
 
@@ -4243,8 +4273,8 @@ sap.ui.define([
4243
4273
  if (!bAllowRemoval) {
4244
4274
  // call refreshInternal on all dependent bindings to ensure that all resulting data
4245
4275
  // requests are in the same batch request
4246
- aPromises.push(oContext.refreshDependentBindings(sResourcePathPrefix,
4247
- oGroupLock.getGroupId(), false, bKeepCacheOnError));
4276
+ aPromises.push(oContext.refreshDependentBindings(sResourcePathPrefix, sGroupId,
4277
+ false, bKeepCacheOnError));
4248
4278
  }
4249
4279
 
4250
4280
  return SyncPromise.all(aPromises);
@@ -4593,7 +4623,7 @@ sap.ui.define([
4593
4623
  oModel.withUnresolvedBindings("removeCachesAndMessages",
4594
4624
  oContext.getPath().slice(1));
4595
4625
 
4596
- return this.refreshSingle(oContext, this.lockGroup(sGroupId), /*bAllowRemoval*/false,
4626
+ return this.refreshSingle(oContext, sGroupId, /*bLocked*/false, /*bAllowRemoval*/false,
4597
4627
  /*bKeepCacheOnError*/true, /*bWithMessages*/true);
4598
4628
  }
4599
4629
  if (this.iCurrentEnd === 0) {
@@ -4871,8 +4901,8 @@ sap.ui.define([
4871
4901
  * </ul>
4872
4902
  * @param {string} [oAggregation.search]
4873
4903
  * Like the <a href=
4874
- * "https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html#_Search_System_Query"
4875
- * >"5.1.7 System Query Option $search"</a>, but applied before data aggregation
4904
+ * "https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#_Toc31361044"
4905
+ * >"5.1.8 System Query Option $search"</a>, but applied before data aggregation
4876
4906
  * (since 1.93.0). Note that certain content will break the syntax of the system query option
4877
4907
  * <code>$apply</code> and result in an invalid request. If the OData service supports the
4878
4908
  * proposal <a href="https://issues.oasis-open.org/browse/ODATA-1452">ODATA-1452</a>, then
@@ -4935,19 +4965,18 @@ sap.ui.define([
4935
4965
  * @ui5-transform-hint replace-param oAggregation."grandTotal like 1.84" false
4936
4966
  */
4937
4967
  ODataListBinding.prototype.setAggregation = function (oAggregation) {
4938
- var mParameters;
4939
-
4940
4968
  /*
4941
4969
  * Returns the use case of data aggregation (recursive hierarchy, pure data aggregation, or
4942
- * none at all) as <code>true</code>, <code>false</code>, or <code>undefined</code>.
4970
+ * none at all) as <code>false</code>, <code>true</code>, or <code>undefined</code>.
4943
4971
  *
4944
4972
  * @param {object} [oAggregation]
4945
4973
  * An object holding the information needed for data aggregation
4946
4974
  * @returns {boolean|undefined}
4947
4975
  * The use case of data aggregation
4976
+ * @see _Helper.isDataAggregation
4948
4977
  */
4949
4978
  function useCase(oDataAggregationObject) {
4950
- return oDataAggregationObject && !!oDataAggregationObject.hierarchyQualifier;
4979
+ return oDataAggregationObject && !oDataAggregationObject.hierarchyQualifier;
4951
4980
  }
4952
4981
 
4953
4982
  this.checkTransient();
@@ -4960,18 +4989,29 @@ sap.ui.define([
4960
4989
  if (this.hasPendingChanges()) {
4961
4990
  throw new Error("Cannot set $$aggregation due to pending changes");
4962
4991
  }
4963
- if (useCase(this.mParameters.$$aggregation) !== useCase(oAggregation)
4964
- && this.getKeepAlivePredicates().length) {
4992
+ const bOldUseCase = useCase(this.mParameters.$$aggregation);
4993
+ const bNewUseCase = useCase(oAggregation);
4994
+ if (bOldUseCase !== bNewUseCase && this.getKeepAlivePredicates().length) {
4965
4995
  throw new Error("Cannot set $$aggregation due to a kept-alive context");
4966
4996
  }
4967
4997
 
4968
- mParameters = Object.assign({}, this.mParameters);
4998
+ const mParameters = Object.assign({}, this.mParameters);
4969
4999
  if (oAggregation === undefined) {
4970
5000
  delete mParameters.$$aggregation;
4971
5001
  } else {
4972
5002
  mParameters.$$aggregation = _Helper.clone(oAggregation);
4973
5003
  }
4974
5004
  this.applyParameters(mParameters, "");
5005
+ if (!!bOldUseCase !== !!bNewUseCase) {
5006
+ // if data aggregation is turned on or off, set change reason accordingly
5007
+ if (bNewUseCase) {
5008
+ if (this.sChangeReason === "AddVirtualContext") {
5009
+ this.sChangeReason = undefined;
5010
+ }
5011
+ } else if (this.oModel.bAutoExpandSelect) {
5012
+ this.sChangeReason ??= "AddVirtualContext";
5013
+ }
5014
+ }
4975
5015
  };
4976
5016
 
4977
5017
  /**
@@ -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.141.2
206
+ * @version 1.143.0
208
207
  */
209
208
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
210
209
  constructor : constructor
@@ -1211,7 +1210,7 @@ sap.ui.define([
1211
1210
  sName, // what "@sapui.name" refers to: OData or annotation name
1212
1211
  bODataMode, // OData navigation mode with scope lookup etc.
1213
1212
  bOpenType, // schema child is an open (entity or complex) type
1214
- // parent for next "17.2 SimpleIdentifier"...
1213
+ // parent for next "15.2 SimpleIdentifier"...
1215
1214
  // (normally the schema child containing the current object)
1216
1215
  oSchemaChild, // ...as object
1217
1216
  sSchemaChildName, // ...as qualified name
@@ -1285,7 +1284,7 @@ sap.ui.define([
1285
1284
  }
1286
1285
 
1287
1286
  // "the annotation applies to all overloads of the action or function or all
1288
- // parameters of that name across all overloads" [OData-Part3]
1287
+ // parameters of that name across all overloads" [OData-CSDL-XML-v4.01]
1289
1288
  sTarget += sSuffix;
1290
1289
  // any object (no array!) should do here to skip repeated handling of overloads
1291
1290
  vResult = mScope;
@@ -1589,7 +1588,7 @@ sap.ui.define([
1589
1588
  if (bSplitSegment) {
1590
1589
  // no special preparations needed, but handle overloads below!
1591
1590
  } else if (sSegment[0] !== "@" && sSegment.includes(".", 1)) {
1592
- // "17.3 QualifiedName": scope lookup
1591
+ // "15.3 QualifiedName": scope lookup
1593
1592
  return scopeLookup(sSegment);
1594
1593
  } else if (bResultIsObject && "$Type" in vResult) {
1595
1594
  // implicit $Type insertion, e.g. at (navigation) property
@@ -1612,7 +1611,7 @@ sap.ui.define([
1612
1611
  }
1613
1612
  vBindingParameterType = UNBOUND;
1614
1613
  } else if (!i) {
1615
- // "17.2 SimpleIdentifier" (or placeholder):
1614
+ // "15.2 SimpleIdentifier" (or placeholder):
1616
1615
  // lookup inside schema child (which is determined lazily)
1617
1616
  sTarget = sName = sSchemaChildName
1618
1617
  ??= mScope.$EntityContainer;
@@ -1623,7 +1622,7 @@ sap.ui.define([
1623
1622
  }
1624
1623
  if (isParameter(sSegment, vResult[0])) {
1625
1624
  // path evaluation relative to an operation overload
1626
- // @see [OData-CSDL-JSON-v4.01] "14.4.1.2 Path Evaluation"
1625
+ // @see [OData-CSDL-XML-v4.01] "14.4.1.2 Path Evaluation"
1627
1626
  // or ".../@$ui5.overload/0/$Parameter/<i>/$Name/$" to refer
1628
1627
  // back to (overloaded) operation's parameter
1629
1628
  return true;
@@ -1774,8 +1773,8 @@ sap.ui.define([
1774
1773
  oEntitySetOrSingleton = undefined;
1775
1774
  sSomePath = sSomePath.slice(1);
1776
1775
  } else if (oEntitySetOrSingleton) {
1777
- // "14.5.12 Expression edm:Path" within an annotation targeting an entity set or
1778
- // a singleton
1776
+ // "14.4.1.7 Expression edm:Path" within an annotation targeting an entity set
1777
+ // or a singleton
1779
1778
  if (!sSomePath) { // "an empty path resolves to the entity set or singleton"
1780
1779
  vResult = oEntitySetOrSingleton;
1781
1780
  oEntitySetOrSingleton = vLocation = undefined;
@@ -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];
@@ -3083,16 +3061,14 @@ sap.ui.define([
3083
3061
  * </pre>
3084
3062
  *
3085
3063
  * The basic idea is that every path described in <a href=
3086
- * "https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html#_Attribute_Target"
3087
- * >"14.2.1 Attribute Target"</a> in specification "OData Version 4.0 Part 3: Common Schema
3088
- * Definition Language" is a valid absolute path within the metadata model if a leading slash is
3089
- * added; for example
3064
+ * "https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530407"
3065
+ * >"14.2.2 Target"</a> in specification "OData Common Schema Definition Language (CSDL)
3066
+ * XML Representation Version 4.01" is a valid absolute path within the metadata model if a
3067
+ * leading slash is added; for example
3090
3068
  * "/" + "MySchema.MyEntityContainer/MyEntitySet/MyComplexProperty/MyNavigationProperty". Also,
3091
- * every path described in "14.5.2 Expression edm:AnnotationPath",
3092
- * "14.5.11 Expression edm:NavigationPropertyPath", "14.5.12 Expression edm:Path", and
3093
- * "14.5.13 Expression edm:PropertyPath" is a valid relative path within the metadata model
3094
- * if a suitable prefix is added which addresses an entity container, entity set, singleton,
3095
- * complex type, entity type, or property; for example
3069
+ * every path described in "14.4.1.1 Path Syntax" is a valid relative path within the metadata
3070
+ * model if a suitable prefix is added which addresses an entity container, entity set,
3071
+ * singleton, complex type, entity type, or property; for example
3096
3072
  * "/MySchema.MyEntityType/MyProperty" + "@vCard.Address#work/FullName".
3097
3073
  *
3098
3074
  * The absolute path is split into segments and followed step-by-step, starting at the global
@@ -3133,25 +3109,24 @@ sap.ui.define([
3133
3109
  * this, a path must not continue if it comes across a non-object value. Such a string value can
3134
3110
  * be a qualified name (example path "/$EntityContainer/..."), a simple identifier (example path
3135
3111
  * "/TEAMS/$NavigationPropertyBinding/TEAM_2_EMPLOYEES/...") including the special name
3136
- * "$ReturnType" (since 1.71.0), or even a path according to "14.5.12 Expression edm:Path" etc.
3112
+ * "$ReturnType" (since 1.71.0), or even a path according to "14.4.1.1 Path Syntax"
3137
3113
  * (example path "/TEAMS/@com.sap.vocabularies.UI.v1.LineItem/0/Value/$Path/...".
3138
3114
  *
3139
3115
  * Segments starting with an "@" character, for example "@com.sap.vocabularies.Common.v1.Label",
3140
3116
  * address annotations at the current object. As the first segment, they refer to the single
3141
- * entity container. For objects which can only be annotated inline (see "14.3 Element
3142
- * edm:Annotation" minus "14.2.1 Attribute Target"), the object already contains the
3143
- * annotations as a property. For objects which can (only or also) be annotated via external
3144
- * targeting, the object does not contain any annotation as a property. Such annotations MUST
3145
- * be accessed via a path. Such objects include operations (that is, actions and functions) and
3146
- * their parameters, which can be annotated for a single overload or for all overloads at the
3147
- * same time.
3117
+ * entity container. For objects which can only be annotated inline (see "14.2 Annotation" minus
3118
+ * "14.2.2 Target"), the object already contains the annotations as a property. For objects
3119
+ * which can (only or also) be annotated via external targeting, the object does not contain any
3120
+ * annotation as a property. Such annotations MUST be accessed via a path. Such objects include
3121
+ * operations (that is, actions and functions) and their parameters, which can be annotated for
3122
+ * a single overload or for all overloads at the same time.
3148
3123
  *
3149
3124
  * Segments starting with an OData name followed by an "@" character, for example
3150
3125
  * "/TEAMS@Org.OData.Capabilities.V1.TopSupported", address annotations at an entity set,
3151
3126
  * singleton, or property, not at the corresponding type. In contrast,
3152
3127
  * "/TEAMS/@com.sap.vocabularies.Common.v1.Deletable" (note the separating slash) addresses an
3153
3128
  * annotation at the entity set's type. This is in line with the special rule of
3154
- * "14.5.12 Expression edm:Path" regarding annotations at a navigation property itself.
3129
+ * "14.4.1.2 Path Evaluation" regarding annotations at a navigation property itself.
3155
3130
  *
3156
3131
  * "@" can be used as a segment to address a map of all annotations of the current object. This
3157
3132
  * is useful for iteration, for example via
@@ -3163,14 +3138,14 @@ sap.ui.define([
3163
3138
  * annotation can have a qualifier, for example "@first#foo@second#bar". Note: If the first
3164
3139
  * annotation's value is a record, a separate segment addresses an annotation of that record,
3165
3140
  * not an annotation of the first annotation itself.
3166
- * In a similar way, annotations of "7.2 Element edm:ReferentialConstraint",
3167
- * "7.3 Element edm:OnDelete", "10.2 Element edm:Member" and
3168
- * "14.5.14.2 Element edm:PropertyValue" are addressed by segments like
3169
- * "&lt;7.2.1 Attribute Property>@...", "$OnDelete@...", "&lt;10.2.1 Attribute Name>@..." and
3170
- * "&lt;14.5.14.2.1 Attribute Property>@..." (where angle brackets denote a variable part and
3141
+ * In a similar way, annotations of "8.5 Element edm:ReferentialConstraint",
3142
+ * "8.6 Element edm:OnDelete", "10.3 Element edm:Member" and
3143
+ * "14.4.12 Element edm:PropertyValue" are addressed by segments like
3144
+ * "&lt;8.5 Attribute Property>@...", "$OnDelete@...", "&lt;10.3 Attribute Name>@..." and
3145
+ * "&lt;14.4.12 Attribute Property>@..." (where angle brackets denote a variable part and
3171
3146
  * sections refer to specification <a href=
3172
- * "https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html"
3173
- * >"OData Version 4.0 Part 3: Common Schema Definition Language"</a>).
3147
+ * "https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html"
3148
+ * >"OData Common Schema Definition Language (CSDL) XML Representation Version 4.01"</a>).
3174
3149
  *
3175
3150
  * Annotations starting with "@@", for example
3176
3151
  * "@@sap.ui.model.odata.v4.AnnotationHelper.isMultiple" or "@@.AH.isMultiple" or
@@ -3472,7 +3447,7 @@ sap.ui.define([
3472
3447
  * this method. If the value list model is the data model associated with this meta model,
3473
3448
  * this flag has no effect. Supported since 1.68.0
3474
3449
  * @param {sap.ui.model.odata.v4.Context} [oContext]
3475
- * Context to resolve "14.5.12 Expression edm:Path" references contained in a
3450
+ * Context to resolve "14.4.1.7 Expression edm:Path" references contained in a
3476
3451
  * "com.sap.vocabularies.Common.v1.ValueListRelevantQualifiers" annotation. Supported since
3477
3452
  * 1.84.0
3478
3453
  * @returns {Promise<Object<object>>}
@@ -3784,7 +3759,7 @@ sap.ui.define([
3784
3759
  for (sReferenceUri in mScope.$Reference) {
3785
3760
  oReference = mScope.$Reference[sReferenceUri];
3786
3761
  // interpret reference URI relative to metadata URL
3787
- sReferenceUri = new URI(sReferenceUri).absoluteTo(this.sUrl).toString();
3762
+ sReferenceUri = _Helper.makeAbsolute(sReferenceUri, this.sUrl);
3788
3763
 
3789
3764
  if ("$IncludeAnnotations" in oReference) {
3790
3765
  this._reportAndThrowError("Unsupported IncludeAnnotations", sUrl);