package edu.stanford.nlp.pipeline;
import edu.stanford.nlp.util.Pair;
import edu.stanford.nlp.util.ReflectionLoading;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* Reads from serialized annotations
*
* @author Angel Chang
*/
public class SerializedAnnotationCreator extends AbstractInputStreamAnnotationCreator {
AnnotationSerializer serializer;
public SerializedAnnotationCreator(AnnotationSerializer serializer) {
this.serializer = serializer;
}
public SerializedAnnotationCreator(String name, Properties props) {
String serializerClass = props.getProperty(name + ".serializer");
serializer = ReflectionLoading.loadByReflection(serializerClass);
}
@Override
public Annotation create(InputStream stream, String encoding) throws IOException {
try {
Pair<Annotation, InputStream> pair = serializer.read(stream);
pair.second.close();
Annotation annotation = pair.first;
return annotation;
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}