{"version":3,"sources":["reflector.js"],"names":[],"mappings":"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","file":"angular2/src/reflection/reflector.es6","sourcesContent":["import {Type, isPresent, stringify, BaseException} from 'angular2/src/facade/lang';\nimport {List, ListWrapper, Map, MapWrapper, StringMapWrapper} from 'angular2/src/facade/collection';\nimport {SetterFn, GetterFn, MethodFn} from './types';\nexport {SetterFn, GetterFn, MethodFn} from './types';\n\nexport class Reflector {\n  _typeInfo:Map;\n  _getters:Map;\n  _setters:Map;\n  _methods:Map;\n  reflectionCapabilities:any;\n\n  constructor(reflectionCapabilities) {\n    this._typeInfo = MapWrapper.create();\n    this._getters = MapWrapper.create();\n    this._setters = MapWrapper.create();\n    this._methods = MapWrapper.create();\n    this.reflectionCapabilities = reflectionCapabilities;\n  }\n\n  registerType(type, typeInfo){\n    MapWrapper.set(this._typeInfo, type, typeInfo);\n  }\n\n  registerGetters(getters){\n    _mergeMaps(this._getters, getters);\n  }\n\n  registerSetters(setters){\n    _mergeMaps(this._setters, setters);\n  }\n\n  registerMethods(methods){\n    _mergeMaps(this._methods, methods);\n  }\n\n  factory(type:Type):Function {\n    if(MapWrapper.contains(this._typeInfo, type)) {\n      return MapWrapper.get(this._typeInfo, type)[\"factory\"];\n    } else {\n      return this.reflectionCapabilities.factory(type);\n    }\n  }\n\n  parameters(typeOfFunc):List {\n    if(MapWrapper.contains(this._typeInfo, typeOfFunc)) {\n      return MapWrapper.get(this._typeInfo, typeOfFunc)[\"parameters\"];\n    } else {\n      return this.reflectionCapabilities.parameters(typeOfFunc);\n    }\n  }\n\n  annotations(typeOfFunc):List {\n    if(MapWrapper.contains(this._typeInfo, typeOfFunc)) {\n      return MapWrapper.get(this._typeInfo, typeOfFunc)[\"annotations\"];\n    } else {\n      return this.reflectionCapabilities.annotations(typeOfFunc);\n    }\n  }\n\n  getter(name:string):GetterFn {\n    if(MapWrapper.contains(this._getters, name)) {\n      return MapWrapper.get(this._getters, name);\n    } else {\n      return this.reflectionCapabilities.getter(name);\n    }\n  }\n\n  setter(name:string):SetterFn {\n    if(MapWrapper.contains(this._setters, name)) {\n      return MapWrapper.get(this._setters, name);\n    } else {\n      return this.reflectionCapabilities.setter(name);\n    }\n  }\n\n  method(name:string):MethodFn {\n    if(MapWrapper.contains(this._methods, name)) {\n      return MapWrapper.get(this._methods, name);\n    } else {\n      return this.reflectionCapabilities.method(name);\n    }\n  }\n}\n\nfunction _mergeMaps(target:Map, config) {\n  StringMapWrapper.forEach(config, (v, k) => MapWrapper.set(target, k, v));\n}"]}