in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/AltJavaGenerator.java [83:128]
public void compile(File file) throws CompilerException {
// Parse the proto file
FileInputStream is=null;
try {
is = new FileInputStream(file);
ProtoParser parser = new ProtoParser(is);
proto = parser.ProtoDescriptor();
proto.setName(file.getName());
loadImports(proto, file.getParentFile());
proto.validate(errors);
} catch (FileNotFoundException e) {
errors.add("Failed to open: "+file.getPath()+":"+e.getMessage());
} catch (ParseException e) {
errors.add("Failed to parse: "+file.getPath()+":"+e.getMessage());
} finally {
try { is.close(); } catch (Throwable ignore){}
}
if (!errors.isEmpty()) {
throw new CompilerException(errors);
}
// Load the options..
javaPackage = javaPackage(proto);
outerClassName = javaClassName(proto);
// optimizeFor = getOption(proto.getOptions(), "optimize_for", "SPEED");
multipleFiles = isMultipleFilesEnabled(proto);
// deferredDecode = Boolean.parseBoolean(getOption(proto.getOptions(), "deferred_decode", "false"));
auto_clear_optional_fields = Boolean.parseBoolean(getOption(proto.getOptions(), "auto_clear_optional_fields", "false"));
if( multipleFiles ) {
generateProtoFile();
} else {
writeFile(outerClassName, new Closure(){
public void execute() throws CompilerException {
generateProtoFile();
}
});
}
if (!errors.isEmpty()) {
throw new CompilerException(errors);
}
}