public List getMatches ( String path ) { Map . Entry entry ; Object entries = null ; if ( path == null ) return LazyList . getList ( entries ) ; int l = path . indexOf ( ' ' ) ; if ( l < 0 ) { l = path . indexOf ( ' ' ) ; if ( l < 0 ) l = path . length ( ) ; } // try exact match entry = _exactMap . getEntry ( path , 0 , l ) ; if ( entry != null ) entries = LazyList . add ( entries , entry . getValue ( ) ) ; // prefix search int i = l - 1 ; while ( ( i = path . lastIndexOf ( ' ' , i - 1 ) ) >= 0 ) { entry = _prefixMap . getEntry ( path , 0 , i ) ; if ( entry != null ) entries = LazyList . add ( entries , entry . getValue ( ) ) ; } // Prefix Default if ( _prefixDefault != null ) entries = LazyList . add ( entries , _prefixDefault ) ; // Extension search i = 0 ; while ( ( i = path . indexOf ( ' ' , i + 1 ) ) > 0 ) { entry = _suffixMap . getEntry ( path , i + 1 , l - i - 1 ) ; if ( entry != null ) entries = LazyList . add ( entries , entry . getValue ( ) ) ; } // Default if ( _default != null ) { // Optimization for just the default if ( entries == null ) return _defaultSingletonList ; entries = LazyList . add ( entries , _default ) ; } return LazyList . getList ( entries ) ; }
Get all entries matched by the path . Best match first .