public String[] getAllTemplateNames(boolean recurse) 
        throws IOException {
        
        if (mTemplateProviderMap == null) {
            synchronized (this) {
                mTemplateProviderMap = new HashMap<String, CompilationProvider>();
                for (CompilationProvider provider : mCompilationProviders) {
                    String[] templates = provider.getKnownTemplateNames(recurse);
                    for (String template : templates) {
                        if (!mTemplateProviderMap.containsKey(template)) {
                            mTemplateProviderMap.put(template, provider);
                        }
                    }
                }
            }
        }
        
        return mTemplateProviderMap.keySet().toArray(
            new String[mTemplateProviderMap.size()]);
    }
public String [ ] getAllTemplateNames ( boolean recurse ) throws IOException { if ( mTemplateProviderMap == null ) { synchronized ( this ) { mTemplateProviderMap = new HashMap < String , CompilationProvider > ( ) ; for ( CompilationProvider provider : mCompilationProviders ) { String [ ] templates = provider . getKnownTemplateNames ( recurse ) ; for ( String template : templates ) { if ( ! mTemplateProviderMap . containsKey ( template ) ) { mTemplateProviderMap . put ( template , provider ) ; } } } } } return mTemplateProviderMap . keySet ( ) . toArray ( new String [ mTemplateProviderMap . size ( ) ] ) ; }
Get the list of all known templates to this compiler.  If the list of
known templates cannot be easily resolved, then <code>null</code> should
be returned.

@param recurse The flag of whether to recurse into sub-directories

@return The list of all known templates.