1 package org.apache.onami.autobind.scanner; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one or more 5 * contributor license agreements. See the NOTICE file distributed with 6 * this work for additional information regarding copyright ownership. 7 * The ASF licenses this file to You under the Apache License, Version 2.0 8 * (the "License"); you may not use this file except in compliance with 9 * the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 import java.io.IOException; 21 import java.util.List; 22 23 import org.apache.onami.autobind.scanner.features.ScannerFeature; 24 25 /** 26 * Interface which is used to create ClasspathScanner implementations. Our 27 * StartupModule will bind your chosen Implementation to this interface. You 28 * choose which ClasspathScanner should be used, by passing the Class to the 29 * StartupModule constructor. 30 */ 31 public interface ClasspathScanner 32 { 33 34 /** 35 * Starts the Classpath Scanning and the Registration of Requests for Bindings. Called through the StartupModule. 36 * 37 * @throws IOException 38 */ 39 void scan() 40 throws IOException; 41 42 /** 43 * Adds a ScannerFeature to the Scanner like Automatic Binding of Classes or Guice Modules, Interceptors, ... or 44 * your own one. 45 * 46 * @param feature 47 */ 48 void addFeature( ScannerFeature feature ); 49 50 void removeFeature( ScannerFeature feature ); 51 52 List<ScannerFeature> getFeatures(); 53 54 /** 55 * Adds a Package which should be included to scan. Only Classes found in the included Packages will be read and 56 * passed to the ScannerFeatures. 57 * 58 * @param filter 59 */ 60 void includePackage( PackageFilter filter ); 61 62 void excludePackage( PackageFilter filter ); 63 64 /** 65 * Destroys a ClasspathScanner so it can do some kind of Cleanup. 66 */ 67 void destroy(); 68 69 }