@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
@@ -8,11 +8,13 @@
8
8
  sap.ui.define([
9
9
  "./ChangeReason",
10
10
  "./TreeBinding",
11
+ "sap/base/util/deepEqual",
12
+ "sap/base/util/deepExtend",
11
13
  "sap/base/util/each",
12
14
  "sap/ui/model/FilterProcessor",
13
15
  "sap/ui/model/FilterType",
14
16
  "sap/ui/model/SorterProcessor"
15
- ], function(ChangeReason, TreeBinding, each, FilterProcessor, FilterType, SorterProcessor) {
17
+ ], function(ChangeReason, TreeBinding, deepEqual, deepExtend, each, FilterProcessor, FilterType, SorterProcessor) {
16
18
  "use strict";
17
19
 
18
20
  /**
@@ -65,11 +67,12 @@ sap.ui.define([
65
67
  };
66
68
  this.oCombinedFilter = null;
67
69
  this.mNormalizeCache = {};
70
+ this.oTreeData = this.cloneData(this.oModel._getObject(this.sPath, this.oContext));
68
71
 
69
72
  if (aApplicationFilters) {
70
73
  this.oModel.checkFilter(aApplicationFilters);
71
74
 
72
- if (this.oModel._getObject(this.sPath, this.oContext)) {
75
+ if (this.oTreeData) {
73
76
  this.filter(aApplicationFilters, FilterType.Application);
74
77
  }
75
78
  }
@@ -78,6 +81,21 @@ sap.ui.define([
78
81
 
79
82
  });
80
83
 
84
+ ClientTreeBinding.CannotCloneData = Symbol("CannotCloneData");
85
+
86
+ /**
87
+ * Returns a deep clone of the tree data or a symbol indicating that the given tree data cannot be cloned.
88
+ *
89
+ * @param {any} oTreeData
90
+ * The tree data to clone
91
+ * @returns {any|sap.ui.model.ClientTreeBinding.CannotCloneData}
92
+ * A deep clone or the symbol ClientTreeBinding.CannotCloneData
93
+ * @private
94
+ */
95
+ ClientTreeBinding.prototype.cloneData = function(oTreeData) {
96
+ return deepExtend(Array.isArray(oTreeData) ? [] : {}, oTreeData);
97
+ };
98
+
81
99
  /**
82
100
  * Return root contexts for the tree.
83
101
  *
@@ -319,7 +337,7 @@ sap.ui.define([
319
337
  this.applyFilter();
320
338
  }
321
339
  this._mLengthsCache = {};
322
- this._fireChange({reason: "filter"});
340
+ this._fireChange({reason: ChangeReason.Filter});
323
341
  /** @deprecated As of version 1.11.0 */
324
342
  this._fireFilter({filters: aFilters});
325
343
 
@@ -445,18 +463,43 @@ sap.ui.define([
445
463
  this._mLengthsCache[sKey] = iLength;
446
464
  };
447
465
 
466
+ /**
467
+ * Sets the context for this instance. If the context changes and the binding is relative a change event is fired
468
+ * with reason {@link sap.ui.model.ChangeReason.Context}.
469
+ *
470
+ * @param {sap.ui.model.Context} oContext
471
+ * The new context object
472
+ */
473
+ ClientTreeBinding.prototype.setContext = function (oContext) {
474
+ if (this.oContext != oContext) {
475
+ this.oContext = oContext;
476
+ if (this.isRelative()) {
477
+ const oTreeData = this.oModel._getObject(this.sPath, this.oContext);
478
+ this.oTreeData = this.cloneData(oTreeData);
479
+ this._fireChange({reason: ChangeReason.Context});
480
+ }
481
+ }
482
+ };
483
+
448
484
  /**
449
485
  * Check whether this Binding would provide new values and in case it changed,
450
486
  * inform interested parties about this.
451
487
  *
452
- * @param {boolean} [bForceupdate] Not used in this method
488
+ * @param {boolean} [bForceUpdate]
489
+ * Whether the change event will be fired regardless of the bindings state
453
490
  *
454
491
  */
455
- ClientTreeBinding.prototype.checkUpdate = function(bForceupdate){
492
+ ClientTreeBinding.prototype.checkUpdate = function(bForceUpdate) {
493
+ const oCurrentTreeData = this.oModel._getObject(this.sPath, this.oContext);
494
+
456
495
  // apply filter again
457
496
  this.applyFilter();
458
497
  this._mLengthsCache = {};
459
- this._fireChange();
498
+
499
+ if (bForceUpdate || !deepEqual(this.oTreeData, oCurrentTreeData)) {
500
+ this.oTreeData = this.cloneData(oCurrentTreeData);
501
+ this._fireChange({reason: ChangeReason.Change});
502
+ }
460
503
  };
461
504
 
462
505
  /**
@@ -515,4 +558,4 @@ sap.ui.define([
515
558
  };
516
559
 
517
560
  return ClientTreeBinding;
518
- });
561
+ });
@@ -14,7 +14,7 @@ sap.ui.define(['./DataState', "sap/base/util/deepEqual", "sap/base/util/each"],
14
14
  * @extends sap.ui.model.DataState
15
15
  *
16
16
  * @author SAP SE
17
- * @version 1.141.2
17
+ * @version 1.143.0
18
18
  *
19
19
  * @public
20
20
  * @alias sap.ui.model.CompositeDataState
@@ -39,7 +39,7 @@ sap.ui.define(['./SimpleType'],
39
39
  * <code>true</code>.
40
40
  * @extends sap.ui.model.SimpleType
41
41
  * @public
42
- * @version 1.141.2
42
+ * @version 1.143.0
43
43
  */
44
44
  var CompositeType = SimpleType.extend("sap.ui.model.CompositeType", /** @lends sap.ui.model.CompositeType.prototype */ {
45
45
 
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  * @extends sap.ui.base.Object
66
66
  *
67
67
  * @author SAP SE
68
- * @version 1.141.2
68
+ * @version 1.143.0
69
69
  *
70
70
  * @public
71
71
  * @alias sap.ui.model.DataState
@@ -16,7 +16,7 @@ sap.ui.define(['./Model'],
16
16
  * @extends sap.ui.model.Model
17
17
  *
18
18
  * @author SAP SE
19
- * @version 1.141.2
19
+ * @version 1.143.0
20
20
  *
21
21
  * @public
22
22
  * @alias sap.ui.model.MetaModel
@@ -11,10 +11,11 @@ sap.ui.define([
11
11
  './BindingMode',
12
12
  './Context',
13
13
  './Filter',
14
+ "sap/base/Log",
14
15
  "sap/base/util/deepEqual",
15
16
  "sap/base/util/each"
16
17
  ],
17
- function(MessageProcessor, ManagedObjectBindingSupport, BindingMode, Context, Filter, deepEqual,
18
+ function(MessageProcessor, ManagedObjectBindingSupport, BindingMode, Context, Filter, Log, deepEqual,
18
19
  each) {
19
20
  "use strict";
20
21
 
@@ -51,7 +52,7 @@ sap.ui.define([
51
52
  * @extends sap.ui.core.message.MessageProcessor
52
53
  *
53
54
  * @author SAP SE
54
- * @version 1.141.2
55
+ * @version 1.143.0
55
56
  *
56
57
  * @public
57
58
  * @alias sap.ui.model.Model
@@ -90,6 +91,12 @@ sap.ui.define([
90
91
  this.mUnsupportedFilterOperators = {};
91
92
  // the id of the timeout for calling #checkUpdate
92
93
  this.sUpdateTimer = null;
94
+ // the number of consecutive synchronous calls to #setProperty
95
+ this.iSyncSetPropertyCalls = 0;
96
+ // the overall number of bindings affected by consecutive sync #setProperty calls
97
+ this.iUpdatedBindings = 0;
98
+ // the id of timeout for performance check in #setProperty
99
+ this.iTimeoutId = undefined;
93
100
  },
94
101
 
95
102
  metadata : {
@@ -980,6 +987,9 @@ sap.ui.define([
980
987
  * bindings
981
988
  * @param {boolean} [bAsync=false]
982
989
  * Whether this function is called in a new task via <code>setTimeout</code>
990
+ * @returns {number|undefined}
991
+ * The number of bindings which were checked synchronously for updates; 0 if <code>bAsync</code> is set.
992
+ * Subclasses overwriting this method may also return <code>undefined</code>.
983
993
  *
984
994
  * @private
985
995
  */
@@ -991,7 +1001,7 @@ sap.ui.define([
991
1001
  this.checkUpdate(this.bForceUpdate);
992
1002
  }.bind(this), 0);
993
1003
  }
994
- return;
1004
+ return 0;
995
1005
  }
996
1006
  bForceUpdate = this.bForceUpdate || bForceUpdate;
997
1007
  if (this.sUpdateTimer) {
@@ -1003,6 +1013,45 @@ sap.ui.define([
1003
1013
  each(aBindings, function(iIndex, oBinding) {
1004
1014
  oBinding.checkUpdate(bForceUpdate);
1005
1015
  });
1016
+
1017
+ return aBindings.length;
1018
+ };
1019
+
1020
+ /**
1021
+ * Checks if the sum of bindings updated by consecutive synchronous calls exceeds the threshold of 100,000 and log
1022
+ * a warning in this case if there is more than one synchronous call. Does nothing if called with bAsyncUpdate=true.
1023
+ *
1024
+ * @param {number} iUpdatedBindings The number of synchronously updated bindings
1025
+ * @param {boolean} [bAsyncUpdate] Whether the bindings are updated asynchronously
1026
+ *
1027
+ * @private
1028
+ */
1029
+ Model.prototype.checkPerformanceOfUpdate = function (iUpdatedBindings, bAsyncUpdate) {
1030
+ if (bAsyncUpdate) {
1031
+ return;
1032
+ }
1033
+
1034
+ this.iSyncSetPropertyCalls += 1;
1035
+ this.iUpdatedBindings += iUpdatedBindings;
1036
+ if (this.iTimeoutId) {
1037
+ return;
1038
+ }
1039
+
1040
+ const fnCheck = () => {
1041
+ if (this.iSyncSetPropertyCalls > 1 && this.iUpdatedBindings > 100000) {
1042
+ const sModelName = this.getMetadata().getName();
1043
+ Log.warning(`Performance issue: ${this.iUpdatedBindings} (more than 100000) bindings are affected by `
1044
+ + `${this.iSyncSetPropertyCalls} consecutive synchronous calls to `
1045
+ + `${sModelName.slice(sModelName.lastIndexOf(".") + 1)}#setProperty; `
1046
+ + `see API documentation for details`,
1047
+ undefined, sModelName);
1048
+ }
1049
+ this.iTimeoutId = undefined;
1050
+ this.iSyncSetPropertyCalls = 0;
1051
+ this.iUpdatedBindings = 0;
1052
+ };
1053
+
1054
+ this.iTimeoutId = setTimeout(fnCheck, 0);
1006
1055
  };
1007
1056
 
1008
1057
  /**
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/base/EventProvider', "sap/base/assert"],
20
20
  * @extends sap.ui.base.EventProvider
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.141.2
23
+ * @version 1.143.0
24
24
  *
25
25
  * @param {int} iSelectionMode <code>sap.ui.model.SelectionModel.SINGLE_SELECTION</code> or <code>sap.ui.model.SelectionModel.MULTI_SELECTION</code>
26
26
  *
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  *
47
47
  * @extends sap.ui.model.Type
48
48
  * @public
49
- * @version 1.141.2
49
+ * @version 1.143.0
50
50
  */
51
51
  var SimpleType = Type.extend("sap.ui.model.SimpleType", /** @lends sap.ui.model.SimpleType.prototype */ {
52
52
 
@@ -12,7 +12,7 @@ sap.ui.define([],
12
12
  /**
13
13
  * Different modes for setting the auto expand mode on tree or analytical bindings.
14
14
  *
15
- * @version 1.141.2
15
+ * @version 1.143.0
16
16
  * @enum {string}
17
17
  * @alias sap.ui.model.TreeAutoExpandMode
18
18
  * @protected
@@ -19,7 +19,7 @@ sap.ui.define(['sap/ui/base/Object'],
19
19
  *
20
20
  * @extends sap.ui.base.Object
21
21
  * @public
22
- * @version 1.141.2
22
+ * @version 1.143.0
23
23
  */
24
24
  var Type = BaseObject.extend("sap.ui.model.Type", /** @lends sap.ui.model.Type.prototype */ {
25
25
 
@@ -4,8 +4,8 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
7
- '../json/JSONModel', '../json/JSONPropertyBinding', '../json/JSONListBinding', 'sap/ui/base/ManagedObject', 'sap/ui/base/ManagedObjectObserver', '../Context', '../ChangeReason', "sap/base/util/uid", "sap/base/Log", "sap/base/util/isPlainObject", "sap/base/util/deepClone", "sap/base/util/deepEqual"
8
- ], function (JSONModel, JSONPropertyBinding, JSONListBinding, ManagedObject, ManagedObjectObserver, Context, ChangeReason, uid, Log, isPlainObject, deepClone, deepEqual) {
7
+ '../json/JSONModel', '../json/JSONPropertyBinding', '../json/JSONListBinding', 'sap/ui/base/ManagedObject', 'sap/ui/base/ManagedObjectObserver', '../Context', '../ChangeReason', "sap/base/util/uid", "sap/base/Log", "sap/base/util/isPlainObject", "sap/base/util/deepClone", "sap/base/util/deepEqual", "sap/ui/model/FilterType"
8
+ ], function (JSONModel, JSONPropertyBinding, JSONListBinding, ManagedObject, ManagedObjectObserver, Context, ChangeReason, uid, Log, isPlainObject, deepClone, deepEqual, FilterType) {
9
9
  "use strict";
10
10
 
11
11
  var CUSTOMDATAKEY = "@custom",
@@ -270,7 +270,9 @@ sap.ui.define([
270
270
  }
271
271
  },
272
272
  getLength: function() {
273
- if (this._aPartsInJSON.length == 0) {
273
+ // Note: Only use the original bindings length, if no filters are applied.
274
+ const aFilters = [...this.getFilters(FilterType.Application), ...this.getFilters(FilterType.Control)];
275
+ if (this._aPartsInJSON.length == 0 && aFilters.length == 0) {
274
276
  //this is only valid if the binding points directly to the member of the Managed Object
275
277
  var oInnerListBinding = this._oOriginMO.getBinding(this._sMember);
276
278
 
@@ -283,7 +285,8 @@ sap.ui.define([
283
285
  return JSONListBinding.prototype.getLength.apply(this, arguments);
284
286
  },
285
287
  isLengthFinal: function() {
286
- if (this._aPartsInJSON.length == 0) {
288
+ const aFilters = [...this.getFilters(FilterType.Application), ...this.getFilters(FilterType.Control)];
289
+ if (this._aPartsInJSON.length == 0 && aFilters.length == 0) {
287
290
  //this is only valid if the binding points directly to the member of the Managed Object
288
291
  var oInnerListBinding = this._oOriginMO.getBinding(this._sMember);
289
292
 
@@ -49,13 +49,14 @@ sap.ui.define([
49
49
  * @extends sap.ui.model.ClientModel
50
50
  *
51
51
  * @author SAP SE
52
- * @version 1.141.2
52
+ * @version 1.143.0
53
53
  * @public
54
54
  * @alias sap.ui.model.json.JSONModel
55
55
  */
56
56
  var JSONModel = ClientModel.extend("sap.ui.model.json.JSONModel", /** @lends sap.ui.model.json.JSONModel.prototype */ {
57
57
 
58
58
  constructor : function(oData, bObserve) {
59
+ // init promise before ClientModel c'tor as it calls #loadData
59
60
  this.pSequentialImportCompleted = Promise.resolve();
60
61
  ClientModel.apply(this, arguments);
61
62
 
@@ -292,7 +293,7 @@ sap.ui.define([
292
293
 
293
294
  // attach exception/rejection handler, so the internal import promise always resolves
294
295
  this.pSequentialImportCompleted = pReturn.catch(function(oError) {
295
- Log.error("Loading of data failed: " + oError.stack);
296
+ Log.error("Loading of data failed: " + sURL);
296
297
  });
297
298
 
298
299
  // return chained loadData promise (sequential imports)
@@ -359,6 +360,9 @@ sap.ui.define([
359
360
  * <code>sPath</code> and <code>oContext</code>. Once the new model value has been set, all
360
361
  * interested parties are informed.
361
362
  *
363
+ * Consecutive calls of this method which update bindings <em>synchronously</em> may cause performance issues; see
364
+ * {@link topic:18a76b577b144bc2b9b424e39d379c06 Performance Impact of Model Updates} for details.
365
+ *
362
366
  * @param {string} sPath
363
367
  * The path of the property to set
364
368
  * @param {any} oValue
@@ -366,7 +370,7 @@ sap.ui.define([
366
370
  * @param {sap.ui.model.Context} [oContext]
367
371
  * The context used to set the property
368
372
  * @param {boolean} [bAsyncUpdate]
369
- * Whether to update other bindings dependent on this property asynchronously
373
+ * Whether to update bindings dependent on this property asynchronously
370
374
  * @return {boolean}
371
375
  * <code>true</code> if the value was set correctly, and <code>false</code> if errors
372
376
  * occurred, for example if the entry was not found.
@@ -395,7 +399,8 @@ sap.ui.define([
395
399
  var oObject = this._getObject(sObjectPath);
396
400
  if (oObject) {
397
401
  oObject[sProperty] = oValue;
398
- this.checkUpdate(false, bAsyncUpdate);
402
+ const iUpdatedBindings = this.checkUpdate(false, bAsyncUpdate);
403
+ this.checkPerformanceOfUpdate(iUpdatedBindings, bAsyncUpdate);
399
404
  return true;
400
405
  }
401
406
  return false;
@@ -29,7 +29,7 @@ sap.ui.define(['sap/ui/model/BindingMode', 'sap/ui/model/ClientModel', 'sap/ui/m
29
29
  * @extends sap.ui.model.ClientModel
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.141.2
32
+ * @version 1.143.0
33
33
  *
34
34
  * @public
35
35
  * @alias sap.ui.model.message.MessageModel
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  *
28
28
  * @author SAP SE
29
29
  * @version
30
- * 1.141.2
30
+ * 1.143.0
31
31
  *
32
32
  * @public
33
33
  * @deprecated As of version 1.66, please use {@link sap.ui.model.odata.v2.ODataAnnotations} instead.
@@ -8,14 +8,13 @@ sap.ui.define([
8
8
  "sap/ui/core/Lib",
9
9
  "sap/ui/model/odata/ODataMetadata",
10
10
  "sap/ui/model/odata/ODataUtils",
11
- "sap/ui/thirdparty/URI",
12
11
  "sap/ui/core/Messaging",
13
12
  "sap/ui/core/message/MessageParser",
14
13
  "sap/ui/core/message/Message",
15
14
  "sap/ui/core/message/MessageType",
16
15
  "sap/base/Log"
17
16
  ],
18
- function(Library, ODataMetadata, ODataUtils, URI, Messaging, MessageParser, Message, MessageType, Log) {
17
+ function(Library, ODataMetadata, ODataUtils, Messaging, MessageParser, Message, MessageType, Log) {
19
18
  "use strict";
20
19
 
21
20
  var sClassName = "sap.ui.model.odata.ODataMessageParser",
@@ -29,6 +28,8 @@ var sClassName = "sap.ui.model.odata.ODataMessageParser",
29
28
  "warning" : MessageType.Warning
30
29
  };
31
30
 
31
+ const rQuestionMarkOrHash = /[?#]/;
32
+
32
33
  /**
33
34
  * A plain error object as returned by the server. Either "@sap-severity"- or "severity"-property
34
35
  * must be set.
@@ -50,15 +51,6 @@ var sClassName = "sap.ui.model.odata.ODataMessageParser",
50
51
  * @property {object} response - The response object
51
52
  */
52
53
 
53
- /**
54
- * A map containing a parsed URL
55
- *
56
- * @typedef {object} ODataMessageParser~UrlInfo
57
- * @property {string} url - The URL, stripped of query and hash
58
- * @property {Object<string,string>} parameters - A map of the query parameters
59
- * @property {string} hash - The hash value of the URL
60
- */
61
-
62
54
 
63
55
  /**
64
56
  *
@@ -84,7 +76,7 @@ var sClassName = "sap.ui.model.odata.ODataMessageParser",
84
76
  * @extends sap.ui.core.message.MessageParser
85
77
  *
86
78
  * @author SAP SE
87
- * @version 1.141.2
79
+ * @version 1.143.0
88
80
  * @public
89
81
  * @alias sap.ui.model.odata.ODataMessageParser
90
82
  */
@@ -95,7 +87,8 @@ var ODataMessageParser = MessageParser.extend("sap.ui.model.odata.ODataMessagePa
95
87
 
96
88
  constructor: function(sServiceUrl, oMetadata, bPersistTechnicalMessages) {
97
89
  MessageParser.apply(this);
98
- this._serviceUrl = getRelativeServerUrl(this._parseUrl(sServiceUrl).url);
90
+ this._sRelativeServerUrl = ODataMessageParser.getRelativeServerUrl(
91
+ ODataMessageParser._removeParametersAndHash(sServiceUrl));
99
92
  this._metadata = oMetadata;
100
93
  this._headerField = "sap-message"; // Default header field
101
94
  this._lastMessages = [];
@@ -221,14 +214,14 @@ ODataMessageParser.prototype._getAffectedTargets = function (aMessages, mRequest
221
214
  // unbound messages are always affected => add target ""
222
215
  var mAffectedTargets = Object.assign({"" : true}, mGetEntities, mChangeEntities),
223
216
  oEntitySet,
224
- sRequestTarget = this._parseUrl(mRequestInfo.url).url;
217
+ sRequestTarget = ODataMessageParser._removeParametersAndHash(mRequestInfo.url);
225
218
 
226
219
  if (mRequestInfo.request.key && mRequestInfo.request.created){
227
220
  mAffectedTargets[mRequestInfo.request.key] = true;
228
221
  }
229
222
 
230
- if (sRequestTarget.startsWith(this._serviceUrl)) {
231
- sRequestTarget = sRequestTarget.slice(this._serviceUrl.length + 1);
223
+ if (sRequestTarget.startsWith(this._sRelativeServerUrl)) {
224
+ sRequestTarget = sRequestTarget.slice(this._sRelativeServerUrl.length + 1);
232
225
  }
233
226
  oEntitySet = this._metadata._getEntitySetByPath(sRequestTarget);
234
227
  if (oEntitySet) {
@@ -465,7 +458,7 @@ ODataMessageParser._isResponseForCreate = function (mRequestInfo) {
465
458
  ODataMessageParser.prototype._createTarget = function (sODataTarget, mRequestInfo, bIsTechnical,
466
459
  bODataTransition) {
467
460
  var sCanonicalTarget, bCreate, sDeepPath, iPos, sPreviousCanonicalTarget, sRequestTarget, sUrl,
468
- mUrlData, sUrlForTargetCalculation,
461
+ sUrlForTargetCalculation,
469
462
  oRequest = mRequestInfo.request,
470
463
  oResponse = mRequestInfo.response;
471
464
 
@@ -491,11 +484,10 @@ ODataMessageParser.prototype._createTarget = function (sODataTarget, mRequestInf
491
484
  } else {
492
485
  sUrlForTargetCalculation = mRequestInfo.url;
493
486
  }
494
- mUrlData = this._parseUrl(sUrlForTargetCalculation);
495
- sUrl = mUrlData.url;
496
- iPos = sUrl.indexOf(this._serviceUrl);
487
+ sUrl = ODataMessageParser._removeParametersAndHash(sUrlForTargetCalculation);
488
+ iPos = sUrl.indexOf(this._sRelativeServerUrl);
497
489
  if (iPos > -1) {
498
- sRequestTarget = sUrl.slice(iPos + this._serviceUrl.length);
490
+ sRequestTarget = sUrl.slice(iPos + this._sRelativeServerUrl.length);
499
491
  } else { // e.g. within $batch responses
500
492
  sRequestTarget = "/" + sUrl;
501
493
  }
@@ -832,35 +824,16 @@ ODataMessageParser.prototype._parseBodyJSON = function(oResponse, mRequestInfo)
832
824
  };
833
825
 
834
826
  /**
835
- * Parses the URL into an info map containing the url, the parameters and the has in its properties
827
+ * Removes the parameters and the hash from the given URL.
836
828
  *
837
- * @param {string} sUrl - The URL to be stripped
838
- * @returns {ODataMessageParser~UrlInfo} An info map about the parsed URL
829
+ * @param {string} sUrl
830
+ * The URL from which the parameters and the hash should be removed
831
+ * @returns {string}
832
+ * The URL without the parameters and the hash
839
833
  * @private
840
834
  */
841
- ODataMessageParser.prototype._parseUrl = function(sUrl) {
842
- var mUrlData = {
843
- url: sUrl,
844
- parameters: {},
845
- hash: ""
846
- };
847
-
848
- var iPos = -1;
849
-
850
- iPos = sUrl.indexOf("#");
851
- if (iPos > -1) {
852
- mUrlData.hash = mUrlData.url.substr(iPos + 1);
853
- mUrlData.url = mUrlData.url.substr(0, iPos);
854
- }
855
-
856
- iPos = sUrl.indexOf("?");
857
- if (iPos > -1) {
858
- var sParameters = mUrlData.url.substr(iPos + 1);
859
- mUrlData.parameters = URI.parseQuery(sParameters);
860
- mUrlData.url = mUrlData.url.substr(0, iPos);
861
- }
862
-
863
- return mUrlData;
835
+ ODataMessageParser._removeParametersAndHash = function(sUrl) {
836
+ return sUrl.split(rQuestionMarkOrHash)[0];
864
837
  };
865
838
 
866
839
  /**
@@ -874,6 +847,17 @@ ODataMessageParser.prototype._setPersistTechnicalMessages = function (bPersistTe
874
847
  this._bPersistTechnicalMessages = bPersistTechnicalMessages;
875
848
  };
876
849
 
850
+ /**
851
+ * Returns the URL relative to the host (i.e. the absolute path on the server) for the given URL
852
+ *
853
+ * @param {string} sUrl - The URL to be converted
854
+ * @returns {string} The server-relative URL
855
+ * @private
856
+ */
857
+ ODataMessageParser.getRelativeServerUrl = function (sUrl) {
858
+ return new URL(sUrl, document.baseURI).pathname;
859
+ };
860
+
877
861
  ///////////////////////////////////////// Hidden Functions /////////////////////////////////////////
878
862
 
879
863
 
@@ -896,23 +880,6 @@ function getContentType(oResponse) {
896
880
  return false;
897
881
  }
898
882
 
899
- /**
900
- * Local helper element used to determine the path of a URL relative to the server
901
- *
902
- * @type {HTMLAnchorElement}
903
- */
904
- var oLinkElement = document.createElement("a");
905
- /**
906
- * Returns the URL relative to the host (i.e. the absolute path on the server) for the given URL
907
- *
908
- * @param {string} sUrl - The URL to be converted
909
- * @returns {string} The server-relative URL
910
- */
911
- function getRelativeServerUrl(sUrl) {
912
- oLinkElement.href = sUrl;
913
- return URI.parse(oLinkElement.href).path;
914
- }
915
-
916
883
  /**
917
884
  * Returns all elements in the given document (or node) that match the given elementnames
918
885
  *
@@ -881,7 +881,7 @@ sap.ui.define([
881
881
  * {@link #loaded loaded} has been resolved!
882
882
  *
883
883
  * @author SAP SE
884
- * @version 1.141.2
884
+ * @version 1.143.0
885
885
  * @alias sap.ui.model.odata.ODataMetaModel
886
886
  * @extends sap.ui.model.MetaModel
887
887
  * @public
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  * Implementation to access OData metadata
50
50
  *
51
51
  * @author SAP SE
52
- * @version 1.141.2
52
+ * @version 1.143.0
53
53
  *
54
54
  * @public
55
55
  * @alias sap.ui.model.odata.ODataMetadata
@@ -78,7 +78,7 @@ sap.ui.define([
78
78
  *
79
79
  *
80
80
  * @author SAP SE
81
- * @version 1.141.2
81
+ * @version 1.143.0
82
82
  *
83
83
  * @public
84
84
  * @deprecated As of version 1.48, please use {@link sap.ui.model.odata.v2.ODataModel} instead.
@@ -77,9 +77,13 @@ sap.ui.define([
77
77
  /**
78
78
  * Constructor for an OData primitive type <code>Edm.Boolean</code>.
79
79
  *
80
- * @class This class represents the OData primitive type <a
81
- * href="http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
82
- * <code>Edm.Boolean</code></a>.
80
+ * @class This class represents the OData primitive type <code>Edm.Boolean</code>, see
81
+ * <a
82
+ * href="https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530338">
83
+ * type definition for OData V4.01</a> or
84
+ * <a
85
+ * href="https://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
86
+ * type definition for OData V2</a>.
83
87
  *
84
88
  * In both {@link sap.ui.model.odata.v2.ODataModel} and {@link sap.ui.model.odata.v4.ODataModel}
85
89
  * this type is represented as a <code>boolean</code>.
@@ -87,7 +91,7 @@ sap.ui.define([
87
91
  * @extends sap.ui.model.odata.type.ODataType
88
92
  *
89
93
  * @author SAP SE
90
- * @version 1.141.2
94
+ * @version 1.143.0
91
95
  *
92
96
  * @alias sap.ui.model.odata.type.Boolean
93
97
  * @param {object} [oFormatOptions]
@@ -14,9 +14,13 @@ sap.ui.define([
14
14
  /**
15
15
  * Constructor for a primitive type <code>Edm.Byte</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.Byte</code></a>.
17
+ * @class This class represents the OData primitive type <code>Edm.Byte</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.141.2
31
+ * @version 1.143.0
28
32
  *
29
33
  * @alias sap.ui.model.odata.type.Byte
30
34
  * @param {object} [oFormatOptions]