package org.atomnuke.examples.sinks;
import java.io.InputStream;
import org.atomnuke.atom.io.AtomReaderFactory;
import org.atomnuke.atom.io.ReaderResult;
import org.atomnuke.source.AtomSource;
import org.atomnuke.source.AtomSourceException;
import org.atomnuke.source.result.AtomSourceResult;
import org.atomnuke.source.result.AtomSourceResultImpl;
import org.atomnuke.task.context.AtomTaskContext;
import org.atomnuke.lifecycle.DestructionException;
import org.atomnuke.lifecycle.InitializationException;
/**
*
* @author zinic
*/
public class ClasspathSource implements AtomSource {
private final AtomReaderFactory atomReaderFactory;
private final String resourcePath;
public ClasspathSource(AtomReaderFactory atomReaderFactory, String resourcePath) {
this.atomReaderFactory = atomReaderFactory;
this.resourcePath = resourcePath;
}
@Override
public AtomSourceResult poll() throws AtomSourceException {
try {
final InputStream in = ClasspathSource.class.getResourceAsStream(resourcePath);
final ReaderResult result = atomReaderFactory.getInstance().read(in);
if (result.isEntry()) {
return new AtomSourceResultImpl(result.getEntry());
} else {
return new AtomSourceResultImpl(result.getFeed());
}
} catch (Exception ex) {
throw new AtomSourceException(ex.getMessage(), ex);
}
}
@Override
public void init(AtomTaskContext tc) throws InitializationException {
}
@Override
public void destroy() {
}
}