@openui5/sap.ui.fl 1.129.0 → 1.130.1
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.
- package/THIRDPARTY.txt +1 -1
- package/package.json +3 -3
- package/src/sap/ui/fl/.library +1 -1
- package/src/sap/ui/fl/ChangePersistence.js +26 -38
- package/src/sap/ui/fl/ChangePersistenceFactory.js +1 -1
- package/src/sap/ui/fl/FakeLrepConnectorLocalStorage.js +1 -1
- package/src/sap/ui/fl/FakeLrepConnectorSessionStorage.js +1 -1
- package/src/sap/ui/fl/FakeLrepLocalStorage.js +1 -1
- package/src/sap/ui/fl/FlexController.js +1 -1
- package/src/sap/ui/fl/FlexControllerFactory.js +1 -1
- package/src/sap/ui/fl/LayerUtils.js +1 -1
- package/src/sap/ui/fl/Utils.js +8 -8
- package/src/sap/ui/fl/apply/_internal/DelegateMediator.js +1 -1
- package/src/sap/ui/fl/apply/_internal/appVariant/DescriptorChangeTypes.js +2 -1
- package/src/sap/ui/fl/apply/_internal/changes/Applier.js +152 -197
- package/src/sap/ui/fl/apply/_internal/changes/FlexCustomData.js +23 -17
- package/src/sap/ui/fl/apply/_internal/changes/Reverter.js +27 -37
- package/src/sap/ui/fl/apply/_internal/changes/Utils.js +26 -31
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/Preprocessor.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/Registration.js +3 -2
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/RegistrationBuild.js +2 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddAnnotationsToOData.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewDataSource.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewInbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewOutbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddTechnicalAttributes.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeDataSource.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeInbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeOutbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/RemoveAllInboundsExceptOne.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetAch.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetDescription.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetTitle.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetAbstract.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetCloudDevAdaptationStatus.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetRegistrationIds.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/AddNewCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/ChangeCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/DeleteCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddComponentUsages.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddLibrary.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModel.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModelEnhanceWith.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/ChangeModel.js +78 -0
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetFlexExtensionPointEnabled.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetMinUI5Version.js +1 -1
- package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageUtils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/extensionPoint/Processor.js +1 -1
- package/src/sap/ui/fl/apply/_internal/extensionPoint/Registry.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/AnnotationChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/AppDescriptorChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariant.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/ControllerExtensionChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlVariant.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObject.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObjectFactory.js +7 -3
- package/src/sap/ui/fl/apply/_internal/flexObjects/UIChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/Variant.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/getVariantAuthor.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/FlexObjectState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/FlexState.js +34 -13
- package/src/sap/ui/fl/apply/_internal/flexState/Loader.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/ManifestUtils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/ExtensionPointState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/UIChangesState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantManagementState.js +108 -0
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantMerger.js +2 -2
- package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/Switcher.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState.js +57 -9
- package/src/sap/ui/fl/apply/_internal/preprocessors/ComponentLifecycleHooks.js +2 -2
- package/src/sap/ui/fl/apply/_internal/preprocessors/ControllerExtension.js +1 -1
- package/src/sap/ui/fl/apply/_internal/preprocessors/RegistrationDelegator.js +6 -6
- package/src/sap/ui/fl/apply/_internal/preprocessors/XmlPreprocessor.js +1 -1
- package/src/sap/ui/fl/apply/api/ControlVariantApplyAPI.js +25 -10
- package/src/sap/ui/fl/apply/api/SmartVariantManagementApplyAPI.js +18 -45
- package/src/sap/ui/fl/changeHandler/AddIFrame.js +1 -1
- package/src/sap/ui/fl/changeHandler/AddXML.js +1 -1
- package/src/sap/ui/fl/changeHandler/AddXMLAtExtensionPoint.js +1 -1
- package/src/sap/ui/fl/changeHandler/Base.js +1 -1
- package/src/sap/ui/fl/changeHandler/BaseAddViaDelegate.js +1 -1
- package/src/sap/ui/fl/changeHandler/BaseAddXml.js +1 -1
- package/src/sap/ui/fl/changeHandler/BaseRename.js +1 -1
- package/src/sap/ui/fl/changeHandler/HideControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/MoveControls.js +1 -1
- package/src/sap/ui/fl/changeHandler/MoveElements.js +1 -1
- package/src/sap/ui/fl/changeHandler/PropertyBindingChange.js +1 -1
- package/src/sap/ui/fl/changeHandler/PropertyChange.js +1 -1
- package/src/sap/ui/fl/changeHandler/StashControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UnhideControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UnstashControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UpdateIFrame.js +1 -1
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory.js +4 -4
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory.js +1 -1
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorVariantFactory.js +1 -1
- package/src/sap/ui/fl/initial/_internal/FlexConfiguration.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Storage.js +37 -1
- package/src/sap/ui/fl/initial/_internal/StorageFeaturesMerger.js +1 -1
- package/src/sap/ui/fl/initial/_internal/StorageUtils.js +1 -1
- package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerRegistration.js +3 -2
- package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerStorage.js +1 -1
- package/src/sap/ui/fl/initial/_internal/connectors/Utils.js +1 -1
- package/src/sap/ui/fl/initial/_internal/storageResultDisassemble.js +1 -1
- package/src/sap/ui/fl/interfaces/BaseLoadConnector.js +15 -1
- package/src/sap/ui/fl/interfaces/Delegate.js +1 -1
- package/src/sap/ui/fl/library.js +43 -43
- package/src/sap/ui/fl/support/_internal/getAllUIChanges.js +1 -1
- package/src/sap/ui/fl/support/_internal/getChangeDependencies.js +1 -1
- package/src/sap/ui/fl/support/_internal/getFlexObjectInfos.js +1 -1
- package/src/sap/ui/fl/support/_internal/getFlexSettings.js +1 -1
- package/src/sap/ui/fl/support/api/SupportAPI.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetails.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetailsEdit.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/LayerContentMaster.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/Layers.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/lrepConnector/LRepConnector.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/utils/DataUtils.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/utils/ErrorUtils.js +1 -1
- package/src/sap/ui/fl/transport/TransportSelection.js +1 -1
- package/src/sap/ui/fl/util/DescriptorChangeCheck.js +35 -16
- package/src/sap/ui/fl/util/IFrame.js +1 -1
- package/src/sap/ui/fl/util/ManagedObjectModel.js +1 -1
- package/src/sap/ui/fl/util/resolveBinding.js +1 -1
- package/src/sap/ui/fl/variants/VariantModel.js +33 -11
- package/src/sap/ui/fl/write/_internal/Storage.js +1 -1
- package/src/sap/ui/fl/write/_internal/Versions.js +7 -3
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChange.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChangeFactory.js +34 -1
- package/src/sap/ui/fl/write/_internal/condenser/Condenser.js +163 -176
- package/src/sap/ui/fl/write/_internal/condenser/UIReconstruction.js +62 -61
- package/src/sap/ui/fl/write/_internal/condenser/Utils.js +17 -19
- package/src/sap/ui/fl/write/_internal/condenser/classifications/Create.js +13 -13
- package/src/sap/ui/fl/write/_internal/condenser/classifications/Destroy.js +17 -19
- package/src/sap/ui/fl/write/_internal/condenser/classifications/Move.js +32 -35
- package/src/sap/ui/fl/write/_internal/condenser/classifications/Update.js +2 -10
- package/src/sap/ui/fl/write/_internal/connectors/BackendConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/BtpServiceConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/KeyUserConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/LrepConnector.js +56 -4
- package/src/sap/ui/fl/write/_internal/connectors/NeoLrepConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/ObjectPathConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/PersonalizationConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/Utils.js +1 -1
- package/src/sap/ui/fl/write/_internal/controlVariants/ControlVariantWriteUtils.js +59 -0
- package/src/sap/ui/fl/write/_internal/delegates/ODataV2ReadDelegate.js +1 -2
- package/src/sap/ui/fl/write/_internal/extensionPoint/Processor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPAccess.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariantFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/MultiTenantABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ServiceValidation.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/SingleTenantABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/UriParser.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/Utils.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/CAPAccess.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/booleanEditor/BooleanEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/rangeEditor/RangeEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/flexState/FlexObjectManager.js +33 -2
- package/src/sap/ui/fl/write/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +1 -1
- package/src/sap/ui/fl/write/_internal/flexState/changes/UIChangeManager.js +26 -3
- package/src/sap/ui/fl/write/_internal/flexState/compVariants/CompVariantState.js +20 -12
- package/src/sap/ui/fl/write/_internal/transport/TransportSelection.js +1 -1
- package/src/sap/ui/fl/write/_internal/transport/Transports.js +1 -1
- package/src/sap/ui/fl/write/api/ChangesWriteAPI.js +73 -3
- package/src/sap/ui/fl/write/api/FieldExtensibility.js +1 -1
- package/src/sap/ui/fl/write/api/LocalResetAPI.js +17 -27
- package/src/sap/ui/fl/write/api/VersionsAPI.js +26 -4
|
@@ -27,10 +27,10 @@ sap.ui.define([
|
|
|
27
27
|
) {
|
|
28
28
|
"use strict";
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
let oLastPromise = (FlUtils.FakePromise ? new FlUtils.FakePromise() : Promise.resolve());
|
|
31
31
|
const oPendingProcessesOnControl = {};
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
const Applier = {};
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Formats the log message by replacing placeholders with values and logging the message.
|
|
@@ -38,18 +38,17 @@ sap.ui.define([
|
|
|
38
38
|
* @param {string} sLogType - Logging type to be used. Possible values: info | warning | debug | error
|
|
39
39
|
* @param {array.<string>} aMessageComponents - Individual parts of the message text
|
|
40
40
|
* @param {array.<any>} aValuesToInsert - The values to be used instead of the placeholders in the message
|
|
41
|
-
* @param {string} [sCallStack] - Passes the
|
|
41
|
+
* @param {string} [sCallStack] - Passes the call stack to the logging function
|
|
42
42
|
*/
|
|
43
43
|
function formatAndLogMessage(sLogType, aMessageComponents, aValuesToInsert, sCallStack) {
|
|
44
|
-
|
|
45
|
-
sLogMessage = formatMessage(sLogMessage, aValuesToInsert);
|
|
44
|
+
const sLogMessage = formatMessage(aMessageComponents.join(" "), aValuesToInsert);
|
|
46
45
|
Log[sLogType](sLogMessage, sCallStack || "");
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
function checkControlAndDependentSelectorControls(oChange, mPropertyBag) {
|
|
50
|
-
|
|
48
|
+
async function checkControlAndDependentSelectorControls(oChange, mPropertyBag) {
|
|
49
|
+
const oSelector = oChange.getSelector && oChange.getSelector();
|
|
51
50
|
if (!oSelector || (!oSelector.id && !oSelector.name)) {
|
|
52
|
-
|
|
51
|
+
throw Error("No selector in change found or no selector ID.");
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
function checkFailedSelectors(oSelector) {
|
|
@@ -58,27 +57,25 @@ sap.ui.define([
|
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
const oControl = await mPropertyBag.modifier.bySelectorTypeIndependent(oSelector, mPropertyBag.appComponent, mPropertyBag.view);
|
|
61
|
+
if (!oControl) {
|
|
62
|
+
throw Error("A flexibility change tries to change a nonexistent control.");
|
|
63
|
+
}
|
|
64
|
+
checkFailedSelectors(oSelector);
|
|
65
|
+
|
|
66
|
+
const aDependentControlSelectorList = oChange.getDependentControlSelectorList();
|
|
67
|
+
aDependentControlSelectorList.forEach((oDependentControlSelector) => {
|
|
68
|
+
const oDependentControl = mPropertyBag.modifier.bySelector(
|
|
69
|
+
oDependentControlSelector,
|
|
70
|
+
mPropertyBag.appComponent,
|
|
71
|
+
mPropertyBag.view
|
|
72
|
+
);
|
|
73
|
+
if (!oDependentControl) {
|
|
74
|
+
throw new Error("A dependent selector control of the flexibility change is not available.");
|
|
65
75
|
}
|
|
66
|
-
checkFailedSelectors(
|
|
67
|
-
|
|
68
|
-
var aDependentControlSelectorList = oChange.getDependentControlSelectorList();
|
|
69
|
-
aDependentControlSelectorList.forEach(function(oDependentControlSelector) {
|
|
70
|
-
var oDependentControl = mPropertyBag.modifier.bySelector(
|
|
71
|
-
oDependentControlSelector,
|
|
72
|
-
mPropertyBag.appComponent,
|
|
73
|
-
mPropertyBag.view
|
|
74
|
-
);
|
|
75
|
-
if (!oDependentControl) {
|
|
76
|
-
throw new Error("A dependent selector control of the flexibility change is not available.");
|
|
77
|
-
}
|
|
78
|
-
checkFailedSelectors(oDependentControlSelector);
|
|
79
|
-
});
|
|
80
|
-
return oControl;
|
|
76
|
+
checkFailedSelectors(oDependentControlSelector);
|
|
81
77
|
});
|
|
78
|
+
return oControl;
|
|
82
79
|
}
|
|
83
80
|
|
|
84
81
|
function isXmlModifier(mPropertyBag) {
|
|
@@ -88,13 +85,13 @@ sap.ui.define([
|
|
|
88
85
|
function checkAndAdjustChangeStatus(oControl, oChange, mPropertyBag, bSkipDependencies) {
|
|
89
86
|
// in case of changes in templates, the original control is not always available at this point
|
|
90
87
|
// example: rename on a control created by a change inside a template
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
const oOriginalControl = Utils.getControlIfTemplateAffected(oChange, oControl, mPropertyBag).control;
|
|
89
|
+
const oModifier = mPropertyBag.modifier;
|
|
90
|
+
const bHasAppliedCustomData = oOriginalControl
|
|
94
91
|
&& !!FlexCustomData.getAppliedCustomDataValue(oOriginalControl, oChange, oModifier);
|
|
95
|
-
|
|
92
|
+
const bIsCurrentlyAppliedOnControl = oOriginalControl
|
|
96
93
|
&& FlexCustomData.hasChangeApplyFinishedCustomData(oOriginalControl, oChange, oModifier);
|
|
97
|
-
|
|
94
|
+
const bChangeStatusAppliedFinished = oChange.isApplyProcessFinished();
|
|
98
95
|
if (bChangeStatusAppliedFinished && !bIsCurrentlyAppliedOnControl) {
|
|
99
96
|
// if a change was already processed and is not applied anymore, then the control was destroyed and recreated.
|
|
100
97
|
// In this case we need to recreate/copy the dependencies if we are applying in JS
|
|
@@ -119,53 +116,41 @@ sap.ui.define([
|
|
|
119
116
|
}
|
|
120
117
|
|
|
121
118
|
function checkPreconditions(oChange, mPropertyBag) {
|
|
122
|
-
var sErrorMessage;
|
|
123
119
|
if (isXmlModifier(mPropertyBag) && oChange.getJsOnly()) {
|
|
124
120
|
// change is not capable of xml modifier
|
|
125
121
|
// the change status has to be reset to initial
|
|
126
|
-
sErrorMessage = "Change cannot be applied in XML. Retrying in JS.";
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (sErrorMessage) {
|
|
122
|
+
const sErrorMessage = "Change cannot be applied in XML. Retrying in JS.";
|
|
130
123
|
oChange.setInitialApplyState();
|
|
131
124
|
throw Error(sErrorMessage);
|
|
132
125
|
}
|
|
133
126
|
}
|
|
134
127
|
|
|
135
|
-
function handleAfterApply(oChange, mControl, oInitializedControl, mPropertyBag) {
|
|
136
|
-
return
|
|
137
|
-
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return FlexCustomData.addAppliedCustomData(mControl.control, oChange, mPropertyBag, isXmlModifier(mPropertyBag));
|
|
152
|
-
})
|
|
153
|
-
.then(function() {
|
|
154
|
-
// if a change was reverted previously remove the flag as it is not reverted anymore
|
|
155
|
-
var oResult = {success: true};
|
|
156
|
-
oChange.markSuccessful(oResult);
|
|
157
|
-
return oResult;
|
|
158
|
-
});
|
|
128
|
+
async function handleAfterApply(oChange, mControl, oInitializedControl, mPropertyBag) {
|
|
129
|
+
// changeHandler can return a different control, e.g. case where a visible UI control replaces the stashed control placeholder
|
|
130
|
+
if (oInitializedControl instanceof Element) {
|
|
131
|
+
// the newly rendered control could have custom data set from the XML modifier
|
|
132
|
+
mControl.control = oInitializedControl;
|
|
133
|
+
}
|
|
134
|
+
if (mControl.control) {
|
|
135
|
+
await mPropertyBag.modifier.updateAggregation(mControl.originalControl, oChange.getContent().boundAggregation);
|
|
136
|
+
}
|
|
137
|
+
// only save the revert data in the custom data when the change is being processed in XML,
|
|
138
|
+
// as it's only relevant for viewCache at the moment
|
|
139
|
+
await FlexCustomData.addAppliedCustomData(mControl.control, oChange, mPropertyBag, isXmlModifier(mPropertyBag));
|
|
140
|
+
// if a change was reverted previously remove the flag as it is not reverted anymore
|
|
141
|
+
const oResult = {success: true};
|
|
142
|
+
oChange.markSuccessful(oResult);
|
|
143
|
+
return oResult;
|
|
159
144
|
}
|
|
160
145
|
|
|
161
|
-
function handleAfterApplyError(oError, oChange, mControl, mPropertyBag) {
|
|
162
|
-
|
|
163
|
-
|
|
146
|
+
async function handleAfterApplyError(oError, oChange, mControl, mPropertyBag) {
|
|
147
|
+
const bXmlModifier = isXmlModifier(mPropertyBag);
|
|
148
|
+
const oResult = {success: false, error: oError};
|
|
164
149
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
150
|
+
const sChangeId = oChange.getId();
|
|
151
|
+
const sLogMessage = "Change ''{0}'' could not be applied.";
|
|
152
|
+
const bErrorOccurred = oError instanceof Error;
|
|
153
|
+
const sCustomDataIdentifier = FlexCustomData.getCustomDataIdentifier(false, bErrorOccurred, bXmlModifier);
|
|
169
154
|
switch (sCustomDataIdentifier) {
|
|
170
155
|
case FlexCustomData.notApplicableChangesCustomDataKey:
|
|
171
156
|
formatAndLogMessage(
|
|
@@ -193,26 +178,24 @@ sap.ui.define([
|
|
|
193
178
|
default:
|
|
194
179
|
// no default
|
|
195
180
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return oResult;
|
|
206
|
-
});
|
|
181
|
+
await FlexCustomData.addFailedCustomData(mControl.control, oChange, mPropertyBag, sCustomDataIdentifier);
|
|
182
|
+
// if the change failed during XML processing, the status has to be reset
|
|
183
|
+
// the change will be applied again in JS
|
|
184
|
+
if (bXmlModifier) {
|
|
185
|
+
oChange.setInitialApplyState();
|
|
186
|
+
} else {
|
|
187
|
+
oChange.markFailed(oResult);
|
|
188
|
+
}
|
|
189
|
+
return oResult;
|
|
207
190
|
}
|
|
208
191
|
|
|
209
192
|
function logApplyChangeError(oError, oChange) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
193
|
+
const sChangeType = oChange.getChangeType();
|
|
194
|
+
const sTargetControlId = oChange.getSelector().id;
|
|
195
|
+
const fullQualifiedName = `${oChange.getNamespace() + oChange.getId()}.${oChange.getFileType()}`;
|
|
213
196
|
|
|
214
|
-
|
|
215
|
-
sWarningMessage += "\nThe displayed UI might not be displayed as
|
|
197
|
+
let sWarningMessage = "A flexibility change could not be applied.";
|
|
198
|
+
sWarningMessage += "\nThe displayed UI might not be displayed as intended.";
|
|
216
199
|
if (oError.message) {
|
|
217
200
|
sWarningMessage += `\n occurred error message: '${oError.message}'`;
|
|
218
201
|
}
|
|
@@ -224,17 +207,17 @@ sap.ui.define([
|
|
|
224
207
|
}
|
|
225
208
|
|
|
226
209
|
function adjustOriginalSelector(oChange, oControl, oAppComponent) {
|
|
227
|
-
|
|
210
|
+
const oPropertyBag = {
|
|
228
211
|
appComponent: oAppComponent,
|
|
229
212
|
modifier: JsControlTreeModifier
|
|
230
213
|
};
|
|
231
|
-
|
|
232
|
-
|
|
214
|
+
const oCurrentOriginalControl = JsControlTreeModifier.bySelector(oChange.originalSelectorToBeAdjusted, oAppComponent);
|
|
215
|
+
let oActualOriginalControl = oControl.getBindingInfo(oChange.getContent().boundAggregation).template;
|
|
233
216
|
|
|
234
|
-
// no parent means that the control is the template
|
|
217
|
+
// no parent means that the control is the template itself
|
|
235
218
|
if (oCurrentOriginalControl.getParent()) {
|
|
236
|
-
|
|
237
|
-
|
|
219
|
+
const aStack = [];
|
|
220
|
+
let oTempControl = oCurrentOriginalControl;
|
|
238
221
|
do {
|
|
239
222
|
aStack.push({
|
|
240
223
|
aggregation: oTempControl.sParentAggregationName,
|
|
@@ -244,7 +227,7 @@ sap.ui.define([
|
|
|
244
227
|
} while (oTempControl.getParent());
|
|
245
228
|
|
|
246
229
|
aStack.reverse();
|
|
247
|
-
aStack.forEach(
|
|
230
|
+
aStack.forEach((oInfo) => {
|
|
248
231
|
oActualOriginalControl = oActualOriginalControl.getAggregation(oInfo.aggregation)[oInfo.index];
|
|
249
232
|
});
|
|
250
233
|
}
|
|
@@ -252,7 +235,7 @@ sap.ui.define([
|
|
|
252
235
|
}
|
|
253
236
|
|
|
254
237
|
function registerOnAfterXMLChangeProcessingHandler(aOnAfterXMLChangeProcessingHandlers, oChangeHandler, oControl) {
|
|
255
|
-
|
|
238
|
+
let iChangeHandlerIndex = aOnAfterXMLChangeProcessingHandlers.findIndex((mHandler) => {
|
|
256
239
|
return mHandler.handler === oChangeHandler;
|
|
257
240
|
});
|
|
258
241
|
if (iChangeHandlerIndex < 0) {
|
|
@@ -267,7 +250,7 @@ sap.ui.define([
|
|
|
267
250
|
}
|
|
268
251
|
}
|
|
269
252
|
|
|
270
|
-
function processControl(oControl, mPropertyBag, oDependencyMap, oAppComponent) {
|
|
253
|
+
async function processControl(oControl, mPropertyBag, oDependencyMap, oAppComponent) {
|
|
271
254
|
const aPromiseStack = [];
|
|
272
255
|
const sControlId = oControl.getId();
|
|
273
256
|
const aChangesForControl = oDependencyMap.mChanges[sControlId] || [];
|
|
@@ -278,7 +261,7 @@ sap.ui.define([
|
|
|
278
261
|
bControlWithDependencies = true;
|
|
279
262
|
}
|
|
280
263
|
|
|
281
|
-
aChangesForControl.forEach(
|
|
264
|
+
aChangesForControl.forEach((oChange) => {
|
|
282
265
|
// in the ExtensionPoint scenario changes can get cloned,
|
|
283
266
|
// in case of a template change the original selector has to be adjusted
|
|
284
267
|
if (oChange.originalSelectorToBeAdjusted) {
|
|
@@ -290,10 +273,9 @@ sap.ui.define([
|
|
|
290
273
|
} else if (oChange.isApplyProcessFinished()) {
|
|
291
274
|
DependencyHandler.resolveDependenciesForChange(oDependencyMap, oChange.getId(), sControlId);
|
|
292
275
|
} else if (!oDependencyMap.mDependencies[oChange.getId()]) {
|
|
293
|
-
aPromiseStack.push(
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
});
|
|
276
|
+
aPromiseStack.push(async () => {
|
|
277
|
+
await Applier.applyChangeOnControl(oChange, oControl, mPropertyBag);
|
|
278
|
+
DependencyHandler.resolveDependenciesForChange(oDependencyMap, oChange.getId(), sControlId);
|
|
297
279
|
});
|
|
298
280
|
} else {
|
|
299
281
|
const fnCallback = Applier.applyChangeOnControl.bind(Applier, oChange, oControl, mPropertyBag);
|
|
@@ -302,13 +284,8 @@ sap.ui.define([
|
|
|
302
284
|
});
|
|
303
285
|
|
|
304
286
|
if (aChangesForControl.length || bControlWithDependencies) {
|
|
305
|
-
|
|
306
|
-
.
|
|
307
|
-
return DependencyHandler.processDependentQueue(oDependencyMap, oAppComponent, sControlId);
|
|
308
|
-
})
|
|
309
|
-
.then(function() {
|
|
310
|
-
oPendingProcessesOnControl[sControlId].shift().resolveFunction();
|
|
311
|
-
});
|
|
287
|
+
await FlUtils.execPromiseQueueSequentially(aPromiseStack);
|
|
288
|
+
await DependencyHandler.processDependentQueue(oDependencyMap, oAppComponent, sControlId);
|
|
312
289
|
}
|
|
313
290
|
oPendingProcessesOnControl[sControlId].shift().resolveFunction();
|
|
314
291
|
}
|
|
@@ -319,7 +296,7 @@ sap.ui.define([
|
|
|
319
296
|
* @param {Promise} oPromise - Promise which is resolved when precondition fulfilled
|
|
320
297
|
*/
|
|
321
298
|
Applier.addPreConditionForInitialChangeApplying = function(oPromise) {
|
|
322
|
-
oLastPromise = oLastPromise.then(
|
|
299
|
+
oLastPromise = oLastPromise.then(() => {
|
|
323
300
|
return oPromise;
|
|
324
301
|
});
|
|
325
302
|
};
|
|
@@ -334,51 +311,40 @@ sap.ui.define([
|
|
|
334
311
|
* @param {object} mPropertyBag.modifier - Polymorph reuse operations handling the changes on the given view type
|
|
335
312
|
* @param {object} mPropertyBag.appDescriptor - App descriptor containing the metadata of the current application
|
|
336
313
|
* @param {object} mPropertyBag.appComponent - Component instance that is currently loading
|
|
337
|
-
* @returns {Promise
|
|
314
|
+
* @returns {Promise} Promise that is resolved after all changes were reverted in asynchronous case or FakePromise for the synchronous processing scenario
|
|
338
315
|
*/
|
|
339
|
-
Applier.applyChangeOnControl = function(oChange, oControl, mPropertyBag) {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
: Utils.getChangeHandler(oChange, mControl, mPropertyBag);
|
|
344
|
-
|
|
345
|
-
return pHandlerPromise.then(function(oChangeHandler) {
|
|
316
|
+
Applier.applyChangeOnControl = async function(oChange, oControl, mPropertyBag) {
|
|
317
|
+
const mControl = Utils.getControlIfTemplateAffected(oChange, oControl, mPropertyBag);
|
|
318
|
+
try {
|
|
319
|
+
const oChangeHandler = mPropertyBag.changeHandler || await Utils.getChangeHandler(oChange, mControl, mPropertyBag);
|
|
346
320
|
checkPreconditions(oChange, mPropertyBag);
|
|
347
|
-
return oChangeHandler;
|
|
348
|
-
})
|
|
349
321
|
|
|
350
|
-
.then(function(oChangeHandler) {
|
|
351
322
|
if (oChange.hasApplyProcessStarted()) {
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
})
|
|
362
|
-
.then(function(oInitializedControl) {
|
|
323
|
+
const oResult = await oChange.addPromiseForApplyProcessing();
|
|
324
|
+
oChange.markSuccessful();
|
|
325
|
+
return oResult;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
if (!oChange.isApplyProcessFinished()) {
|
|
329
|
+
oChange.startApplying();
|
|
330
|
+
try {
|
|
331
|
+
const oInitializedControl = await oChangeHandler.applyChange(oChange, mControl.control, mPropertyBag);
|
|
363
332
|
return handleAfterApply(oChange, mControl, oInitializedControl, mPropertyBag);
|
|
364
|
-
})
|
|
365
|
-
.catch(function(oError) {
|
|
333
|
+
} catch (oError) {
|
|
366
334
|
return handleAfterApplyError(oError, oChange, mControl, mPropertyBag);
|
|
367
|
-
}
|
|
335
|
+
}
|
|
368
336
|
}
|
|
369
337
|
|
|
370
338
|
// make sure that everything that goes with finishing the apply process is done, even though the change was already applied
|
|
371
|
-
|
|
339
|
+
const oResult = {success: true};
|
|
372
340
|
oChange.markSuccessful(oResult);
|
|
373
341
|
return oResult;
|
|
374
|
-
})
|
|
375
|
-
|
|
376
|
-
.catch(function(oError) {
|
|
342
|
+
} catch (oError) {
|
|
377
343
|
return {
|
|
378
344
|
success: false,
|
|
379
345
|
error: oError
|
|
380
346
|
};
|
|
381
|
-
}
|
|
347
|
+
}
|
|
382
348
|
};
|
|
383
349
|
|
|
384
350
|
/**
|
|
@@ -388,11 +354,11 @@ sap.ui.define([
|
|
|
388
354
|
* @param {object} mPropertyBag - Object with parameters as properties
|
|
389
355
|
* @param {object} mPropertyBag.reference - Flex reference
|
|
390
356
|
* @param {object} mPropertyBag.appComponent - App Component instance
|
|
391
|
-
* @returns {Promise} Resolves after all changes were applied
|
|
357
|
+
* @returns {Promise<undefined>} Resolves after all changes were applied
|
|
392
358
|
*/
|
|
393
|
-
Applier.applyMultipleChanges = function(aChanges, mPropertyBag) {
|
|
359
|
+
Applier.applyMultipleChanges = async function(aChanges, mPropertyBag) {
|
|
394
360
|
mPropertyBag.modifier = JsControlTreeModifier;
|
|
395
|
-
const
|
|
361
|
+
for (const oChange of aChanges) {
|
|
396
362
|
const oControl = JsControlTreeModifier.bySelector(oChange.getSelector(), mPropertyBag.appComponent);
|
|
397
363
|
const oLiveDependencyMap = FlexObjectState.getLiveDependencyMap(mPropertyBag.reference);
|
|
398
364
|
if (oControl) {
|
|
@@ -400,19 +366,19 @@ sap.ui.define([
|
|
|
400
366
|
if (!oChange.isApplyProcessFinished()) {
|
|
401
367
|
oChange.setQueuedForApply();
|
|
402
368
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
.
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
369
|
+
let oResult;
|
|
370
|
+
try {
|
|
371
|
+
oResult = await Applier.applyChangeOnControl(oChange, oControl, mPropertyBag);
|
|
372
|
+
} catch (oError) {
|
|
373
|
+
oResult = {success: false};
|
|
374
|
+
}
|
|
375
|
+
if (oResult.success) {
|
|
376
|
+
DependencyHandler.addRuntimeChangeToMap(oChange, mPropertyBag.appComponent, oLiveDependencyMap);
|
|
377
|
+
}
|
|
378
|
+
} else {
|
|
379
|
+
DependencyHandler.addChangeAndUpdateDependencies(oChange, mPropertyBag.appComponent.getId(), oLiveDependencyMap);
|
|
411
380
|
}
|
|
412
|
-
|
|
413
|
-
return () => Promise.resolve();
|
|
414
|
-
});
|
|
415
|
-
return FlUtils.execPromiseQueueSequentially(aPromises);
|
|
381
|
+
}
|
|
416
382
|
};
|
|
417
383
|
|
|
418
384
|
/**
|
|
@@ -429,9 +395,9 @@ sap.ui.define([
|
|
|
429
395
|
// scenario 1: n controls get created, for all this function is called synchronously. Changes have to be queued synchronously
|
|
430
396
|
// scenario 2: control gets recreated, the changes for the new control have to be queued after the processing of the old control
|
|
431
397
|
const oDependencyMap = FlexObjectState.getLiveDependencyMap(sReference);
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
398
|
+
const sControlId = oControl.getId();
|
|
399
|
+
const aChangesForControl = oDependencyMap.mChanges[sControlId] || [];
|
|
400
|
+
const mPropertyBag = {
|
|
435
401
|
modifier: JsControlTreeModifier,
|
|
436
402
|
appComponent: oAppComponent,
|
|
437
403
|
view: FlUtils.getViewForControl(oControl)
|
|
@@ -442,7 +408,7 @@ sap.ui.define([
|
|
|
442
408
|
await oPendingProcessesOnControl[sControlId][oPendingProcessesOnControl[sControlId].length - 1].promise;
|
|
443
409
|
}
|
|
444
410
|
|
|
445
|
-
aChangesForControl.forEach(
|
|
411
|
+
aChangesForControl.forEach((oChange) => {
|
|
446
412
|
checkAndAdjustChangeStatus(oControl, oChange, mPropertyBag);
|
|
447
413
|
if (!oChange.isApplyProcessFinished() && !oChange._ignoreOnce) {
|
|
448
414
|
oChange.setQueuedForApply();
|
|
@@ -451,7 +417,7 @@ sap.ui.define([
|
|
|
451
417
|
|
|
452
418
|
oPendingProcessesOnControl[sControlId] ||= [];
|
|
453
419
|
const oNewPromise = {};
|
|
454
|
-
oNewPromise.promise = new Promise(
|
|
420
|
+
oNewPromise.promise = new Promise((resolve) => {
|
|
455
421
|
oNewPromise.resolveFunction = resolve;
|
|
456
422
|
});
|
|
457
423
|
oPendingProcessesOnControl[sControlId].push(oNewPromise);
|
|
@@ -472,27 +438,21 @@ sap.ui.define([
|
|
|
472
438
|
* @param {sap.ui.fl.apply._internal.flexObjects.FlexObject[]} aChanges List of flexibility changes on controls for the current processed view
|
|
473
439
|
* @returns {Promise|sap.ui.fl.Utils.FakePromise} Promise that is resolved after all changes were reverted in asynchronous case or FakePromise for the synchronous processing scenario including view object in both cases
|
|
474
440
|
*/
|
|
475
|
-
Applier.applyAllChangesForXMLView = function(mPropertyBag, aChanges) {
|
|
441
|
+
Applier.applyAllChangesForXMLView = async function(mPropertyBag, aChanges) {
|
|
476
442
|
if (!Array.isArray(aChanges)) {
|
|
477
|
-
|
|
443
|
+
const sErrorMessage = `No list of changes was passed for processing the flexibility on view: ${mPropertyBag.view}.`;
|
|
478
444
|
Log.error(sErrorMessage, undefined, "sap.ui.fl.apply._internal.changes.Applier");
|
|
479
445
|
aChanges = [];
|
|
480
446
|
}
|
|
481
447
|
|
|
482
|
-
|
|
448
|
+
const aOnAfterXMLChangeProcessingHandlers = [];
|
|
483
449
|
mPropertyBag.failedSelectors = [];
|
|
484
450
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
oControl = oReturnedControl;
|
|
491
|
-
var mControl = Utils.getControlIfTemplateAffected(oChange, oControl, mPropertyBag);
|
|
492
|
-
return Utils.getChangeHandler(oChange, mControl, mPropertyBag);
|
|
493
|
-
})
|
|
494
|
-
.then(function(oChangeHandler) {
|
|
495
|
-
mPropertyBag.changeHandler = oChangeHandler;
|
|
451
|
+
for (const oChange of aChanges) {
|
|
452
|
+
try {
|
|
453
|
+
const oControl = await checkControlAndDependentSelectorControls(oChange, mPropertyBag);
|
|
454
|
+
const mControl = Utils.getControlIfTemplateAffected(oChange, oControl, mPropertyBag);
|
|
455
|
+
mPropertyBag.changeHandler = await Utils.getChangeHandler(oChange, mControl, mPropertyBag);
|
|
496
456
|
oChange.setQueuedForApply();
|
|
497
457
|
checkAndAdjustChangeStatus(oControl, oChange, mPropertyBag, true);
|
|
498
458
|
|
|
@@ -504,41 +464,36 @@ sap.ui.define([
|
|
|
504
464
|
oControl
|
|
505
465
|
);
|
|
506
466
|
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
.then(function(oReturn) {
|
|
512
|
-
if (!oReturn.success) {
|
|
513
|
-
throw Error(oReturn.error);
|
|
467
|
+
const oResult = await Applier.applyChangeOnControl(oChange, oControl, mPropertyBag);
|
|
468
|
+
if (!oResult.success) {
|
|
469
|
+
throw Error(oResult.error);
|
|
470
|
+
}
|
|
514
471
|
}
|
|
515
|
-
})
|
|
516
|
-
|
|
517
|
-
oChange.getDependentSelectorList().forEach(function(oDependentControlSelector) {
|
|
472
|
+
} catch (oError) {
|
|
473
|
+
oChange.getDependentSelectorList().forEach((oDependentControlSelector) => {
|
|
518
474
|
if (FlUtils.indexOfObject(mPropertyBag.failedSelectors, oDependentControlSelector) === -1) {
|
|
519
475
|
mPropertyBag.failedSelectors.push(oDependentControlSelector);
|
|
520
476
|
}
|
|
521
477
|
});
|
|
522
478
|
logApplyChangeError(oError, oChange);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
// Once all changes for a control are processed, call the
|
|
529
|
-
// onAfterXMLChangeProcessing hooks of all involved change handlers
|
|
530
|
-
aOnAfterXMLChangeProcessingHandlers.forEach(function(mHandler) {
|
|
531
|
-
mHandler.controls.forEach(function(oControl) {
|
|
532
|
-
try {
|
|
533
|
-
mHandler.handler.onAfterXMLChangeProcessing(oControl, mPropertyBag);
|
|
534
|
-
} catch (oError) {
|
|
535
|
-
Log.error("Error during onAfterXMLChangeProcessing", oError);
|
|
536
|
-
}
|
|
537
|
-
});
|
|
538
|
-
});
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
delete mPropertyBag.failedSelectors;
|
|
539
483
|
|
|
540
|
-
|
|
484
|
+
// Once all changes for a control are processed, call the
|
|
485
|
+
// onAfterXMLChangeProcessing hooks of all involved change handlers
|
|
486
|
+
aOnAfterXMLChangeProcessingHandlers.forEach((mHandler) => {
|
|
487
|
+
mHandler.controls.forEach((oControl) => {
|
|
488
|
+
try {
|
|
489
|
+
mHandler.handler.onAfterXMLChangeProcessing(oControl, mPropertyBag);
|
|
490
|
+
} catch (oError) {
|
|
491
|
+
Log.error("Error during onAfterXMLChangeProcessing", oError);
|
|
492
|
+
}
|
|
493
|
+
});
|
|
541
494
|
});
|
|
495
|
+
|
|
496
|
+
return mPropertyBag.view;
|
|
542
497
|
};
|
|
543
498
|
return Applier;
|
|
544
499
|
});
|