@openui5/sap.ui.core 1.103.1 → 1.104.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 (330) hide show
  1. package/.reuse/dep5 +17 -0
  2. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  3. package/THIRDPARTY.txt +35 -2
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/sap/base/util/LoaderExtensions.js +69 -61
  11. package/src/sap/base/util/fetch.js +230 -0
  12. package/src/sap/base/util/mixedFetch.js +69 -0
  13. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  14. package/src/sap/base/util/restricted/_castArray.js +1 -1
  15. package/src/sap/base/util/restricted/_compact.js +1 -1
  16. package/src/sap/base/util/restricted/_curry.js +1 -1
  17. package/src/sap/base/util/restricted/_debounce.js +1 -1
  18. package/src/sap/base/util/restricted/_difference.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  24. package/src/sap/base/util/restricted/_flatten.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_intersection.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isNil.js +1 -1
  33. package/src/sap/base/util/restricted/_max.js +1 -1
  34. package/src/sap/base/util/restricted/_merge.js +1 -1
  35. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  36. package/src/sap/base/util/restricted/_min.js +1 -1
  37. package/src/sap/base/util/restricted/_omit.js +1 -1
  38. package/src/sap/base/util/restricted/_pick.js +1 -1
  39. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  40. package/src/sap/base/util/restricted/_throttle.js +1 -1
  41. package/src/sap/base/util/restricted/_toArray.js +1 -1
  42. package/src/sap/base/util/restricted/_union.js +1 -1
  43. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  44. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  45. package/src/sap/base/util/restricted/_uniq.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  48. package/src/sap/base/util/restricted/_without.js +1 -1
  49. package/src/sap/base/util/restricted/_xor.js +1 -1
  50. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  51. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  54. package/src/sap/base/util/syncFetch.js +73 -0
  55. package/src/sap/ui/Device.js +3 -3
  56. package/src/sap/ui/Global.js +4 -4
  57. package/src/sap/ui/base/Event.js +1 -1
  58. package/src/sap/ui/base/EventProvider.js +1 -1
  59. package/src/sap/ui/base/Interface.js +1 -1
  60. package/src/sap/ui/base/ManagedObject.js +1 -1
  61. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  62. package/src/sap/ui/base/Metadata.js +1 -1
  63. package/src/sap/ui/base/Object.js +1 -1
  64. package/src/sap/ui/base/ObjectPool.js +1 -1
  65. package/src/sap/ui/core/.library +17 -2
  66. package/src/sap/ui/core/AppCacheBuster.js +65 -51
  67. package/src/sap/ui/core/BusyIndicator.js +1 -1
  68. package/src/sap/ui/core/Component.js +48 -21
  69. package/src/sap/ui/core/ComponentContainer.js +1 -1
  70. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  71. package/src/sap/ui/core/ComponentSupport.js +1 -1
  72. package/src/sap/ui/core/Configuration.js +44 -21
  73. package/src/sap/ui/core/Control.js +1 -1
  74. package/src/sap/ui/core/Core.js +49 -61
  75. package/src/sap/ui/core/CustomData.js +1 -1
  76. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  77. package/src/sap/ui/core/Element.js +9 -1
  78. package/src/sap/ui/core/ElementMetadata.js +1 -1
  79. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  80. package/src/sap/ui/core/EventBus.js +1 -1
  81. package/src/sap/ui/core/FocusHandler.js +56 -33
  82. package/src/sap/ui/core/Fragment.js +1 -1
  83. package/src/sap/ui/core/HTML.js +1 -1
  84. package/src/sap/ui/core/History.js +1 -1
  85. package/src/sap/ui/core/Icon.js +1 -1
  86. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  87. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  88. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  89. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  90. package/src/sap/ui/core/InvisibleText.js +4 -1
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +1 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/ListItem.js +1 -1
  95. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  96. package/src/sap/ui/core/Locale.js +1 -1
  97. package/src/sap/ui/core/LocaleData.js +3 -45
  98. package/src/sap/ui/core/Manifest.js +1 -1
  99. package/src/sap/ui/core/Message.js +1 -1
  100. package/src/sap/ui/core/RenderManager.js +11 -21
  101. package/src/sap/ui/core/Renderer.js +1 -1
  102. package/src/sap/ui/core/ResizeHandler.js +22 -43
  103. package/src/sap/ui/core/ScrollBar.js +1 -1
  104. package/src/sap/ui/core/SeparatorItem.js +1 -1
  105. package/src/sap/ui/core/Title.js +1 -1
  106. package/src/sap/ui/core/TooltipBase.js +1 -1
  107. package/src/sap/ui/core/UIArea.js +6 -4
  108. package/src/sap/ui/core/UIComponent.js +1 -1
  109. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  110. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  111. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  112. package/src/sap/ui/core/XMLComposite.js +1 -1
  113. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  114. package/src/sap/ui/core/_IconRegistry.js +66 -55
  115. package/src/sap/ui/core/cache/CacheManager.js +18 -14
  116. package/src/sap/ui/core/cache/CacheManagerNOP.js +5 -2
  117. package/src/sap/ui/core/cache/LRUPersistentCache.js +15 -8
  118. package/src/sap/ui/core/cldr/en.json +0 -1
  119. package/src/sap/ui/core/date/Buddhist.js +15 -13
  120. package/src/sap/ui/core/date/Japanese.js +0 -6
  121. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  122. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  123. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  124. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  125. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  126. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  127. package/src/sap/ui/core/format/NumberFormat.js +91 -25
  128. package/src/sap/ui/core/format/TimezoneUtil.js +2 -2
  129. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  130. package/src/sap/ui/core/library.js +3 -3
  131. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  132. package/src/sap/ui/core/message/Message.js +1 -1
  133. package/src/sap/ui/core/message/MessageManager.js +1 -1
  134. package/src/sap/ui/core/message/MessageParser.js +1 -1
  135. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  136. package/src/sap/ui/core/messagebundle_ar.properties +54 -53
  137. package/src/sap/ui/core/messagebundle_bg.properties +54 -53
  138. package/src/sap/ui/core/messagebundle_ca.properties +28 -27
  139. package/src/sap/ui/core/messagebundle_cs.properties +37 -36
  140. package/src/sap/ui/core/messagebundle_cy.properties +56 -55
  141. package/src/sap/ui/core/messagebundle_da.properties +53 -52
  142. package/src/sap/ui/core/messagebundle_de.properties +54 -53
  143. package/src/sap/ui/core/messagebundle_el.properties +45 -44
  144. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
  145. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  146. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +1 -0
  147. package/src/sap/ui/core/messagebundle_es.properties +42 -41
  148. package/src/sap/ui/core/messagebundle_es_MX.properties +54 -53
  149. package/src/sap/ui/core/messagebundle_et.properties +51 -50
  150. package/src/sap/ui/core/messagebundle_fi.properties +48 -47
  151. package/src/sap/ui/core/messagebundle_fr.properties +36 -35
  152. package/src/sap/ui/core/messagebundle_fr_CA.properties +21 -20
  153. package/src/sap/ui/core/messagebundle_hi.properties +41 -40
  154. package/src/sap/ui/core/messagebundle_hr.properties +55 -54
  155. package/src/sap/ui/core/messagebundle_hu.properties +55 -54
  156. package/src/sap/ui/core/messagebundle_id.properties +55 -54
  157. package/src/sap/ui/core/messagebundle_it.properties +55 -54
  158. package/src/sap/ui/core/messagebundle_iw.properties +55 -54
  159. package/src/sap/ui/core/messagebundle_ja.properties +48 -47
  160. package/src/sap/ui/core/messagebundle_kk.properties +41 -40
  161. package/src/sap/ui/core/messagebundle_ko.properties +17 -16
  162. package/src/sap/ui/core/messagebundle_lt.properties +55 -54
  163. package/src/sap/ui/core/messagebundle_lv.properties +55 -54
  164. package/src/sap/ui/core/messagebundle_ms.properties +52 -51
  165. package/src/sap/ui/core/messagebundle_nl.properties +53 -52
  166. package/src/sap/ui/core/messagebundle_no.properties +53 -52
  167. package/src/sap/ui/core/messagebundle_pl.properties +52 -51
  168. package/src/sap/ui/core/messagebundle_pt.properties +54 -53
  169. package/src/sap/ui/core/messagebundle_pt_PT.properties +55 -54
  170. package/src/sap/ui/core/messagebundle_ro.properties +56 -55
  171. package/src/sap/ui/core/messagebundle_ru.properties +52 -51
  172. package/src/sap/ui/core/messagebundle_sh.properties +56 -55
  173. package/src/sap/ui/core/messagebundle_sk.properties +54 -53
  174. package/src/sap/ui/core/messagebundle_sl.properties +56 -55
  175. package/src/sap/ui/core/messagebundle_sv.properties +52 -51
  176. package/src/sap/ui/core/messagebundle_th.properties +25 -24
  177. package/src/sap/ui/core/messagebundle_tr.properties +56 -55
  178. package/src/sap/ui/core/messagebundle_uk.properties +55 -54
  179. package/src/sap/ui/core/messagebundle_vi.properties +55 -54
  180. package/src/sap/ui/core/messagebundle_zh_CN.properties +55 -54
  181. package/src/sap/ui/core/messagebundle_zh_TW.properties +55 -54
  182. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  183. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  184. package/src/sap/ui/core/mvc/JSView.js +1 -1
  185. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  186. package/src/sap/ui/core/mvc/View.js +1 -1
  187. package/src/sap/ui/core/mvc/XMLView.js +1 -2
  188. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  189. package/src/sap/ui/core/plugin/LessSupport.js +16 -14
  190. package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -1
  191. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  192. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  193. package/src/sap/ui/core/routing/async/TargetCache.js +4 -0
  194. package/src/sap/ui/core/rules/Config.support.js +1 -1
  195. package/src/sap/ui/core/rules/View.support.js +11 -4
  196. package/src/sap/ui/core/search/OpenSearchProvider.js +24 -11
  197. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  198. package/src/sap/ui/core/service/Service.js +1 -1
  199. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  200. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  201. package/src/sap/ui/core/support/Plugin.js +1 -1
  202. package/src/sap/ui/core/support/Support.js +2 -2
  203. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  204. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  205. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  206. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  207. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  208. package/src/sap/ui/core/support/plugins/TechInfo.js +46 -33
  209. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  210. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  211. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -1
  212. package/src/sap/ui/core/themes/base/base.less +26 -26
  213. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  214. package/src/sap/ui/core/theming/Parameters.js +45 -39
  215. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  216. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  217. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  218. package/src/sap/ui/core/tmpl/Template.js +2 -2
  219. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  220. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  221. package/src/sap/ui/core/util/Export.js +1 -1
  222. package/src/sap/ui/core/util/ExportCell.js +1 -1
  223. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  224. package/src/sap/ui/core/util/ExportRow.js +1 -1
  225. package/src/sap/ui/core/util/ExportType.js +1 -1
  226. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  227. package/src/sap/ui/core/util/File.js +1 -1
  228. package/src/sap/ui/core/util/LibraryInfo.js +61 -42
  229. package/src/sap/ui/core/util/MockServer.js +1 -1
  230. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  231. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -1
  232. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  233. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  234. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  235. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  236. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  237. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  238. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  239. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  240. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  241. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  242. package/src/sap/ui/debug/ControlTree.js +1 -1
  243. package/src/sap/ui/debug/DebugEnv.js +1 -1
  244. package/src/sap/ui/debug/PropertyList.js +19 -9
  245. package/src/sap/ui/model/ClientModel.js +1 -1
  246. package/src/sap/ui/model/CompositeDataState.js +1 -1
  247. package/src/sap/ui/model/CompositeType.js +1 -1
  248. package/src/sap/ui/model/DataState.js +2 -2
  249. package/src/sap/ui/model/MetaModel.js +1 -1
  250. package/src/sap/ui/model/Model.js +1 -1
  251. package/src/sap/ui/model/SelectionModel.js +1 -1
  252. package/src/sap/ui/model/SimpleType.js +1 -1
  253. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  254. package/src/sap/ui/model/Type.js +1 -1
  255. package/src/sap/ui/model/analytics/odata4analytics.js +2 -2
  256. package/src/sap/ui/model/json/JSONModel.js +1 -1
  257. package/src/sap/ui/model/message/MessageModel.js +1 -1
  258. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  259. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  260. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  261. package/src/sap/ui/model/odata/ODataMetadata.js +6 -3
  262. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  263. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +128 -87
  264. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  265. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  266. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  267. package/src/sap/ui/model/odata/type/Date.js +1 -1
  268. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  269. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  270. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  271. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  272. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  273. package/src/sap/ui/model/odata/type/Double.js +1 -1
  274. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  275. package/src/sap/ui/model/odata/type/Int.js +1 -1
  276. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  277. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  278. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  279. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  280. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  281. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  282. package/src/sap/ui/model/odata/type/Single.js +1 -1
  283. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  284. package/src/sap/ui/model/odata/type/String.js +1 -1
  285. package/src/sap/ui/model/odata/type/Time.js +1 -1
  286. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  287. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  288. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  289. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  290. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +4 -1
  291. package/src/sap/ui/model/odata/v2/ODataModel.js +112 -104
  292. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +15 -2
  293. package/src/sap/ui/model/odata/v4/Context.js +3 -1
  294. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  295. package/src/sap/ui/model/odata/v4/ODataListBinding.js +2 -1
  296. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  297. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  298. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  299. package/src/sap/ui/model/odata/v4/lib/_Cache.js +74 -24
  300. package/src/sap/ui/model/odata/v4/lib/_Helper.js +42 -0
  301. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +3 -1
  302. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  303. package/src/sap/ui/model/type/Boolean.js +1 -1
  304. package/src/sap/ui/model/type/Currency.js +1 -1
  305. package/src/sap/ui/model/type/Date.js +1 -1
  306. package/src/sap/ui/model/type/DateInterval.js +1 -1
  307. package/src/sap/ui/model/type/DateTime.js +1 -1
  308. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  309. package/src/sap/ui/model/type/FileSize.js +1 -1
  310. package/src/sap/ui/model/type/Float.js +1 -1
  311. package/src/sap/ui/model/type/Integer.js +1 -1
  312. package/src/sap/ui/model/type/String.js +1 -1
  313. package/src/sap/ui/model/type/Time.js +1 -1
  314. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  315. package/src/sap/ui/model/type/Unit.js +1 -1
  316. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  317. package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
  318. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  319. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  320. package/src/sap/ui/test/Opa5.js +1 -1
  321. package/src/sap/ui/test/TestUtils.js +35 -2
  322. package/src/sap/ui/test/generic/TestBase.js +1 -1
  323. package/src/sap/ui/test/matchers/Matcher.js +9 -11
  324. package/src/sap/ui/test/opaQunit.js +4 -3
  325. package/src/sap/ui/thirdparty/IPv6.js +1 -1
  326. package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
  327. package/src/sap/ui/thirdparty/URI.js +8 -2
  328. package/src/sap/ui/thirdparty/URITemplate.js +1 -1
  329. package/src/sap/ui/util/Storage.js +1 -1
  330. package/src/sap/ui/util/XMLHelper.js +1 -1
@@ -203,7 +203,7 @@ sap.ui.define([
203
203
  * This model is not prepared to be inherited from.
204
204
  *
205
205
  * @author SAP SE
206
- * @version 1.103.1
206
+ * @version 1.104.0
207
207
  *
208
208
  * @public
209
209
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -1464,6 +1464,7 @@ sap.ui.define([
1464
1464
  * @param {object} oData Data that should be imported
1465
1465
  * @param {map} mChangedEntities Map of changed entities
1466
1466
  * @param {object} oResponse Response where the data came from
1467
+ * @param {object} oRequest The request object
1467
1468
  * @param {string} [sPath] The path to the data
1468
1469
  * @param {string} [sDeepPath] The deep path to the data
1469
1470
  * @param {string} [sKey] The cache key to the data if known
@@ -1478,7 +1479,7 @@ sap.ui.define([
1478
1479
  * @return {string|string[]} Key of imported data or array of keys in case of nested entries
1479
1480
  * @private
1480
1481
  */
1481
- ODataModel.prototype._importData = function(oData, mChangedEntities, oResponse, sPath,
1482
+ ODataModel.prototype._importData = function(oData, mChangedEntities, oResponse, oRequest, sPath,
1482
1483
  sDeepPath, sKey, bFunctionImport, sPathFromCanonicalParent, bSideEffects) {
1483
1484
  var that = this,
1484
1485
  aList, oResult, oEntry, oCurrentEntry;
@@ -1489,7 +1490,7 @@ sap.ui.define([
1489
1490
  aList = [];
1490
1491
  each(oData.results, function(i, entry) {
1491
1492
  var sKey = that._getKey(entry);
1492
- sKey = that._importData(entry, mChangedEntities, oResponse,
1493
+ sKey = that._importData(entry, mChangedEntities, oResponse, /*oRequest*/undefined,
1493
1494
  sPath.substr(0, sPath.lastIndexOf("/")), sDeepPath, sKey,
1494
1495
  /*bFunctionImport*/undefined, /*sPathFromCanonicalParent*/undefined,
1495
1496
  bSideEffects);
@@ -1545,8 +1546,9 @@ sap.ui.define([
1545
1546
  var sNewPath = sPath + "/" + sName;
1546
1547
  var sNewDeepPath = sDeepPath + "/" + sName;
1547
1548
 
1548
- oResult = that._importData(oProperty, mChangedEntities, oResponse, sNewPath,
1549
- sNewDeepPath, undefined, false, "/" + sKey + "/" + sName, bSideEffects);
1549
+ oResult = that._importData(oProperty, mChangedEntities, oResponse,
1550
+ /*oRequest*/undefined, sNewPath, sNewDeepPath, undefined, false,
1551
+ "/" + sKey + "/" + sName, bSideEffects);
1550
1552
  if (Array.isArray(oResult)) {
1551
1553
  oEntry[sName] = {__list: oResult};
1552
1554
  if (bSideEffects) {
@@ -1559,7 +1561,6 @@ sap.ui.define([
1559
1561
  // ODataModel#requestSideEffects; see BLI CPOUI5MODELS-656
1560
1562
  delete oEntry[sName];
1561
1563
  });
1562
-
1563
1564
  }
1564
1565
  } else {
1565
1566
  if (oCurrentEntry[sName] && oCurrentEntry[sName].__ref) {
@@ -1577,18 +1578,19 @@ sap.ui.define([
1577
1578
  oEntry[sName] = oProperty;
1578
1579
  }
1579
1580
  });
1580
- // if we got new data we have to update changed entities
1581
- var oMap = {};
1582
- oMap[sKey] = oEntry;
1583
-
1584
1581
  //if we detect a preliminary context we need to set preliminary false and flag for update
1585
1582
  if (this.hasContext("/" + sKey) && this.getContext("/" + sKey).isPreliminary()) {
1586
1583
  var oExistingContext = this.getContext("/" + sKey);
1587
1584
  oExistingContext.setUpdated(true);
1585
+ this.callAfterUpdate(function() {
1586
+ oExistingContext.setUpdated(false);
1587
+ });
1588
1588
  oExistingContext.setPreliminary(false);
1589
1589
  }
1590
-
1591
- this._updateChangedEntities(oMap);
1590
+ if (oRequest && oRequest.created && oRequest.key) {
1591
+ this._cleanupAfterCreate(oRequest, sKey);
1592
+ }
1593
+ this._updateChangedEntity(sKey, oEntry);
1592
1594
  mChangedEntities[sKey] = true;
1593
1595
 
1594
1596
  // if no path information available use the key. This should be the case for create/callFunction
@@ -4268,10 +4270,10 @@ sap.ui.define([
4268
4270
  if (oRequest.key || oRequest.created) {
4269
4271
  // no need to pass sideEffects because side-effects requests don't have a key or
4270
4272
  // a created property attached to the request
4271
- that._importData(oImportData, mLocalGetEntities, oResponse, /*sPath*/undefined,
4272
- /*sDeepPath*/undefined, /*sKey*/undefined, bIsFunction);
4273
+ that._importData(oImportData, mLocalGetEntities, oResponse, oRequest,
4274
+ /*sPath*/undefined, /*sDeepPath*/undefined, /*sKey*/undefined, bIsFunction);
4273
4275
  } else {
4274
- that._importData(oImportData, mLocalGetEntities, oResponse, sPath,
4276
+ that._importData(oImportData, mLocalGetEntities, oResponse, oRequest, sPath,
4275
4277
  oRequest.deepPath, /*sKey*/undefined, bIsFunction,
4276
4278
  /*sPathFromCanonicalParent*/undefined, oRequest.sideEffects);
4277
4279
  }
@@ -4279,7 +4281,8 @@ sap.ui.define([
4279
4281
  }
4280
4282
 
4281
4283
  oEntity = this._getEntity(oRequest.key);
4282
- if (mLocalGetEntities && oEntity && oEntity.__metadata.created && oEntity.__metadata.created.functionImport) {
4284
+ if (oEntity && oEntity.__metadata.created
4285
+ && oEntity.__metadata.created.functionImport) {
4283
4286
  var aResults = [];
4284
4287
  var oResult = oEntity["$result"];
4285
4288
  if (oResult && oResult.__list) {
@@ -4301,9 +4304,7 @@ sap.ui.define([
4301
4304
  if (aParts[1]) {
4302
4305
  mLocalChangeEntities[aParts[1]] = oRequest;
4303
4306
  //cleanup of this.mChangedEntities; use only the actual response key
4304
- var oMap = {};
4305
- oMap[aParts[1]] = oRequest.data;
4306
- this._updateChangedEntities(oMap);
4307
+ this._updateChangedEntity(aParts[1], oRequest.data);
4307
4308
  }
4308
4309
  //for delete requests delete data in model (exclude $links)
4309
4310
  if (oRequest.method === "DELETE" && aParts[2] !== "$links") {
@@ -4316,29 +4317,7 @@ sap.ui.define([
4316
4317
  mEntityTypes[oEntityType.entityType] = true;
4317
4318
  }
4318
4319
  if (oRequest.key) {
4319
- // for createEntry entities change context path to new one
4320
4320
  if (oRequest.created) {
4321
- var sKey = this._getKey(oResultData);
4322
- // rewrite context for new path
4323
- var oContext = this.getContext("/" + oRequest.key);
4324
- sDeepPath = oRequest.deepPath;
4325
- if (oContext.isTransient() && sDeepPath.endsWith(")")) {
4326
- oRequest.deepPath = sDeepPath.slice(0, sDeepPath.lastIndexOf("("))
4327
- + sKey.slice(sKey.indexOf("("));
4328
- }
4329
- this._updateContext(oContext, '/' + sKey, oRequest.deepPath);
4330
- oContext.setUpdated(true);
4331
- // register function to reset updated flag call as callAfterUpdate
4332
- this.callAfterUpdate(function() {
4333
- oContext.setUpdated(false);
4334
- });
4335
- //delete created flag after successful creation
4336
- oEntity = this._getEntity(sKey);
4337
- if (oEntity) {
4338
- delete oEntity.__metadata.created;
4339
- // before deleting the old entity copy and update the changes
4340
- this._keepChangesAfterCreate(oRequest, oEntity, sKey);
4341
- }
4342
4321
  this._removeEntity(oRequest.key);
4343
4322
  } else {
4344
4323
  // do not call _removeEntity after successful function import call as
@@ -4381,17 +4360,29 @@ sap.ui.define([
4381
4360
  *
4382
4361
  * @param {object} oRequest
4383
4362
  * The request object for a created entity
4384
- * @param {object} oEntity
4385
- * The persisted and retrieved entity object
4386
4363
  * @param {string} sKey
4387
4364
  * The key of the created entity
4388
4365
  *
4389
4366
  * @private
4390
4367
  */
4391
- ODataModel.prototype._keepChangesAfterCreate = function (oRequest, oEntity, sKey) {
4392
- var oKey2Entity, aNavProps, sProperty,
4393
- oChangedEntity = this.mChangedEntities[oRequest.key];
4368
+ ODataModel.prototype._cleanupAfterCreate = function (oRequest, sKey) {
4369
+ var oChangedEntity, aNavProps, sProperty,
4370
+ oContext = this.getContext("/" + oRequest.key),
4371
+ sDeepPath = oRequest.deepPath,
4372
+ oEntity = this._getEntity(sKey);
4394
4373
 
4374
+ if (oContext.isTransient() && sDeepPath.endsWith(")")) {
4375
+ oRequest.deepPath = sDeepPath.slice(0, sDeepPath.lastIndexOf("("))
4376
+ + sKey.slice(sKey.indexOf("("));
4377
+ }
4378
+ this._updateContext(oContext, '/' + sKey, oRequest.deepPath);
4379
+ oContext.setUpdated(true);
4380
+ this.callAfterUpdate(function() {
4381
+ oContext.setUpdated(false);
4382
+ });
4383
+ delete oEntity.__metadata.created;
4384
+ // before deleting the old entity copy and update the changes
4385
+ oChangedEntity = this.mChangedEntities[oRequest.key];
4395
4386
  if (oChangedEntity) {
4396
4387
  aNavProps = this.oMetadata._getNavigationPropertyNames(
4397
4388
  this.oMetadata._getEntityTypeByPath(sKey));
@@ -4405,13 +4396,10 @@ sap.ui.define([
4405
4396
  }
4406
4397
  }
4407
4398
  this.mChangedEntities[sKey] = oChangedEntity;
4408
- oKey2Entity = {};
4409
- oKey2Entity[sKey] = oEntity;
4410
- this._updateChangedEntities(oKey2Entity);
4411
4399
  // cleanup also further POST request for the just created entity
4412
4400
  this.abortInternalRequest(this._resolveGroup(oRequest.key).groupId,
4413
4401
  {requestKey: oRequest.key});
4414
- }
4402
+ } // else case may happen if ODataModel#create is called which does not use the cache
4415
4403
  };
4416
4404
 
4417
4405
  /**
@@ -4641,25 +4629,29 @@ sap.ui.define([
4641
4629
  };
4642
4630
 
4643
4631
  /**
4644
- * Resolves batch group settings for an entity.
4632
+ * Resolves batch group settings based on a given entity key or a given resolved path to an
4633
+ * entity.
4634
+ *
4635
+ * @param {string} sKeyOrPath
4636
+ * The entity key or the resolved path to an entity
4637
+ * @returns {object}
4638
+ * Batch group info containing <code>groupId</code> and <code>changeSetId</code>
4645
4639
  *
4646
- * @param {string} sKey Key of the entity
4647
- * @returns {object} Batch group info
4648
4640
  * @private
4649
4641
  */
4650
- ODataModel.prototype._resolveGroup = function(sKey) {
4651
- var oChangeGroup, oEntityType, mParams, sGroupId, sChangeSetId, oData;
4642
+ ODataModel.prototype._resolveGroup = function(sKeyOrPath) {
4643
+ var oChangeGroup, sChangeSetId, mCreated, oData, oEntityType, sGroupId,
4644
+ sPath = sKeyOrPath.startsWith("/") ? sKeyOrPath : ("/" + sKeyOrPath);
4652
4645
 
4653
- oEntityType = this.oMetadata._getEntityTypeByPath(sKey);
4654
- oData = this._getObject('/' + sKey);
4655
- if (oData) {
4656
- mParams = oData.__metadata.created;
4657
- //for created entries the group information is retrieved from the params
4658
- if (mParams) {
4659
- return {groupId: mParams.groupId, changeSetId: mParams.changeSetId};
4660
- }
4646
+ oData = this._getObject(sPath);
4647
+ mCreated = oData && oData.__metadata && oData.__metadata.created;
4648
+ //for created entries the group information is retrieved from the params
4649
+ if (mCreated) {
4650
+ return {groupId: mCreated.groupId, changeSetId: mCreated.changeSetId};
4661
4651
  }
4652
+
4662
4653
  //resolve groupId/changeSetId
4654
+ oEntityType = this.oMetadata._getEntityTypeByPath(sPath);
4663
4655
  if (this.mChangeGroups[oEntityType.name]) {
4664
4656
  oChangeGroup = this.mChangeGroups[oEntityType.name];
4665
4657
  sGroupId = oChangeGroup.groupId;
@@ -6065,16 +6057,30 @@ sap.ui.define([
6065
6057
  bRefreshAfterChange = this.bRefreshAfterChange,
6066
6058
  that = this;
6067
6059
 
6068
- if (mParameters) {
6069
- sGroupId = mParameters.groupId || mParameters.batchGroupId;
6070
- fnSuccess = mParameters.success;
6071
- fnError = mParameters.error;
6072
- // ensure merge parameter backwards compatibility
6073
- if (mParameters.merge !== undefined) {
6074
- sMethod = mParameters.merge ? "MERGE" : "PUT";
6075
- }
6060
+ mParameters = mParameters || {};
6061
+ sGroupId = mParameters.groupId || mParameters.batchGroupId;
6062
+ fnSuccess = mParameters.success;
6063
+ fnError = mParameters.error;
6064
+ // ensure merge parameter backwards compatibility
6065
+ if (mParameters.merge !== undefined) {
6066
+ sMethod = mParameters.merge ? "MERGE" : "PUT";
6076
6067
  }
6077
6068
 
6069
+ this.getBindings().forEach(function (oBinding) {
6070
+ if (oBinding._submitChanges) {
6071
+ var fnOldSuccess = fnSuccess || function () {},
6072
+ mParameters0 = {groupId : sGroupId};
6073
+
6074
+ oBinding._submitChanges(mParameters0);
6075
+ if (mParameters0.success) {
6076
+ fnSuccess = function () {
6077
+ fnOldSuccess.apply(null, arguments);
6078
+ mParameters0.success.apply(null, arguments);
6079
+ };
6080
+ }
6081
+ }
6082
+ });
6083
+
6078
6084
  if (sGroupId && !this.mDeferredGroups[sGroupId]) {
6079
6085
  Log.fatal(this + " submitChanges: \"" + sGroupId + "\" is not a deferred group!");
6080
6086
  }
@@ -6155,13 +6161,19 @@ sap.ui.define([
6155
6161
  return oRequestHandle;
6156
6162
  };
6157
6163
 
6158
- /*
6159
- * updateChangedEntities
6164
+ /**
6165
+ * Updates the object in the shadow cache containing the pending user input and the object in
6166
+ * the model cache with the given data for the entity with the given key. If all changes for
6167
+ * that entity are processed the object is removed from the shadow cache.
6168
+ *
6169
+ * @param {string} [sEntityKey] The key for the entity to be updated
6170
+ * @param {object} [oData] The new data for the entity
6171
+ *
6160
6172
  * @private
6161
- * @param {map} mChangedEntities Map of changedEntities
6162
6173
  */
6163
- ODataModel.prototype._updateChangedEntities = function(mChangedEntities) {
6164
- var that = this, sRootPath, oEntityType, oNavPropRefInfo;
6174
+ ODataModel.prototype._updateChangedEntity = function(sEntityKey, oData) {
6175
+ var oChangedEntry, sDeepPath, oEntityType, oEntry, oNavPropRefInfo, sRootPath,
6176
+ that = this;
6165
6177
 
6166
6178
  function updateChangedEntities(oOriginalObject, oChangedObject, sCurPath) {
6167
6179
  each(oChangedObject,function(sKey) {
@@ -6175,44 +6187,40 @@ sap.ui.define([
6175
6187
  || deepEqual(oChangedObject[sKey], oOriginalObject[sKey])
6176
6188
  && !that.isLaundering(sActPath)) {
6177
6189
  delete oChangedObject[sKey];
6178
- // When current object is the entity itself check for matching navigation property in changed
6179
- // entity data and take care of it as well
6190
+ // When current object is the entity itself check for matching navigation
6191
+ // property in changed entity data and take care of it as well
6180
6192
  if (sCurPath === sRootPath) {
6181
6193
  oEntityType = that.oMetadata._getEntityTypeByPath(sRootPath);
6182
- oNavPropRefInfo = oEntityType && that.oMetadata._getNavPropertyRefInfo(oEntityType, sKey);
6194
+ oNavPropRefInfo = oEntityType &&
6195
+ that.oMetadata._getNavPropertyRefInfo(oEntityType, sKey);
6183
6196
  if (oNavPropRefInfo && oChangedObject[oNavPropRefInfo.name]) {
6184
- // if the nav prop related to the matching property is also set, set it on original
6185
- // entry and remove from changed entity
6186
- oOriginalObject[oNavPropRefInfo.name] = oChangedObject[oNavPropRefInfo.name];
6197
+ // if the nav prop related to the matching property is also set, set it
6198
+ // on original entry and remove it from changed entity
6199
+ oOriginalObject[oNavPropRefInfo.name] =
6200
+ oChangedObject[oNavPropRefInfo.name];
6187
6201
  delete oChangedObject[oNavPropRefInfo.name];
6188
6202
  }
6189
6203
  }
6190
6204
  }
6191
6205
  });
6192
6206
  }
6193
-
6194
- each(mChangedEntities, function(sKey, oData) {
6195
- if (sKey in that.mChangedEntities) {
6196
- var oEntry = that._getObject('/' + sKey, null, true);
6197
- var oChangedEntry = that._getObject('/' + sKey);
6198
-
6199
- merge(oEntry, oData);
6200
-
6201
- sRootPath = '/' + sKey;
6202
-
6203
- var sDeepPath = that.removeInternalMetadata(oChangedEntry).deepPath;
6204
- updateChangedEntities(oEntry, oChangedEntry, sRootPath);
6205
-
6206
- if (isEmptyObject(oChangedEntry)) {
6207
- delete that.mChangedEntities[sKey];
6208
- that.abortInternalRequest(that._resolveGroup(sKey).groupId, {requestKey: sKey});
6209
- } else {
6210
- that.mChangedEntities[sKey] = oChangedEntry;
6211
- oChangedEntry.__metadata = {deepPath: sDeepPath};
6212
- extend(oChangedEntry.__metadata, oEntry.__metadata);
6213
- }
6207
+ if (sEntityKey in that.mChangedEntities) {
6208
+ oEntry = that._getObject('/' + sEntityKey, null, true);
6209
+ oChangedEntry = that._getObject('/' + sEntityKey);
6210
+ merge(oEntry, oData);
6211
+ sRootPath = '/' + sEntityKey;
6212
+ sDeepPath = that.removeInternalMetadata(oChangedEntry).deepPath;
6213
+ updateChangedEntities(oEntry, oChangedEntry, sRootPath);
6214
+ if (isEmptyObject(oChangedEntry)) {
6215
+ delete that.mChangedEntities[sEntityKey];
6216
+ that.abortInternalRequest(that._resolveGroup(sEntityKey).groupId,
6217
+ {requestKey: sEntityKey});
6218
+ } else {
6219
+ that.mChangedEntities[sEntityKey] = oChangedEntry;
6220
+ oChangedEntry.__metadata = {deepPath: sDeepPath};
6221
+ extend(oChangedEntry.__metadata, oEntry.__metadata);
6214
6222
  }
6215
- });
6223
+ }
6216
6224
  };
6217
6225
 
6218
6226
  /**
@@ -94,7 +94,7 @@ sap.ui.define([
94
94
  * @extends sap.ui.model.TreeBinding
95
95
  * @hideconstructor
96
96
  * @public
97
- * @version 1.103.1
97
+ * @version 1.104.0
98
98
  */
99
99
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
100
100
 
@@ -1511,7 +1511,8 @@ sap.ui.define([
1511
1511
  }
1512
1512
  }
1513
1513
  if (mChangedEntities && !bChangeDetected) {
1514
- bChangeDetected = this._hasChangedEntity(mChangedEntities);
1514
+ bChangeDetected = this._isRefreshAfterChangeAllowed()
1515
+ && this._hasChangedEntity(mChangedEntities);
1515
1516
  }
1516
1517
  if (!mChangedEntities && !mEntityTypes) { // default
1517
1518
  bChangeDetected = true;
@@ -1525,6 +1526,18 @@ sap.ui.define([
1525
1526
  }
1526
1527
  };
1527
1528
 
1529
+ /**
1530
+ * Checks whether this binding with its configuration is allowed to perform a refresh triggered
1531
+ * by refreshAfterChange.
1532
+ *
1533
+ * @returns {boolean} Whether a refresh caused by refreshAfterChange is allowed
1534
+ *
1535
+ * @private
1536
+ */
1537
+ ODataTreeBinding.prototype._isRefreshAfterChangeAllowed = function () {
1538
+ return true;
1539
+ };
1540
+
1528
1541
  /**
1529
1542
  * Checks whether an entry of <code>this.oKeys</code> matches an entry of
1530
1543
  * <code>mChangedEntities</code>.
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.103.1
45
+ * @version 1.104.0
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -1512,6 +1512,8 @@ sap.ui.define([
1512
1512
  * not explicitly kept alive. Once a context is not kept alive anymore, the implicit lifecycle
1513
1513
  * management again takes control and destroys the context if it is no longer needed.
1514
1514
  *
1515
+ * Note: This is only supported if the model uses the <code>autoExpandSelect</code> parameter.
1516
+ *
1515
1517
  * @param {boolean} bKeepAlive
1516
1518
  * Whether to keep the context alive
1517
1519
  * @param {function} [fnOnBeforeDestroy]
@@ -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.103.1
77
+ * @version 1.104.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
@@ -58,7 +58,7 @@ sap.ui.define([
58
58
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
59
59
  * @public
60
60
  * @since 1.37.0
61
- * @version 1.103.1
61
+ * @version 1.104.0
62
62
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
63
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
64
64
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -2014,6 +2014,7 @@ sap.ui.define([
2014
2014
  }
2015
2015
  if (!that.isRootBindingSuspended()) {
2016
2016
  // request data (before removing virtual context), but avoid E.C.D.
2017
+ // (see BCP: 2270085692 for some interesting discussions)
2017
2018
  that.bUseExtendedChangeDetection = false;
2018
2019
  that.getContexts(iStart, iLength, iMaximumPrefetchSize);
2019
2020
  that.bUseExtendedChangeDetection = bOld;
@@ -157,7 +157,7 @@ sap.ui.define([
157
157
  * @hideconstructor
158
158
  * @public
159
159
  * @since 1.37.0
160
- * @version 1.103.1
160
+ * @version 1.104.0
161
161
  */
162
162
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
163
163
  constructor : constructor
@@ -214,7 +214,7 @@ sap.ui.define([
214
214
  * @extends sap.ui.model.Model
215
215
  * @public
216
216
  * @since 1.37.0
217
- * @version 1.103.1
217
+ * @version 1.104.0
218
218
  */
219
219
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
220
220
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @mixes sap.ui.model.odata.v4.ODataBinding
43
43
  * @public
44
44
  * @since 1.37.0
45
- * @version 1.103.1
45
+ * @version 1.104.0
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId