function populateEntityFromApiSuccess()

in ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js [751:811]


    function populateEntityFromApiSuccess(entity, data, parsedPlan) {
        function mapped(list, field) {
            let result = {};
            if (list) {
                list.forEach(l => {
                    if (l && l[field]) {
                        result[l[field]] = l;
                    }
                });
            }
            return result;
        }
        entity.clearIssues({group: 'type'});

        entity.type = data.symbolicName;
        entity.icon = entity.metadata.get('iconUrl')
            ? (data.iconUrl || '/v1/catalog/types/'+entity.type+'/'+(entity.version || 'latest')+'/icon')+'?iconUrl='+entity.metadata.get('iconUrl')
            : data.iconUrl || iconGenerator(data.symbolicName);
        entity.miscData.set('important', !!data.iconUrl);
        entity.miscData.set('bundle', {
            symbolicName: data.containingBundle.split(':')[0],
            version: data.containingBundle.split(':')[1]
        });
        entity.miscData.set('typeName', data.displayName || data.symbolicName);
        entity.miscData.set('displayName', data.displayName);
        entity.miscData.set('symbolicName', data.symbolicName);
        entity.miscData.set('description', data.description);

        entity.miscData.set('config', data.config || []);
        entity.miscData.set('configMap', mapped(data.config, 'name'));
        // if a template sets an explicit value for a parameter, use that as the default everywhere
        const configTemplateDefaults =
                (parsedPlan && parsedPlan['brooklyn.config']) ||
                (parsedPlan && parsedPlan.services && parsedPlan.services.length==1 && parsedPlan.services[0]['brooklyn.config']) ||
                {};
        entity.miscData.set('configTemplateDefaults', configTemplateDefaults);
        (data.config || []).forEach(item => {
            const override = configTemplateDefaults[item.name];
            if (typeof override !== 'undefined') {
                item.defaultValueParameter = item.defaultValue;
                item.defaultValueTemplate = override;
                item.defaultValue = override;
            }
        });
        entity.miscData.set('parameters', data.parameters || []);
        entity.miscData.set('parametersMap', mapped(data.parameters, 'name'));

        entity.miscData.set('sensors', data.sensors || []);
        entity.miscData.set('traits', data.supertypes || []);
        entity.miscData.set('tags', data.tags || []);
        entity.miscData.set('loadedVersion', data.version);

        data.tags.forEach( (t) => {
            mergeAppendingLists(COMMON_HINTS, t['ui-composer-hints']);
        });
        entity.miscData.set('ui-composer-hints', COMMON_HINTS);
        entity.miscData.set('virtual', data.virtual || null);
        addUnlistedConfigKeysDefinitions(entity);
        addUnlistedParameterDefinitions(entity);
        return entity;
    }