//
// Copyright 2014 Google Inc. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
//

part of charted.core.utils;

typedef T ObjectCreator<T>();

/// Provides a registry and factory service.
///
/// Registration:
/// ObjectFactory.register(“type”, () => { new TypeCreator(); });
///
/// Usage:
/// instance = ObjectFactory.create('type');
class ObjectFactory<T> {
  Map<String, ObjectCreator<T>> _components = {};

  /// Register a component [creator] for [name].
  void register(String name, ObjectCreator<T> creator) {
    _components[name] = creator;
  }

  /// Create an instance for [name].
  T create(String name) {
    if (!_components.containsKey(name)) {
      throw new ArgumentError('Element $name not found in ComponentFactory');
    }
    var creator = _components[name], instance = creator();
    if (instance == null) {
      throw new ArgumentError('Component $name initialization failed.');
    }
    return instance;
  }
}
