/** * Adds a metadata provider to the list of registered providers. * * @param newProvider the provider to be added * * @throws MetadataProviderException thrown if there is a problem adding the metadata provider */ public void addMetadataProvider(MetadataProvider newProvider) throws MetadataProviderException { Lock writeLock = providerLock.writeLock(); writeLock.lock(); try { ArrayList<MetadataProvider> checkedProviders = new ArrayList<MetadataProvider>(providers); doAddMetadataProvider(newProvider, checkedProviders); providers = Collections.unmodifiableList(checkedProviders); } finally { writeLock.unlock(); } }
/** * Replaces the current set of metadata providers with give collection. * * @param newProviders the metadata providers to replace the current providers with * * @throws MetadataProviderException thrown if there is a problem adding the metadata provider */ public void setProviders(List<MetadataProvider> newProviders) throws MetadataProviderException { Lock writeLock = providerLock.writeLock(); writeLock.lock(); try { if (newProviders == null || newProviders.isEmpty()) { providers = Collections.emptyList(); return; } ArrayList<MetadataProvider> checkedProviders = new ArrayList<MetadataProvider>(); for (MetadataProvider provider : newProviders) { doAddMetadataProvider(provider, checkedProviders); } providers = Collections.unmodifiableList(checkedProviders); } finally { writeLock.unlock(); } }