@openui5/sap.ui.core 1.97.1 → 1.98.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 (305) hide show
  1. package/.eslintrc.json +61 -2
  2. package/.reuse/dep5 +25 -30
  3. package/THIRDPARTY.txt +13 -20
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.mobile.js +0 -8
  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/util/restricted/_CancelablePromise.js +1 -1
  12. package/src/sap/base/util/restricted/_castArray.js +1 -1
  13. package/src/sap/base/util/restricted/_compact.js +1 -1
  14. package/src/sap/base/util/restricted/_curry.js +1 -1
  15. package/src/sap/base/util/restricted/_debounce.js +1 -1
  16. package/src/sap/base/util/restricted/_difference.js +1 -1
  17. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_flatten.js +1 -1
  23. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_intersection.js +1 -1
  26. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isNil.js +1 -1
  31. package/src/sap/base/util/restricted/_max.js +1 -1
  32. package/src/sap/base/util/restricted/_merge.js +1 -1
  33. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  34. package/src/sap/base/util/restricted/_min.js +1 -1
  35. package/src/sap/base/util/restricted/_omit.js +1 -1
  36. package/src/sap/base/util/restricted/_pick.js +1 -1
  37. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  38. package/src/sap/base/util/restricted/_throttle.js +1 -1
  39. package/src/sap/base/util/restricted/_toArray.js +1 -1
  40. package/src/sap/base/util/restricted/_union.js +1 -1
  41. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_uniq.js +1 -1
  44. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  46. package/src/sap/base/util/restricted/_without.js +1 -1
  47. package/src/sap/base/util/restricted/_xor.js +1 -1
  48. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  49. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  50. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  52. package/src/sap/ui/Device.js +80 -168
  53. package/src/sap/ui/Global.js +4 -4
  54. package/src/sap/ui/base/Event.js +1 -1
  55. package/src/sap/ui/base/EventProvider.js +1 -1
  56. package/src/sap/ui/base/Interface.js +1 -1
  57. package/src/sap/ui/base/ManagedObject.js +17 -6
  58. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  59. package/src/sap/ui/base/Metadata.js +1 -1
  60. package/src/sap/ui/base/Object.js +1 -1
  61. package/src/sap/ui/base/ObjectPool.js +1 -1
  62. package/src/sap/ui/core/.library +1 -1
  63. package/src/sap/ui/core/BusyIndicator.js +1 -1
  64. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  65. package/src/sap/ui/core/Component.js +1 -1
  66. package/src/sap/ui/core/ComponentContainer.js +1 -1
  67. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  68. package/src/sap/ui/core/ComponentSupport.js +1 -1
  69. package/src/sap/ui/core/Configuration.js +2 -4
  70. package/src/sap/ui/core/Control.js +2 -2
  71. package/src/sap/ui/core/Core.js +1 -4
  72. package/src/sap/ui/core/CustomData.js +1 -1
  73. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  74. package/src/sap/ui/core/Element.js +2 -1
  75. package/src/sap/ui/core/ElementMetadata.js +1 -1
  76. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  77. package/src/sap/ui/core/EventBus.js +1 -1
  78. package/src/sap/ui/core/Fragment.js +1 -1
  79. package/src/sap/ui/core/HTML.js +1 -1
  80. package/src/sap/ui/core/History.js +1 -1
  81. package/src/sap/ui/core/Icon.js +2 -3
  82. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  83. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  84. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  85. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  86. package/src/sap/ui/core/InvisibleText.js +1 -1
  87. package/src/sap/ui/core/Item.js +1 -1
  88. package/src/sap/ui/core/LabelEnablement.js +1 -1
  89. package/src/sap/ui/core/LayoutData.js +1 -1
  90. package/src/sap/ui/core/ListItem.js +1 -1
  91. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  92. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  93. package/src/sap/ui/core/Locale.js +1 -1
  94. package/src/sap/ui/core/LocaleData.js +1 -1
  95. package/src/sap/ui/core/Manifest.js +1 -1
  96. package/src/sap/ui/core/Message.js +1 -1
  97. package/src/sap/ui/core/Placeholder.js +28 -28
  98. package/src/sap/ui/core/Popup.js +1 -1
  99. package/src/sap/ui/core/RenderManager.js +1 -1
  100. package/src/sap/ui/core/Renderer.js +1 -1
  101. package/src/sap/ui/core/ResizeHandler.js +1 -1
  102. package/src/sap/ui/core/ScrollBar.js +1 -1
  103. package/src/sap/ui/core/SeparatorItem.js +1 -1
  104. package/src/sap/ui/core/Title.js +1 -1
  105. package/src/sap/ui/core/TooltipBase.js +2 -2
  106. package/src/sap/ui/core/UIArea.js +1 -1
  107. package/src/sap/ui/core/UIComponent.js +1 -1
  108. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  109. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  110. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  111. package/src/sap/ui/core/XMLComposite.js +1 -1
  112. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  113. package/src/sap/ui/core/date/UniversalDateUtils.js +175 -5
  114. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  115. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  116. package/src/sap/ui/core/dnd/DragAndDrop.js +2 -2
  117. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  118. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  119. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  120. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  121. package/src/sap/ui/core/format/DateFormat.js +44 -8
  122. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  123. package/src/sap/ui/core/library.js +43 -6
  124. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  125. package/src/sap/ui/core/message/Message.js +1 -1
  126. package/src/sap/ui/core/message/MessageManager.js +1 -1
  127. package/src/sap/ui/core/message/MessageMixin.js +2 -1
  128. package/src/sap/ui/core/message/MessageParser.js +1 -1
  129. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  130. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  131. package/src/sap/ui/core/messagebundle_no.properties +4 -4
  132. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  133. package/src/sap/ui/core/mvc/JSONView.js +2 -1
  134. package/src/sap/ui/core/mvc/JSView.js +1 -1
  135. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  136. package/src/sap/ui/core/mvc/View.js +2 -1
  137. package/src/sap/ui/core/mvc/XMLView.js +16 -3
  138. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  139. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  140. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  141. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  142. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  143. package/src/sap/ui/core/routing/Route.js +6 -6
  144. package/src/sap/ui/core/routing/Router.js +3 -2
  145. package/src/sap/ui/core/routing/Targets.js +17 -13
  146. package/src/sap/ui/core/rules/Model.support.js +95 -8
  147. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  148. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  149. package/src/sap/ui/core/service/Service.js +1 -1
  150. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  151. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  152. package/src/sap/ui/core/support/Plugin.js +1 -1
  153. package/src/sap/ui/core/support/Support.js +1 -1
  154. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  155. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  156. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  157. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  158. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  159. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  160. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  161. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  162. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -5
  163. package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
  164. package/src/sap/ui/core/theming/Parameters.js +22 -142
  165. package/src/sap/ui/core/theming/ThemeHelper.js +26 -37
  166. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  167. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  168. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  169. package/src/sap/ui/core/tmpl/Template.js +1 -1
  170. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  171. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  172. package/src/sap/ui/core/util/DraftEnabledMockServer.js +21 -16
  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 +138 -41
  182. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  183. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +4 -0
  184. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +26 -16
  185. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  187. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  188. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  189. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  190. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  191. package/src/sap/ui/core/util/serializer/delegate/XML.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/events/jquery/EventSimulation.js +3 -13
  199. package/src/sap/ui/model/ClientModel.js +1 -1
  200. package/src/sap/ui/model/CompositeDataState.js +26 -4
  201. package/src/sap/ui/model/CompositeType.js +1 -1
  202. package/src/sap/ui/model/DataState.js +27 -6
  203. package/src/sap/ui/model/ListBinding.js +2 -2
  204. package/src/sap/ui/model/MetaModel.js +2 -2
  205. package/src/sap/ui/model/Model.js +2 -2
  206. package/src/sap/ui/model/SelectionModel.js +1 -1
  207. package/src/sap/ui/model/SimpleType.js +1 -1
  208. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  209. package/src/sap/ui/model/Type.js +1 -1
  210. package/src/sap/ui/model/analytics/AnalyticalBinding.js +39 -28
  211. package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
  212. package/src/sap/ui/model/json/JSONModel.js +1 -1
  213. package/src/sap/ui/model/message/MessageModel.js +1 -1
  214. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  215. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  216. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  217. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  218. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  219. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
  220. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  221. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  222. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  223. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  224. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  225. package/src/sap/ui/model/odata/type/Date.js +1 -1
  226. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  227. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  228. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  229. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  230. package/src/sap/ui/model/odata/type/Double.js +1 -1
  231. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  232. package/src/sap/ui/model/odata/type/Int.js +1 -1
  233. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  234. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  235. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  236. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  237. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  238. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  239. package/src/sap/ui/model/odata/type/Single.js +1 -1
  240. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  241. package/src/sap/ui/model/odata/type/String.js +1 -1
  242. package/src/sap/ui/model/odata/type/Time.js +1 -1
  243. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  244. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  245. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  246. package/src/sap/ui/model/odata/v2/Context.js +57 -4
  247. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  248. package/src/sap/ui/model/odata/v2/ODataListBinding.js +184 -61
  249. package/src/sap/ui/model/odata/v2/ODataModel.js +79 -45
  250. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  251. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +65 -5
  252. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +5 -5
  253. package/src/sap/ui/model/odata/v4/Context.js +122 -35
  254. package/src/sap/ui/model/odata/v4/ODataBinding.js +38 -19
  255. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +126 -51
  256. package/src/sap/ui/model/odata/v4/ODataListBinding.js +203 -67
  257. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +43 -40
  258. package/src/sap/ui/model/odata/v4/ODataModel.js +26 -11
  259. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +37 -60
  260. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +23 -20
  261. package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
  262. package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
  263. package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
  264. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +18 -19
  265. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
  266. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
  267. package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
  268. package/src/sap/ui/model/odata/v4/lib/_Cache.js +150 -101
  269. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  270. package/src/sap/ui/model/odata/v4/lib/_Helper.js +16 -16
  271. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +60 -59
  272. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  273. package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
  274. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +34 -25
  275. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
  276. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +13 -12
  277. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
  278. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  279. package/src/sap/ui/model/type/Boolean.js +1 -1
  280. package/src/sap/ui/model/type/Currency.js +1 -1
  281. package/src/sap/ui/model/type/Date.js +1 -1
  282. package/src/sap/ui/model/type/DateInterval.js +1 -1
  283. package/src/sap/ui/model/type/DateTime.js +1 -1
  284. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  285. package/src/sap/ui/model/type/FileSize.js +1 -1
  286. package/src/sap/ui/model/type/Float.js +1 -1
  287. package/src/sap/ui/model/type/Integer.js +1 -1
  288. package/src/sap/ui/model/type/String.js +1 -1
  289. package/src/sap/ui/model/type/Time.js +1 -1
  290. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  291. package/src/sap/ui/model/type/Unit.js +1 -1
  292. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  293. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  294. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  295. package/src/sap/ui/test/BlanketReporter.js +1 -1
  296. package/src/sap/ui/test/TestUtils.js +2 -2
  297. package/src/sap/ui/test/_LogCollector.js +1 -1
  298. package/src/sap/ui/test/actions/Action.js +4 -2
  299. package/src/sap/ui/test/actions/Press.js +51 -2
  300. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  301. package/src/sap/ui/test/starter/createSuite.js +3 -3
  302. package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
  303. package/src/sap/ui/util/Storage.js +1 -1
  304. package/src/sap/ui/util/XMLHelper.js +53 -30
  305. package/src/ui5loader.js +3 -3
@@ -49,7 +49,6 @@ sap.ui.define([
49
49
  EdmDate, DateTimeOffset, Decimal, Double, Guid, Int16, Int32, Int64, Raw, SByte, Single,
50
50
  Stream, String, TimeOfDay, URI) {
51
51
  "use strict";
52
- /*global Map */
53
52
  /*eslint max-nested-callbacks: 0 */
54
53
 
55
54
  var Any = ManagedObject.extend("sap.ui.model.odata.v4._any", {
@@ -81,7 +80,7 @@ sap.ui.define([
81
80
  "Edm.Date" : {Type : EdmDate},
82
81
  "Edm.DateTimeOffset" : {
83
82
  constraints : {
84
- "$Precision" : "precision"
83
+ $Precision : "precision"
85
84
  },
86
85
  Type : DateTimeOffset
87
86
  },
@@ -93,8 +92,8 @@ sap.ui.define([
93
92
  "@Org.OData.Validation.V1.Maximum/$Decimal" : "maximum",
94
93
  "@Org.OData.Validation.V1.Maximum@Org.OData.Validation.V1.Exclusive" :
95
94
  "maximumExclusive",
96
- "$Precision" : "precision",
97
- "$Scale" : "scale"
95
+ $Precision : "precision",
96
+ $Scale : "scale"
98
97
  },
99
98
  Type : Decimal
100
99
  },
@@ -109,13 +108,13 @@ sap.ui.define([
109
108
  "Edm.String" : {
110
109
  constraints : {
111
110
  "@com.sap.vocabularies.Common.v1.IsDigitSequence" : "isDigitSequence",
112
- "$MaxLength" : "maxLength"
111
+ $MaxLength : "maxLength"
113
112
  },
114
113
  Type : String
115
114
  },
116
115
  "Edm.TimeOfDay" : {
117
116
  constraints : {
118
- "$Precision" : "precision"
117
+ $Precision : "precision"
119
118
  },
120
119
  Type : TimeOfDay
121
120
  }
@@ -250,8 +249,8 @@ sap.ui.define([
250
249
  * The term
251
250
  * @param {string} sExpectedTerm
252
251
  * The expected term
253
- * @returns {string}
254
- * The qualifier or undefined, if the term is not the expected term
252
+ * @returns {string|undefined}
253
+ * The qualifier or <code>undefined</code>, if the term is not the expected term
255
254
  */
256
255
  function getQualifier(sTerm, sExpectedTerm) {
257
256
  if (sTerm === sExpectedTerm) {
@@ -268,8 +267,8 @@ sap.ui.define([
268
267
  *
269
268
  * @param {string} sTerm
270
269
  * The term
271
- * @returns {string}
272
- * The qualifier or undefined, if the term is not as expected
270
+ * @returns {string|undefined}
271
+ * The qualifier or <code>undefined</code>, if the term is not as expected
273
272
  */
274
273
  function getValueListQualifier(sTerm) {
275
274
  var sQualifier = getQualifier(sTerm, sValueListMapping);
@@ -387,6 +386,7 @@ sap.ui.define([
387
386
  // @see sap.ui.model.Binding#initialize
388
387
  initialize : function () {
389
388
  var oElementContext = this.oModel.createBindingContext(this.sPath, this.oContext);
389
+
390
390
  this.bInitial = false; // initialize() has been called
391
391
  if (oElementContext !== this.oElementContext) {
392
392
  this.oElementContext = oElementContext;
@@ -481,7 +481,7 @@ sap.ui.define([
481
481
  return Object.keys(oResult).filter(function (sKey) {
482
482
  // always filter technical properties;
483
483
  // filter annotations iff not iterating them
484
- return sKey[0] !== "$" && bIterateAnnotations !== (sKey[0] !== "@");
484
+ return sKey[0] !== "$" && bIterateAnnotations !== (sKey[0] !== "@");
485
485
  }).map(function (sKey) {
486
486
  return new BaseContext(that.oModel, sResolvedPath + sKey);
487
487
  });
@@ -658,7 +658,7 @@ sap.ui.define([
658
658
  * @hideconstructor
659
659
  * @public
660
660
  * @since 1.37.0
661
- * @version 1.97.1
661
+ * @version 1.98.0
662
662
  */
663
663
  var ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
664
664
  /*
@@ -686,11 +686,11 @@ sap.ui.define([
686
686
  // "B." : {"/B/$metadata" : true} // namespace already read
687
687
  // }
688
688
  this.mSchema2MetadataUrl = {};
689
- this.mSupportedBindingModes = {"OneTime" : true, "OneWay" : true};
689
+ this.mSupportedBindingModes = {OneTime : true, OneWay : true};
690
690
  this.bSupportReferences = bSupportReferences !== false; // default is true
691
691
  // ClientListBinding#filter calls checkFilterOperation on the model; ClientModel does
692
692
  // not support "All" and "Any" filters
693
- this.mUnsupportedFilterOperators = {"All" : true, "Any" : true};
693
+ this.mUnsupportedFilterOperators = {All : true, Any : true};
694
694
  this.sUrl = sUrl;
695
695
  }
696
696
  });
@@ -1661,30 +1661,32 @@ sap.ui.define([
1661
1661
  throw oError;
1662
1662
  }
1663
1663
 
1664
- // First fetch the complete metapath to ensure that everything is in mScope
1664
+ // First fetch the complete meta path to ensure that everything is in mScope
1665
1665
  // This also ensures that the metadata is valid
1666
1666
  return this.fetchObject(_Helper.getMetaPath(sResolvedPath)).then(function () {
1667
1667
  // Then fetch mScope
1668
1668
  return that.fetchEntityContainer();
1669
1669
  }).then(function (mScope) {
1670
- var aEditUrl, // The edit URL as array of segments (encoded)
1670
+ var aEditUrl, // The edit URL as array of segments (encoded)
1671
1671
  oEntityContainer = mScope[mScope.$EntityContainer],
1672
- sEntityPath, // The absolute path to the entity for the PATCH (encoded)
1673
- oEntitySet, // The entity set that starts the edit URL
1674
- sEntitySetName, // The name of this entity set (decoded)
1672
+ sEntityPath, // The absolute path to the entity for the PATCH (encoded)
1673
+ oEntitySet, // The entity set that starts the edit URL
1674
+ sEntitySetName, // The name of this entity set (decoded)
1675
1675
  sFirstSegment,
1676
1676
  bInsideAnnotation = false,
1677
- sInstancePath, // The absolute path to the instance currently in evaluation
1678
- // (encoded; re-builds sResolvedPath)
1677
+ // The absolute path to the instance currently in evaluation (encoded; re-builds
1678
+ // sResolvedPath)
1679
+ sInstancePath,
1679
1680
  sNavigationPath, // The relative meta path starting from oEntitySet (decoded)
1680
- //sPropertyPath, // The relative path following sEntityPath (parameter re-used -
1681
- // encoded)
1682
- aSegments, // The resource path split in segments (encoded)
1683
- oType; // The type of the data at sInstancePath
1681
+ // The relative path following sEntityPath (parameter re-used - encoded)
1682
+ //sPropertyPath,
1683
+ aSegments, // The resource path split in segments (encoded)
1684
+ oType; // The type of the data at sInstancePath
1684
1685
 
1685
1686
  // Determines the predicate from a segment (empty string if there is none)
1686
1687
  function predicate(sSegment) {
1687
1688
  var i = sSegment.indexOf("(");
1689
+
1688
1690
  return i >= 0 ? sSegment.slice(i) : "";
1689
1691
  }
1690
1692
 
@@ -1697,6 +1699,7 @@ sap.ui.define([
1697
1699
  // Strips off the predicate from a segment
1698
1700
  function stripPredicate(sSegment) {
1699
1701
  var i = sSegment.indexOf("(");
1702
+
1700
1703
  return i >= 0 ? sSegment.slice(0, i) : sSegment;
1701
1704
  }
1702
1705
 
@@ -1850,7 +1853,7 @@ sap.ui.define([
1850
1853
  *
1851
1854
  * @returns {string} The annotation target
1852
1855
  */
1853
- function getOverloadTarget () {
1856
+ function getOverloadTarget() {
1854
1857
  var oOverload = aOverloads[0],
1855
1858
  sSignature = "";
1856
1859
 
@@ -1909,8 +1912,8 @@ sap.ui.define([
1909
1912
  });
1910
1913
 
1911
1914
  if (!aTargets.length) {
1912
- throw new Error("No annotation '" + sValueList.slice(1) + "' in " +
1913
- oValueListModel.sServiceUrl);
1915
+ throw new Error("No annotation '" + sValueList.slice(1) + "' in "
1916
+ + oValueListModel.sServiceUrl);
1914
1917
  }
1915
1918
 
1916
1919
  if (aTargets.length === 1) {
@@ -1934,8 +1937,8 @@ sap.ui.define([
1934
1937
  }
1935
1938
  });
1936
1939
  } else if (!bValueListOnValueList) {
1937
- throw new Error("Unexpected annotation '" + sTerm.slice(1) +
1938
- "' for target '" + aTargets[0] + "' with namespace of data service in "
1940
+ throw new Error("Unexpected annotation '" + sTerm.slice(1)
1941
+ + "' for target '" + aTargets[0] + "' with namespace of data service in "
1939
1942
  + oValueListModel.sServiceUrl);
1940
1943
  }
1941
1944
  });
@@ -2119,7 +2122,7 @@ sap.ui.define([
2119
2122
  * The property
2120
2123
  * @param {string} sMetaPath
2121
2124
  * The OData metadata model path corresponding to the given property
2122
- * @returns {object}
2125
+ * @returns {object|undefined}
2123
2126
  * The type constraints for the property or <code>undefined</code> if the property's type is
2124
2127
  * not supported
2125
2128
  *
@@ -2165,7 +2168,7 @@ sap.ui.define([
2165
2168
  * Returns a snapshot of each $metadata or annotation file loaded so far, combined into a
2166
2169
  * single "JSON" object according to the streamlined OData V4 Metadata JSON Format.
2167
2170
  *
2168
- * @returns {object}
2171
+ * @returns {object|undefined}
2169
2172
  * The OData metadata as a "JSON" object, if it is already available, or
2170
2173
  * <code>undefined</code>.
2171
2174
  *
@@ -2399,7 +2402,7 @@ sap.ui.define([
2399
2402
  *
2400
2403
  * @param {string} sPropertyPath
2401
2404
  * An absolute path to an OData property within the OData data model
2402
- * @returns {string}
2405
+ * @returns {string|undefined}
2403
2406
  * The path of the property's unit or currency relative to the property's entity, or
2404
2407
  * <code>undefined</code> in case the property has no associated unit or currency
2405
2408
  *
@@ -2871,9 +2874,9 @@ sap.ui.define([
2871
2874
  * This way, "/EMPLOYEES" addresses the same object as "/$EntityContainer/EMPLOYEES", namely
2872
2875
  * the "EMPLOYEES" child of the entity container.
2873
2876
  * <li> Afterwards, if the current object is an array, it represents overloads for an
2874
- * operation. Annotations of an operation (since 1.71.0) or a parameter (since 1.66.0) can be
2875
- * immediately addressed, no matter if they apply for a single overload or for all overloads
2876
- * at the same time, for example "/TEAMS/acme.NewAction@" or
2877
+ * operation. Annotations of an operation (since 1.71.0) or a parameter (since 1.66.0) can
2878
+ * be immediately addressed, no matter if they apply for a single overload or for all
2879
+ * overloads at the same time, for example "/TEAMS/acme.NewAction@" or
2877
2880
  * "/TEAMS/acme.NewAction/Team_ID@". Annotations of an unbound operation overload can be
2878
2881
  * addressed like "/OperationImport/@$ui5.overload@", while "/OperationImport/@" addresses
2879
2882
  * annotations of the operation import itself. The special name "$ReturnType" can be used
@@ -3208,6 +3211,7 @@ sap.ui.define([
3208
3211
  // insert the returned mappings into oValueListInfo in the order of aMappingUrls
3209
3212
  aMappingUrls.forEach(function (sMappingUrl, i) {
3210
3213
  var mvalueListMappingByQualifier = aResults[i].valueListMappingByQualifier;
3214
+
3211
3215
  Object.keys(mvalueListMappingByQualifier).forEach(function (sQualifier) {
3212
3216
  addMapping(mvalueListMappingByQualifier[sQualifier], sQualifier,
3213
3217
  sMappingUrl, aResults[i].$model);
@@ -3228,8 +3232,8 @@ sap.ui.define([
3228
3232
  // Each reference must have contributed at least one qualifier. So if oValueListInfo
3229
3233
  // is empty, there cannot have been a reference.
3230
3234
  if (isEmptyObject(oValueListInfo)) {
3231
- throw new Error("No annotation '" + sValueListReferences.slice(1) + "' for " +
3232
- sPropertyPath);
3235
+ throw new Error("No annotation '" + sValueListReferences.slice(1) + "' for "
3236
+ + sPropertyPath);
3233
3237
  }
3234
3238
 
3235
3239
  return aRelevantQualifiers && oContext && oContext.getBinding
@@ -3279,7 +3283,6 @@ sap.ui.define([
3279
3283
  */
3280
3284
  ODataMetaModel.prototype.filterValueListRelevantQualifiers = function (mValueListByQualifier,
3281
3285
  aRawRelevantQualifiers, sMetaPath, oContext) {
3282
-
3283
3286
  return this.requestValue4Annotation(aRawRelevantQualifiers, sMetaPath, oContext)
3284
3287
  .then(function (aRelevantQualifiers) {
3285
3288
  var mValueListByRelevantQualifier = {};
@@ -3334,7 +3337,7 @@ sap.ui.define([
3334
3337
  * A relative or absolute path within the metadata model
3335
3338
  * @param {sap.ui.model.Context} [oContext]
3336
3339
  * The context to be used as a starting point in case of a relative path
3337
- * @returns {string}
3340
+ * @returns {string|undefined}
3338
3341
  * Resolved path or <code>undefined</code>
3339
3342
  * @throws {Error}
3340
3343
  * If relative path starts with a dot which is not followed by a forward slash
@@ -210,7 +210,7 @@ sap.ui.define([
210
210
  * @extends sap.ui.model.Model
211
211
  * @public
212
212
  * @since 1.37.0
213
- * @version 1.97.1
213
+ * @version 1.98.0
214
214
  */
215
215
  var ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
216
216
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */
@@ -435,7 +435,8 @@ sap.ui.define([
435
435
  * @private
436
436
  */
437
437
  ODataModel.prototype.addPrerenderingTask = function (fnPrerenderingTask, bFirst) {
438
- var fnRunTasks, iTimeoutId, that = this;
438
+ var fnRunTasks, iTimeoutId,
439
+ that = this;
439
440
 
440
441
  function runTasks(aTasks) {
441
442
  clearTimeout(iTimeoutId);
@@ -852,7 +853,7 @@ sap.ui.define([
852
853
  * @param {string[]} aAllowed The allowed system query options
853
854
  * @throws {error} If the given query option name is not allowed
854
855
  */
855
- function parseAndValidateSystemQueryOption (mOptions, sOptionName, aAllowed) {
856
+ function parseAndValidateSystemQueryOption(mOptions, sOptionName, aAllowed) {
856
857
  var sExpandOptionName,
857
858
  mExpandOptions,
858
859
  sExpandPath,
@@ -879,7 +880,7 @@ sap.ui.define([
879
880
  }
880
881
  }
881
882
  } else if (sOptionName === "$count") {
882
- if (typeof vValue === "boolean") {
883
+ if (typeof vValue === "boolean") {
883
884
  if (!vValue) {
884
885
  delete mOptions.$count;
885
886
  }
@@ -1125,7 +1126,7 @@ sap.ui.define([
1125
1126
  + "' without context");
1126
1127
  }
1127
1128
 
1128
- iSeparator = sResolvedPath.indexOf('#');
1129
+ iSeparator = sResolvedPath.indexOf("#");
1129
1130
  if (iSeparator >= 0) {
1130
1131
  sDataPath = sResolvedPath.slice(0, iSeparator);
1131
1132
  sMetaPath = sResolvedPath.slice(iSeparator + 1);
@@ -1553,12 +1554,25 @@ sap.ui.define([
1553
1554
  this.oRequestor.refreshSecurityToken().catch(function () {});
1554
1555
  };
1555
1556
 
1557
+ /**
1558
+ * Determines whether the given group ID uses mode {@link sap.ui.model.odata.v4.SubmitMode.API}
1559
+ *
1560
+ * @param {string} sGroupId
1561
+ * The group ID
1562
+ * @returns {boolean|undefined} Whether it is an API group
1563
+ *
1564
+ * @private
1565
+ */
1566
+ ODataModel.prototype.isApiGroup = function (sGroupId) {
1567
+ return this.getGroupProperty(sGroupId, "submit") === SubmitMode.API;
1568
+ };
1569
+
1556
1570
  /**
1557
1571
  * Determines whether the given group ID uses mode {@link sap.ui.model.odata.v4.SubmitMode.Auto}
1558
1572
  *
1559
1573
  * @param {string} sGroupId
1560
1574
  * The group ID
1561
- * @returns {boolean|undefined} Whether it is an auto group
1575
+ * @returns {boolean} Whether it is an auto group
1562
1576
  *
1563
1577
  * @private
1564
1578
  */
@@ -1572,7 +1586,7 @@ sap.ui.define([
1572
1586
  *
1573
1587
  * @param {string} sGroupId
1574
1588
  * The group ID
1575
- * @returns {boolean|undefined} Whether it is a direct group
1589
+ * @returns {boolean} Whether it is a direct group
1576
1590
  *
1577
1591
  * @private
1578
1592
  */
@@ -1663,7 +1677,8 @@ sap.ui.define([
1663
1677
  }
1664
1678
  this.checkGroupId(sGroupId);
1665
1679
 
1666
- // Note: getBindings() returns an array that contains all bindings with change listeners (owned by Model)
1680
+ // Note: getBindings() returns an array that contains all bindings with change listeners
1681
+ // (owned by Model)
1667
1682
  this.getBindings().forEach(function (oBinding) {
1668
1683
  if (oBinding.isRoot()) {
1669
1684
  // ignore the group ID for suspended bindings to avoid mismatches and errors; they
@@ -1748,7 +1763,7 @@ sap.ui.define([
1748
1763
  *
1749
1764
  * @private
1750
1765
  */
1751
- ODataModel.prototype.reportStateMessages = function (sResourcePath, mPathToODataMessages,
1766
+ ODataModel.prototype.reportStateMessages = function (sResourcePath, mPathToODataMessages,
1752
1767
  aCachePaths) {
1753
1768
  var sDataBindingPath = "/" + sResourcePath,
1754
1769
  aNewMessages = [],
@@ -1836,7 +1851,7 @@ sap.ui.define([
1836
1851
  * @param {string[]} aAbsolutePaths
1837
1852
  * The absolute paths to request side effects for; each path must not start with the fully
1838
1853
  * qualified container name.
1839
- * @returns {sap.ui.base.SyncPromise}
1854
+ * @returns {sap.ui.base.SyncPromise|undefined}
1840
1855
  * A promise resolving without a defined result, or rejecting with an error if loading of side
1841
1856
  * effects fails, or <code>undefined</code> if there is nothing to do
1842
1857
  *
@@ -1906,7 +1921,7 @@ sap.ui.define([
1906
1921
  * A relative or absolute path within the data model
1907
1922
  * @param {sap.ui.model.Context} [oContext]
1908
1923
  * The context to be used as a starting point in case of a relative path
1909
- * @returns {string}
1924
+ * @returns {string|undefined}
1910
1925
  * Resolved path or <code>undefined</code>
1911
1926
  *
1912
1927
  * @private
@@ -9,12 +9,11 @@
9
9
  sap.ui.define([
10
10
  "./Context",
11
11
  "./ODataBinding",
12
- "./SubmitMode",
13
12
  "./lib/_Helper",
14
13
  "sap/base/Log",
15
14
  "sap/ui/base/SyncPromise",
16
15
  "sap/ui/model/ChangeReason"
17
- ], function (Context, asODataBinding, SubmitMode, _Helper, Log, SyncPromise, ChangeReason) {
16
+ ], function (Context, asODataBinding, _Helper, Log, SyncPromise, ChangeReason) {
18
17
  "use strict";
19
18
 
20
19
  /**
@@ -83,9 +82,10 @@ sap.ui.define([
83
82
  * The new value which must be primitive
84
83
  * @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
85
84
  * A lock for the group ID to be used for the PATCH request; without a lock, no PATCH is sent
86
- * @returns {sap.ui.base.SyncPromise} <code>undefined</code> for the general case which is
87
- * handled generically by the caller {@link sap.ui.model.odata.v4.Context#doSetProperty}
88
- * or a <code>SyncPromise</code> for the exceptional case
85
+ * @returns {sap.ui.base.SyncPromise|undefined}
86
+ * <code>undefined</code> for the general case which is handled generically by the caller
87
+ * {@link sap.ui.model.odata.v4.Context#doSetProperty} or a <code>SyncPromise</code> for the
88
+ * exceptional case
89
89
  *
90
90
  * @abstract
91
91
  * @function
@@ -413,7 +413,7 @@ sap.ui.define([
413
413
  *
414
414
  * @returns {sap.ui.base.SyncPromise}
415
415
  * A promise resolving without a defined result when the check is finished, or rejecting in
416
- * case of an error (e.g. thrown by the change event handler of a control)
416
+ * case of an error
417
417
  * @throws {Error} If called with parameters
418
418
  *
419
419
  * @private
@@ -565,52 +565,41 @@ sap.ui.define([
565
565
  * Deletes the entity in the cache. If the binding doesn't have a cache, it forwards to the
566
566
  * parent binding adjusting the path.
567
567
  *
568
- * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
569
- * A lock for the group ID to be used for the DELETE request; if no group ID is specified, it
570
- * defaults to <code>getUpdateGroupId()</code>()
568
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
569
+ * A lock for the group ID to be used for the DELETE request; w/o a lock, no DELETE is sent.
570
+ * For a transient entity, the lock is ignored (use NULL)!
571
571
  * @param {string} sEditUrl
572
- * The edit URL to be used for the DELETE request
572
+ * The entity's edit URL to be used for the DELETE request; w/o a lock, this is mostly
573
+ * ignored.
573
574
  * @param {string} sPath
574
575
  * The path of the entity relative to this binding
575
576
  * @param {object} [oETagEntity]
576
577
  * An entity with the ETag of the binding for which the deletion was requested. This is
577
578
  * provided if the deletion is delegated from a context binding with empty path to a list
578
- * binding.
579
+ * binding. W/o a lock, this is ignored.
579
580
  * @param {boolean} [bDoNotRequestCount]
580
581
  * Whether not to request the new count from the server; useful in case of
581
582
  * {@link sap.ui.model.odata.v4.Context#replaceWith} where it is known that the count remains
582
- * unchanged
583
+ * unchanged; w/o a lock this should be true
583
584
  * @param {function} fnCallback
584
- * A function which is called after the entity has been deleted from the server and from the
585
- * cache; the index of the entity is passed as parameter
585
+ * A function which is called after a transient entity has been deleted from the cache or
586
+ * after the entity has been deleted from the server and from the cache; the index of the
587
+ * entity and the entity list are both passed as parameter, or none of them
586
588
  * @returns {sap.ui.base.SyncPromise}
587
589
  * A promise which is resolved without a result in case of success, or rejected with an
588
- * instance of <code>Error</code> in case of failure
590
+ * instance of <code>Error</code> in case of failure; returns <code>undefined</code> if the
591
+ * cache promise for this binding is not yet fulfilled
589
592
  * @throws {Error}
590
- * If the group ID has {@link sap.ui.model.odata.v4.SubmitMode.Auto} or if the cache promise
591
- * for this binding is not yet fulfilled
593
+ * If the cache is shared
592
594
  *
593
595
  * @private
594
596
  */
595
597
  ODataParentBinding.prototype.deleteFromCache = function (oGroupLock, sEditUrl, sPath,
596
598
  oETagEntity, bDoNotRequestCount, fnCallback) {
597
- var sGroupId;
598
-
599
- if (this.oCache === undefined) {
600
- throw new Error("DELETE request not allowed");
601
- }
602
-
603
- if (this.oCache) {
604
- sGroupId = oGroupLock.getGroupId();
605
- if (!this.oModel.isAutoGroup(sGroupId) && !this.oModel.isDirectGroup(sGroupId)) {
606
- throw new Error("Illegal update group ID: " + sGroupId);
607
- }
608
- return this.oCache._delete(oGroupLock, sEditUrl, sPath, oETagEntity, bDoNotRequestCount,
599
+ return this.withCache(function (oCache, sCachePath) {
600
+ return oCache._delete(oGroupLock, sEditUrl, sCachePath, oETagEntity, bDoNotRequestCount,
609
601
  fnCallback);
610
- }
611
- return this.oContext.getBinding().deleteFromCache(oGroupLock, sEditUrl,
612
- _Helper.buildPath(this.oContext.iIndex, this.sPath, sPath), oETagEntity,
613
- bDoNotRequestCount, fnCallback);
602
+ }, sPath, /*bSync*/true);
614
603
  };
615
604
 
616
605
  /**
@@ -651,7 +640,8 @@ sap.ui.define([
651
640
  * The child binding's (aggregated) query options or a promise resolving with them
652
641
  * @returns {sap.ui.base.SyncPromise}
653
642
  * A promise resolved with the reduced path for the child binding if the child binding can use
654
- * this binding's or an ancestor binding's cache; <code>undefined</code> otherwise.
643
+ * this binding's or an ancestor binding's cache; resolved with <code>undefined</code>
644
+ * otherwise.
655
645
  *
656
646
  * @private
657
647
  * @see sap.ui.model.odata.v4.ODataMetaModel#getReducedPath
@@ -767,7 +757,7 @@ sap.ui.define([
767
757
  that.bAggregatedQueryOptionsInitial = false;
768
758
  }
769
759
  if (bIsAdvertisement) {
770
- mWrappedChildQueryOptions = {"$select" : [sReducedChildMetaPath.slice(1)]};
760
+ mWrappedChildQueryOptions = {$select : [sReducedChildMetaPath.slice(1)]};
771
761
  return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
772
762
  bCacheImmutable)
773
763
  ? sReducedPath
@@ -833,7 +823,7 @@ sap.ui.define([
833
823
  // catch the error, but keep the rejected promise
834
824
  this.oCachePromise.catch(function (oError) {
835
825
  that.oModel.reportError(that + ": Failed to enhance query options for "
836
- + "auto-$expand/$select for child " + sChildPath, sClassName, oError);
826
+ + "auto-$expand/$select for child " + sChildPath, sClassName, oError);
837
827
  });
838
828
  return oCanUseCachePromise;
839
829
  };
@@ -900,8 +890,7 @@ sap.ui.define([
900
890
  oParentBinding = this.oContext.getBinding();
901
891
  sParentUpdateGroupId = oParentBinding.getUpdateGroupId();
902
892
  if (sParentUpdateGroupId === this.getUpdateGroupId()
903
- || this.oModel.getGroupProperty(sParentUpdateGroupId, "submit")
904
- !== SubmitMode.API) {
893
+ || !this.oModel.isApiGroup(sParentUpdateGroupId)) {
905
894
  return oParentBinding.getBaseForPathReduction();
906
895
  }
907
896
  }
@@ -1072,9 +1061,11 @@ sap.ui.define([
1072
1061
  * @param {boolean} [bKeepCacheOnError]
1073
1062
  * If <code>true</code>, the binding data remains unchanged if the refresh fails
1074
1063
  * @returns {sap.ui.base.SyncPromise}
1075
- * A promise resolving when all dependent bindings are refreshed; it is rejected if the
1076
- * binding's root binding is suspended and a group ID different from the binding's group ID is
1077
- * given
1064
+ * A promise resolving when all dependent bindings are refreshed; it is rejected
1065
+ * when the refresh fails; the promise is resolved immediately on a suspended binding
1066
+ * @throws {Error}
1067
+ * If the binding's root binding is suspended and a group ID different from the binding's
1068
+ * group ID is given
1078
1069
  *
1079
1070
  * @private
1080
1071
  */
@@ -1090,7 +1081,11 @@ sap.ui.define([
1090
1081
  * Recursively refreshes all dependent list bindings that have no own cache.
1091
1082
  *
1092
1083
  * @returns {sap.ui.base.SyncPromise}
1093
- * A promise resolving when all dependent list bindings without own cache are refreshed
1084
+ * A promise resolving when all dependent list bindings without own cache are refreshed; it is
1085
+ * rejected when the refresh fails; the promise is resolved immediately on a suspended binding
1086
+ * @throws {Error}
1087
+ * If the binding's root binding is suspended and a group ID different from the binding's
1088
+ * group ID is given
1094
1089
  *
1095
1090
  * @private
1096
1091
  */
@@ -1118,24 +1113,6 @@ sap.ui.define([
1118
1113
  }
1119
1114
  };
1120
1115
 
1121
- /**
1122
- * Refreshes the binding; expects it to be suspended.
1123
- *
1124
- * @param {string} sGroupId
1125
- * The group ID to be used for the refresh
1126
- * @throws {Error}
1127
- * If a group ID different from the binding's group ID is given
1128
-
1129
- * @private
1130
- */
1131
- ODataParentBinding.prototype.refreshSuspended = function (sGroupId) {
1132
- if (sGroupId && sGroupId !== this.getGroupId()) {
1133
- throw new Error(this + ": Cannot refresh a suspended binding with group ID '"
1134
- + sGroupId + "' (own group ID is '" + this.getGroupId() + "')");
1135
- }
1136
- this.setResumeChangeReason(ChangeReason.Refresh);
1137
- };
1138
-
1139
1116
  /**
1140
1117
  * Loads side effects for the given context of this binding.
1141
1118
  *