package bndtools;
import java.io.File;
import java.io.OutputStream;
import java.io.Writer;
import java.util.Map;
import java.util.Set;
import org.osgi.framework.BundleContext;
import org.osgi.service.indexer.ResourceIndexer;
import org.osgi.util.tracker.ServiceTracker;
public class ResourceIndexerTracker extends ServiceTracker<ResourceIndexer,ResourceIndexer> implements ResourceIndexer {
private final long timeout;
public ResourceIndexerTracker(BundleContext context, long timeout) {
super(context, ResourceIndexer.class.getName(), null);
this.timeout = timeout;
}
public void index(Set<File> files, OutputStream out, Map<String,String> config) throws Exception {
ResourceIndexer indexer = doGetIndexer();
indexer.index(files, out, config);
}
public void indexFragment(Set<File> files, Writer out, Map<String,String> config) throws Exception {
ResourceIndexer indexer = doGetIndexer();
indexer.indexFragment(files, out, config);
}
public IndexResult indexFile(File file) throws Exception {
ResourceIndexer indexer = doGetIndexer();
return indexer.indexFile(file);
}
private ResourceIndexer doGetIndexer() throws InterruptedException {
ResourceIndexer indexer = waitForService(timeout);
if (indexer == null)
throw new IllegalStateException("Resource indexer service not available.");
return indexer;
}
}