{"version":3,"sources":["reflector.js"],"names":[],"mappings":"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","file":"angular2/src/reflection/reflector.js","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}"]}