DescriptorPool(final FileDescriptor[] dependencies, boolean allowUnknownDependencies) { this.dependencies = new HashSet<FileDescriptor>(); this.allowUnknownDependencies = allowUnknownDependencies; for (int i = 0; i < dependencies.length; i++) { this.dependencies.add(dependencies[i]); importPublicDependencies(dependencies[i]); } for (final FileDescriptor dependency : this.dependencies) { try { addPackage(dependency.getPackage(), dependency); } catch (DescriptorValidationException e) { // Can't happen, because addPackage() only fails when the name // conflicts with a non-package, but we have not yet added any // non-packages at this point. throw new AssertionError(e); } } }
DescriptorPool(final FileDescriptor[] dependencies) { this.dependencies = new HashSet<FileDescriptor>(); for (int i = 0; i < dependencies.length; i++) { this.dependencies.add(dependencies[i]); importPublicDependencies(dependencies[i]); } for (final FileDescriptor dependency : this.dependencies) { try { addPackage(dependency.getPackage(), dependency); } catch (DescriptorValidationException e) { // Can't happen, because addPackage() only fails when the name // conflicts with a non-package, but we have not yet added any // non-packages at this point. assert false; } } }
/** * Find a message type in the file by name. Does not find nested types. * * @param name The unqualified type name to look for. * @return The message type's descriptor, or {@code null} if not found. */ public Descriptor findMessageTypeByName(String name) { // Don't allow looking up nested types. This will make optimization // easier later. if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof Descriptor && result.getFile() == this) { return (Descriptor)result; } else { return null; } }
private static String stripPackageName(String fullName, FileDescriptor file) { if (file.getPackage().isEmpty()) { return fullName; } return fullName.substring(file.getPackage().length() + 1); }
/** Returns the expected javascript package for protos based on the .proto file. */ private static String getJsPackage(FileDescriptor file) { String protoPackage = file.getPackage(); if (!protoPackage.isEmpty()) { return "proto." + protoPackage; } return "proto"; }
private Descriptors.ServiceDescriptor findService(String serviceName, String packageName) { for (Descriptors.FileDescriptor fileDescriptor : fileDescriptors) { if (!fileDescriptor.getPackage().equals(packageName)) { // Package does not match this file, ignore. continue; } Descriptors.ServiceDescriptor serviceDescriptor = fileDescriptor.findServiceByName(serviceName); if (serviceDescriptor != null) { return serviceDescriptor; } } throw new IllegalArgumentException("Can't find service with name: " + serviceName); }
private static String stripPackageName(String fullName, FileDescriptor file) { if (file.getPackage().isEmpty()) { return fullName; } return fullName.substring(file.getPackage().length() + 1); }
/** Returns the expected javascript package for protos based on the .proto file. */ private static String getJsPackage(FileDescriptor file) { String protoPackage = file.getPackage(); if (!protoPackage.isEmpty()) { return "proto." + protoPackage; } return "proto"; }
publicDependencies.toArray(this.publicDependencies); pool.addPackage(getPackage(), this);
pool.addPackage(getPackage(), this);
/** * Find a service type in the file by name. * * @param name The unqualified type name to look for. * @return The service type's descriptor, or {@code null} if not found. */ public ServiceDescriptor findServiceByName(String name) { // Don't allow looking up nested types. This will make optimization // easier later. if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof ServiceDescriptor && result.getFile() == this) { return (ServiceDescriptor)result; } else { return null; } }
/** * Find an enum type in the file by name. Does not find nested types. * * @param name The unqualified type name to look for. * @return The enum type's descriptor, or {@code null} if not found. */ public EnumDescriptor findEnumTypeByName(String name) { // Don't allow looking up nested types. This will make optimization // easier later. if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof EnumDescriptor && result.getFile() == this) { return (EnumDescriptor)result; } else { return null; } }
/** * Find an extension in the file by name. Does not find extensions nested * inside message types. * * @param name The unqualified extension name to look for. * @return The extension's descriptor, or {@code null} if not found. */ public FieldDescriptor findExtensionByName(String name) { if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof FieldDescriptor && result.getFile() == this) { return (FieldDescriptor)result; } else { return null; } }
/** * Find an extension in the file by name. Does not find extensions nested * inside message types. * * @param name The unqualified extension name to look for. * @return The extension's descriptor, or {@code null} if not found. */ public FieldDescriptor findExtensionByName(String name) { if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof FieldDescriptor && result.getFile() == this) { return (FieldDescriptor)result; } else { return null; } }
/** * Find a message type in the file by name. Does not find nested types. * * @param name The unqualified type name to look for. * @return The message type's descriptor, or {@code null} if not found. */ public Descriptor findMessageTypeByName(String name) { // Don't allow looking up nested types. This will make optimization // easier later. if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof Descriptor && result.getFile() == this) { return (Descriptor)result; } else { return null; } }
/** * Find a service type in the file by name. * * @param name The unqualified type name to look for. * @return The service type's descriptor, or {@code null} if not found. */ public ServiceDescriptor findServiceByName(String name) { // Don't allow looking up nested types. This will make optimization // easier later. if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof ServiceDescriptor && result.getFile() == this) { return (ServiceDescriptor)result; } else { return null; } }
/** * Find an enum type in the file by name. Does not find nested types. * * @param name The unqualified type name to look for. * @return The enum type's descriptor, or {@code null} if not found. */ public EnumDescriptor findEnumTypeByName(String name) { // Don't allow looking up nested types. This will make optimization // easier later. if (name.indexOf('.') != -1) { return null; } if (getPackage().length() > 0) { name = getPackage() + '.' + name; } final GenericDescriptor result = pool.findSymbol(name); if (result != null && result instanceof EnumDescriptor && result.getFile() == this) { return (EnumDescriptor)result; } else { return null; } }
private String getNamespace(FileDescriptor fd, Descriptor containing) { FileOptions o = fd.getOptions(); String p = o.hasJavaPackage() ? o.getJavaPackage() : fd.getPackage(); String outer; if (o.hasJavaOuterClassname()) { outer = o.getJavaOuterClassname(); } else { outer = new File(fd.getName()).getName(); outer = outer.substring(0, outer.lastIndexOf('.')); outer = toCamelCase(outer); } String inner = ""; while (containing != null) { inner = containing.getName() + "$" + inner; containing = containing.getContainingType(); } return p + "." + outer + "$" + inner; }
private static String computeFullName(final FileDescriptor file, final Descriptor parent, final String name) { if (parent != null) { return parent.getFullName() + '.' + name; } else if (file.getPackage().length() > 0) { return file.getPackage() + '.' + name; } else { return name; } }
private static String computeFullName(final FileDescriptor file, final Descriptor parent, final String name) { if (parent != null) { return parent.getFullName() + '.' + name; } else if (file.getPackage().length() > 0) { return file.getPackage() + '.' + name; } else { return name; } }