@Override public Collection<Extension> getExtensions(String fullMessageName) { return extensionCache.computeIfAbsent(fullMessageName, name -> { Collection<Extension> result = new ArrayList<>(); result.addAll(localExtensionRegistry.getExtensions(name)); Deque<Import> queue = new ArrayDeque<>(); queue.addAll(context.getProto().getImports()); while (!queue.isEmpty()) { Import anImport = queue.poll(); Proto proto = anImport.getProto(); Collection<Extension> extensions = getExtensions(proto, name); result.addAll(extensions); queue.addAll(proto.getPublicImports()); } return result; }); }
@Override public Collection<Extension> getExtensions(String fullMessageName) { return extensionCache.computeIfAbsent(fullMessageName, name -> { Collection<Extension> result = new ArrayList<>(); result.addAll(localExtensionRegistry.getExtensions(name)); Deque<Import> queue = new ArrayDeque<>(); queue.addAll(context.getProto().getImports()); while (!queue.isEmpty()) { Import anImport = queue.poll(); Proto proto = anImport.getProto(); Collection<Extension> extensions = getExtensions(proto, name); result.addAll(extensions); queue.addAll(proto.getPublicImports()); } return result; }); }