package org.oddjob.oddballs;
import java.io.File;
import org.apache.log4j.Logger;
import org.oddjob.arooa.ArooaDescriptor;
import org.oddjob.arooa.deploy.ArooaDescriptorFactory;
public class OddballsDirDescriptorFactory implements ArooaDescriptorFactory {
private static final Logger logger = Logger.getLogger(OddballsDirDescriptorFactory.class);
private File baseDir;
private OddballFactory oddballFactory;
public OddballsDirDescriptorFactory() {
}
public OddballsDirDescriptorFactory(File baseDir) {
this.baseDir = baseDir;
}
public File getBaseDir() {
return baseDir;
}
public void setBaseDir(File baseDir) {
this.baseDir = baseDir;
}
public OddballFactory getOddballFactory() {
return oddballFactory;
}
public void setOddballFactory(OddballFactory oddballFactory) {
this.oddballFactory = oddballFactory;
}
public ArooaDescriptor createDescriptor(ClassLoader classLoader) {
if (baseDir == null) {
throw new NullPointerException("Base Directory (i.e. oddballs) must be specified.");
}
logger.info("Scanning directory [" + baseDir.getPath() + "] for Oddballs.");
File[] entries = baseDir.listFiles();
if (entries == null) {
logger.info("No Oddballs found.");
return null;
}
return new OddballsDescriptorFactory(
entries, oddballFactory).createDescriptor(classLoader);
}
}