1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/* Authors:
* Petr Vobornik <pvoborni@redhat.com>
*
* Copyright (C) 2013 Red Hat
* see file 'COPYING' for use and warranty information
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Registry-like object which serves as a registry of registries.
*
* Registry object should implement `register` and `get; method as Singleton or
* Construct registry do. It's expected that there will be different types of
* registries for various object types.
*
* Existing registries can be accessed directly by properties.
*
* Use set method for setting new registry.
* Use get/registry method for getting/registering object in a registry.
*
* Registries should be named by their object type in singular form:
*
* * entity
* * widget
* * action
* * formatter
* * facet
* * dialog
*
* @class reg
* @singleton
*/
define(['dojo/_base/declare',
'dojo/_base/array',
'dojo/_base/lang',
'./_base/Singleton_registry'
], function(declare, array, lang, Singleton_registry) {
var reg = new Singleton_registry();
reg.builder.ctor = Singleton_registry;
var exp = reg._map;
/**
* Get registry
* @param {string} object_type
* @param {string} type
* @return {_base.Construct_registry/_base.Singleton_registry}
*/
exp.get = function(object_type, type) {
var registry = reg.get(object_type);
return registry.get(type);
};
/**
* Create and register new registry
* @param {string} object_type
* @param {string} type
* @param {Function} func
* @param {Object} default_spec
*/
exp.register = function(object_type, type, func, default_spec) {
var registry = reg.get(object_type);
registry.register(type, func, default_spec);
};
/**
* Set new registry
* @param {string} object_type
* @param {_base.Construct_registry|_base.Singleton_registry} registry
*/
exp.set = function(object_type, registry) {
reg.set(object_type, registry);
};
return exp;
});
|