private boolean hasOneOf(InterfaceContext context) { return context .getInterfaceConfig() .getMethodConfigs() .stream() .anyMatch(config -> !config.getOneofNames(context.getNamer()).isEmpty()); }
@Override /* Returns the DiscoGapicMethodConfig for the given method. */ public DiscoGapicMethodConfig getMethodConfig(MethodModel method) { String methodName = method.getFullName(); for (InterfaceConfig config : getProductConfig().getInterfaceConfigMap().values()) { for (MethodConfig methodConfig : config.getMethodConfigs()) { if (methodConfig.getMethodModel().getFullName().equals(methodName)) { return (DiscoGapicMethodConfig) methodConfig; } } } throw new IllegalArgumentException("Interface config does not exist for method: " + methodName); }
public Map<String, InterfaceModel> getGrpcInterfacesForService( ApiModel model, GapicProductConfig productConfig, InterfaceModel apiInterface) { if (!productConfig.getTransportProtocol().equals(TransportProtocol.GRPC)) { return ImmutableMap.of(); } Map<String, InterfaceModel> interfaces = new LinkedHashMap<>(); interfaces.put(apiInterface.getFullName(), apiInterface); InterfaceConfig interfaceConfig = productConfig.getInterfaceConfig(apiInterface); for (MethodConfig methodConfig : interfaceConfig.getMethodConfigs()) { String reroute = methodConfig.getRerouteToGrpcInterface(); if (!Strings.isNullOrEmpty(reroute)) { InterfaceModel targetInterface = model.getInterface(reroute); interfaces.put(reroute, targetInterface); } } return interfaces; }
public List<GrpcElementDocView> generateElementDocs( GapicProductConfig productConfig, ModelTypeTable typeTable, SurfaceNamer namer, ProtoContainerElement containerElement) { ImmutableList.Builder<GrpcElementDocView> children = ImmutableList.builder(); Set<String> lroTypes = productConfig .getInterfaceConfigMap() .values() .stream() .flatMap(i -> i.getMethodConfigs().stream()) .map(MethodConfig::getLongRunningConfig) .filter(Objects::nonNull) .flatMap(lro -> Stream.of(lro.getReturnType(), lro.getMetadataType())) .map(t -> ((ProtoTypeRef) t).getProtoType()) .map(TypeRef::getMessageType) .map(MessageType::getFullName) .collect(ImmutableSet.toImmutableSet()); Collection<MessageType> messages = containerElement .getMessages() .stream() .filter(m -> m.isReachable() || lroTypes.contains(m.getFullName())) .collect(ImmutableList.toImmutableList()); children.addAll(generateMessageDocs(productConfig, typeTable, namer, messages)); children.addAll(generateEnumDocs(typeTable, namer, containerElement.getEnums())); return children.build(); }
private List<SingleResourceNameConfig> getSingleResourceNameConfigsUsedByInterface( InterfaceContext context) { InterfaceConfig interfaceConfig = context.getInterfaceConfig(); Set<String> foundSet = new HashSet<>(); ImmutableList.Builder<SingleResourceNameConfig> resourceNameConfigsBuilder = ImmutableList.builder(); for (SingleResourceNameConfig config : interfaceConfig.getSingleResourceNameConfigs()) { resourceNameConfigsBuilder.add(config); foundSet.add(config.getEntityId()); } for (MethodConfig methodConfig : interfaceConfig.getMethodConfigs()) { MethodContext methodContext = context.asRequestMethodContext(methodConfig.getMethodModel()); for (String fieldNamePattern : methodConfig.getFieldNamePatterns().values()) { SingleResourceNameConfig resourceNameConfig = methodContext.getSingleResourceNameConfig(fieldNamePattern); if (resourceNameConfig != null && !foundSet.contains(resourceNameConfig.getEntityId())) { resourceNameConfigsBuilder.add(resourceNameConfig); foundSet.add(resourceNameConfig.getEntityId()); } } } return resourceNameConfigsBuilder.build(); }
@Override public List<ViewModel> transform(ProtoApiModel model, GapicProductConfig productionConfig) { List<ViewModel> viewModels = Lists.newArrayList(); boolean shouldGenerateSamplePackages = productionConfig .getInterfaceConfigMap() .values() .stream() .flatMap(config -> config.getMethodConfigs().stream()) .anyMatch(config -> config.getSampleSpec().isConfigured()); if (!shouldGenerateSamplePackages) { return viewModels; } for (PackageMetadataView.Builder builder : this.generateMetadataViewBuilders(model, packageConfig, null)) { builder.additionalDependencies(additionalSampleDependencies()); viewModels.add(builder.build()); } return viewModels; }
public static DiscoGapicInterfaceContext createWithInterface( InterfaceModel interfaceModel, GapicProductConfig productConfig, ImportTypeTable typeTable, SurfaceNamer namer, FeatureConfig featureConfig) { Preconditions.checkArgument(typeTable instanceof SchemaTypeTable); ImmutableList.Builder<MethodModel> interfaceMethods = new ImmutableList.Builder<>(); for (MethodConfig method : productConfig.getInterfaceConfig(interfaceModel.getFullName()).getMethodConfigs()) { interfaceMethods.add(method.getMethodModel()); } return new AutoValue_DiscoGapicInterfaceContext( productConfig, (SchemaTypeTable) typeTable, new DiscoGapicNamer(), (DiscoInterfaceModel) interfaceModel, namer, featureConfig); }
private static Map<Interface, Interface> createGrpcRerouteMap( Model model, GapicProductConfig productConfig) { HashMap<Interface, Interface> grpcRerouteMap = new HashMap<>(); for (Interface apiInterface : ProtoModels.getInterfaces(model)) { InterfaceConfig interfaceConfig = productConfig.getInterfaceConfig(apiInterface); if (interfaceConfig == null) { continue; } if (!apiInterface.isReachable()) { continue; } for (MethodConfig methodConfig : interfaceConfig.getMethodConfigs()) { String reroute = methodConfig.getRerouteToGrpcInterface(); if (!Strings.isNullOrEmpty(reroute)) { Interface targetInterface = model.getSymbolTable().lookupInterface(reroute); grpcRerouteMap.put(targetInterface, apiInterface); } } } return grpcRerouteMap; }
private static DiscoGapicInterfaceContext createWithInterface( DiscoApiModel model, String interfaceName, GapicProductConfig productConfig, SchemaTypeTable typeTable, SurfaceNamer namer, FeatureConfig featureConfig) { ImmutableList.Builder<MethodModel> interfaceMethods = new ImmutableList.Builder<>(); for (MethodConfig method : productConfig.getInterfaceConfig(interfaceName).getMethodConfigs()) { interfaceMethods.add(method.getMethodModel()); } return new AutoValue_DiscoGapicInterfaceContext( productConfig, typeTable, new DiscoGapicNamer(), new DiscoInterfaceModel(interfaceName, model), namer, featureConfig); }
/** * Gets the ProtoFile objects in which the fields of the reachable methods in the model are * defined. */ public static Iterable<ProtoFile> getProtoFiles(GapicProductConfig productConfig) { Set<ProtoFile> files = newFileSet(); for (InterfaceConfig interfaceConfig : productConfig.getInterfaceConfigMap().values()) { for (MethodConfig methodConfig : interfaceConfig.getMethodConfigs()) { MethodModel method = methodConfig.getMethodModel(); files.addAll( getFilesForMessage( ((ProtoTypeRef) method.getInputType()).getProtoType().getMessageType(), false)); files.addAll( getFilesForMessage( ((ProtoTypeRef) method.getOutputType()).getProtoType().getMessageType(), false)); } } return files; }
productConfig.getInterfaceConfigMap().get(interfaceName).getMethodConfigs()) { Method method = ((DiscoveryMethodModel) methodConfig.getMethodModel()).getDiscoMethod(); namePatternsToMethod.put(DiscoGapicParser.getCanonicalPath(method.flatPath()), method);