FLUID-6192: modelRelay rule with source of "" fails with bare diagnostic

Metadata

Source
FLUID-6192
Type
Bug
Priority
Major
Status
Closed
Resolution
Fixed
Assignee
Antranig Basman
Reporter
Antranig Basman
Created
2017-09-05T12:41:03.563-0400
Updated
2017-09-20T16:10:02.085-0400
Versions
N/A
Fixed Versions
N/A
Component
  1. Data Binder
  2. Framework

Description

A model relay definition as follows:

"pcpChannel": {
                "source": "",
                "target": "{flowManager}.pcpChannel.model",
                "singleTransform": {
                    type: "fluid.transforms.identity"
                }
            }

will trigger a bare failure in the framework as follows:

17:23:17.570:  FATAL ERROR: Uncaught exception: Cannot read property 'listenerId' of undefined
TypeError: Cannot read property 'listenerId' of undefined
    at Object.fluid.registerDirectChangeRelay (E:\Source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\DataBinding.js:589:83)
    at Object.fluid.connectModelRelay (E:\Source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\DataBinding.js:630:19)
    at Object.fluid.parseModelRelay (E:\Source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\DataBinding.js:786:19)
    at E:\Source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\DataBinding.js:882:23

This is because of a lazy falsy check in DataBinding.js fluid.parseModelRelay line 171:

fluid.parseModelRelay = function (that, mrrec, key) {
        var parsedSource = mrrec.source ? fluid.parseValidModelReference(that, "modelRelay record member \"source\"", mrrec.source) :
            {path: null, modelSegs: null};

Comments

  • Cindy Li commented 2017-09-20T16:09:45.646-0400

    The pull request has been merged into the project repo master branch at 3be1824401c55d455fe21b2a1e3c4b45d08d345f