From c506087227acdbc9edba8f000fe7a7ab3abdf621 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Fri, 26 Apr 2013 16:17:37 +0200 Subject: Builder: Singleton_registry: return null when construction spec not available https://fedorahosted.org/freeipa/ticket/3235 --- install/ui/src/freeipa/_base/Builder.js | 1 + install/ui/src/freeipa/_base/Singleton_registry.js | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/install/ui/src/freeipa/_base/Builder.js b/install/ui/src/freeipa/_base/Builder.js index d14721018..e4669ed9e 100644 --- a/install/ui/src/freeipa/_base/Builder.js +++ b/install/ui/src/freeipa/_base/Builder.js @@ -276,6 +276,7 @@ define(['dojo/_base/declare', !(cs.ctor && typeof cs.ctor === 'function')) { throw { error: 'Build error: missing or invalid ctor or factory', + code: 'no-ctor-fac', spec: cs }; } diff --git a/install/ui/src/freeipa/_base/Singleton_registry.js b/install/ui/src/freeipa/_base/Singleton_registry.js index fe8065468..a3427d7e0 100644 --- a/install/ui/src/freeipa/_base/Singleton_registry.js +++ b/install/ui/src/freeipa/_base/Singleton_registry.js @@ -65,13 +65,12 @@ define(['dojo/_base/declare', var obj = this._map[type]; if (!obj) { - if (!this.builder) { - throw { - error: 'Object not initialized: missing builder', - ref: this - }; + if (!this.builder) return null; + try { + obj = this._map[type] = this.builder.build(type); + } catch (e) { + if (e.code === 'no-ctor-fac') obj = null; } - obj = this._map[type] = this.builder.build(type); } return obj; -- cgit