diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2013-04-11 16:42:11 +0200 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2013-05-06 16:22:24 +0200 |
commit | 0dc4b133fb0795b9c55f8a9fc95b55bc4df7ebf2 (patch) | |
tree | dc2d84162fa70ffff2b5ae4eed0b2f1896faf2a8 /install/ui/src | |
parent | 9dc8e26b735c7ad6b9ed2277a95c8745edfc7f40 (diff) | |
download | freeipa-0dc4b133fb0795b9c55f8a9fc95b55bc4df7ebf2.tar.gz freeipa-0dc4b133fb0795b9c55f8a9fc95b55bc4df7ebf2.tar.xz freeipa-0dc4b133fb0795b9c55f8a9fc95b55bc4df7ebf2.zip |
Builder: return object when it's already built
https://fedorahosted.org/freeipa/ticket/3235
Diffstat (limited to 'install/ui/src')
-rw-r--r-- | install/ui/src/freeipa/_base/Builder.js | 1 | ||||
-rw-r--r-- | install/ui/src/freeipa/_base/construct.js | 20 | ||||
-rw-r--r-- | install/ui/src/freeipa/ipa.js | 17 |
3 files changed, 36 insertions, 2 deletions
diff --git a/install/ui/src/freeipa/_base/Builder.js b/install/ui/src/freeipa/_base/Builder.js index 0eb76c4a7..d01f86f17 100644 --- a/install/ui/src/freeipa/_base/Builder.js +++ b/install/ui/src/freeipa/_base/Builder.js @@ -84,6 +84,7 @@ define(['dojo/_base/declare', var f,c; if (spec === undefined || spec === null) return null; + if (!construct.is_spec(spec)) return spec; context = context || {}; diff --git a/install/ui/src/freeipa/_base/construct.js b/install/ui/src/freeipa/_base/construct.js index bc017ad66..e44c66b1e 100644 --- a/install/ui/src/freeipa/_base/construct.js +++ b/install/ui/src/freeipa/_base/construct.js @@ -34,12 +34,28 @@ define(['dojo/_base/declare', */ is_ctor: function(obj) { - // TODO: Find better method. Check by extend might not be very - // reliable. return typeof obj === 'function' && typeof obj.extend === 'function'; }, /** + * Finds out if object is a spec object. + * + * Object is not a spec object when any of following applies: + * * has __fw_obj === true + * * has isInstanceOf function - basically tells if it's a instance of + * dojo-based class + * + */ + is_spec: function(obj) { + var ret = false; + if (typeof obj === 'object') { + ret = obj.__fw_obj === true || + typeof obj.isInstanceOf === 'function'; + } + return !ret; + }, + + /** * Creates copy of construction specification * * It makes sure that pre_ops, post_ops and spec are new Arrays/Object diff --git a/install/ui/src/freeipa/ipa.js b/install/ui/src/freeipa/ipa.js index e252a782d..c8bf4daee 100644 --- a/install/ui/src/freeipa/ipa.js +++ b/install/ui/src/freeipa/ipa.js @@ -293,9 +293,26 @@ var IPA = function() { } }; + that.obj_cls = function() {}; + that.obj_cls.prototype.__fw_obj = true; + return that; }(); +/** + * Basic object + * + * Framework objects created by factories should use this instead of {} when + * creating base objects. As an alternative they can just set __fw_obj + * property. + * + * __fw_obj property serves for telling the framework that it's instantiated + * object and not an object specification (spec). + */ +IPA.object = function() { + return new IPA.obj_cls(); +}; + IPA.get_credentials = function() { var status; |