@openui5/sap.ui.core 1.133.0 → 1.134.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 (285) hide show
  1. package/.reuse/dep5 +0 -7
  2. package/THIRDPARTY.txt +1 -22
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/Event.js +1 -1
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/i18n/LanguageTag.js +1 -1
  13. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  14. package/src/sap/base/util/LoaderExtensions.js +2 -8
  15. package/src/sap/base/util/mixedFetch.js +0 -1
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/base/util/syncFetch.js +0 -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/Interface.js +1 -1
  63. package/src/sap/ui/base/ManagedObject.js +14 -11
  64. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  65. package/src/sap/ui/base/Metadata.js +1 -1
  66. package/src/sap/ui/base/Object.js +1 -1
  67. package/src/sap/ui/base/ObjectPool.js +1 -1
  68. package/src/sap/ui/base/SyncPromise.js +17 -1
  69. package/src/sap/ui/core/.library +1 -6
  70. package/src/sap/ui/core/AppCacheBuster.js +4 -9
  71. package/src/sap/ui/core/BusyIndicator.js +1 -1
  72. package/src/sap/ui/core/Component.js +1 -1
  73. package/src/sap/ui/core/ComponentContainer.js +1 -1
  74. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  75. package/src/sap/ui/core/ComponentSupport.js +1 -1
  76. package/src/sap/ui/core/Configuration.js +1 -1
  77. package/src/sap/ui/core/Control.js +1 -1
  78. package/src/sap/ui/core/Core.js +2 -2
  79. package/src/sap/ui/core/CustomData.js +1 -1
  80. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +1 -1
  83. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/Fragment.js +1 -1
  86. package/src/sap/ui/core/HTML.js +1 -1
  87. package/src/sap/ui/core/History.js +1 -1
  88. package/src/sap/ui/core/Icon.js +1 -1
  89. package/src/sap/ui/core/IconPool.js +20 -3
  90. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  91. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  92. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  93. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  94. package/src/sap/ui/core/InvisibleText.js +1 -1
  95. package/src/sap/ui/core/Item.js +1 -1
  96. package/src/sap/ui/core/LabelEnablement.js +1 -1
  97. package/src/sap/ui/core/LayoutData.js +1 -1
  98. package/src/sap/ui/core/ListItem.js +1 -1
  99. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  100. package/src/sap/ui/core/Locale.js +1 -1
  101. package/src/sap/ui/core/LocaleData.js +6 -1
  102. package/src/sap/ui/core/Manifest.js +1 -1
  103. package/src/sap/ui/core/Message.js +1 -1
  104. package/src/sap/ui/core/RenderManager.js +1 -1
  105. package/src/sap/ui/core/Renderer.js +1 -1
  106. package/src/sap/ui/core/ResizeHandler.js +1 -1
  107. package/src/sap/ui/core/ScrollBar.js +1 -1
  108. package/src/sap/ui/core/SeparatorItem.js +1 -1
  109. package/src/sap/ui/core/Title.js +1 -1
  110. package/src/sap/ui/core/TooltipBase.js +1 -1
  111. package/src/sap/ui/core/UIArea.js +1 -1
  112. package/src/sap/ui/core/UIComponent.js +1 -1
  113. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  114. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  115. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  116. package/src/sap/ui/core/XMLComposite.js +1 -1
  117. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  118. package/src/sap/ui/core/date/UI5Date.js +1 -1
  119. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  120. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  121. package/src/sap/ui/core/dnd/DragAndDrop.js +14 -7
  122. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  123. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  124. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  125. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  126. package/src/sap/ui/core/fieldhelp/FieldHelp.js +186 -84
  127. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +2 -0
  128. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  129. package/src/sap/ui/core/format/NumberFormat.js +10 -11
  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/library.js +32 -3
  134. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  135. package/src/sap/ui/core/message/Message.js +1 -1
  136. package/src/sap/ui/core/message/MessageManager.js +1 -1
  137. package/src/sap/ui/core/message/MessageParser.js +1 -1
  138. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  139. package/src/sap/ui/core/messagebundle_ko.properties +1 -1
  140. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  141. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  142. package/src/sap/ui/core/mvc/JSView.js +1 -1
  143. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  144. package/src/sap/ui/core/mvc/View.js +1 -1
  145. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  146. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  147. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  148. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  149. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  150. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  151. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  152. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  153. package/src/sap/ui/core/service/Service.js +1 -1
  154. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  155. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  156. package/src/sap/ui/core/support/Plugin.js +1 -1
  157. package/src/sap/ui/core/support/Support.js +1 -1
  158. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  159. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  160. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  162. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  163. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  164. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  165. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  166. package/src/sap/ui/core/theming/Parameters.js +1 -6
  167. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  168. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  169. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  170. package/src/sap/ui/core/tmpl/Template.js +1 -1
  171. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  172. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  173. package/src/sap/ui/core/util/Export.js +1 -1
  174. package/src/sap/ui/core/util/ExportCell.js +1 -1
  175. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  176. package/src/sap/ui/core/util/ExportRow.js +1 -1
  177. package/src/sap/ui/core/util/ExportType.js +1 -1
  178. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  179. package/src/sap/ui/core/util/File.js +1 -1
  180. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  181. package/src/sap/ui/core/util/MockServer.js +1 -1
  182. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  183. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  184. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  185. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  187. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  188. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  189. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  190. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  191. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  192. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  193. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  194. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  195. package/src/sap/ui/debug/ControlTree.js +1 -1
  196. package/src/sap/ui/debug/DebugEnv.js +1 -1
  197. package/src/sap/ui/debug/PropertyList.js +1 -1
  198. package/src/sap/ui/model/ClientModel.js +1 -1
  199. package/src/sap/ui/model/ClientTreeBinding.js +5 -1
  200. package/src/sap/ui/model/CompositeDataState.js +1 -1
  201. package/src/sap/ui/model/CompositeType.js +1 -1
  202. package/src/sap/ui/model/DataState.js +1 -1
  203. package/src/sap/ui/model/MetaModel.js +1 -1
  204. package/src/sap/ui/model/Model.js +1 -1
  205. package/src/sap/ui/model/SelectionModel.js +1 -1
  206. package/src/sap/ui/model/SimpleType.js +1 -1
  207. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  208. package/src/sap/ui/model/Type.js +1 -1
  209. package/src/sap/ui/model/analytics/AnalyticalBinding.js +1 -1
  210. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +51 -13
  211. package/src/sap/ui/model/json/JSONModel.js +1 -1
  212. package/src/sap/ui/model/message/MessageModel.js +1 -1
  213. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  214. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  215. package/src/sap/ui/model/odata/ODataMetaModel.js +46 -14
  216. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  217. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  218. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  219. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  220. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  221. package/src/sap/ui/model/odata/type/Date.js +1 -1
  222. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  223. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  224. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  225. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  226. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  227. package/src/sap/ui/model/odata/type/Double.js +1 -1
  228. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  229. package/src/sap/ui/model/odata/type/Int.js +1 -1
  230. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  231. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  232. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  233. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  234. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  235. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  236. package/src/sap/ui/model/odata/type/Single.js +1 -1
  237. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  238. package/src/sap/ui/model/odata/type/String.js +1 -1
  239. package/src/sap/ui/model/odata/type/Time.js +1 -1
  240. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  241. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  242. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  243. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
  244. package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
  245. package/src/sap/ui/model/odata/v2/ODataModel.js +26 -17
  246. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  247. package/src/sap/ui/model/odata/v4/Context.js +5 -8
  248. package/src/sap/ui/model/odata/v4/ODataBinding.js +7 -6
  249. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +3 -4
  250. package/src/sap/ui/model/odata/v4/ODataListBinding.js +116 -44
  251. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +3 -3
  252. package/src/sap/ui/model/odata/v4/ODataModel.js +52 -31
  253. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +4 -3
  254. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -4
  255. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +25 -1
  256. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +9 -9
  257. package/src/sap/ui/model/odata/v4/lib/_Cache.js +84 -11
  258. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +18 -1
  259. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  260. package/src/sap/ui/model/type/Boolean.js +1 -1
  261. package/src/sap/ui/model/type/Currency.js +1 -1
  262. package/src/sap/ui/model/type/Date.js +1 -1
  263. package/src/sap/ui/model/type/DateInterval.js +1 -1
  264. package/src/sap/ui/model/type/DateTime.js +1 -1
  265. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  266. package/src/sap/ui/model/type/FileSize.js +1 -1
  267. package/src/sap/ui/model/type/Float.js +1 -1
  268. package/src/sap/ui/model/type/Integer.js +1 -1
  269. package/src/sap/ui/model/type/String.js +1 -1
  270. package/src/sap/ui/model/type/Time.js +1 -1
  271. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  272. package/src/sap/ui/model/type/Unit.js +1 -1
  273. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  274. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  275. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  276. package/src/sap/ui/test/BranchTracking.js +1 -1
  277. package/src/sap/ui/test/TestUtils.js +82 -14
  278. package/src/sap/ui/test/actions/EnterText.js +2 -20
  279. package/src/sap/ui/test/generic/TestBase.js +1 -1
  280. package/src/sap/ui/test/starter/_setupAndStart.js +11 -2
  281. package/src/sap/ui/test/starter/_utils.js +0 -1
  282. package/src/sap/ui/util/Storage.js +1 -1
  283. package/src/ui5loader.js +4 -1
  284. package/test/sap/ui/qunit/TestRunner.js +4 -1
  285. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @class Annotation loader for OData V2 services
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.133.0
39
+ * @version 1.134.0
40
40
  *
41
41
  * @public
42
42
  * @since 1.37.0
@@ -835,8 +835,9 @@ sap.ui.define([
835
835
  * @returns {Object<string,string>} A map of all public and private headers.
836
836
  */
837
837
  ODataAnnotations.prototype._getHeaders = function() {
838
- //The 'sap-cancel-on-close' header marks the OData annotation request as cancelable. This helps to save resources at the back-end.
839
- return extend({"sap-cancel-on-close": true}, this.getHeaders(), {
838
+ // The 'sap-cancel-on-close' header marks the OData annotation request as cancelable. This helps to save
839
+ // resources at the back-end.
840
+ return extend({"sap-cancel-on-close": "true"}, this.getHeaders(), {
840
841
  "Accept-Language": Localization.getLanguageTag().toString() // Always overwrite
841
842
  });
842
843
  };
@@ -2255,8 +2255,8 @@ sap.ui.define([
2255
2255
 
2256
2256
  /**
2257
2257
  * Returns the count of active entries in the list if the list length is final, otherwise
2258
- * <code>undefined</code>. Contrary to {#getLength}, this method does not consider inactive
2259
- * entries which are created via {#create}.
2258
+ * <code>undefined</code>. Contrary to {@link #getLength}, this method does not consider inactive
2259
+ * entries which are created via {@link #create}.
2260
2260
  *
2261
2261
  * @returns {number|undefined} The count of entries
2262
2262
  *
@@ -218,7 +218,7 @@ sap.ui.define([
218
218
  * This model is not prepared to be inherited from.
219
219
  *
220
220
  * @author SAP SE
221
- * @version 1.133.0
221
+ * @version 1.134.0
222
222
  *
223
223
  * @public
224
224
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -270,7 +270,8 @@ sap.ui.define([
270
270
  }
271
271
 
272
272
  // Creates a parameters map to be used for the instantiation of the code list model,
273
- // based on this OData model's parameters
273
+ // based on this OData model's parameters; createCodeListModelParameters has to be
274
+ // called before the service URL is modified
274
275
  this.mCodeListModelParams = this.createCodeListModelParameters(mParameters);
275
276
 
276
277
  if (mParameters) {
@@ -337,7 +338,9 @@ sap.ui.define([
337
338
  this.mChangeHandles = {};
338
339
  this.mDeferredGroups = {};
339
340
  this.mLaunderingState = {};
340
- this.sDefaultUpdateMethod = ODataModel._fixUpdateMethod(sDefaultUpdateMethod) || UpdateMethod.MERGE;
341
+ /** @deprecated As of version 1.133.0, reason sap.ui.model.odata.UpdateMethod.Merge|Put */
342
+ sDefaultUpdateMethod = ODataModel._fixUpdateMethod(sDefaultUpdateMethod);
343
+ this.sDefaultUpdateMethod = sDefaultUpdateMethod || UpdateMethod.MERGE;
341
344
 
342
345
  this.bTokenHandling = vTokenHandling !== false;
343
346
  this.bWithCredentials = bWithCredentials === true;
@@ -973,6 +976,7 @@ sap.ui.define([
973
976
  *
974
977
  * @param {string} [sUpdateMethod] The update method to fix
975
978
  * @returns {string|undefined} The fixed update method
979
+ * @deprecated As of version 1.133.0, reason sap.ui.model.odata.UpdateMethod.Merge|Put
976
980
  * @private
977
981
  */
978
982
  ODataModel._fixUpdateMethod = function (sUpdateMethod) {
@@ -2157,6 +2161,9 @@ sap.ui.define([
2157
2161
  * <b>not</b> support the operation modes <code>Client</code> and <code>Auto</code>.
2158
2162
  * <b>Note:</b> {@link sap.ui.model.odata.OperationMode.Auto} is deprecated since 1.102.0.
2159
2163
  *
2164
+ * <b>Note:</b> OData tree bindings do neither support
2165
+ * {@link sap.ui.model.Binding#suspend suspend} nor {@link sap.ui.model.Binding#resume resume}.
2166
+ *
2160
2167
  * @param {string} sPath
2161
2168
  * The binding path, either absolute or relative to a given <code>oContext</code>
2162
2169
  * @param {sap.ui.model.Context} [oContext]
@@ -4017,16 +4024,17 @@ sap.ui.define([
4017
4024
  var sUrl, oRequest,
4018
4025
  oChangeHeader = {},
4019
4026
  oPayload = {},
4020
- bCancelOnClose = true;
4027
+ sCancelOnClose = "true";
4021
4028
 
4022
4029
  oPayload.__batchRequests = aBatchRequests;
4023
4030
 
4024
4031
 
4025
4032
  // If one requests leads to data changes at the back-end side, the canceling of the batch request must be prevented.
4026
4033
  for (var sIndex in aBatchRequests) {
4027
- if (aBatchRequests[sIndex] && aBatchRequests[sIndex].__changeRequests ||
4028
- aBatchRequests[sIndex] && aBatchRequests[sIndex].headers && !aBatchRequests[sIndex].headers['sap-cancel-on-close']) {
4029
- bCancelOnClose = false;
4034
+ if (aBatchRequests[sIndex] && aBatchRequests[sIndex].__changeRequests
4035
+ || aBatchRequests[sIndex] && aBatchRequests[sIndex].headers
4036
+ && aBatchRequests[sIndex].headers['sap-cancel-on-close'] !== "true") {
4037
+ sCancelOnClose = "false";
4030
4038
  break;
4031
4039
  }
4032
4040
  }
@@ -4045,7 +4053,7 @@ sap.ui.define([
4045
4053
  // reset
4046
4054
  delete oChangeHeader["Content-Type"];
4047
4055
 
4048
- oChangeHeader['sap-cancel-on-close'] = bCancelOnClose;
4056
+ oChangeHeader['sap-cancel-on-close'] = sCancelOnClose;
4049
4057
 
4050
4058
  oRequest = {
4051
4059
  headers : oChangeHeader,
@@ -7082,8 +7090,10 @@ sap.ui.define([
7082
7090
  }
7083
7091
  });
7084
7092
  }
7085
- //The 'sap-cancel-on-close' header marks the OData request as cancelable. This helps to save resources at the back-end.
7086
- return extend({'sap-cancel-on-close': !!bCancelOnClose}, this.mCustomHeaders, mCheckedHeaders, this.oHeaders);
7093
+ // The 'sap-cancel-on-close' header marks the OData request as cancelable. This helps to save resources at the
7094
+ // back-end.
7095
+ return extend({'sap-cancel-on-close': String(!!bCancelOnClose)}, this.mCustomHeaders, mCheckedHeaders,
7096
+ this.oHeaders);
7087
7097
  };
7088
7098
 
7089
7099
  /**
@@ -7641,7 +7651,8 @@ sap.ui.define([
7641
7651
  vProperties = mParameters.properties;
7642
7652
  sGroupId = mParameters.groupId || mParameters.batchGroupId;
7643
7653
  sChangeSetId = mParameters.changeSetId;
7644
- oContext = mParameters.context;
7654
+ // ignore context if path is absolute
7655
+ oContext = sPath.startsWith("/") ? undefined : mParameters.context;
7645
7656
  fnSuccess = mParameters.success;
7646
7657
  fnError = mParameters.error;
7647
7658
  fnCreated = mParameters.created;
@@ -7779,9 +7790,8 @@ sap.ui.define([
7779
7790
  * @property {string} message Error message returned by the 503 HTTP status response
7780
7791
  * @property {Date} retryAfter The earliest point in time the request may be repeated
7781
7792
  *
7782
- * @private
7783
- * @ui5-restricted sap.suite.ui.generic.template
7784
- * @since 1.127.0
7793
+ * @public
7794
+ * @since 1.134.0
7785
7795
  */
7786
7796
 
7787
7797
  /**
@@ -7804,9 +7814,8 @@ sap.ui.define([
7804
7814
  * @param {function(module:sap/ui/model/odata/v2/RetryAfterError):Promise<undefined>} fnRetryAfter
7805
7815
  * A "Retry-After" handler
7806
7816
  *
7807
- * @private
7808
- * @ui5-restricted sap.suite.ui.generic.template
7809
- * @since 1.127.0
7817
+ * @public
7818
+ * @since 1.134.0
7810
7819
  */
7811
7820
  ODataModel.prototype.setRetryAfterHandler = function (fnRetryAfter) {
7812
7821
  this.fnRetryAfter = fnRetryAfter;
@@ -103,7 +103,7 @@ sap.ui.define([
103
103
  * @extends sap.ui.model.TreeBinding
104
104
  * @hideconstructor
105
105
  * @public
106
- * @version 1.133.0
106
+ * @version 1.134.0
107
107
  */
108
108
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
109
109
 
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.133.0
45
+ * @version 1.134.0
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -208,8 +208,7 @@ sap.ui.define([
208
208
  * A promise which is resolved without a defined result when the entity represented by this
209
209
  * context has been created in the back end. It is rejected with an <code>Error</code>
210
210
  * instance where <code>oError.canceled === true</code> if the transient entity is deleted
211
- * before it is created in the back end, for example via
212
- * {@link sap.ui.model.odata.v4.Context#delete},
211
+ * before it is created in the back end, for example via {@link #delete},
213
212
  * {@link sap.ui.model.odata.v4.ODataListBinding#resetChanges} or
214
213
  * {@link sap.ui.model.odata.v4.ODataModel#resetChanges}, and for all nested contexts within a
215
214
  * deep create. It is rejected with an <code>Error</code> instance without
@@ -435,7 +434,7 @@ sap.ui.define([
435
434
  * instance of <code>Error</code> in case of failure
436
435
  *
437
436
  * @private
438
- * @see sap.ui.model.odata.v4.Context#delete
437
+ * @see #delete
439
438
  */
440
439
  Context.prototype.doDelete = function (oGroupLock, sEditUrl, sPath, oETagEntity, oBinding,
441
440
  fnCallback) {
@@ -1646,8 +1645,7 @@ sap.ui.define([
1646
1645
  * any part thereof. The data is a JSON structure as described in <a href=
1647
1646
  * "https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html"
1648
1647
  * >"OData JSON Format Version 4.0"</a>.
1649
- * Note that the function clones the result. Modify values via
1650
- * {@link sap.ui.model.odata.v4.Context#setProperty}.
1648
+ * Note that the function clones the result. Modify values via {@link #setProperty}.
1651
1649
  *
1652
1650
  * The header context of a list binding only delivers <code>$count</code> and
1653
1651
  * <code>@$ui5.context.isSelected</code> (wrapped in an object if <code>sPath</code> is "").
@@ -2119,8 +2117,7 @@ sap.ui.define([
2119
2117
  /**
2120
2118
  * Resets all property changes, created entities, and entity deletions of this context. Resets
2121
2119
  * also invalid user input and inactive contexts which had their activation prevented (see
2122
- * {@link sap.ui.model.odata.v4.Context#isInactive}). This function does not reset the
2123
- * invocation of OData operations (see
2120
+ * {@link #isInactive}). This function does not reset the invocation of OData operations (see
2124
2121
  * {@link sap.ui.model.odata.v4.ODataContextBinding#invoke}). For a context which is currently
2125
2122
  * {@link #delete deleted} on the client, but not yet on the server, this method cancels the
2126
2123
  * deletion and restores the context.
@@ -403,7 +403,7 @@ sap.ui.define([
403
403
  * Destroys the object. The object must not be used anymore after this function was called.
404
404
  *
405
405
  * @public
406
- * @since 1.66
406
+ * @since 1.66.0
407
407
  */
408
408
  ODataBinding.prototype.destroy = function () {
409
409
  this.mCacheByResourcePath = undefined;
@@ -422,8 +422,8 @@ sap.ui.define([
422
422
  };
423
423
 
424
424
  /**
425
- * Hook method for {@link sap.ui.model.odata.v4.ODataBinding#fetchCache} to create a cache for
426
- * this binding with the given resource path and query options.
425
+ * Hook method for {@link #fetchCache} to create a cache for this binding with the given
426
+ * resource path and query options.
427
427
  *
428
428
  * @param {string} sResourcePath
429
429
  * The resource path, for example "EMPLOYEES"
@@ -1428,8 +1428,9 @@ sap.ui.define([
1428
1428
  * <li> the binding's root binding is suspended,
1429
1429
  * <li> there is a change of this binding which has been sent to the server and for which
1430
1430
  * there is no response yet,
1431
- * <li> the binding is {@link #isTransient transient} (part of a
1432
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}).
1431
+ * <li> the binding is part of a
1432
+ * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create} because it is
1433
+ * relative to a {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
1433
1434
  * </ul>
1434
1435
  *
1435
1436
  * @public
@@ -1561,7 +1562,7 @@ sap.ui.define([
1561
1562
  * @param {Promise[]} aPromises
1562
1563
  * List of (sync) promises which is extended for each call to
1563
1564
  * {@link sap.ui.model.odata.v4.ODataParentBinding#requestSideEffects} or
1564
- * {@link sap.ui.model.odata.v4.ODataBinding#refreshInternal}.
1565
+ * {@link #refreshInternal}
1565
1566
  * @param {string} [sPrefix=""]
1566
1567
  * Prefix for navigation property meta paths; must only be used during recursion
1567
1568
  *
@@ -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.133.0
77
+ * @version 1.134.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
@@ -1287,9 +1287,8 @@ sap.ui.define([
1287
1287
  *
1288
1288
  * @param {string} [sGroupId]
1289
1289
  * The group ID to be used for the request; if not specified, the group ID for this binding is
1290
- * used, see {@link sap.ui.model.odata.v4.ODataContextBinding#constructor} and
1291
- * {@link #getGroupId}. To use the update group ID, see {@link #getUpdateGroupId}, it needs to
1292
- * be specified explicitly.
1290
+ * used, see {@link #constructor} and {@link #getGroupId}. To use the update group ID, see
1291
+ * {@link #getUpdateGroupId}, it needs to be specified explicitly.
1293
1292
  * Valid values are <code>undefined</code>, '$auto', '$auto.*', '$direct', '$single', or
1294
1293
  * application group IDs as specified in {@link sap.ui.model.odata.v4.ODataModel}. If
1295
1294
  * '$single' is used, the request will be sent as fast as '$direct', but wrapped in a batch
@@ -59,7 +59,7 @@ sap.ui.define([
59
59
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
60
60
  * @public
61
61
  * @since 1.37.0
62
- * @version 1.133.0
62
+ * @version 1.134.0
63
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
64
64
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
65
65
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -882,9 +882,9 @@ sap.ui.define([
882
882
  * <br>
883
883
  * Since 1.98.0, when the first property updates happens, the context is no longer
884
884
  * {@link sap.ui.model.odata.v4.Context#isInactive inactive} and the
885
- * {@link sap.ui.model.odata.v4.ODataListBinding#event:createActivate 'createActivate'} event
886
- * is fired. While inactive, it does not count as a {@link #hasPendingChanges pending change}
887
- * and does not contribute to the {@link #getCount count}.
885
+ * {@link #event:createActivate 'createActivate'} event is fired. While inactive, it does not
886
+ * count as a {@link #hasPendingChanges pending change} and does not contribute to the
887
+ * {@link #getCount count}.
888
888
  * @returns {sap.ui.model.odata.v4.Context}
889
889
  * The context object for the created entity; its method
890
890
  * {@link sap.ui.model.odata.v4.Context#created} returns a promise that is resolved when the
@@ -1853,7 +1853,7 @@ sap.ui.define([
1853
1853
  * A promise that is resolved with the download URL or <code>null</code>
1854
1854
  * @throws {Error}
1855
1855
  * If the binding is unresolved or is {@link #isTransient transient} (part of a
1856
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create})
1856
+ * {@link #create deep create})
1857
1857
  *
1858
1858
  * @private
1859
1859
  */
@@ -1931,20 +1931,21 @@ sap.ui.define([
1931
1931
  return bToLower ? "tolower(" + sText + ")" : sText;
1932
1932
  }
1933
1933
 
1934
- bToLower = sEdmType === "Edm.String" && oFilter.bCaseSensitive === false;
1934
+ bToLower = sEdmType === "Edm.String" && oFilter.isCaseSensitive() === false;
1935
1935
  sFilterPath = bThese && !aFiltersNoThese?.includes(oFilter)
1936
- ? setCase(`$these/aggregate(${oFilter.sPath})`)
1937
- : setCase(decodeURIComponent(oFilter.sPath));
1938
- sValue = setCase(_Helper.formatLiteral(oFilter.oValue1, sEdmType));
1936
+ ? setCase(`$these/aggregate(${oFilter.getPath()})`)
1937
+ : setCase(decodeURIComponent(oFilter.getPath()));
1938
+ sValue = setCase(_Helper.formatLiteral(oFilter.getValue1(), sEdmType));
1939
1939
 
1940
- switch (oFilter.sOperator) {
1940
+ switch (oFilter.getOperator()) {
1941
1941
  case FilterOperator.BT:
1942
1942
  sFilter = sFilterPath + " ge " + sValue + " and " + sFilterPath + " le "
1943
- + setCase(_Helper.formatLiteral(oFilter.oValue2, sEdmType));
1943
+ + setCase(_Helper.formatLiteral(oFilter.getValue2(), sEdmType));
1944
1944
  break;
1945
1945
  case FilterOperator.NB:
1946
1946
  sFilter = wrap(sFilterPath + " lt " + sValue + " or " + sFilterPath + " gt "
1947
- + setCase(_Helper.formatLiteral(oFilter.oValue2, sEdmType)), bWithinAnd);
1947
+ + setCase(_Helper.formatLiteral(oFilter.getValue2(), sEdmType)),
1948
+ bWithinAnd);
1948
1949
  break;
1949
1950
  case FilterOperator.EQ:
1950
1951
  case FilterOperator.GE:
@@ -1952,7 +1953,8 @@ sap.ui.define([
1952
1953
  case FilterOperator.LE:
1953
1954
  case FilterOperator.LT:
1954
1955
  case FilterOperator.NE:
1955
- sFilter = sFilterPath + " " + oFilter.sOperator.toLowerCase() + " " + sValue;
1956
+ sFilter = sFilterPath + " " + oFilter.getOperator().toLowerCase() + " "
1957
+ + sValue;
1956
1958
  break;
1957
1959
  case FilterOperator.Contains:
1958
1960
  case FilterOperator.EndsWith:
@@ -1960,11 +1962,11 @@ sap.ui.define([
1960
1962
  case FilterOperator.NotEndsWith:
1961
1963
  case FilterOperator.NotStartsWith:
1962
1964
  case FilterOperator.StartsWith:
1963
- sFilter = oFilter.sOperator.toLowerCase().replace("not", "not ")
1965
+ sFilter = oFilter.getOperator().toLowerCase().replace("not", "not ")
1964
1966
  + "(" + sFilterPath + "," + sValue + ")";
1965
1967
  break;
1966
1968
  default:
1967
- throw new Error("Unsupported operator: " + oFilter.sOperator);
1969
+ throw new Error("Unsupported operator: " + oFilter.getOperator());
1968
1970
  }
1969
1971
  return sFilter;
1970
1972
  }
@@ -1985,18 +1987,18 @@ sap.ui.define([
1985
1987
  return SyncPromise.resolve();
1986
1988
  }
1987
1989
 
1988
- if (oFilter.aFilters) {
1989
- return SyncPromise.all(oFilter.aFilters.map(function (oSubFilter) {
1990
- return fetchFilter(oSubFilter, mLambdaVariableToPath, oFilter.bAnd, bThese);
1990
+ if (oFilter.getFilters()) {
1991
+ return SyncPromise.all(oFilter.getFilters().map(function (oSubFilter) {
1992
+ return fetchFilter(oSubFilter, mLambdaVariableToPath, oFilter.isAnd(), bThese);
1991
1993
  })).then(function (aFilterStrings) {
1992
1994
  // wrap it if it's an 'or' filter embedded in an 'and'
1993
- return wrap(aFilterStrings.join(oFilter.bAnd ? " and " : " or "),
1994
- bWithinAnd && !oFilter.bAnd);
1995
+ return wrap(aFilterStrings.join(oFilter.isAnd() ? " and " : " or "),
1996
+ bWithinAnd && !oFilter.isAnd());
1995
1997
  });
1996
1998
  }
1997
1999
 
1998
2000
  sResolvedPath = oMetaModel.resolve(
1999
- replaceLambdaVariables(oFilter.sPath, mLambdaVariableToPath), oMetaContext);
2001
+ replaceLambdaVariables(oFilter.getPath(), mLambdaVariableToPath), oMetaContext);
2000
2002
 
2001
2003
  return oMetaModel.fetchObject(sResolvedPath).then(function (oPropertyMetadata) {
2002
2004
  var oCondition, sLambdaVariable, sOperator;
@@ -2006,23 +2008,23 @@ sap.ui.define([
2006
2008
  + sResolvedPath);
2007
2009
  }
2008
2010
 
2009
- sOperator = oFilter.sOperator;
2011
+ sOperator = oFilter.getOperator();
2010
2012
  if (sOperator === FilterOperator.All || sOperator === FilterOperator.Any) {
2011
- oCondition = oFilter.oCondition;
2012
- sLambdaVariable = oFilter.sVariable;
2013
+ oCondition = oFilter.getCondition();
2014
+ sLambdaVariable = oFilter.getVariable();
2013
2015
  if (sOperator === FilterOperator.Any && !oCondition) {
2014
- return oFilter.sPath + "/any()";
2016
+ return oFilter.getPath() + "/any()";
2015
2017
  }
2016
2018
  // multifilters are processed in parallel, so clone mLambdaVariableToPath
2017
2019
  // to allow same lambda variables in different filters
2018
2020
  mLambdaVariableToPath = Object.create(mLambdaVariableToPath);
2019
2021
  mLambdaVariableToPath[sLambdaVariable]
2020
- = replaceLambdaVariables(oFilter.sPath, mLambdaVariableToPath);
2022
+ = replaceLambdaVariables(oFilter.getPath(), mLambdaVariableToPath);
2021
2023
 
2022
2024
  return fetchFilter(
2023
2025
  oCondition, mLambdaVariableToPath
2024
2026
  ).then(function (sFilterValue) {
2025
- return oFilter.sPath + "/" + oFilter.sOperator.toLowerCase()
2027
+ return oFilter.getPath() + "/" + oFilter.getOperator().toLowerCase()
2026
2028
  + "(" + sLambdaVariable + ":" + sFilterValue + ")";
2027
2029
  });
2028
2030
  }
@@ -2317,8 +2319,8 @@ sap.ui.define([
2317
2319
  * @throws {Error} If
2318
2320
  * <ul>
2319
2321
  * <li> there are pending changes that cannot be ignored,
2320
- * <li> the binding is {@link #isTransient transient} (part of a
2321
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}),
2322
+ * <li> the binding is part of a {@link #create deep create} because it is relative to a
2323
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
2322
2324
  * <li> an unsupported operation mode is used (see
2323
2325
  * {@link sap.ui.model.odata.v4.ODataModel#bindList}),
2324
2326
  * <li> the {@link sap.ui.model.Filter.NONE} filter instance is contained in
@@ -3108,8 +3110,8 @@ sap.ui.define([
3108
3110
  * <li> the binding is unresolved,
3109
3111
  * <li> the given context path does not match this binding,
3110
3112
  * <li> the binding's root binding is suspended,
3111
- * <li> the binding is {@link #isTransient transient} (part of a
3112
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}).
3113
+ * <li> the binding is part of a {@link #create deep create} because it is relative to a
3114
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
3113
3115
  * <li> {@link sap.ui.model.odata.v4.Context#setKeepAlive} fails
3114
3116
  * </ul>
3115
3117
  *
@@ -3248,7 +3250,7 @@ sap.ui.define([
3248
3250
 
3249
3251
  this.aSorters.forEach(function (oSorter) {
3250
3252
  if (oSorter instanceof Sorter) {
3251
- aOrderbyOptions.push(oSorter.sPath + (oSorter.bDescending ? " desc" : ""));
3253
+ aOrderbyOptions.push(oSorter.getPath() + (oSorter.isDescending() ? " desc" : ""));
3252
3254
  } else {
3253
3255
  throw new Error("Unsupported sorter: " + oSorter + " - " + that);
3254
3256
  }
@@ -3268,8 +3270,7 @@ sap.ui.define([
3268
3270
  * @returns {Object<any>} mQueryOptions
3269
3271
  * The object with the query options. Query options can be provided with
3270
3272
  * {@link sap.ui.model.odata.v4.ODataModel#bindList},
3271
- * {@link sap.ui.model.odata.v4.ODataModel#bindContext},
3272
- * {@link sap.ui.model.odata.v4.ODataListBinding#changeParameters}, and
3273
+ * {@link sap.ui.model.odata.v4.ODataModel#bindContext}, {@link #changeParameters}, and
3273
3274
  * {@link sap.ui.model.odata.v4.ODataContextBinding#changeParameters}. System query options
3274
3275
  * can also be calculated, e.g. <code>$filter</code> can be calculated based on provided
3275
3276
  * filter objects.
@@ -3987,10 +3988,8 @@ sap.ui.define([
3987
3988
  * A lock for the group ID to be used for refresh
3988
3989
  * @param {boolean} [bAllowRemoval]
3989
3990
  * Allows the list binding to remove the given context from its collection because the
3990
- * entity does not match the binding's filter anymore,
3991
- * see {@link sap.ui.model.odata.v4.ODataListBinding#filter}; a removed context is
3992
- * destroyed, see {@link sap.ui.model.Context#destroy}.
3993
- * Supported since 1.55.0
3991
+ * entity does not match the binding's filter anymore, see {@link #filter}; a removed context
3992
+ * is destroyed, see {@link sap.ui.model.Context#destroy}. Supported since 1.55.0
3994
3993
  *
3995
3994
  * A removed context is destroyed unless it is
3996
3995
  * {@link sap.ui.model.odata.v4.Context#isKeepAlive kept alive} and still exists on the
@@ -4284,8 +4283,8 @@ sap.ui.define([
4284
4283
  * messages; it resolves with <code>null</code> if the binding is not resolved or if there is
4285
4284
  * no message for any entry
4286
4285
  * @throws {Error}
4287
- * If the binding is {@link #isTransient transient} (part of a
4288
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}).
4286
+ * If the binding is part of a {@link #create deep create} because it is relative to a
4287
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} context
4289
4288
  *
4290
4289
  * @protected
4291
4290
  * @see sap.ui.model.ListBinding#requestFilterForMessages
@@ -4338,6 +4337,79 @@ sap.ui.define([
4338
4337
  });
4339
4338
  };
4340
4339
 
4340
+ /**
4341
+ * Requests selected contexts matching the binding's filters and ordered by its sorters. A
4342
+ * context which is selected but no longer part of this list binding's collection (that is,
4343
+ * which doesn't match the filters) is not returned but still shown as selected on the UI
4344
+ * (see {@link #requestSelectionValidation}).
4345
+ *
4346
+ * Note: Data for all selected contexts is reread from the server, even if it is already
4347
+ * available on the client. Any data updates are reflected on the UI but no order is changed.
4348
+ *
4349
+ * @param {string} [sGroupId]
4350
+ * The group ID to be used for the request; if not specified, the group ID for this binding is
4351
+ * used, see {@link #getGroupId}. Valid values are <code>undefined</code>, '$auto', '$auto.*',
4352
+ * '$direct' or application group IDs as specified in
4353
+ * {@link sap.ui.model.odata.v4.ODataModel}.
4354
+ * @returns {Promise<sap.ui.model.odata.v4.Context[]>}
4355
+ * A promise which resolves with an array of selected contexts (which may well be empty), or
4356
+ * rejects with an instance of <code>Error</code> in case of failure
4357
+ * @throws {Error} If
4358
+ * <ul>
4359
+ * <li> the binding uses or inherits the <code>$$sharedRequest</code> parameter
4360
+ * (see {@link sap.ui.model.odata.v4.ODataModel#bindList}),
4361
+ * <li> the binding uses data aggregation or a recursive hierarchy (see
4362
+ * {@link #setAggregation}),
4363
+ * <li> the binding's root binding is suspended,
4364
+ * <li> the binding is part of a {@link #create deep create} because it is relative to a
4365
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
4366
+ * <li> the binding's header context is selected ("Select All"),
4367
+ * <li> there are pending changes,
4368
+ * <li> the given group ID is invalid.
4369
+ * </ul>
4370
+ *
4371
+ * @private
4372
+ * @since 1.134.0
4373
+ * @ui5-restricted sap.m.Table
4374
+ */
4375
+ ODataListBinding.prototype.requestSelectedContexts = function (sGroupId) {
4376
+ if (this.bSharedRequest) {
4377
+ throw new Error("Unsupported $$sharedRequest at " + this);
4378
+ }
4379
+ if ("$$aggregation" in this.mParameters) {
4380
+ throw new Error("Unsupported $$aggregation at " + this);
4381
+ }
4382
+ this.checkSuspended();
4383
+ this.checkTransient();
4384
+ if (this.oHeaderContext.isSelected()) {
4385
+ throw new Error('Unsupported "Select All": ' + this.oHeaderContext);
4386
+ }
4387
+ if (this.hasPendingChanges()) {
4388
+ throw new Error("Unsupported pending changes");
4389
+ }
4390
+ _Helper.checkGroupId(sGroupId);
4391
+
4392
+ const mPath2Context = {};
4393
+ const iStartOfPredicate = this.getResolvedPath().length;
4394
+ const aPredicatesIn = this._getAllExistingContexts()
4395
+ .filter((oContext) => oContext.isSelected())
4396
+ .map((oContext) => {
4397
+ mPath2Context[oContext.getPath()] = oContext;
4398
+
4399
+ return oContext.getPath().slice(iStartOfPredicate);
4400
+ });
4401
+ if (!aPredicatesIn.length) {
4402
+ return Promise.resolve([]);
4403
+ }
4404
+
4405
+ return this.oCache.requestFilteredOrderedPredicates(aPredicatesIn, this.lockGroup(sGroupId))
4406
+ .then((aPredicatesOut) => {
4407
+ // Note: make sure to respect back-end sort order
4408
+ return aPredicatesOut
4409
+ .map((sPredicate) => mPath2Context[this.oHeaderContext.getPath() + sPredicate]);
4410
+ });
4411
+ };
4412
+
4341
4413
  /**
4342
4414
  * @override
4343
4415
  * @see sap.ui.model.odata.v4.ODataParentBinding#requestSideEffects
@@ -4719,8 +4791,8 @@ sap.ui.define([
4719
4791
  * <li> there are pending changes,
4720
4792
  * <li> a recursive hierarchy is requested, but the model does not use the
4721
4793
  * <code>autoExpandSelect</code> parameter,
4722
- * <li> the binding is {@link #isTransient transient} (part of a
4723
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}),
4794
+ * <li> the binding is part of a {@link #create deep create} because it is relative to a
4795
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
4724
4796
  * <li> the binding has {@link sap.ui.model.Filter.NONE}
4725
4797
  * </ul>
4726
4798
  *
@@ -4900,8 +4972,8 @@ sap.ui.define([
4900
4972
  * @throws {Error} If
4901
4973
  * <ul>
4902
4974
  * <li> there are pending changes that cannot be ignored,
4903
- * <li> the binding is {@link #isTransient transient} (part of a
4904
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}),
4975
+ * <li> the binding is part of a {@link #create deep create} because it is relative to a
4976
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
4905
4977
  * <li> an unsupported operation mode is used (see
4906
4978
  * {@link sap.ui.model.odata.v4.ODataModel#bindList}).
4907
4979
  * </ul>
@@ -157,7 +157,7 @@ sap.ui.define([
157
157
  * @hideconstructor
158
158
  * @public
159
159
  * @since 1.37.0
160
- * @version 1.133.0
160
+ * @version 1.134.0
161
161
  */
162
162
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
163
163
  constructor : constructor
@@ -2435,8 +2435,8 @@ sap.ui.define([
2435
2435
  * of "cross-service references" (see parameter <code>supportReferences</code> of
2436
2436
  * {@link sap.ui.model.odata.v4.ODataModel#constructor}).
2437
2437
  *
2438
- * @deprecated As of 1.51.0, use {@link #getETags} instead because modifications to old files
2439
- * may be shadowed by a new file in certain scenarios.
2438
+ * @deprecated As of version 1.51.0, use {@link #getETags} instead because modifications to old
2439
+ * files may be shadowed by a new file in certain scenarios.
2440
2440
  * @public
2441
2441
  * @since 1.47.0
2442
2442
  */