private Map < String , Factory > getVisibleIDMap ( ) { synchronized ( this ) { // or idcache-only lock? if ( idcache == null ) { try { factoryLock . acquireRead ( ) ; Map < String , Factory > mutableMap = new HashMap < String , Factory > ( ) ; ListIterator < Factory > lIter = factories . listIterator ( factories . size ( ) ) ; while ( lIter . hasPrevious ( ) ) { Factory f = lIter . previous ( ) ; f . updateVisibleIDs ( mutableMap ) ; } this . idcache = Collections . unmodifiableMap ( mutableMap ) ; } finally { factoryLock . releaseRead ( ) ; } } } return idcache ; }
Return a map from visible ids to factories .