/** Sets the service config based on a sequence of messages. */ @Deprecated public void setConfigs(Iterable<Message> configs) { setConfigSources( FluentIterable.from(configs) .transform( new Function<Message, ConfigSource>() { @Override public ConfigSource apply(Message input) { return ConfigSource.newBuilder(input).build(); } })); }
/** Sets the service config based on a sequence of messages. */ @Deprecated public void setConfigs(Iterable<Message> configs) { setConfigSources( FluentIterable.from(configs) .transform( new Function<Message, ConfigSource>() { @Override public ConfigSource apply(Message input) { return ConfigSource.newBuilder(input).build(); } })); }
/** Sets up the model configs, attaching to the model. */ public static void setupModelConfigs(Model model, Set<FileWrapper> files) { DiagCollector diagCollector = model.getDiagReporter().getDiagCollector(); ImmutableList.Builder<ConfigSource> builder = ImmutableList.builder(); for (FileWrapper file : files) { ConfigSource message = getConfigSourceFromFile(diagCollector, file.getFilename(), file.getFileContents()); if (message != null) { builder.add(message); } } if (diagCollector.hasErrors()) { return; } model.setConfigSources(builder.build()); } }
/** Sets up the model configs, attaching to the model. */ public static void setupModelConfigs(Model model, Set<FileWrapper> files) { DiagCollector diagCollector = model.getDiagReporter().getDiagCollector(); ImmutableList.Builder<ConfigSource> builder = ImmutableList.builder(); for (FileWrapper file : files) { ConfigSource message = getConfigSourceFromFile(diagCollector, file.getFilename(), file.getFileContents()); if (message != null) { builder.add(message); } } if (diagCollector.hasErrors()) { return; } model.setConfigSources(builder.build()); } }
/** Returns a {@link Model} generated from the {@link Service} and the additionalConfigs. */ private static Model createModel(Service service, List<FileWrapper> additionalConfigs) { Model model = Model.create(service); if (additionalConfigs != null) { List<ConfigSource> allConfigs = Lists.newArrayList(); allConfigs.add(model.getServiceConfigSource()); for (FileWrapper additionalConfig : additionalConfigs) { allConfigs.add( YamlReader.readConfig( model.getDiagReporter().getDiagCollector(), additionalConfig.getFilename(), additionalConfig.getFileContents().toStringUtf8())); } model.setConfigSources(allConfigs); } StandardSetup.registerStandardProcessors(model); StandardSetup.registerStandardConfigAspects(model); return model; } }
/** Returns a {@link Model} generated from the {@link Service} and the additionalConfigs. */ private static Model createModel(Service service, List<FileWrapper> additionalConfigs) { Model model = Model.create(service); if (additionalConfigs != null) { List<ConfigSource> allConfigs = Lists.newArrayList(); allConfigs.add(model.getServiceConfigSource()); for (FileWrapper additionalConfig : additionalConfigs) { allConfigs.add( YamlReader.readConfig( model.getDiagReporter().getDiagCollector(), additionalConfig.getFilename(), additionalConfig.getFileContents().toStringUtf8())); } model.setConfigSources(allConfigs); } StandardSetup.registerStandardProcessors(model); StandardSetup.registerStandardConfigAspects(model); return model; } }
/** Creates a model, based on the provided config files. */ public Model createModel(List<String> configFileNames) { try { Model model = Model.create(getDescriptor(), protoFiles, enabledExperiments, ExtensionPool.EMPTY); model.setConfigSources( getApiYamlConfigSources(model.getDiagReporter().getDiagCollector(), configFileNames)); return model; } catch (IOException e) { throw new RuntimeException(e); } }
/** * Creates a model from a normalized service config, rather than from descriptor and .yaml files. */ public static Model create(Service normalizedConfig) { FileDescriptorSet regeneratedDescriptor = DescriptorGenerator.generate(normalizedConfig); Model model = create(regeneratedDescriptor); // Configured with a stripped Service Service.Builder builder = normalizedConfig.toBuilder(); ImmutableList.Builder<Api> strippedApis = ImmutableList.builder(); for (Api api : normalizedConfig.getApisList()) { strippedApis.add( Api.newBuilder().setName(api.getName()).setVersion(api.getVersion()).build()); } // NOTE: Documentation may still contain text from the original protos. builder.clearEnums(); builder.clearTypes(); builder.clearApis(); builder.addAllApis(strippedApis.build()); ConfigSource strippedConfig = ConfigSource.newBuilder(builder.build()).build(); model.setConfigSources(ImmutableList.of(strippedConfig)); return model; }
/** * Creates a model from a normalized service config, rather than from descriptor and .yaml files. */ public static Model create(Service normalizedConfig) { FileDescriptorSet regeneratedDescriptor = DescriptorGenerator.generate(normalizedConfig); Model model = create(regeneratedDescriptor); // Configured with a stripped Service Service.Builder builder = normalizedConfig.toBuilder(); ImmutableList.Builder<Api> strippedApis = ImmutableList.builder(); for (Api api : normalizedConfig.getApisList()) { strippedApis.add( Api.newBuilder().setName(api.getName()).setVersion(api.getVersion()).build()); } // NOTE: Documentation may still contain text from the original protos. builder.clearEnums(); builder.clearTypes(); builder.clearApis(); builder.addAllApis(strippedApis.build()); ConfigSource strippedConfig = ConfigSource.newBuilder(builder.build()).build(); model.setConfigSources(ImmutableList.of(strippedConfig)); return model; }
@Test public void mergesWithTypeMismatch() throws Exception { createApi("service_type_mismatch.proto"); model.setConfigSources( testConfig.getApiYamlConfigSources( model.getDiagReporter().getDiagCollector(), ImmutableList.of("service_type_mismatch.yaml"))); model.establishStage(Merged.KEY); assertError("protiary.test.ExtraEnum"); assertError("protiary.test.Bucket"); }
@Test public void mergesWithYamlConfig() throws Exception { createApi("service.proto", "included_type.proto"); model.setConfigSources( testConfig.getApiYamlConfigSources( model.getDiagReporter().getDiagCollector(), ImmutableList.of("service.yaml"))); StandardSetup.registerStandardConfigAspects(model); model.establishStage(Merged.KEY); checkNoErrors(); Method getBucket = getMethod("protiary.test.Storage", "GetBucket"); Assert.assertEquals("Override GetBucket documentation.", getBucket.getAttribute(ElementDocumentationAttribute.KEY).documentation()); assertTypeInclusions(model, Lists.newArrayList("protiary.test.inclusion.Type1", "protiary.test.inclusion.Type2", "protiary.test.inclusion.Enum1"), Lists.newArrayList("protiary.test.inclusion.Type3")); }
@Test public void mergesWithApiVersion() throws Exception { createApi("service_with_version.proto"); model.setConfigSources( testConfig.getApiYamlConfigSources( model.getDiagReporter().getDiagCollector(), ImmutableList.of("service_with_version.yaml"))); StandardSetup.registerStandardConfigAspects(model); model.establishStage(Merged.KEY); Interface iface = getInterface("protiary.test.v2.Storage"); Assert.assertEquals("v2", iface.getAttribute(VersionAttribute.KEY).majorVersion()); }
@Test public void mergesWithBetaVersion() throws Exception { createApi("service_with_beta_version.proto"); model.setConfigSources( testConfig.getApiYamlConfigSources( model.getDiagReporter().getDiagCollector(), ImmutableList.of("service_with_beta_version.yaml"))); StandardSetup.registerStandardConfigAspects(model); model.establishStage(Merged.KEY); Interface iface = getInterface("protiary.test.v2beta1.Storage"); Assert.assertEquals("v2beta1", iface.getAttribute(VersionAttribute.KEY).majorVersion()); }
@Test public void storageHttpConfig() throws Exception { createApi("service.proto", "included_type.proto"); model.setConfigSources( testConfig.getApiYamlConfigSources( model.getDiagReporter().getDiagCollector(), ImmutableList.of("service.yaml"))); StandardSetup.registerStandardConfigAspects(model); model.establishStage(Merged.KEY); checkNoErrors(); // Validate http configs assertMethodConfig("protiary.test.Storage", "GetBucket", MethodKind.GET, makeSet("bucket_id"), makeSet(), makeSet()); assertMethodConfig("protiary.test.Storage", "CreateObject", MethodKind.POST, makeSet("bucket_name.bucket_id"), makeSet("mode", "kind"), makeSet("object")); assertMethodConfig("protiary.test.Storage", "CustomCreate", MethodKind.POST, makeSet(), makeSet(), makeSet("bucket")); assertMethodConfig("protiary.test.Storage", "CustomObjectCreateAllParam", MethodKind.POST, makeSet("bucket_name.bucket_id"), makeSet("object", "mode", "kind"), makeSet()); }