@openui5/sap.ui.core 1.96.5 → 1.99.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 (426) hide show
  1. package/.eslintrc.json +93 -3
  2. package/.reuse/dep5 +26 -31
  3. package/THIRDPARTY.txt +15 -21
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.mobile.js +29 -19
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +2 -2
  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 +81 -169
  53. package/src/sap/ui/Global.js +11 -16
  54. package/src/sap/ui/VersionInfo.js +13 -10
  55. package/src/sap/ui/base/BindingParser.js +34 -7
  56. package/src/sap/ui/base/Event.js +1 -1
  57. package/src/sap/ui/base/EventProvider.js +1 -1
  58. package/src/sap/ui/base/Interface.js +1 -1
  59. package/src/sap/ui/base/ManagedObject.js +50 -29
  60. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  61. package/src/sap/ui/base/Metadata.js +1 -3
  62. package/src/sap/ui/base/Object.js +1 -1
  63. package/src/sap/ui/base/ObjectPool.js +1 -1
  64. package/src/sap/ui/core/.library +1 -27
  65. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  66. package/src/sap/ui/core/BusyIndicator.js +1 -1
  67. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  68. package/src/sap/ui/core/Component.js +33 -11
  69. package/src/sap/ui/core/ComponentContainer.js +1 -1
  70. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  71. package/src/sap/ui/core/ComponentSupport.js +1 -1
  72. package/src/sap/ui/core/Configuration.js +79 -13
  73. package/src/sap/ui/core/Control.js +4 -3
  74. package/src/sap/ui/core/Core.js +4 -7
  75. package/src/sap/ui/core/CustomData.js +1 -1
  76. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  77. package/src/sap/ui/core/Element.js +6 -12
  78. package/src/sap/ui/core/ElementMetadata.js +1 -1
  79. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  80. package/src/sap/ui/core/EventBus.js +1 -1
  81. package/src/sap/ui/core/ExtensionPoint.js +1 -1
  82. package/src/sap/ui/core/FocusHandler.js +1 -1
  83. package/src/sap/ui/core/Fragment.js +1 -1
  84. package/src/sap/ui/core/HTML.js +3 -3
  85. package/src/sap/ui/core/HTMLRenderer.js +1 -1
  86. package/src/sap/ui/core/History.js +1 -1
  87. package/src/sap/ui/core/Icon.js +2 -3
  88. package/src/sap/ui/core/IconRenderer.js +1 -1
  89. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  90. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  91. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  92. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  93. package/src/sap/ui/core/InvisibleText.js +1 -1
  94. package/src/sap/ui/core/Item.js +1 -1
  95. package/src/sap/ui/core/LabelEnablement.js +9 -2
  96. package/src/sap/ui/core/LayoutData.js +1 -1
  97. package/src/sap/ui/core/ListItem.js +1 -1
  98. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  99. package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +2 -2
  100. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  101. package/src/sap/ui/core/Locale.js +1 -1
  102. package/src/sap/ui/core/LocaleData.js +39 -4
  103. package/src/sap/ui/core/Manifest.js +1 -1
  104. package/src/sap/ui/core/Message.js +1 -1
  105. package/src/sap/ui/core/Placeholder.js +28 -28
  106. package/src/sap/ui/core/Popup.js +3 -3
  107. package/src/sap/ui/core/RenderManager.js +3 -3
  108. package/src/sap/ui/core/Renderer.js +1 -1
  109. package/src/sap/ui/core/ResizeHandler.js +1 -1
  110. package/src/sap/ui/core/ScrollBar.js +4 -3
  111. package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ThemeCheck.js +2 -2
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +2 -2
  116. package/src/sap/ui/core/UIArea.js +3 -3
  117. package/src/sap/ui/core/UIComponent.js +1 -1
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +1 -1
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +26 -5
  124. package/src/sap/ui/core/_IconRegistry.js +10 -1
  125. package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -2
  126. package/src/sap/ui/core/date/Japanese.js +1 -1
  127. package/src/sap/ui/core/date/UniversalDateUtils.js +205 -2
  128. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  129. package/src/sap/ui/core/delegate/ScrollEnablement.js +9 -6
  130. package/src/sap/ui/core/dnd/DragAndDrop.js +2 -2
  131. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  132. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  133. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  134. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  135. package/src/sap/ui/core/format/DateFormat.js +562 -174
  136. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +43 -0
  137. package/src/sap/ui/core/format/ListFormat.js +2 -2
  138. package/src/sap/ui/core/format/NumberFormat.js +1 -1
  139. package/src/sap/ui/core/format/TimezoneUtil.js +248 -0
  140. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  141. package/src/sap/ui/core/library.js +47 -10
  142. package/src/sap/ui/core/message/ControlMessageProcessor.js +5 -5
  143. package/src/sap/ui/core/message/Message.js +1 -1
  144. package/src/sap/ui/core/message/MessageManager.js +1 -1
  145. package/src/sap/ui/core/message/MessageMixin.js +2 -1
  146. package/src/sap/ui/core/message/MessageParser.js +1 -1
  147. package/src/sap/ui/core/message/MessageProcessor.js +22 -12
  148. package/src/sap/ui/core/messagebundle.properties +4 -0
  149. package/src/sap/ui/core/messagebundle_ar.properties +2 -0
  150. package/src/sap/ui/core/messagebundle_bg.properties +7 -5
  151. package/src/sap/ui/core/messagebundle_ca.properties +2 -0
  152. package/src/sap/ui/core/messagebundle_cs.properties +2 -0
  153. package/src/sap/ui/core/messagebundle_cy.properties +2 -0
  154. package/src/sap/ui/core/messagebundle_da.properties +2 -0
  155. package/src/sap/ui/core/messagebundle_de.properties +3 -1
  156. package/src/sap/ui/core/messagebundle_el.properties +2 -0
  157. package/src/sap/ui/core/messagebundle_en.properties +2 -0
  158. package/src/sap/ui/core/messagebundle_en_GB.properties +2 -0
  159. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
  160. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  161. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +2 -0
  162. package/src/sap/ui/core/messagebundle_es.properties +2 -0
  163. package/src/sap/ui/core/messagebundle_es_MX.properties +2 -0
  164. package/src/sap/ui/core/messagebundle_et.properties +2 -0
  165. package/src/sap/ui/core/messagebundle_fi.properties +2 -0
  166. package/src/sap/ui/core/messagebundle_fr.properties +9 -7
  167. package/src/sap/ui/core/messagebundle_fr_CA.properties +2 -0
  168. package/src/sap/ui/core/messagebundle_hi.properties +2 -0
  169. package/src/sap/ui/core/messagebundle_hr.properties +2 -0
  170. package/src/sap/ui/core/messagebundle_hu.properties +2 -0
  171. package/src/sap/ui/core/messagebundle_id.properties +4 -2
  172. package/src/sap/ui/core/messagebundle_it.properties +3 -1
  173. package/src/sap/ui/core/messagebundle_iw.properties +2 -0
  174. package/src/sap/ui/core/messagebundle_ja.properties +2 -0
  175. package/src/sap/ui/core/messagebundle_kk.properties +2 -0
  176. package/src/sap/ui/core/messagebundle_ko.properties +2 -0
  177. package/src/sap/ui/core/messagebundle_lt.properties +2 -0
  178. package/src/sap/ui/core/messagebundle_lv.properties +3 -1
  179. package/src/sap/ui/core/messagebundle_ms.properties +2 -0
  180. package/src/sap/ui/core/messagebundle_nl.properties +2 -0
  181. package/src/sap/ui/core/messagebundle_no.properties +6 -4
  182. package/src/sap/ui/core/messagebundle_pl.properties +2 -0
  183. package/src/sap/ui/core/messagebundle_pt.properties +2 -0
  184. package/src/sap/ui/core/messagebundle_pt_PT.properties +2 -0
  185. package/src/sap/ui/core/messagebundle_ro.properties +2 -0
  186. package/src/sap/ui/core/messagebundle_ru.properties +23 -21
  187. package/src/sap/ui/core/messagebundle_sh.properties +2 -0
  188. package/src/sap/ui/core/messagebundle_sk.properties +2 -0
  189. package/src/sap/ui/core/messagebundle_sl.properties +2 -0
  190. package/src/sap/ui/core/messagebundle_sv.properties +2 -0
  191. package/src/sap/ui/core/messagebundle_th.properties +2 -0
  192. package/src/sap/ui/core/messagebundle_tr.properties +2 -0
  193. package/src/sap/ui/core/messagebundle_uk.properties +2 -0
  194. package/src/sap/ui/core/messagebundle_vi.properties +2 -0
  195. package/src/sap/ui/core/messagebundle_zh_CN.properties +2 -0
  196. package/src/sap/ui/core/messagebundle_zh_TW.properties +2 -0
  197. package/src/sap/ui/core/mvc/Controller.js +4 -4
  198. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  199. package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
  200. package/src/sap/ui/core/mvc/JSONView.js +2 -1
  201. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
  202. package/src/sap/ui/core/mvc/JSView.js +1 -1
  203. package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
  204. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  205. package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
  206. package/src/sap/ui/core/mvc/View.js +2 -1
  207. package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
  208. package/src/sap/ui/core/mvc/XMLView.js +16 -3
  209. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  210. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  211. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  212. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  213. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  214. package/src/sap/ui/core/routing/Route.js +6 -6
  215. package/src/sap/ui/core/routing/Router.js +4 -3
  216. package/src/sap/ui/core/routing/Targets.js +17 -13
  217. package/src/sap/ui/core/rules/Misc.support.js +51 -1
  218. package/src/sap/ui/core/rules/Model.support.js +95 -8
  219. package/src/sap/ui/core/rules/Rendering.support.js +1 -4
  220. package/src/sap/ui/core/rules/View.support.js +14 -46
  221. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  222. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  223. package/src/sap/ui/core/service/Service.js +1 -1
  224. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  225. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  226. package/src/sap/ui/core/support/Plugin.js +2 -2
  227. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -1
  228. package/src/sap/ui/core/support/Support.js +1 -1
  229. package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
  230. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  231. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  232. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  233. package/src/sap/ui/core/support/plugins/Performance.js +1 -2
  234. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  235. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  236. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  237. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  238. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +2 -6
  239. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  240. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  241. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  242. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  243. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  244. package/src/sap/ui/core/tmpl/Template.js +1 -1
  245. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  246. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  247. package/src/sap/ui/core/util/DraftEnabledMockServer.js +21 -16
  248. package/src/sap/ui/core/util/Export.js +1 -1
  249. package/src/sap/ui/core/util/ExportCell.js +1 -1
  250. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  251. package/src/sap/ui/core/util/ExportRow.js +1 -1
  252. package/src/sap/ui/core/util/ExportType.js +1 -1
  253. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  254. package/src/sap/ui/core/util/File.js +1 -1
  255. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  256. package/src/sap/ui/core/util/MockServer.js +157 -58
  257. package/src/sap/ui/core/util/PasteHelper.js +4 -4
  258. package/src/sap/ui/core/util/XMLPreprocessor.js +16 -4
  259. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
  260. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  261. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  262. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  263. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  264. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  265. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  266. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  267. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  268. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  269. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  270. package/src/sap/ui/debug/ControlTree.js +1 -1
  271. package/src/sap/ui/debug/DebugEnv.js +1 -1
  272. package/src/sap/ui/debug/PropertyList.js +1 -1
  273. package/src/sap/ui/dom/includeStylesheet.js +8 -3
  274. package/src/sap/ui/events/jquery/EventExtension.js +1 -1
  275. package/src/sap/ui/events/jquery/EventSimulation.js +3 -13
  276. package/src/sap/ui/model/Binding.js +4 -3
  277. package/src/sap/ui/model/ChangeReason.js +1 -1
  278. package/src/sap/ui/model/ClientListBinding.js +7 -0
  279. package/src/sap/ui/model/ClientModel.js +6 -5
  280. package/src/sap/ui/model/ClientTreeBinding.js +1 -1
  281. package/src/sap/ui/model/ClientTreeBindingAdapter.js +1 -1
  282. package/src/sap/ui/model/CompositeBinding.js +1 -1
  283. package/src/sap/ui/model/CompositeDataState.js +26 -4
  284. package/src/sap/ui/model/CompositeType.js +1 -1
  285. package/src/sap/ui/model/ContextBinding.js +1 -1
  286. package/src/sap/ui/model/DataState.js +27 -6
  287. package/src/sap/ui/model/ListBinding.js +24 -5
  288. package/src/sap/ui/model/MetaModel.js +2 -3
  289. package/src/sap/ui/model/Model.js +6 -11
  290. package/src/sap/ui/model/SelectionModel.js +1 -1
  291. package/src/sap/ui/model/SimpleType.js +1 -1
  292. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  293. package/src/sap/ui/model/TreeBindingAdapter.js +0 -2
  294. package/src/sap/ui/model/TreeBindingUtils.js +2 -0
  295. package/src/sap/ui/model/Type.js +1 -1
  296. package/src/sap/ui/model/analytics/AnalyticalBinding.js +13 -8
  297. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +16 -18
  298. package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
  299. package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
  300. package/src/sap/ui/model/json/JSONListBinding.js +1 -1
  301. package/src/sap/ui/model/json/JSONModel.js +7 -7
  302. package/src/sap/ui/model/json/JSONPropertyBinding.js +2 -2
  303. package/src/sap/ui/model/message/MessageListBinding.js +1 -1
  304. package/src/sap/ui/model/message/MessageModel.js +3 -3
  305. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  306. package/src/sap/ui/model/odata/AnnotationHelper.js +2 -2
  307. package/src/sap/ui/model/odata/AnnotationParser.js +4 -2
  308. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  309. package/src/sap/ui/model/odata/ODataListBinding.js +62 -39
  310. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  311. package/src/sap/ui/model/odata/ODataMetaModel.js +3 -3
  312. package/src/sap/ui/model/odata/ODataMetadata.js +138 -87
  313. package/src/sap/ui/model/odata/ODataModel.js +443 -216
  314. package/src/sap/ui/model/odata/ODataPropertyBinding.js +7 -5
  315. package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
  316. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +27 -17
  317. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +440 -260
  318. package/src/sap/ui/model/odata/ODataUtils.js +24 -9
  319. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +3 -2
  320. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +11 -9
  321. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +7 -5
  322. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  323. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  324. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  325. package/src/sap/ui/model/odata/type/Date.js +1 -1
  326. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  327. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  328. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  329. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +338 -0
  330. package/src/sap/ui/model/odata/type/Decimal.js +5 -1
  331. package/src/sap/ui/model/odata/type/Double.js +1 -1
  332. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  333. package/src/sap/ui/model/odata/type/Int.js +1 -1
  334. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  335. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  336. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  337. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  338. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  339. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  340. package/src/sap/ui/model/odata/type/Single.js +1 -1
  341. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  342. package/src/sap/ui/model/odata/type/String.js +1 -1
  343. package/src/sap/ui/model/odata/type/Time.js +1 -1
  344. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  345. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  346. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -2
  347. package/src/sap/ui/model/odata/v2/Context.js +98 -14
  348. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  349. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +8 -4
  350. package/src/sap/ui/model/odata/v2/ODataListBinding.js +418 -172
  351. package/src/sap/ui/model/odata/v2/ODataModel.js +242 -138
  352. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +164 -92
  353. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +117 -7
  354. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +21 -22
  355. package/src/sap/ui/model/odata/v4/Context.js +249 -83
  356. package/src/sap/ui/model/odata/v4/ODataBinding.js +100 -43
  357. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +309 -228
  358. package/src/sap/ui/model/odata/v4/ODataListBinding.js +573 -278
  359. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +131 -100
  360. package/src/sap/ui/model/odata/v4/ODataModel.js +342 -259
  361. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +113 -100
  362. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +87 -81
  363. package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
  364. package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
  365. package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
  366. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +20 -20
  367. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
  368. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
  369. package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
  370. package/src/sap/ui/model/odata/v4/lib/_Cache.js +278 -103
  371. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  372. package/src/sap/ui/model/odata/v4/lib/_Helper.js +55 -21
  373. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +62 -61
  374. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  375. package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
  376. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +61 -41
  377. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
  378. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +14 -13
  379. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
  380. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  381. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  382. package/src/sap/ui/model/type/Boolean.js +1 -1
  383. package/src/sap/ui/model/type/Currency.js +1 -1
  384. package/src/sap/ui/model/type/Date.js +1 -1
  385. package/src/sap/ui/model/type/DateInterval.js +1 -1
  386. package/src/sap/ui/model/type/DateTime.js +1 -1
  387. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  388. package/src/sap/ui/model/type/FileSize.js +1 -1
  389. package/src/sap/ui/model/type/Float.js +1 -1
  390. package/src/sap/ui/model/type/Integer.js +1 -1
  391. package/src/sap/ui/model/type/String.js +1 -1
  392. package/src/sap/ui/model/type/Time.js +1 -1
  393. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  394. package/src/sap/ui/model/type/Unit.js +1 -1
  395. package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
  396. package/src/sap/ui/model/xml/XMLModel.js +5 -5
  397. package/src/sap/ui/model/xml/XMLPropertyBinding.js +2 -2
  398. package/src/sap/ui/performance/trace/Passport.js +3 -3
  399. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  400. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  401. package/src/sap/ui/test/BlanketReporter.js +1 -1
  402. package/src/sap/ui/test/Opa5.js +1 -1
  403. package/src/sap/ui/test/TestUtils.js +2 -2
  404. package/src/sap/ui/test/_LogCollector.js +1 -1
  405. package/src/sap/ui/test/actions/Action.js +11 -2
  406. package/src/sap/ui/test/actions/Press.js +79 -3
  407. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  408. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +111 -0
  409. package/src/sap/ui/test/starter/createSuite.js +1 -2
  410. package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
  411. package/src/sap/ui/thirdparty/jqueryui/jquery-ui-datepicker.js +143 -3
  412. package/src/sap/ui/thirdparty/jqueryui/jquery-ui-position.js +8 -1
  413. package/src/sap/ui/util/Mobile.js +28 -39
  414. package/src/sap/ui/util/Storage.js +1 -1
  415. package/src/sap/ui/util/XMLHelper.js +53 -30
  416. package/src/ui5loader.js +9 -9
  417. package/ui5.yaml +244 -1
  418. package/src/sap/ui/core/CustomizingConfiguration.js +0 -47
  419. package/src/sap/ui/thirdparty/baseuri.js +0 -1
  420. package/src/sap/ui/thirdparty/es6-object-assign.js +0 -1
  421. package/src/sap/ui/thirdparty/es6-promise.js +0 -1
  422. package/src/sap/ui/thirdparty/es6-shim-nopromise.js +0 -1
  423. package/src/sap/ui/thirdparty/es6-string-methods.js +0 -1
  424. package/src/sap/ui/thirdparty/flexie.js +0 -1
  425. package/src/sap/ui/thirdparty/unorm.js +0 -1
  426. package/src/sap/ui/thirdparty/unormdata.js +0 -1
@@ -201,7 +201,7 @@ sap.ui.define([
201
201
  * This model is not prepared to be inherited from.
202
202
  *
203
203
  * @author SAP SE
204
- * @version 1.96.5
204
+ * @version 1.99.0
205
205
  *
206
206
  * @public
207
207
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -936,6 +936,13 @@ sap.ui.define([
936
936
  };
937
937
 
938
938
  /**
939
+ * Get the shared data for the section and the key. If it doesn't exist yet, an empty shared
940
+ * data object is created and stored under the section and the key.
941
+ *
942
+ * @param {string} sSection The data section
943
+ * @param {string} sKey A key in the section
944
+ * @returns {object} The shared data
945
+ *
939
946
  * @private
940
947
  */
941
948
  ODataModel._getSharedData = function(sSection, sKey) {
@@ -981,21 +988,26 @@ sap.ui.define([
981
988
  /**
982
989
  * Refreshes the metadata for this model, for example when the request for metadata has failed.
983
990
  *
984
- * <b>Note</b>: Do not use <code>refreshMetadata</code> if the metadata is outdated or should be updated.
985
- * This will lead to inconsistent data in the application.
991
+ * <b>Note</b>: Do not use <code>refreshMetadata</code> if the metadata is outdated or should be
992
+ * updated. This will lead to inconsistent data in the application.
986
993
  *
987
- * Returns a new promise which can be resolved or rejected depending on the metadata loading state.
994
+ * Returns a new promise which can be resolved or rejected depending on the metadata loading
995
+ * state.
988
996
  *
989
- * @returns {Promise} A promise on metadata loaded state or <code>null</code> if metadata is not initialized or currently refreshed.
997
+ * @returns {Promise|undefined}
998
+ * A promise on metadata loaded state or <code>undefined</code> if metadata is not initialized
999
+ * or currently refreshed
990
1000
  *
991
1001
  * @deprecated As of version 1.42.
992
1002
  *
993
1003
  * @public
994
1004
  */
995
- ODataModel.prototype.refreshMetadata = function(){
996
- if (this.oMetadata && this.oMetadata.refresh){
1005
+ ODataModel.prototype.refreshMetadata = function() {
1006
+ if (this.oMetadata && this.oMetadata.refresh) {
997
1007
  return this.oMetadata.refresh();
998
1008
  }
1009
+
1010
+ return undefined;
999
1011
  };
1000
1012
 
1001
1013
 
@@ -1227,7 +1239,8 @@ sap.ui.define([
1227
1239
  * @private
1228
1240
  */
1229
1241
  ODataModel.prototype._createEventInfo = function(oRequest, oResponse, aBatchRequests) {
1230
- var oEventInfo = {};
1242
+ var oInnerResponse, oBatchRequest,
1243
+ oEventInfo = {};
1231
1244
 
1232
1245
  oEventInfo.url = oRequest.requestUri;
1233
1246
  oEventInfo.method = oRequest.method;
@@ -1237,13 +1250,13 @@ sap.ui.define([
1237
1250
  if (aBatchRequests) {
1238
1251
  oEventInfo.requests = [];
1239
1252
  for (var i = 0; i < aBatchRequests.length; i++) {
1240
- var oBatchRequest = {};
1253
+ oBatchRequest = {};
1241
1254
  //changeSets
1242
1255
  if (Array.isArray(aBatchRequests[i])) {
1243
1256
  var aChangeSet = aBatchRequests[i];
1244
1257
  for (var j = 0; j < aChangeSet.length; j++) {
1245
- var oRequest = aChangeSet[j].request;
1246
- var oInnerResponse = aBatchRequests[i][j].response;
1258
+ oRequest = aChangeSet[j].request;
1259
+ oInnerResponse = aBatchRequests[i][j].response;
1247
1260
  oBatchRequest = {};
1248
1261
  oBatchRequest.url = oRequest.requestUri;
1249
1262
  oBatchRequest.method = oRequest.method;
@@ -1270,8 +1283,8 @@ sap.ui.define([
1270
1283
  oEventInfo.requests.push(oBatchRequest);
1271
1284
  }
1272
1285
  } else {
1273
- var oRequest = aBatchRequests[i].request;
1274
- var oInnerResponse = aBatchRequests[i].response;
1286
+ oRequest = aBatchRequests[i].request;
1287
+ oInnerResponse = aBatchRequests[i].response;
1275
1288
  oBatchRequest.url = oRequest.requestUri;
1276
1289
  oBatchRequest.method = oRequest.method;
1277
1290
  oBatchRequest.headers = oRequest.headers;
@@ -1874,7 +1887,7 @@ sap.ui.define([
1874
1887
  * function lead to a single synchronous call where <code>mChangedEntities</code> is the union
1875
1888
  * of all <code>mChangedEntities</Code> from the asynchronous calls.
1876
1889
  *
1877
- * @param {boolean} bForceUpdate
1890
+ * @param {boolean} [bForceUpdate]
1878
1891
  * The parameter <code>bForceUpdate</code> for the <code>checkUpdate</code> call on the
1879
1892
  * bindings
1880
1893
  * @param {boolean} bAsync
@@ -2158,18 +2171,15 @@ sap.ui.define([
2158
2171
  * function is the newly created binding context, an instance of
2159
2172
  * {@link sap.ui.model.odata.v2.Context}.
2160
2173
  * @param {boolean} [bReload] Whether to reload data
2161
- * @return {sap.ui.model.odata.v2.Context}
2174
+ * @return {sap.ui.model.odata.v2.Context|undefined}
2162
2175
  * The created binding context, only if the data is already available and the binding context
2163
- * could be created synchronously
2176
+ * could be created synchronously; <code>undefined</code> otherwise
2164
2177
  * @public
2165
2178
  */
2166
2179
  ODataModel.prototype.createBindingContext = function(sPath, oContext, mParameters, fnCallBack, bReload) {
2167
- var sResolvedPath,
2168
- sCanonicalPath,
2169
- oNewContext,
2170
- sGroupId,
2171
- sDeepPath,
2172
- that = this, bCanonical;
2180
+ var bCanonical, sCanonicalPath, sCustomParams, sDeepPath, sGroupId, bIsRelative,
2181
+ oNewContext, aParams, sResolvedPath,
2182
+ that = this;
2173
2183
 
2174
2184
  // optional parameter handling
2175
2185
  if (oContext !== null && typeof oContext === "object"
@@ -2288,8 +2298,8 @@ sap.ui.define([
2288
2298
  }
2289
2299
 
2290
2300
  if (fnCallBack) {
2291
- var bIsRelative = !sPath.startsWith("/");
2292
- var aParams = [],
2301
+ bIsRelative = !sPath.startsWith("/");
2302
+ aParams = [];
2293
2303
  sCustomParams = this.createCustomParams(mParameters);
2294
2304
  if (sCustomParams) {
2295
2305
  aParams.push(sCustomParams);
@@ -2318,6 +2328,7 @@ sap.ui.define([
2318
2328
  return oNewContext;
2319
2329
  }
2320
2330
 
2331
+ return undefined;
2321
2332
  };
2322
2333
 
2323
2334
  /**
@@ -2396,9 +2407,10 @@ sap.ui.define([
2396
2407
  * Filter expand properties for expand applying to the current entity (remove deep expands)
2397
2408
  * and remove expands not covered by the select entries
2398
2409
  *
2399
- * @param {string[][]} aExpand Own expand entries as string arrays
2400
- * @param {string[][]} aSelect Own select entries as string arrays
2410
+ * @param {Array.<string[]>} aExpand Own expand entries as string arrays
2411
+ * @param {Array.<string[]>} aSelect Own select entries as string arrays
2401
2412
  * @returns {string[]} Array of own expand properties
2413
+ *
2402
2414
  * @private
2403
2415
  */
2404
2416
  ODataModel.prototype._filterOwnExpand = function(aExpand, aSelect) {
@@ -2488,9 +2500,8 @@ sap.ui.define([
2488
2500
  }
2489
2501
 
2490
2502
  function checkReloadNeeded(oEntityType, oEntity, aSelect, aExpand) {
2491
- var aOwnSelect, aOwnExpand,
2492
- vNavData, oNavEntityType, oNavEntity, aNavSelect, aNavExpand,
2493
- sExpand, sSelect;
2503
+ var sExpand, i, vNavData, oNavEntity, oNavEntityType,
2504
+ aNavExpand, aNavSelect, aOwnExpand, aOwnSelect, sSelect;
2494
2505
 
2495
2506
  // if no entity type could be found we decide not to reload
2496
2507
  if (!oEntityType) {
@@ -2511,7 +2522,7 @@ sap.ui.define([
2511
2522
 
2512
2523
  // check select properties
2513
2524
  aOwnSelect = that._filterOwnSelect(aSelect, oEntityType.property);
2514
- for (var i = 0; i < aOwnSelect.length; i++) {
2525
+ for (i = 0; i < aOwnSelect.length; i++) {
2515
2526
  sSelect = aOwnSelect[i];
2516
2527
  if (oEntity[sSelect] === undefined) {
2517
2528
  return true;
@@ -2520,7 +2531,7 @@ sap.ui.define([
2520
2531
 
2521
2532
  // check expanded entities
2522
2533
  aOwnExpand = that._filterOwnExpand(aExpand, aSelect);
2523
- for (var i = 0; i < aOwnExpand.length; i++) {
2534
+ for (i = 0; i < aOwnExpand.length; i++) {
2524
2535
  sExpand = aOwnExpand[i];
2525
2536
  vNavData = oEntity[sExpand];
2526
2537
 
@@ -2894,11 +2905,8 @@ sap.ui.define([
2894
2905
  }
2895
2906
 
2896
2907
  function getRequestedData(oEntityType, oValue, aSelect, aExpand) {
2897
- var aOwnExpand, oResultValue,
2898
- aOwnPropSelect, aOwnNavSelect,
2899
- vNavData, oNavEntityType, oNavValue, oNavObject,
2900
- aNavSelect, aNavExpand,
2901
- sExpand, sSelect, aResultProps;
2908
+ var sExpand, i,vNavData, oNavEntityType, aNavExpand, oNavObject, aNavSelect, oNavValue,
2909
+ aOwnExpand, aOwnNavSelect, aOwnPropSelect, aResultProps, oResultValue, sSelect;
2902
2910
 
2903
2911
  // if no value we return undefined
2904
2912
  if (!oValue) {
@@ -2912,9 +2920,9 @@ sap.ui.define([
2912
2920
  aOwnPropSelect = that._filterOwnSelect(aSelect, oEntityType.property);
2913
2921
  // copy selected properties
2914
2922
  oResultValue = {};
2915
- for (var i = 0; i < aOwnPropSelect.length; i++) {
2923
+ for (i = 0; i < aOwnPropSelect.length; i++) {
2916
2924
  sSelect = aOwnPropSelect[i];
2917
- if (oValue[sSelect] !== undefined) {
2925
+ if (oValue[sSelect] !== undefined || oValue.__metadata.created) {
2918
2926
  oResultValue[sSelect] = oValue[sSelect];
2919
2927
  } else {
2920
2928
  Log.fatal("No data loaded for select property: " + sSelect + " of entry: " + that.getKey(oValue));
@@ -2928,7 +2936,7 @@ sap.ui.define([
2928
2936
 
2929
2937
  // check expanded entities
2930
2938
  aOwnExpand = that._filterOwnExpand(aExpand, aSelect);
2931
- for (var i = 0; i < aOwnExpand.length; i++) {
2939
+ for (i = 0; i < aOwnExpand.length; i++) {
2932
2940
  sExpand = aOwnExpand[i];
2933
2941
  vNavData = oValue[sExpand];
2934
2942
 
@@ -3314,16 +3322,14 @@ sap.ui.define([
3314
3322
  that["fireRequest" + sType](oEventInfo);
3315
3323
  });
3316
3324
  });
3317
- } else {
3318
- if (oRequest.parts) {
3319
- each(oRequest.parts, function(i, oPart) {
3320
- oEventInfo = that._createEventInfo(oRequest.request, oPart.fnError);
3321
- that["fireRequest" + sType](oEventInfo);
3322
- });
3323
- } else {
3324
- oEventInfo = that._createEventInfo(oRequest.request, oRequest.fnError);
3325
+ } else if (oRequest.parts) {
3326
+ each(oRequest.parts, function(i, oPart) {
3327
+ oEventInfo = that._createEventInfo(oRequest.request, oPart.fnError);
3325
3328
  that["fireRequest" + sType](oEventInfo);
3326
- }
3329
+ });
3330
+ } else {
3331
+ oEventInfo = that._createEventInfo(oRequest.request, oRequest.fnError);
3332
+ that["fireRequest" + sType](oEventInfo);
3327
3333
  }
3328
3334
  });
3329
3335
  if (oRequest.eventInfo.batch){
@@ -3431,12 +3437,14 @@ sap.ui.define([
3431
3437
  }
3432
3438
 
3433
3439
  function handleError(oError) {
3440
+ var i;
3441
+
3434
3442
  if (oError.message == "Request aborted") {
3435
- for (var i = 0; i < oRequest.parts.length; i++){
3443
+ for (i = 0; i < oRequest.parts.length; i++){
3436
3444
  that._processAborted(oRequest.parts[i].request, oError);
3437
3445
  }
3438
3446
  } else {
3439
- for (var i = 0; i < oRequest.parts.length; i++) {
3447
+ for (i = 0; i < oRequest.parts.length; i++) {
3440
3448
  that._processError(oRequest.parts[i].request, oError, oRequest.parts[i].fnError);
3441
3449
  }
3442
3450
  }
@@ -3768,7 +3776,8 @@ sap.ui.define([
3768
3776
  * @private
3769
3777
  */
3770
3778
  ODataModel.prototype._pushToRequestQueue = function(mRequests, sGroupId, sChangeSetId, oRequest, fnSuccess, fnError, requestHandle, bRefreshAfterChange) {
3771
- var oRequestGroup = mRequests[sGroupId],
3779
+ var oGroupEntry,
3780
+ oRequestGroup = mRequests[sGroupId],
3772
3781
  sRequestKey = oRequest.key ? oRequest.key : oRequest.method + ":" + oRequest.requestUri;
3773
3782
 
3774
3783
  //ignore requests in warmup scenario
@@ -3785,7 +3794,7 @@ sap.ui.define([
3785
3794
 
3786
3795
  //'combine' only GET and internal create&change requests.
3787
3796
  if (sRequestKey in oRequestGroup.map && (oRequest.key || oRequest.method === 'GET')) {
3788
- var oGroupEntry = oRequestGroup.map[sRequestKey];
3797
+ oGroupEntry = oRequestGroup.map[sRequestKey];
3789
3798
  var oStoredRequest = oGroupEntry.request;
3790
3799
  oRequest.deepPath = oStoredRequest.deepPath;
3791
3800
  if (this.sMessageScope === MessageScope.BusinessObject) {
@@ -3832,7 +3841,7 @@ sap.ui.define([
3832
3841
  oStoredRequest.functionTarget = oRequest.functionTarget;
3833
3842
  }
3834
3843
  } else {
3835
- var oGroupEntry = {
3844
+ oGroupEntry = {
3836
3845
  request: oRequest,
3837
3846
  bRefreshAfterChange: bRefreshAfterChange,
3838
3847
  parts: [{
@@ -4361,10 +4370,17 @@ sap.ui.define([
4361
4370
  /**
4362
4371
  * Process a two-way binding change.
4363
4372
  *
4364
- * @param {string} sKey Key of the entity to change
4365
- * @param {object} oData The entry data
4366
- * @param {boolean} [sUpdateMethod] Sets <code>MERGE/PUT</code> method, defaults to <code>MERGE</code> if not provided
4367
- * @returns {object} The request object
4373
+ * @param {string} sKey
4374
+ * Key of the entity to change
4375
+ * @param {object} oData
4376
+ * The entry data
4377
+ * @param {boolean} [sUpdateMethod]
4378
+ * Sets <code>MERGE/PUT</code> method, defaults to <code>MERGE</code> if not provided
4379
+ * @param {string} [sDeepPath]
4380
+ * The deep path
4381
+ * @returns {object}
4382
+ * The request object
4383
+ *
4368
4384
  * @private
4369
4385
  */
4370
4386
  ODataModel.prototype._processChange = function(sKey, oData, sUpdateMethod, sDeepPath) {
@@ -4912,7 +4928,10 @@ sap.ui.define([
4912
4928
  };
4913
4929
 
4914
4930
  /**
4915
- * Trigger a <code>POST</code> request to the OData service that was specified in the model constructor.
4931
+ * Trigger a <code>POST</code> request to the OData service that was specified in the model
4932
+ * constructor; see
4933
+ * {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
4934
+ * Entities documentation} for comprehensive information on the topic.
4916
4935
  *
4917
4936
  * Please note that deep creates are not supported and may not work.
4918
4937
  *
@@ -5182,7 +5201,7 @@ sap.ui.define([
5182
5201
  * @param {function} [mParameters.success]
5183
5202
  * A callback function which is called when the data has been successfully retrieved; the
5184
5203
  * handler can have the following parameters: <code>oData</code> and <code>response</code>.
5185
- * @param {Object<string,string>} [mParameters.urlParameters]
5204
+ * @param {Object<string,any>} [mParameters.urlParameters]
5186
5205
  * Maps the function import parameter name as specified in the function import's metadata to
5187
5206
  * its value; the value is formatted based on the parameter's type as specified in the metadata
5188
5207
  * @param {string} [mParameters.batchGroupId]
@@ -5395,18 +5414,21 @@ sap.ui.define([
5395
5414
  delete mUrlParams.__metadata;
5396
5415
  delete mUrlParams["$result"];
5397
5416
  var oFunctionMetadata = this.oMetadata._getFunctionImportMetadata(sFunctionName, sMethod);
5398
- assert(oFunctionMetadata, this + ": Function " + sFunctionName + " not found in the metadata !");
5417
+ assert(oFunctionMetadata,
5418
+ this + ": Function " + sFunctionName + " not found in the metadata !");
5399
5419
  if (!oFunctionMetadata) {
5400
- return;
5420
+ return undefined;
5401
5421
  }
5402
5422
 
5403
5423
  if (oFunctionMetadata.parameter != null) {
5404
5424
  each(oFunctionMetadata.parameter, function (iIndex, oParam) {
5405
5425
  if (mUrlParams && mUrlParams[oParam.name] !== undefined) {
5406
- mUrlParams[oParam.name] = ODataUtils.formatValue(mUrlParams[oParam.name], oParam.type);
5426
+ mUrlParams[oParam.name] =
5427
+ ODataUtils.formatValue(mUrlParams[oParam.name], oParam.type);
5407
5428
  }
5408
5429
  });
5409
5430
  }
5431
+
5410
5432
  return mUrlParams;
5411
5433
  };
5412
5434
 
@@ -5571,17 +5593,20 @@ sap.ui.define([
5571
5593
  /**
5572
5594
  * Return the parsed XML metadata as a Javascript object.
5573
5595
  *
5574
- * Please note that the metadata is loaded asynchronously and this function might return undefined because the
5575
- * metadata has not been loaded yet.
5576
- * In this case attach to the <code>metadataLoaded</code> event to get notified when the metadata is available and then call this function.
5596
+ * Please note that the metadata is loaded asynchronously and this function might return
5597
+ * <code>undefined</code> because the metadata has not been loaded yet.
5598
+ * In this case attach to the <code>metadataLoaded</code> event to get notified when the
5599
+ * metadata is available and then call this function.
5577
5600
  *
5578
- * @return {Object} Metadata object
5601
+ * @return {Object|undefined} Metadata object
5579
5602
  * @public
5580
5603
  */
5581
5604
  ODataModel.prototype.getServiceMetadata = function() {
5582
5605
  if (this.oMetadata && this.oMetadata.isLoaded()) {
5583
5606
  return this.oMetadata.getServiceMetadata();
5584
5607
  }
5608
+
5609
+ return undefined;
5585
5610
  };
5586
5611
 
5587
5612
  /**
@@ -5809,11 +5834,10 @@ sap.ui.define([
5809
5834
  * @public
5810
5835
  */
5811
5836
  ODataModel.prototype.submitChanges = function(mParameters) {
5812
- var oRequest, sGroupId, oGroupInfo, fnSuccess, fnError,
5813
- oRequestHandle, vRequestHandleInternal,
5814
- bAborted = false, sMethod, mChangedEntities,
5837
+ var mChangedEntities, fnError, sGroupId, sMethod, oRequestHandle, vRequestHandleInternal,
5838
+ fnSuccess,
5839
+ bAborted = false,
5815
5840
  bRefreshAfterChange = this.bRefreshAfterChange,
5816
- mParams,
5817
5841
  that = this;
5818
5842
 
5819
5843
  if (mParameters) {
@@ -5833,28 +5857,37 @@ sap.ui.define([
5833
5857
  mChangedEntities = merge({}, that.mChangedEntities);
5834
5858
 
5835
5859
  this.oMetadata.loaded().then(function() {
5860
+ var oChange, aChanges, sChangeSetId, i, sRequestGroupId, oRequestGroup;
5861
+
5836
5862
  each(mChangedEntities, function(sKey, oData) {
5837
- oGroupInfo = that._resolveGroup(sKey);
5863
+ var oCreatedInfo, oRequest, oRequestHandle0,
5864
+ oGroupInfo = that._resolveGroup(sKey);
5865
+
5838
5866
  if (oGroupInfo.groupId === sGroupId || !sGroupId) {
5839
5867
  oRequest = that._processChange(sKey, oData, sMethod || that.sDefaultUpdateMethod);
5840
5868
  oRequest.key = sKey;
5841
5869
  //get params for created entries: could contain success/error handler
5842
- mParams = oData.__metadata && oData.__metadata.created ? oData.__metadata.created : {};
5843
- var oRequestHandle = {
5870
+ oCreatedInfo = oData.__metadata && oData.__metadata.created
5871
+ ? oData.__metadata.created
5872
+ : {};
5873
+ oRequestHandle0 = {
5844
5874
  abort: function() {
5845
5875
  oRequest._aborted = true;
5846
5876
  }
5847
5877
  };
5848
5878
  if (oGroupInfo.groupId in that.mDeferredGroups) {
5849
- that._pushToRequestQueue(that.mDeferredRequests, oGroupInfo.groupId, oGroupInfo.changeSetId,
5850
- oRequest, mParams.success, mParams.error, oRequestHandle, bRefreshAfterChange);
5879
+ that._pushToRequestQueue(that.mDeferredRequests, oGroupInfo.groupId,
5880
+ oGroupInfo.changeSetId, oRequest, oCreatedInfo.success,
5881
+ oCreatedInfo.error, oRequestHandle0,
5882
+ oCreatedInfo.refreshAfterChange === undefined
5883
+ ? bRefreshAfterChange
5884
+ : oCreatedInfo.refreshAfterChange);
5851
5885
  }
5852
5886
  }
5853
5887
  });
5854
5888
 
5855
5889
  // Set undefined refreshAfterChange flags
5856
5890
  // If undefined => overwrite with current global refreshAfterChange state
5857
- var sRequestGroupId, sChangeSetId, oRequestGroup, aChanges, oChange, i;
5858
5891
  for (sRequestGroupId in that.mDeferredRequests) {
5859
5892
  oRequestGroup = that.mDeferredRequests[sRequestGroupId];
5860
5893
  for (sChangeSetId in oRequestGroup.changes) {
@@ -5993,6 +6026,9 @@ sap.ui.define([
5993
6026
  that.abortInternalRequest(sGroupId, {requestKey : sKey});
5994
6027
  });
5995
6028
  if (bDeleteCreatedEntities && oCreated) {
6029
+ // remove context synchronously from the list of created contexts to avoid a temporary
6030
+ // empty table row
6031
+ this.oCreatedContextsCache.findAndRemoveContext(this.mContexts["/" + sKey]);
5996
6032
  this._removeEntity(sKey);
5997
6033
  if (oCreated.abort) {
5998
6034
  oCreated.abort(ODataModel._createAbortedError());
@@ -6022,7 +6058,7 @@ sap.ui.define([
6022
6058
  * </ul>
6023
6059
  *
6024
6060
  * @param {array} [aPath]
6025
- * Paths to be be reset; if no array is passed, all changes are reset
6061
+ * Paths to be reset; if no array is passed, all changes are reset
6026
6062
  * @param {boolean} [bAll=false]
6027
6063
  * Whether also deferred requests are taken into account
6028
6064
  * @param {boolean} [bDeleteCreatedEntities=false]
@@ -6114,11 +6150,14 @@ sap.ui.define([
6114
6150
  */
6115
6151
  ODataModel.prototype.setProperty = function(sPath, oValue, oContext, bAsyncUpdate) {
6116
6152
 
6117
- var oOriginalValue, sPropertyPath, mRequests, oRequest, oOriginalEntry, oEntry,
6118
- sResolvedPath, aParts, sKey, oGroupInfo, oRequestHandle, oEntityMetadata,
6119
- mChangedEntities = {}, oEntityInfo = {}, mParams, oChangeObject, bRefreshAfterChange,
6120
- bFunction = false, that = this, bCreated,
6121
- oEntityType, oNavPropRefInfo, bIsNavPropExpanded, mKeys, oRef, sDeepPath;
6153
+ var oContextToActivate, oChangeObject, bCreated, sDeepPath, oEntityMetadata, oEntityType,
6154
+ oEntry, oGroupInfo, bIsNavPropExpanded, sKey, mKeys, oNavPropRefInfo, oOriginalEntry,
6155
+ oOriginalValue, mParams, aParts, sPropertyPath, oRef, bRefreshAfterChange, oRequest,
6156
+ mRequests, oRequestHandle, sResolvedPath,
6157
+ mChangedEntities = {},
6158
+ oEntityInfo = {},
6159
+ bFunction = false,
6160
+ that = this;
6122
6161
 
6123
6162
  function updateChangedEntities(oOriginalObject, oChangedObject) {
6124
6163
  each(oChangedObject,function(sKey) {
@@ -6234,7 +6273,13 @@ sap.ui.define([
6234
6273
 
6235
6274
  bRefreshAfterChange = this._getRefreshAfterChange(undefined, oGroupInfo.groupId);
6236
6275
 
6237
- this.oMetadata.loaded().then(function() {
6276
+ if (oEntry.__metadata.created && !oEntry.__metadata.created.functionImport) {
6277
+ oContextToActivate = this.oCreatedContextsCache.findCreatedContext(sResolvedPath);
6278
+ if (oContextToActivate) {
6279
+ oContextToActivate.activate();
6280
+ }
6281
+ }
6282
+ this.oMetadata.loaded().then(function () {
6238
6283
  oRequestHandle = {
6239
6284
  abort: function() {
6240
6285
  oRequest._aborted = true;
@@ -6453,23 +6498,28 @@ sap.ui.define([
6453
6498
  * @deprecated since 1.95.0; use {@link #resetChanges} instead
6454
6499
  */
6455
6500
  ODataModel.prototype.deleteCreatedEntry = function (oContext) {
6456
- var that = this, sKey, sGroupId;
6501
+ var sGroupId, sKey,
6502
+ that = this;
6503
+
6457
6504
  if (oContext) {
6458
- var sKey = oContext.getPath().substr(1);
6505
+ sKey = oContext.getPath().substr(1);
6459
6506
  sGroupId = this._resolveGroup(sKey).groupId;
6460
6507
  that.oMetadata.loaded().then(function() {
6461
6508
  that.abortInternalRequest(sGroupId, {requestKey: sKey});
6462
6509
  });
6463
6510
  that._removeEntity(sKey);
6464
6511
  //cleanup Messages for created Entry
6465
- sap.ui.getCore().getMessageManager().removeMessages(this.getMessagesByEntity(oContext.getPath(), true));
6512
+ sap.ui.getCore().getMessageManager().removeMessages(
6513
+ this.getMessagesByEntity(oContext.getPath(), true));
6466
6514
  }
6467
6515
  };
6468
6516
 
6469
6517
  /**
6470
6518
  * Creates a new entry object which is described by the metadata of the entity type of the
6471
6519
  * specified <code>sPath</code> Name. A context object is returned which can be used to bind
6472
- * against the newly created object.
6520
+ * against the newly created object. See
6521
+ * {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
6522
+ * Entities documentation} for comprehensive information on the topic.
6473
6523
  *
6474
6524
  * For each created entry a request is created and stored in a request queue.
6475
6525
  * The request queue can be submitted by calling {@link #submitChanges}. As long as the context
@@ -6564,6 +6614,10 @@ sap.ui.define([
6564
6614
  * batch request
6565
6615
  * @param {Object<string,string>} [mParameters.headers]
6566
6616
  * A map of headers
6617
+ * @param {boolean} [mParameters.inactive]
6618
+ * Whether the created context is inactive. An inactive context will only be sent to the
6619
+ * server after the first property update. From then on it behaves like any other created
6620
+ * context. Supported since 1.98.0
6567
6621
  * @param {array|object} [mParameters.properties]
6568
6622
  * An array that specifies a set of properties or the entry
6569
6623
  * @param {boolean} [mParameters.refreshAfterChange]
@@ -6585,9 +6639,9 @@ sap.ui.define([
6585
6639
  */
6586
6640
  ODataModel.prototype.createEntry = function (sPath, mParameters) {
6587
6641
  var bCanonical, sChangeSetId, oContext, fnCreated, pCreate, fnCreatedPromiseResolve,
6588
- sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders, sKey, sNormalizedPath,
6589
- vProperties, bRefreshAfterChange, oRequest, mRequests, fnSuccess, sUrl, aUrlParams,
6590
- mUrlParams,
6642
+ sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders, bInactive, sKey,
6643
+ sNormalizedPath, vProperties, bRefreshAfterChange, oRequest, mRequests, fnSuccess, sUrl,
6644
+ aUrlParams, mUrlParams,
6591
6645
  oEntity = {},
6592
6646
  sMethod = "POST",
6593
6647
  that = this;
@@ -6606,6 +6660,7 @@ sap.ui.define([
6606
6660
  bRefreshAfterChange = mParameters.refreshAfterChange;
6607
6661
  bCanonical = mParameters.canonicalRequest;
6608
6662
  sExpand = mParameters.expand;
6663
+ bInactive = mParameters.inactive;
6609
6664
  }
6610
6665
  if (sExpand && !this.bUseBatch) {
6611
6666
  throw new Error("The 'expand' parameter is only supported if batch mode is used");
@@ -6739,22 +6794,35 @@ sap.ui.define([
6739
6794
  };
6740
6795
  }
6741
6796
  oEntity.__metadata = {
6742
- type: "" + oEntityMetadata.entityType,
6743
- uri: that.sServiceUrl + '/' + sKey,
6744
- created: {
6745
- key: sNormalizedPath.substring(1), //store path for later POST
6746
- success: fnSuccess,
6747
- error: fnError,
6748
- headers: mHeaders,
6749
- urlParameters: mUrlParams,
6750
- groupId: sGroupId,
6751
- changeSetId: sChangeSetId,
6752
- eTag: sETag
6797
+ type : "" + oEntityMetadata.entityType,
6798
+ uri : that.sServiceUrl + '/' + sKey,
6799
+ created : {
6800
+ changeSetId : sChangeSetId,
6801
+ error : fnError,
6802
+ eTag : sETag,
6803
+ groupId : sGroupId,
6804
+ headers : mHeaders,
6805
+ key : sNormalizedPath.substring(1), //store path for later POST
6806
+ refreshAfterChange : bRefreshAfterChange,
6807
+ success : fnSuccess,
6808
+ urlParameters : mUrlParams
6753
6809
  },
6754
- deepPath: sDeepPath
6810
+ deepPath : sDeepPath
6755
6811
  };
6756
6812
  pCreate = new SyncPromise(function (resolve, reject) {
6757
- fnCreatedPromiseResolve = resolve;
6813
+ fnCreatedPromiseResolve = function () {
6814
+ if (!that.oCreatedContextsCache.getCacheInfo(oCreatedContext)) {
6815
+ // If ODataModel#createEntry is called by ODataListBinding#create, the
6816
+ // created context is added to the created contexts cache and has to keep
6817
+ // the create promise until the context gets removed from the cache, see
6818
+ // sap.ui.model.odata.v2._CreatedContextsCache#removePersistedContexts.
6819
+ // If the context is not in the cache ODataModel#createEntry has been called
6820
+ // directly and the create promise has to be reset after successful
6821
+ // creation.
6822
+ oCreatedContext.resetCreatedPromise();
6823
+ }
6824
+ resolve();
6825
+ };
6758
6826
  oEntity.__metadata.created.abort = reject;
6759
6827
  });
6760
6828
  pCreate.catch(function () {
@@ -6762,7 +6830,9 @@ sap.ui.define([
6762
6830
  });
6763
6831
 
6764
6832
  sKey = that._addEntity(merge({}, oEntity));
6765
- that.mChangedEntities[sKey] = oEntity;
6833
+ if (!bInactive) {
6834
+ that.mChangedEntities[sKey] = oEntity;
6835
+ }
6766
6836
 
6767
6837
  sUrl = that._createRequestUrlWithNormalizedPath(sNormalizedPath, aUrlParams, that.bUseBatch);
6768
6838
  oRequest = that._createRequest(sUrl, sDeepPath, sMethod, mHeaders, oEntity, sETag);
@@ -6779,7 +6849,7 @@ sap.ui.define([
6779
6849
  oEntity.__metadata.created.contentID = sUID;
6780
6850
  }
6781
6851
 
6782
- oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate);
6852
+ oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate, bInactive);
6783
6853
 
6784
6854
  oRequest.key = sKey;
6785
6855
  oRequest.created = true;
@@ -6789,11 +6859,14 @@ sap.ui.define([
6789
6859
  mRequests = that.mDeferredRequests;
6790
6860
  }
6791
6861
 
6792
- that.oMetadata.loaded().then(function() {
6793
- that._pushToRequestQueue(mRequests, sGroupId,
6794
- sChangeSetId, oRequest, fnSuccess, fnError, oRequestHandle, bRefreshAfterChange);
6795
- that._processRequestQueueAsync(that.mRequests);
6862
+ that.oMetadata.loaded().then(function () {
6863
+ oCreatedContext.fetchActivated().then(function () {
6864
+ that._pushToRequestQueue(mRequests, sGroupId, sChangeSetId, oRequest, fnSuccess,
6865
+ fnError, oRequestHandle, bRefreshAfterChange);
6866
+ that._processRequestQueueAsync(that.mRequests);
6867
+ });
6796
6868
  });
6869
+
6797
6870
  return oCreatedContext;
6798
6871
  }
6799
6872
 
@@ -6805,8 +6878,11 @@ sap.ui.define([
6805
6878
  } else if (this.oMetadata.isLoaded()) {
6806
6879
  return create();
6807
6880
  } else {
6808
- Log.error("Tried to use createEntry without created-callback, before metadata is available!");
6881
+ Log.error("Tried to use createEntry without created-callback, before metadata is "
6882
+ + "available!");
6809
6883
  }
6884
+
6885
+ return undefined;
6810
6886
  };
6811
6887
 
6812
6888
  /**
@@ -6860,7 +6936,7 @@ sap.ui.define([
6860
6936
  *
6861
6937
  * @param {string} sPath The binding path
6862
6938
  * @param {sap.ui.model.Context} [oContext] The binding context
6863
- * @param {boolean} Whether the binding path should be resolved canonical or not
6939
+ * @param {boolean} bCanonical Whether the binding path should be resolved canonical or not
6864
6940
  * @returns {string} The resolved path
6865
6941
  * @private
6866
6942
  */
@@ -7207,9 +7283,15 @@ sap.ui.define([
7207
7283
  /**
7208
7284
  * Gives the back-end response to the <code>MessageParser</code> in case there is one attached.
7209
7285
  *
7286
+ * @param {object} oResponse The response
7287
+ * @param {object} oRequest The request
7288
+ * @param {object} mGetEntities New entities from the response
7289
+ * @param {object} mChangeEntities Changed entities from the response
7290
+ *
7210
7291
  * @private
7211
7292
  */
7212
- ODataModel.prototype._parseResponse = function(oResponse, oRequest, mGetEntities, mChangeEntities) {
7293
+ ODataModel.prototype._parseResponse = function(oResponse, oRequest, mGetEntities,
7294
+ mChangeEntities) {
7213
7295
  try {
7214
7296
  if (!this.oMessageParser) {
7215
7297
  this.oMessageParser = new ODataMessageParser(this.sServiceUrl, this.oMetadata,
@@ -7217,7 +7299,8 @@ sap.ui.define([
7217
7299
  this.oMessageParser.setProcessor(this);
7218
7300
  }
7219
7301
  // Parse response and delegate messages to the set message parser
7220
- this.oMessageParser.parse(oResponse, oRequest, mGetEntities, mChangeEntities, this.bIsMessageScopeSupported);
7302
+ this.oMessageParser.parse(oResponse, oRequest, mGetEntities, mChangeEntities,
7303
+ this.bIsMessageScopeSupported);
7221
7304
  } catch (ex) {
7222
7305
  Log.error("Error parsing OData messages: " + ex);
7223
7306
  }
@@ -7294,7 +7377,9 @@ sap.ui.define([
7294
7377
  * @return {object} The nearest entity object or <code>null</code> if no entity can be resolved
7295
7378
  */
7296
7379
  ODataModel.prototype.getEntityByPath = function(sPath, oContext, oEntityInfo) {
7297
- var sResolvedPath = Model.prototype.resolve.call(this,sPath, oContext);
7380
+ var sKey,
7381
+ sResolvedPath = Model.prototype.resolve.call(this,sPath, oContext);
7382
+
7298
7383
  if (!sResolvedPath) {
7299
7384
  return null;
7300
7385
  }
@@ -7305,7 +7390,7 @@ sap.ui.define([
7305
7390
  var sEntryPath = aParts.join("/"),
7306
7391
  oObject = this._getObject(sEntryPath);
7307
7392
  if (isPlainObject(oObject)) {
7308
- var sKey = this._getKey(oObject);
7393
+ sKey = this._getKey(oObject);
7309
7394
  if (sKey) {
7310
7395
  oEntity = oObject;
7311
7396
  break;
@@ -7484,12 +7569,10 @@ sap.ui.define([
7484
7569
  sTargetPath = sPath + "/" + n;
7485
7570
  if (isPlainObject(oObject)) {
7486
7571
  this.decreaseLaundering(sTargetPath, oObject);
7487
- } else {
7488
- if (sTargetPath in this.mLaunderingState) {
7489
- this.mLaunderingState[sTargetPath]--;
7490
- if (this.mLaunderingState[sTargetPath] === 0) {
7491
- delete this.mLaunderingState[sTargetPath];
7492
- }
7572
+ } else if (sTargetPath in this.mLaunderingState) {
7573
+ this.mLaunderingState[sTargetPath]--;
7574
+ if (this.mLaunderingState[sTargetPath] === 0) {
7575
+ delete this.mLaunderingState[sTargetPath];
7493
7576
  }
7494
7577
  }
7495
7578
  }
@@ -7500,14 +7583,23 @@ sap.ui.define([
7500
7583
  };
7501
7584
 
7502
7585
  /**
7503
- * Returns bRefreshAfterChange value for a change operation based on refreshAfterChange parameter and global bRefreshAfterChange flag state
7586
+ * Returns bRefreshAfterChange value for a change operation based on
7587
+ * <code>refreshAfterChange</code> parameter and global <code>bRefreshAfterChange</code> flag
7588
+ * state.
7589
+ *
7590
+ * @param {boolean} bRefreshAfterChange
7591
+ * Value of the <code>refreshAfterChange</code> parameter of any change operation (for example
7592
+ * {@link #update})
7593
+ * @param {string} sGroupId
7594
+ * ID of the request group
7595
+ * @returns {boolean}
7596
+ * Whether to refresh after change
7504
7597
  *
7505
- * @param {boolean} bRefreshAfterChange Value of the <code>refreshAfterChange</code> parameter of any change operation (for example {@link #update})
7506
- * @param {string} sGroupId ID of the request group
7507
7598
  * @private
7508
7599
  */
7509
7600
  ODataModel.prototype._getRefreshAfterChange = function(bRefreshAfterChange, sGroupId) {
7510
- // If no bRefreshAfterChange parameter is given given and the request group is not deferred, use the global flag
7601
+ // If no bRefreshAfterChange parameter is given given and the request group is not deferred,
7602
+ // use the global flag
7511
7603
  if (bRefreshAfterChange === undefined && !(sGroupId in this.mDeferredGroups)) {
7512
7604
  return this.bRefreshAfterChange;
7513
7605
  }
@@ -7518,8 +7610,8 @@ sap.ui.define([
7518
7610
  * Get all messages for an entity path.
7519
7611
  *
7520
7612
  * @param {string} sEntity The entity path or key
7521
- * @param {boolean} bExcludePersistent If set to true, messages flagged as persistent are
7522
- * excluded.
7613
+ * @param {boolean} bExcludePersistent Whether persistent messages should be exluded
7614
+ * @returns {object[]|undefined} The messages for the entity
7523
7615
  * @private
7524
7616
  */
7525
7617
  ODataModel.prototype.getMessagesByEntity = function(sEntity, bExcludePersistent) {
@@ -7552,8 +7644,11 @@ sap.ui.define([
7552
7644
  };
7553
7645
 
7554
7646
  /**
7555
- * Check if Caching is supported. All urls must at least provide a 'sap-context-token' query parameter
7556
- * or a valid cache buster token segment.
7647
+ * Check if Caching is supported. All URLs must at least provide a 'sap-context-token' query
7648
+ * parameter or a valid cache buster token segment.
7649
+ *
7650
+ * @param {string} sMetadataUrl The metadata URL
7651
+ * @returns {boolean} Whether caching is supported
7557
7652
  *
7558
7653
  * @private
7559
7654
  */
@@ -7580,7 +7675,10 @@ sap.ui.define([
7580
7675
  };
7581
7676
 
7582
7677
  /**
7583
- * create cache key for annotations
7678
+ * Create cache key for annotations.
7679
+ *
7680
+ * @param {string} sMetadataUrl The metadata URL
7681
+ * @returns {string} The cache key
7584
7682
  *
7585
7683
  * @private
7586
7684
  */
@@ -7620,7 +7718,7 @@ sap.ui.define([
7620
7718
  /**
7621
7719
  * Decreases the internal deferred request counter, if the request is/was deferred.
7622
7720
  *
7623
- * @param {oRequest} Request, which was completed.
7721
+ * @param {object} oRequest The completed request
7624
7722
  */
7625
7723
  ODataModel.prototype._decreaseDeferredRequestCount = function(oRequest){
7626
7724
  if (oRequest.deferred){
@@ -7693,9 +7791,9 @@ sap.ui.define([
7693
7791
  };
7694
7792
 
7695
7793
  /**
7696
- * Enriches the context with the deep path information.
7697
- * Gets the OData V2 context instance for the given path. The returned context is cached by the
7698
- * given path.
7794
+ * Gets or creates the OData V2 context for the given path; the returned context is cached by
7795
+ * this path. Enriches the context with the given deep path. In case the context is created, the
7796
+ * parameters <code>oCreatePromise</code> and <code>bInactive</code> are used for the creation.
7699
7797
  *
7700
7798
  * @param {string} sPath
7701
7799
  * The absolute path
@@ -7703,15 +7801,18 @@ sap.ui.define([
7703
7801
  * The absolute deep path representing the same data as the given <code>sPath</code>
7704
7802
  * @param {sap.ui.base.SyncPromise} [oCreatePromise]
7705
7803
  * A created promise as specified in the constructor of {@link sap.ui.model.odata.v2.Context}
7804
+ * @param {boolean} [bInactive]
7805
+ * Whether the created context is inactive
7706
7806
  * @returns {sap.ui.model.odata.v2.Context}
7707
7807
  * The ODate V2 context for the given path
7708
7808
  * @private
7709
7809
  */
7710
- ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise) {
7810
+ ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise, bInactive) {
7711
7811
  var oContext = this.mContexts[sPath];
7712
7812
 
7713
7813
  if (!oContext) {
7714
- oContext = this.mContexts[sPath] = new Context(this, sPath, sDeepPath, oCreatePromise);
7814
+ oContext = this.mContexts[sPath]
7815
+ = new Context(this, sPath, sDeepPath, oCreatePromise, bInactive);
7715
7816
  } else {
7716
7817
  oContext.setDeepPath(sDeepPath || oContext.getDeepPath() || sPath);
7717
7818
  }
@@ -7762,7 +7863,10 @@ sap.ui.define([
7762
7863
 
7763
7864
  /**
7764
7865
  * Checks whether canonical requests are necessary.
7765
- * @param {boolean} [bCanonicalRequest] is regarded with priority when checking whether canonical requests are required.
7866
+ * @param {boolean} [bCanonicalRequest]
7867
+ * Is regarded with priority when checking whether canonical requests are required
7868
+ *
7869
+ * @returns {boolean} Whether canonical requests are necessary
7766
7870
  */
7767
7871
  ODataModel.prototype._isCanonicalRequestNeeded = function(bCanonicalRequest){
7768
7872
  if (bCanonicalRequest !== undefined){
@@ -7777,7 +7881,7 @@ sap.ui.define([
7777
7881
  * path prefix. Use <code>fullTarget</code> to determine whether a message matches the resolved
7778
7882
  * binding path prefix.
7779
7883
  *
7780
- * @param {string} sMessageTarget
7884
+ * @param {string} sMessagePath
7781
7885
  * The messages target used as key in <code>this.mMessages</code>
7782
7886
  * @param {string} sPathPrefix
7783
7887
  * The resolved binding path prefix