@openui5/sap.ui.core 1.93.3 → 1.96.2

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 (416) hide show
  1. package/.eslintrc.json +13 -2
  2. package/.reuse/dep5 +6 -11
  3. package/THIRDPARTY.txt +10 -16
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +5 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +37 -42
  56. package/src/sap/ui/Global.js +8 -7
  57. package/src/sap/ui/base/DataType.js +14 -8
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/ExpressionParser.js +9 -6
  61. package/src/sap/ui/base/Interface.js +3 -49
  62. package/src/sap/ui/base/ManagedObject.js +12 -7
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +49 -4
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/base/syncXHRFix.js +2 -1
  68. package/src/sap/ui/core/.library +5 -5
  69. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  70. package/src/sap/ui/core/BusyIndicator.js +1 -11
  71. package/src/sap/ui/core/Component.js +300 -140
  72. package/src/sap/ui/core/ComponentContainer.js +24 -8
  73. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +67 -31
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +103 -25
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  80. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +4 -2
  83. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  86. package/src/sap/ui/core/Fragment.js +30 -32
  87. package/src/sap/ui/core/HTML.js +1 -1
  88. package/src/sap/ui/core/History.js +1 -1
  89. package/src/sap/ui/core/Icon.js +7 -8
  90. package/src/sap/ui/core/IconPool.js +26 -1097
  91. package/src/sap/ui/core/IconRenderer.js +6 -6
  92. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  93. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  94. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  95. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  96. package/src/sap/ui/core/InvisibleText.js +1 -1
  97. package/src/sap/ui/core/Item.js +1 -1
  98. package/src/sap/ui/core/LabelEnablement.js +1 -1
  99. package/src/sap/ui/core/LayoutData.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +26 -4
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +4 -61
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Patcher.js +27 -3
  107. package/src/sap/ui/core/Placeholder.js +28 -15
  108. package/src/sap/ui/core/RenderManager.js +36 -6
  109. package/src/sap/ui/core/Renderer.js +13 -3
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +2 -2
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +42 -16
  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 +2 -2
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +116 -41
  124. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  133. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  134. package/src/sap/ui/core/library.js +3 -3
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +13 -15
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  141. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  145. package/src/sap/ui/core/mvc/Controller.js +38 -19
  146. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  147. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  148. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  149. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  150. package/src/sap/ui/core/mvc/JSView.js +2 -2
  151. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  152. package/src/sap/ui/core/mvc/View.js +58 -85
  153. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  154. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  155. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  157. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  158. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  159. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  160. package/src/sap/ui/core/routing/History.js +10 -2
  161. package/src/sap/ui/core/routing/Router.js +8 -1
  162. package/src/sap/ui/core/routing/Target.js +13 -0
  163. package/src/sap/ui/core/routing/Targets.js +13 -2
  164. package/src/sap/ui/core/routing/async/Route.js +1 -1
  165. package/src/sap/ui/core/routing/async/Target.js +353 -259
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  172. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  173. package/src/sap/ui/core/support/Plugin.js +1 -1
  174. package/src/sap/ui/core/support/Support.js +1 -1
  175. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  176. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  177. package/src/sap/ui/core/support/controls/ObjectViewer.js +3 -41
  178. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  179. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  180. package/src/sap/ui/core/support/plugins/ControlTree.js +59 -68
  181. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  182. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  183. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  184. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  185. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  186. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  187. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  188. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  189. package/src/sap/ui/core/support/support.css +109 -14
  190. package/src/sap/ui/core/support/support.html +6 -2
  191. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  192. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  193. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  194. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  195. package/src/sap/ui/core/theming/Parameters.js +6 -4
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +10 -28
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  201. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  202. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  203. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  204. package/src/sap/ui/core/util/Export.js +1 -1
  205. package/src/sap/ui/core/util/ExportCell.js +1 -1
  206. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  207. package/src/sap/ui/core/util/ExportRow.js +1 -1
  208. package/src/sap/ui/core/util/ExportType.js +1 -1
  209. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  210. package/src/sap/ui/core/util/File.js +1 -1
  211. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  212. package/src/sap/ui/core/util/MockServer.js +5 -5
  213. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  214. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  215. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  216. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +136 -63
  217. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +170 -153
  218. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +424 -293
  219. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  220. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  221. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  222. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  223. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  224. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  225. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  226. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  227. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  228. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  229. package/src/sap/ui/debug/ControlTree.js +10 -4
  230. package/src/sap/ui/debug/DebugEnv.js +3 -4
  231. package/src/sap/ui/debug/Highlighter.js +8 -2
  232. package/src/sap/ui/debug/PropertyList.css +55 -0
  233. package/src/sap/ui/debug/PropertyList.js +111 -182
  234. package/src/sap/ui/model/Binding.js +174 -118
  235. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  236. package/src/sap/ui/model/ClientListBinding.js +1 -3
  237. package/src/sap/ui/model/ClientModel.js +4 -4
  238. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  239. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  240. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  241. package/src/sap/ui/model/CompositeBinding.js +98 -77
  242. package/src/sap/ui/model/CompositeDataState.js +2 -2
  243. package/src/sap/ui/model/CompositeType.js +2 -2
  244. package/src/sap/ui/model/Context.js +4 -2
  245. package/src/sap/ui/model/ContextBinding.js +6 -14
  246. package/src/sap/ui/model/DataState.js +2 -2
  247. package/src/sap/ui/model/Filter.js +255 -53
  248. package/src/sap/ui/model/FilterOperator.js +1 -1
  249. package/src/sap/ui/model/FilterProcessor.js +27 -17
  250. package/src/sap/ui/model/FilterType.js +1 -1
  251. package/src/sap/ui/model/ListBinding.js +180 -117
  252. package/src/sap/ui/model/MetaModel.js +4 -9
  253. package/src/sap/ui/model/Model.js +345 -294
  254. package/src/sap/ui/model/PropertyBinding.js +92 -58
  255. package/src/sap/ui/model/SelectionModel.js +2 -2
  256. package/src/sap/ui/model/SimpleType.js +2 -2
  257. package/src/sap/ui/model/Sorter.js +1 -1
  258. package/src/sap/ui/model/SorterProcessor.js +1 -1
  259. package/src/sap/ui/model/StaticBinding.js +1 -1
  260. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  261. package/src/sap/ui/model/TreeBinding.js +1 -1
  262. package/src/sap/ui/model/TreeBindingAdapter.js +251 -100
  263. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  264. package/src/sap/ui/model/TreeBindingUtils.js +1 -0
  265. package/src/sap/ui/model/Type.js +1 -1
  266. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -4
  267. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  268. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  269. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  270. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  271. package/src/sap/ui/model/analytics/odata4analytics.js +34 -25
  272. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  273. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  274. package/src/sap/ui/model/json/JSONModel.js +24 -15
  275. package/src/sap/ui/model/json/JSONPropertyBinding.js +4 -3
  276. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  277. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  278. package/src/sap/ui/model/message/MessageModel.js +23 -15
  279. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  280. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  281. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  282. package/src/sap/ui/model/odata/CountMode.js +1 -1
  283. package/src/sap/ui/model/odata/Filter.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  285. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  286. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  288. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -3
  289. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  290. package/src/sap/ui/model/odata/ODataModel.js +8 -7
  291. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  292. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  293. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  294. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +2 -2
  295. package/src/sap/ui/model/odata/ODataUtils.js +13 -11
  296. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  297. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  298. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  299. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  300. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  301. package/src/sap/ui/model/odata/type/Date.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  303. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  304. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  305. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  306. package/src/sap/ui/model/odata/type/Double.js +1 -1
  307. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  310. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  311. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  312. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  313. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  314. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Single.js +1 -1
  316. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  317. package/src/sap/ui/model/odata/type/String.js +1 -1
  318. package/src/sap/ui/model/odata/type/Time.js +1 -1
  319. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  320. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  321. package/src/sap/ui/model/odata/v2/Context.js +81 -9
  322. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -3
  323. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +39 -49
  324. package/src/sap/ui/model/odata/v2/ODataListBinding.js +236 -73
  325. package/src/sap/ui/model/odata/v2/ODataModel.js +314 -164
  326. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +110 -97
  327. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +129 -0
  328. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  329. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -6
  330. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +117 -40
  331. package/src/sap/ui/model/odata/v4/ODataListBinding.js +95 -15
  332. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -31
  333. package/src/sap/ui/model/odata/v4/ODataModel.js +86 -78
  334. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -28
  335. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -7
  336. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  337. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +8 -1
  338. package/src/sap/ui/model/odata/v4/lib/_Cache.js +24 -16
  339. package/src/sap/ui/model/odata/v4/lib/_Helper.js +32 -30
  340. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +52 -17
  341. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  342. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  343. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  344. package/src/sap/ui/model/type/Boolean.js +2 -2
  345. package/src/sap/ui/model/type/Currency.js +2 -2
  346. package/src/sap/ui/model/type/Date.js +9 -3
  347. package/src/sap/ui/model/type/DateInterval.js +4 -2
  348. package/src/sap/ui/model/type/DateTime.js +2 -2
  349. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  350. package/src/sap/ui/model/type/FileSize.js +4 -2
  351. package/src/sap/ui/model/type/Float.js +4 -2
  352. package/src/sap/ui/model/type/Integer.js +4 -2
  353. package/src/sap/ui/model/type/String.js +2 -2
  354. package/src/sap/ui/model/type/Time.js +2 -2
  355. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  356. package/src/sap/ui/model/type/Unit.js +14 -7
  357. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  358. package/src/sap/ui/model/xml/XMLModel.js +70 -41
  359. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -4
  360. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  361. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  362. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  363. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  364. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  365. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  366. package/src/sap/ui/test/TestUtils.js +11 -4
  367. package/src/sap/ui/test/actions/Drag.js +6 -2
  368. package/src/sap/ui/test/actions/Drop.js +6 -2
  369. package/src/sap/ui/test/actions/EnterText.js +6 -0
  370. package/src/sap/ui/test/actions/Press.js +6 -0
  371. package/src/sap/ui/test/actions/Scroll.js +6 -0
  372. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  373. package/src/sap/ui/test/launchers/componentLauncher.js +0 -4
  374. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  375. package/src/sap/ui/test/opaQunit.js +5 -0
  376. package/src/sap/ui/thirdparty/crossroads.js +6 -4
  377. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  380. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  399. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  400. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  401. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  402. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  403. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  404. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  405. package/src/sap/ui/thirdparty/jquery.js +9 -1
  406. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  407. package/src/sap/ui/thirdparty/qunit.js +1 -1
  408. package/src/sap/ui/util/Mobile.js +2 -20
  409. package/src/sap/ui/util/Storage.js +1 -1
  410. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  411. package/src/sap-ui-core-nojQuery.js +1 -1
  412. package/src/sap-ui-core.js +1 -1
  413. package/src/sap-ui-debug.js +3 -17
  414. package/ui5.yaml +5 -2
  415. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  416. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -137,7 +137,7 @@ sap.ui.define([
137
137
  * @extends sap.ui.model.odata.type.ODataType
138
138
  *
139
139
  * @author SAP SE
140
- * @version 1.93.3
140
+ * @version 1.96.2
141
141
  *
142
142
  * @alias sap.ui.model.odata.type.Int64
143
143
  * @param {object} [oFormatOptions]
@@ -115,7 +115,7 @@ sap.ui.define([
115
115
  * @extends sap.ui.model.SimpleType
116
116
  *
117
117
  * @author SAP SE
118
- * @version 1.93.3
118
+ * @version 1.96.2
119
119
  *
120
120
  * @abstract
121
121
  * @alias sap.ui.model.odata.type.ODataType
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.model.odata.type.ODataType
31
31
  * @public
32
32
  * @since 1.37.0
33
- * @version 1.93.3
33
+ * @version 1.96.2
34
34
  */
35
35
  var Raw = ODataType.extend("sap.ui.model.odata.type.Raw", {
36
36
  constructor : function (oFormatOptions, oConstraints) {
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.93.3
27
+ * @version 1.96.2
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.SByte
30
30
  * @param {object} [oFormatOptions]
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.model.odata.type.ODataType
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.93.3
98
+ * @version 1.96.2
99
99
  *
100
100
  * @alias sap.ui.model.odata.type.Single
101
101
  * @param {object} [oFormatOptions]
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @extends sap.ui.model.odata.type.ODataType
61
61
  * @public
62
62
  * @since 1.51.0
63
- * @version 1.93.3
63
+ * @version 1.96.2
64
64
  */
65
65
  var Stream = ODataType.extend("sap.ui.model.odata.type.Stream", {
66
66
  constructor : function (oFormatOptions, oConstraints) {
@@ -84,7 +84,7 @@ sap.ui.define([
84
84
  * @extends sap.ui.model.odata.type.ODataType
85
85
  *
86
86
  * @author SAP SE
87
- * @version 1.93.3
87
+ * @version 1.96.2
88
88
  *
89
89
  * @alias sap.ui.model.odata.type.String
90
90
  * @param {object} [oFormatOptions]
@@ -154,7 +154,7 @@ sap.ui.define([
154
154
  * @extends sap.ui.model.odata.type.ODataType
155
155
  *
156
156
  * @author SAP SE
157
- * @version 1.93.3
157
+ * @version 1.96.2
158
158
  *
159
159
  * @alias sap.ui.model.odata.type.Time
160
160
  * @param {object} [oFormatOptions]
@@ -110,7 +110,7 @@ sap.ui.define([
110
110
  * @extends sap.ui.model.odata.type.ODataType
111
111
  * @public
112
112
  * @since 1.37.0
113
- * @version 1.93.3
113
+ * @version 1.96.2
114
114
  */
115
115
  var TimeOfDay = ODataType.extend("sap.ui.model.odata.type.TimeOfDay", {
116
116
  constructor : function (oFormatOptions, oConstraints) {
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @extends sap.ui.model.type.Unit
64
64
  * @public
65
65
  * @since 1.63.0
66
- * @version 1.93.3
66
+ * @version 1.96.2
67
67
  */
68
68
  var Unit = BaseUnit.extend("sap.ui.model.odata.type.Unit", {
69
69
  constructor : function (oFormatOptions, oConstraints, aDynamicFormatOptionNames) {
@@ -19,6 +19,18 @@ sap.ui.define([
19
19
  * An absolute path without trailing slash, for example "/Products(1)/ToSupplier"
20
20
  * @param {string} [sDeepPath=sPath]
21
21
  * The absolute deep path including all intermediate paths of the binding hierarchy
22
+ * @param {sap.ui.base.SyncPromise} [oCreatePromise]
23
+ * A sync promise that is given when this context has been created by
24
+ * {@link sap.ui.model.odata.v2.ODataModel#createEntry}.
25
+ *
26
+ * When the entity represented by this context has been successfully persisted in the back
27
+ * end, the given promise resolves.
28
+ *
29
+ * When the entity is deleted before it has been persisted in the back end via
30
+ * {@link sap.ui.model.odata.v2.ODataModel#resetChanges} with the
31
+ * <code>bDeleteCreatedEntities</code> parameter set to <code>true</code>, the given promise
32
+ * rejects with an object <code>oError</code> containing the error information, where
33
+ * <code>oError.aborted === true</code>.
22
34
  * @alias sap.ui.model.odata.v2.Context
23
35
  * @author SAP SE
24
36
  * @class Implementation of an OData V2 model's context.
@@ -31,6 +43,7 @@ sap.ui.define([
31
43
  * <ul>
32
44
  * <li>an OData binding</li>
33
45
  * <li>a view element</li>
46
+ * <li>{@link sap.ui.model.odata.v2.ODataModel#callFunction}</li>
34
47
  * <li>{@link sap.ui.model.odata.v2.ODataModel#createBindingContext}</li>
35
48
  * <li>{@link sap.ui.model.odata.v2.ODataModel#createEntry}</li>
36
49
  * </ul>
@@ -39,13 +52,15 @@ sap.ui.define([
39
52
  * @hideconstructor
40
53
  * @public
41
54
  * @since 1.93.0
42
- * @version 1.93.3
55
+ * @version 1.96.2
43
56
  */
44
57
  var Context = BaseContext.extend("sap.ui.model.odata.v2.Context", {
45
- constructor : function (oModel, sPath, sDeepPath) {
58
+ constructor : function (oModel, sPath, sDeepPath, oCreatePromise) {
46
59
  BaseContext.call(this, oModel, sPath);
47
- // whether a new entity was created by ODataModel#createEntry and not yet persisted
48
- this.bCreated = false;
60
+ // Promise returned by #created for a context of a newly created entity which
61
+ // resolves when the entity is persisted or rejects if the creation is aborted; set
62
+ // it lazily to avoid "Uncaught (in promise)" errors
63
+ this.oCreatePromise = undefined;
49
64
  // the absolute path including all intermediate paths of the binding hierarchy;
50
65
  // used to compute the full target of messages
51
66
  this.sDeepPath = sDeepPath || sPath;
@@ -54,12 +69,51 @@ sap.ui.define([
54
69
  // whether this context's path may be used to create the request URL for dependent
55
70
  // bindings even if no data has been loaded for the context's entity
56
71
  this.bPreliminary = false;
72
+ // SyncPromise for a context created via
73
+ // sap.ui.model.odata.v2.ODataModel#createEntry; used internally to detect
74
+ // synchronously whether the promise is already fulfilled
75
+ this.oSyncCreatePromise = oCreatePromise;
57
76
  // whether the context is updated, e.g. path changed from a preliminary path to the
58
77
  // canonical one
59
78
  this.bUpdated = false;
60
79
  }
61
80
  });
62
81
 
82
+ /**
83
+ * Returns a promise on the creation state of this context if it has been created via
84
+ * {@link sap.ui.model.odata.v2.ODataModel#createEntry}; otherwise returns
85
+ * <code>undefined</code>.
86
+ *
87
+ * As long as the promise is not yet resolved or rejected, the entity represented by this
88
+ * context is transient.
89
+ *
90
+ * Once the promise is resolved, the entity for this context is stored in the back end and
91
+ * {@link #getPath} returns a path including the key predicate of the new entity.
92
+ *
93
+ * @returns {Promise}
94
+ * A promise for a context which has been created via
95
+ * {@link sap.ui.model.odata.v2.ODataModel#createEntry}, otherwise <code>undefined</code>.
96
+ *
97
+ * When the entity represented by this context has been persisted in the back end, the promise
98
+ * resolves without data.
99
+ *
100
+ * When the entity is deleted before it has been persisted in the back end via
101
+ * {@link sap.ui.model.odata.v2.ODataModel#resetChanges} with the
102
+ * <code>bDeleteCreatedEntities</code> parameter set to <code>true</code>, the promise rejects
103
+ * with an object <code>oError</code> containing the error information, where
104
+ * <code>oError.aborted === true</code>.
105
+ *
106
+ * @public
107
+ * @since 1.96.0
108
+ */
109
+ Context.prototype.created = function () {
110
+ if (this.oSyncCreatePromise && !this.oCreatePromise) {
111
+ // ensure to return a promise that is resolved w/o data
112
+ this.oCreatePromise = Promise.resolve(this.oSyncCreatePromise).then(function () {});
113
+ }
114
+
115
+ return this.oCreatePromise;
116
+ };
63
117
 
64
118
  /**
65
119
  * Gets the absolute deep path including all intermediate paths of the binding hierarchy. This
@@ -68,7 +122,7 @@ sap.ui.define([
68
122
  * @return {string} The deep path
69
123
  * @private
70
124
  */
71
- Context.prototype.getDeepPath = function () {
125
+ Context.prototype.getDeepPath = function () {
72
126
  return this.sDeepPath;
73
127
  };
74
128
 
@@ -81,7 +135,7 @@ sap.ui.define([
81
135
  * @see sap.ui.model.odata.v2.Context#isUpdated
82
136
  * @see sap.ui.model.odata.v2.Context#isRefreshForced
83
137
  */
84
- Context.prototype.hasChanged = function() {
138
+ Context.prototype.hasChanged = function () {
85
139
  return this.bUpdated || this.bForceRefresh;
86
140
  };
87
141
 
@@ -94,7 +148,7 @@ sap.ui.define([
94
148
  * @private
95
149
  * @ui5-restricted sap.suite.ui.generic
96
150
  */
97
- Context.prototype.isPreliminary = function () {
151
+ Context.prototype.isPreliminary = function () {
98
152
  return this.bPreliminary;
99
153
  };
100
154
 
@@ -105,10 +159,28 @@ sap.ui.define([
105
159
  * @return {boolean} Whether dependent bindings need to be refreshed
106
160
  * @private
107
161
  */
108
- Context.prototype.isRefreshForced = function () {
162
+ Context.prototype.isRefreshForced = function () {
109
163
  return this.bForceRefresh;
110
164
  };
111
165
 
166
+ /**
167
+ * For a context created using {@link sap.ui.model.odata.v2.ODataModel#createEntry}, the method
168
+ * returns <code>true</code> if the context is transient or <code>false</code> if the context is
169
+ * not transient. A transient context represents an entity created on the client which has not
170
+ * been persisted in the back end.
171
+ *
172
+ * @returns {boolean}
173
+ * Whether this context is transient if it has been created using
174
+ * {@link sap.ui.model.odata.v2.ODataModel#createEntry}; returns <code>undefined</code> if the
175
+ * context has not been created using {@link sap.ui.model.odata.v2.ODataModel#createEntry}
176
+ *
177
+ * @public
178
+ * @since 1.94.0
179
+ */
180
+ Context.prototype.isTransient = function () {
181
+ return this.oSyncCreatePromise && this.oSyncCreatePromise.isPending();
182
+ };
183
+
112
184
  /**
113
185
  * Whether this context was updated. For example the path changed from a preliminary path to the
114
186
  * canonical one.
@@ -116,7 +188,7 @@ sap.ui.define([
116
188
  * @return {boolean} Whether the context is updated
117
189
  * @private
118
190
  */
119
- Context.prototype.isUpdated = function () {
191
+ Context.prototype.isUpdated = function () {
120
192
  return this.bUpdated;
121
193
  };
122
194
 
@@ -3,7 +3,7 @@
3
3
  * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
-
6
+ /*eslint-disable max-len */
7
7
  // Provides class sap.ui.model.odata.v2.ODataAnnotations
8
8
  sap.ui.define([
9
9
  "sap/base/assert",
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @class Annotation loader for OData V2 services
36
36
  *
37
37
  * @author SAP SE
38
- * @version 1.93.3
38
+ * @version 1.96.2
39
39
  *
40
40
  * @public
41
41
  * @since 1.37.0
@@ -684,7 +684,7 @@ sap.ui.define([
684
684
 
685
685
  /**
686
686
  * Loads a given source (sap.ui.model.odata.v2.ODataAnnotations.Source) if necessary and returns a promise that resolves
687
- * if the source could be loaded or no laoding is necessary. In case the source type is neither "xml" nor "url" or
687
+ * if the source could be loaded or no loading is necessary. In case the source type is neither "xml" nor "url" or
688
688
  * the loading of the source fails, the promise rejects.
689
689
  *
690
690
  * @param {sap.ui.model.odata.v2.ODataAnnotations.Source} mSource The source to be loaded
@@ -3,7 +3,7 @@
3
3
  * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
-
6
+ /*eslint-disable max-len */
7
7
  //Provides an abstraction for list bindings
8
8
  sap.ui.define([
9
9
  "sap/base/util/deepExtend",
@@ -73,57 +73,54 @@ sap.ui.define([
73
73
  * @see sap.ui.model.Binding.prototype.initialize
74
74
  */
75
75
  ODataContextBinding.prototype.initialize = function() {
76
- var that = this,
77
- sResolvedPath,
78
- bCreatedRelative = this.isRelative() && this.oContext && this.oContext.bCreated,
76
+ var oContext, bReloadNeeded, sResolvedPath,
79
77
  bPreliminary = this.oContext && this.oContext.isPreliminary(),
80
- bReloadNeeded;
78
+ bRelativeAndTransient = this.isRelative()
79
+ && this.oContext && this.oContext.isTransient && this.oContext.isTransient(),
80
+ that = this;
81
81
 
82
82
  // don't fire any requests if metadata is not loaded yet.
83
83
  if (!this.oModel.oMetadata.isLoaded() || !this.bInitial) {
84
84
  return;
85
85
  }
86
-
87
86
  this.bInitial = false;
88
-
89
87
  // If context is preliminary and usePreliminary is not set, exit here
90
88
  if (bPreliminary && !this.bUsePreliminaryContext) {
91
89
  return;
92
90
  }
93
-
94
91
  // if path cannot be resolved or parent context is created, set element context to null
95
92
  sResolvedPath = this.getResolvedPath();
96
- if (!sResolvedPath || bCreatedRelative) {
93
+ if (!sResolvedPath || bRelativeAndTransient) {
97
94
  this.oElementContext = null;
98
95
  this._fireChange({ reason: ChangeReason.Context });
96
+
99
97
  return;
100
98
  }
101
-
102
99
  // check whether a request is necessary and create binding context
103
100
  bReloadNeeded = this.oModel._isReloadNeeded(sResolvedPath, this.mParameters);
104
101
  if (bReloadNeeded) {
105
102
  this.fireDataRequested();
106
103
  this.bPendingRequest = true;
107
104
  }
108
- var oContext = this.oModel.createBindingContext(this.sPath, this.oContext, this.mParameters, function(oContext) {
105
+ oContext = this.oModel.createBindingContext(this.sPath, this.oContext, this.mParameters,
106
+ function (oNewContext) {
109
107
  var oData,
110
- bUpdated = oContext && oContext.isUpdated(),
111
- bForceRefresh = oContext && oContext.isRefreshForced();
108
+ bForceRefresh = oNewContext && oNewContext.isRefreshForced(),
109
+ bUpdated = oNewContext && oNewContext.isUpdated();
112
110
 
113
- if (that.bCreatePreliminaryContext && oContext && that.oElementContext) {
111
+ if (that.bCreatePreliminaryContext && oNewContext && that.oElementContext) {
114
112
  that.oElementContext.setPreliminary(false);
115
- that.oModel._updateContext(that.oElementContext, oContext.getPath());
113
+ that.oModel._updateContext(that.oElementContext, oNewContext.getPath());
116
114
  that._fireChange({ reason: ChangeReason.Context }, false, true);
117
- } else if (!oContext || Context.hasChanged(oContext, that.oElementContext)) {
118
- that.oElementContext = oContext;
115
+ } else if (!oNewContext || Context.hasChanged(oNewContext, that.oElementContext)) {
116
+ that.oElementContext = oNewContext;
119
117
  that._fireChange({ reason: ChangeReason.Context }, bForceRefresh, bUpdated);
120
118
  }
121
-
122
119
  if (bReloadNeeded) {
123
120
  if (that.oElementContext) {
124
121
  oData = that.oElementContext.getObject(that.mParameters);
125
122
  }
126
- // register datareceived call as callAfterUpdate
123
+ // register data received call as callAfterUpdate
127
124
  that.oModel.callAfterUpdate(function() {
128
125
  that.fireDataReceived({data: oData});
129
126
  });
@@ -209,16 +206,17 @@ sap.ui.define([
209
206
  * @private
210
207
  */
211
208
  ODataContextBinding.prototype._refresh = function(bForceUpdate, mChangedEntities) {
212
- var that = this, oData, sKey, oStoredEntry, bChangeDetected = false,
209
+ var oContext, sContextPath, oData, sKey, oStoredEntry,
210
+ bChangeDetected = false,
213
211
  mParameters = this.mParameters,
214
- bCreatedRelative = this.isRelative() && this.oContext && this.oContext.bCreated,
212
+ bRelativeAndTransient = this.isRelative()
213
+ && this.oContext && this.oContext.isTransient && this.oContext.isTransient(),
215
214
  sResolvedPath = this.getResolvedPath(),
216
- sContextPath;
215
+ that = this;
217
216
 
218
- if (this.bInitial || bCreatedRelative) {
217
+ if (this.bInitial || bRelativeAndTransient) {
219
218
  return;
220
219
  }
221
-
222
220
  if (mChangedEntities) {
223
221
  //get entry from model. If entry exists get key for update bindings
224
222
  oStoredEntry = this.oModel._getObject(this.sPath, this.oContext);
@@ -241,19 +239,20 @@ sap.ui.define([
241
239
  mParameters = extend({},this.mParameters);
242
240
  mParameters.groupId = this.sRefreshGroupId;
243
241
  }
244
- var oContext = this.oModel.createBindingContext(this.sPath, this.oContext, mParameters, function(oContext) {
245
- if (that.bCreatePreliminaryContext && oContext && that.oElementContext) {
242
+ oContext = this.oModel.createBindingContext(this.sPath, this.oContext, mParameters,
243
+ function (oNewContext) {
244
+ if (that.bCreatePreliminaryContext && oNewContext && that.oElementContext) {
246
245
  that.oElementContext.setPreliminary(false);
247
- that.oModel._updateContext(that.oElementContext, oContext.getPath());
246
+ that.oModel._updateContext(that.oElementContext, oNewContext.getPath());
248
247
  that._fireChange({ reason: ChangeReason.Context }, false, true);
249
- } else if (Context.hasChanged(oContext, that.oElementContext) || bForceUpdate) {
250
- that.oElementContext = oContext;
248
+ } else if (Context.hasChanged(oNewContext, that.oElementContext) || bForceUpdate) {
249
+ that.oElementContext = oNewContext;
251
250
  that._fireChange({ reason: ChangeReason.Context }, bForceUpdate);
252
251
  }
253
252
  if (that.oElementContext) {
254
253
  oData = that.oElementContext.getObject(that.mParameters);
255
254
  }
256
- //register datareceived call as callAfterUpdate
255
+ //register data received call as callAfterUpdate
257
256
  if (sResolvedPath) {
258
257
  that.oModel.callAfterUpdate(function() {
259
258
  that.fireDataReceived({data: oData});
@@ -281,51 +280,42 @@ sap.ui.define([
281
280
  * @private
282
281
  */
283
282
  ODataContextBinding.prototype.setContext = function(oContext) {
284
- var that = this,
285
- oBindingContext,
286
- oData,
287
- sResolvedPath,
288
- bCreated = oContext && oContext.bCreated,
289
- bPreliminary = oContext && oContext.isPreliminary(),
283
+ var oBindingContext, sContextPath, oData, bReloadNeeded, sResolvedPath,
290
284
  bForceUpdate = oContext && oContext.isRefreshForced(),
285
+ bPreliminary = oContext && oContext.isPreliminary(),
286
+ bTransient = oContext && oContext.isTransient && oContext.isTransient(),
291
287
  bUpdated = oContext && oContext.isUpdated(),
292
- sContextPath, bReloadNeeded;
288
+ that = this;
293
289
 
294
290
  // If binding is initial or not a relative binding, nothing to do here
295
291
  if (this.bInitial || !this.isRelative()) {
296
292
  return;
297
293
  }
298
-
299
294
  // If context is preliminary and usePreliminary is not set, exit here
300
295
  if (bPreliminary && !this.bUsePreliminaryContext) {
301
296
  return;
302
297
  }
303
-
304
298
  if (bUpdated && this.bUsePreliminaryContext) {
305
299
  this._fireChange({ reason: ChangeReason.Context });
300
+
306
301
  return;
307
302
  }
308
-
309
303
  if (Context.hasChanged(this.oContext, oContext)) {
310
-
311
-
312
304
  this.oContext = oContext;
313
-
314
305
  sResolvedPath = this.getResolvedPath();
315
-
316
306
  // If path doesn't resolve or parent context is created, reset current context
317
- if (!sResolvedPath || bCreated) {
307
+ if (!sResolvedPath || bTransient) {
318
308
  if (this.oElementContext !== null) {
319
309
  this.oElementContext = null;
320
310
  this._fireChange({ reason: ChangeReason.Context });
321
311
  }
312
+
322
313
  return;
323
314
  }
324
-
325
315
  // Create new binding context and fire change
326
316
  oData = this.oModel._getObject(this.sPath, this.oContext);
327
- bReloadNeeded = bForceUpdate || this.oModel._isReloadNeeded(sResolvedPath, this.mParameters);
328
-
317
+ bReloadNeeded = bForceUpdate
318
+ || this.oModel._isReloadNeeded(sResolvedPath, this.mParameters);
329
319
  if (sResolvedPath && bReloadNeeded) {
330
320
  this.fireDataRequested();
331
321
  this.bPendingRequest = true;
@@ -344,7 +334,7 @@ sap.ui.define([
344
334
  if (that.oElementContext) {
345
335
  oData = that.oElementContext.getObject(that.mParameters);
346
336
  }
347
- //register datareceived call as callAfterUpdate
337
+ //register data received call as callAfterUpdate
348
338
  that.oModel.callAfterUpdate(function() {
349
339
  that.fireDataReceived({data: oData});
350
340
  });