private void loadImports(ProtoDescriptor proto, File protoDir) { LinkedHashMap<String,ProtoDescriptor> children = new LinkedHashMap<String,ProtoDescriptor>(); for (String imp : proto.getImports()) { File file = new File(protoDir, imp); for (int i = 0; i < path.length && !file.exists(); i++) { file = new File(path[i], imp); } if ( !file.exists() ) { errors.add("Cannot load import: "+imp); } FileInputStream is=null; try { is = new FileInputStream(file); ProtoParser parser = new ProtoParser(is); ProtoDescriptor child = parser.ProtoDescriptor(); child.setName(file.getName()); loadImports(child, file.getParentFile()); children.put(imp, child); } catch (ParseException e) { errors.add("Failed to parse: "+file.getPath()+":"+e.getMessage()); } catch (FileNotFoundException e) { errors.add("Failed to open: "+file.getPath()+":"+e.getMessage()); } finally { try { is.close(); } catch (Throwable ignore){} } } proto.setImportProtoDescriptors(children); }
private String javaClassName(ProtoDescriptor proto) { return getOption(proto.getOptions(), "java_outer_classname", uCamel(removeFileExtension(proto.getName()))); }
private String javaPackage(ProtoDescriptor proto) { String name = proto.getPackageName(); if( name!=null ) { name = name.replace('-', '.'); name = name.replace('/', '.'); } return getOption(proto.getOptions(), "java_package", name); }
public TypeDescriptor getType(String type) { for (MessageDescriptor o : messages.values()) { if( type.equals(o.getName()) ) { return o; } if( type.startsWith(o.getName()+".") ) { return o.getType( type.substring(o.getName().length()+1) ); } } for (EnumDescriptor o : enums.values()) { if( type.equals(o.getName()) ) { return o; } } // Check to see if the type was qualified with the package name... for (ProtoDescriptor o : importProtoDescriptors.values()) { if( o.getPackageName()!=null && type.startsWith(o.getPackageName()+".") ) { return o.getType( type.substring(o.getPackageName().length()+1) ); } } for (ProtoDescriptor o : importProtoDescriptors.values()) { TypeDescriptor rc = o.getType(type); if (rc != null) { return rc; } } return null; }
final public ProtoDescriptor ProtoDescriptor() throws ParseException { ProtoDescriptor proto = new ProtoDescriptor(); String packageName=null; LinkedHashMap<String,OptionDescriptor> opts = new LinkedHashMap<String,OptionDescriptor>(); proto.setPackageName(packageName); proto.setImports(imports); proto.setOptions(opts); proto.setMessages(messages); proto.setEnums(enums); proto.setServices(services); proto.setExtends(extendsList); {if (true) return proto;} throw new Error("Missing return statement in function");
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()); deferredDecode = Boolean.parseBoolean(getOption(proto.getOptions(), "deferred_decode", "false")); auto_clear_optional_fields = Boolean.parseBoolean(getOption(proto.getOptions(), "auto_clear_optional_fields", "false"));
private void generateProtoFile() throws CompilerException { if( multipleFiles ) { for (EnumDescriptor value : proto.getEnums().values()) { final EnumDescriptor o = value; String className = uCamel(o.getName()); for (MessageDescriptor value : proto.getMessages().values()) { final MessageDescriptor o = value; String className = uCamel(o.getName()); indent(); for (EnumDescriptor enumType : proto.getEnums().values()) { generateEnum(enumType); for (MessageDescriptor m : proto.getMessages().values()) { generateMessageBean(m);
public void validate(List<String> errors) { if( group!=null ) { typeDescriptor=group; } if( !SCALAR_TYPES.contains(type) ) { // Find the type def for that guy.. if( typeDescriptor==null ) { typeDescriptor = parent.getType(type); } if( typeDescriptor == null ) { typeDescriptor = parent.getProtoDescriptor().getType(type); } if( typeDescriptor == null ) { errors.add("Field type not found: "+type); } } }
private boolean isMultipleFilesEnabled(ProtoDescriptor proto) { return "true".equals(getOption(proto.getOptions(), "java_multiple_files", "false")); }
final public ProtoDescriptor ProtoDescriptor() throws ParseException { ProtoDescriptor proto = new ProtoDescriptor(); String packageName=null; LinkedHashMap<String,OptionDescriptor> opts = new LinkedHashMap<String,OptionDescriptor>(); proto.setPackageName(packageName); proto.setImports(imports); proto.setOptions(opts); proto.setMessages(messages); proto.setEnums(enums); proto.setServices(services); proto.setExtends(extendsList); {if (true) return proto;} throw new Error("Missing return statement in function");
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()); deferredDecode = Boolean.parseBoolean(getOption(proto.getOptions(), "deferred_decode", "false")); auto_clear_optional_fields = Boolean.parseBoolean(getOption(proto.getOptions(), "auto_clear_optional_fields", "false"));
private void generateProtoFile() throws CompilerException { if( multipleFiles ) { for (EnumDescriptor value : proto.getEnums().values()) { final EnumDescriptor o = value; String className = uCamel(o.getName()); for (MessageDescriptor value : proto.getMessages().values()) { final MessageDescriptor o = value; String className = uCamel(o.getName()); indent(); for (EnumDescriptor enumType : proto.getEnums().values()) { generateEnum(enumType); for (MessageDescriptor m : proto.getMessages().values()) { generateMessageBean(m);
public void validate(List<String> errors) { if( group!=null ) { typeDescriptor=group; } if( !SCALAR_TYPES.contains(type) ) { // Find the type def for that guy.. if( typeDescriptor==null ) { typeDescriptor = parent.getType(type); } if( typeDescriptor == null ) { typeDescriptor = parent.getProtoDescriptor().getType(type); } if( typeDescriptor == null ) { errors.add("Field type not found: "+type); } } }
public TypeDescriptor getType(String type) { for (MessageDescriptor o : messages.values()) { if( type.equals(o.getName()) ) { return o; } if( type.startsWith(o.getName()+".") ) { return o.getType( type.substring(o.getName().length()+1) ); } } for (EnumDescriptor o : enums.values()) { if( type.equals(o.getName()) ) { return o; } } // Check to see if the type was qualified with the package name... for (ProtoDescriptor o : importProtoDescriptors.values()) { if( o.getPackageName()!=null && type.startsWith(o.getPackageName()+".") ) { return o.getType( type.substring(o.getPackageName().length()+1) ); } } for (ProtoDescriptor o : importProtoDescriptors.values()) { TypeDescriptor rc = o.getType(type); if (rc != null) { return rc; } } return null; }
private boolean isMultipleFilesEnabled(ProtoDescriptor proto) { return "true".equals(getOption(proto.getOptions(), "java_multiple_files", "false")); }
final public ProtoDescriptor ProtoDescriptor() throws ParseException { ProtoDescriptor proto = new ProtoDescriptor(); String packageName=null; LinkedHashMap<String,OptionDescriptor> opts = new LinkedHashMap<String,OptionDescriptor>(); proto.setPackageName(packageName); proto.setImports(imports); proto.setOptions(opts); proto.setMessages(messages); proto.setEnums(enums); proto.setServices(services); proto.setExtends(extendsList); {if (true) return proto;} throw new Error("Missing return statement in function");
private void loadImports(ProtoDescriptor proto, File protoDir) { LinkedHashMap<String,ProtoDescriptor> children = new LinkedHashMap<String,ProtoDescriptor>(); for (String imp : proto.getImports()) { File file = new File(protoDir, imp); for (int i = 0; i < path.length && !file.exists(); i++) { file = new File(path[i], imp); } if ( !file.exists() ) { errors.add("Cannot load import: "+imp); } FileInputStream is=null; try { is = new FileInputStream(file); ProtoParser parser = new ProtoParser(is); ProtoDescriptor child = parser.ProtoDescriptor(); child.setName(file.getName()); loadImports(child, file.getParentFile()); children.put(imp, child); } catch (ParseException e) { errors.add("Failed to parse: "+file.getPath()+":"+e.getMessage()); } catch (FileNotFoundException e) { errors.add("Failed to open: "+file.getPath()+":"+e.getMessage()); } finally { try { is.close(); } catch (Throwable ignore){} } } proto.setImportProtoDescriptors(children); }
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()); deferredDecode = Boolean.parseBoolean(getOption(proto.getOptions(), "deferred_decode", "false")); auto_clear_optional_fields = Boolean.parseBoolean(getOption(proto.getOptions(), "auto_clear_optional_fields", "false"));
private String javaPackage(ProtoDescriptor proto) { String name = proto.getPackageName(); if( name!=null ) { name = name.replace('-', '.'); name = name.replace('/', '.'); } return getOption(proto.getOptions(), "java_package", name); }
private String javaClassName(ProtoDescriptor proto) { return getOption(proto.getOptions(), "java_outer_classname", uCamel(removeFileExtension(proto.getName()))); }