1 /* 2 * This file is part of dependency-check-core. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 * Copyright (c) 2012 Jeremy Long. All Rights Reserved. 17 */ 18 package org.owasp.dependencycheck.data.update; 19 20 import java.util.Iterator; 21 import java.util.ServiceLoader; 22 import javax.annotation.concurrent.NotThreadSafe; 23 24 /** 25 * The CachedWebDataSource Service Loader. This class loads all services that 26 * implement {@link org.owasp.dependencycheck.data.update.CachedWebDataSource}. 27 * 28 * @author Jeremy Long 29 */ 30 @NotThreadSafe 31 public class UpdateService { 32 33 /** 34 * the service loader for CachedWebDataSource. 35 */ 36 private final ServiceLoader<CachedWebDataSource> loader; 37 38 /** 39 * Creates a new instance of UpdateService. 40 * 41 * @param classLoader the ClassLoader to use when dynamically loading 42 * Analyzer and Update services 43 */ 44 public UpdateService(ClassLoader classLoader) { 45 loader = ServiceLoader.load(CachedWebDataSource.class, classLoader); 46 } 47 48 /** 49 * Returns an Iterator for all instances of the CachedWebDataSource 50 * interface. 51 * 52 * @return an iterator of CachedWebDataSource. 53 */ 54 public Iterator<CachedWebDataSource> getDataSources() { 55 return loader.iterator(); 56 } 57 }