public Set < TraceeBackendProvider > getBackendProviders ( ) { // Create a working copy of Cache. Reference is updated upon cache update. final Map < ClassLoader , Set < TraceeBackendProvider > > cacheCopy = providersPerClassloader ; // Try to determine TraceeBackendProvider by context classloader. Fallback: use classloader of class. final Set < TraceeBackendProvider > providerFromContextClassLoader = getTraceeProviderFromClassloader ( cacheCopy , GetClassLoader . fromContext ( ) ) ; if ( ! providerFromContextClassLoader . isEmpty ( ) ) { return providerFromContextClassLoader ; } else { return getTraceeProviderFromClassloader ( cacheCopy , GetClassLoader . fromClass ( BackendProviderResolver . class ) ) ; } }
Find correct backend provider for the current context classloader . If no context classloader is available a fallback with the classloader of this resolver class is taken