MCPcopy Create free account
hub / github.com/apache/cloudstack / createInjector

Function createInjector

tools/ngui/static/js/lib/angular.js:2718–2926  ·  view source on GitHub ↗

* @ngdoc method * @name AUTO.$provide#decorator * @methodOf AUTO.$provide * @description * * Decoration of service, allows the decorator to intercept the service instance creation. The * returned instance may be the original instance, or a new instance which delegates to the * original instan

(modulesToLoad)

Source from the content-addressed store, hash-verified

2716
2717
2718function createInjector(modulesToLoad) {
2719 var INSTANTIATING = {},
2720 providerSuffix = 'Provider',
2721 path = [],
2722 loadedModules = new HashMap(),
2723 providerCache = {
2724 $provide: {
2725 provider: supportObject(provider),
2726 factory: supportObject(factory),
2727 service: supportObject(service),
2728 value: supportObject(value),
2729 constant: supportObject(constant),
2730 decorator: decorator
2731 }
2732 },
2733 providerInjector = createInternalInjector(providerCache, function() {
2734 throw Error("Unknown provider: " + path.join(' <- '));
2735 }),
2736 instanceCache = {},
2737 instanceInjector = (instanceCache.$injector =
2738 createInternalInjector(instanceCache, function(servicename) {
2739 var provider = providerInjector.get(servicename + providerSuffix);
2740 return instanceInjector.invoke(provider.$get, provider);
2741 }));
2742
2743
2744 forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
2745
2746 return instanceInjector;
2747
2748 ////////////////////////////////////
2749 // $provider
2750 ////////////////////////////////////
2751
2752 function supportObject(delegate) {
2753 return function(key, value) {
2754 if (isObject(key)) {
2755 forEach(key, reverseParams(delegate));
2756 } else {
2757 return delegate(key, value);
2758 }
2759 }
2760 }
2761
2762 function provider(name, provider_) {
2763 if (isFunction(provider_) || isArray(provider_)) {
2764 provider_ = providerInjector.instantiate(provider_);
2765 }
2766 if (!provider_.$get) {
2767 throw Error('Provider ' + name + ' must define $get factory method.');
2768 }
2769 return providerCache[name + providerSuffix] = provider_;
2770 }
2771
2772 function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }
2773
2774 function service(name, constructor) {
2775 return factory(name, ['$injector', function($injector) {

Callers 1

resumeBootstrapInternalFunction · 0.85

Calls 8

supportObjectFunction · 0.85
createInternalInjectorFunction · 0.85
forEachFunction · 0.85
loadModulesFunction · 0.85
getMethod · 0.65
ErrorFunction · 0.50
joinMethod · 0.45
invokeMethod · 0.45

Tested by

no test coverage detected