@@ -2,8 +2,6 @@ import {KeyMetadataError} from './exceptions';
22import { MapWrapper , Map } from 'facade/collection' ;
33import { FIELD , int , isPresent } from 'facade/lang' ;
44
5- var _allKeys = MapWrapper . create ( ) ;
6-
75export class Key {
86 @FIELD ( 'final token' )
97 @FIELD ( 'final id:int' )
@@ -14,18 +12,6 @@ export class Key {
1412 this . metadata = null ;
1513 }
1614
17- static get ( token ) :Key {
18- if ( token instanceof Key ) return token ;
19-
20- if ( MapWrapper . contains ( _allKeys , token ) ) {
21- return MapWrapper . get ( _allKeys , token ) ;
22- }
23-
24- var newKey = new Key ( token , Key . numberOfKeys ) ;
25- MapWrapper . set ( _allKeys , token , newKey ) ;
26- return newKey ;
27- }
28-
2915 static setMetadata ( key :Key , metadata ) :Key {
3016 if ( isPresent ( key . metadata ) && key . metadata !== metadata ) {
3117 throw new KeyMetadataError ( ) ;
@@ -34,11 +20,36 @@ export class Key {
3420 return key ;
3521 }
3622
37- static clear ( ) {
38- _allKeys = MapWrapper . create ( ) ;
23+ static get ( token ) : Key {
24+ return _globalKeyRegistry . get ( token ) ;
3925 }
4026
4127 static get numberOfKeys ( ) :int {
42- return MapWrapper . size ( _allKeys ) ;
28+ return _globalKeyRegistry . numberOfKeys ;
4329 }
4430}
31+
32+ export class KeyRegistry {
33+ @FIELD ( 'final _allKeys:Map' )
34+ constructor ( ) {
35+ this . _allKeys = MapWrapper . create ( ) ;
36+ }
37+
38+ get ( token ) :Key {
39+ if ( token instanceof Key ) return token ;
40+
41+ if ( MapWrapper . contains ( this . _allKeys , token ) ) {
42+ return MapWrapper . get ( this . _allKeys , token ) ;
43+ }
44+
45+ var newKey = new Key ( token , Key . numberOfKeys ) ;
46+ MapWrapper . set ( this . _allKeys , token , newKey ) ;
47+ return newKey ;
48+ }
49+
50+ get numberOfKeys ( ) :int {
51+ return MapWrapper . size ( this . _allKeys ) ;
52+ }
53+ }
54+
55+ var _globalKeyRegistry = new KeyRegistry ( ) ;
0 commit comments