use of com.google.api.codegen.SampleValueSet in project toolkit by googleapis.
the class SampleTransformer method generateSample.
private MethodSampleView generateSample(SampleConfig config, MethodContext methodContext, InitCodeContext initCodeContext) {
methodContext = methodContext.cloneWithEmptyTypeTable();
InitCodeView initCodeView = initCodeTransformer().generateInitCode(methodContext, initCodeContext);
SampleValueSet valueSet = config.valueSet();
CallingForm form = config.callingForm();
String regionTag = config.regionTag();
List<OutputSpec> outputs = valueSet.getOnSuccessList();
if (outputs.isEmpty()) {
outputs = OutputTransformer.defaultOutputSpecs(methodContext);
}
OutputContext outputContext = OutputContext.create();
ImmutableList<OutputView> outputViews = outputTransformer().toViews(outputs, methodContext, valueSet, form, outputContext);
ImportSectionView sampleImportSectionView = sampleImportTransformer().generateImportSection(methodContext.cloneWithEmptyTypeTable(), form, outputContext, methodContext.getTypeTable(), initCodeTransformer().getInitCodeNodes(methodContext, initCodeContext.cloneWithEmptySymbolTable()));
SampleFunctionDocView sampleFunctionDocView = SampleFunctionDocView.newBuilder().paramDocLines(paramDocLines(methodContext, initCodeView)).mainDocLines(ImmutableList.<String>builder().addAll(methodContext.getNamer().getWrappedDocLines(valueSet.getDescription(), true)).build()).build();
ImmutableList<String> metadataDescription = ImmutableList.<String>builder().addAll(methodContext.getNamer().getWrappedDocLines(valueSet.getDescription(), false)).build();
String descriptionLine = metadataDescription.isEmpty() ? "" : metadataDescription.get(0);
ImmutableList<String> additionalDescriptionLines = metadataDescription.isEmpty() ? ImmutableList.of() : metadataDescription.subList(1, metadataDescription.size());
return MethodSampleView.newBuilder().callingForm(form).id(valueSet.getId()).sampleInitCode(initCodeView).outputs(outputViews).hasMultipleFileOutputs(outputContext.hasMultipleFileOutputs()).usesAsyncAwaitPattern(// Used by C# and Node.js
methodContext.getNamer().usesAsyncAwaitPattern(form)).sampleImports(sampleImportSectionView).regionTag(regionTagFromSpec(regionTag, methodContext.getMethodModel().getSimpleName(), form, valueSet.getId())).sampleFunctionName(methodContext.getNamer().getSampleFunctionName(methodContext.getMethodModel())).sampleFunctionDoc(sampleFunctionDocView).title(config.valueSet().getTitle()).descriptionLine(descriptionLine).additionalDescriptionLines(additionalDescriptionLines).build();
}
use of com.google.api.codegen.SampleValueSet in project toolkit by googleapis.
the class SampleTransformer method generateSamples.
/**
* Returns a list of MethodSampleViews for the given MethodContext.
*
* @param initContext
* @param methodContext
* @param fieldConfigs
* @param initCodeOutputType
* @param callingForms The list of calling forms applicable to this method, for which we will
* generate samples if so configured via context.getMethodConfig()
* @return A list of of the MethodSampleView, each of which corresponds to a specific sample
* forthe method
*/
public List<MethodSampleView> generateSamples(MethodContext methodContext, InitCodeContext initContext, Collection<FieldConfig> fieldConfigs, InitCodeOutputType initCodeOutputType, List<CallingForm> callingForms) {
CallingForm defaultCallingForm = methodContext.getNamer().getDefaultCallingForm(methodContext);
List<MethodSampleView> methodSampleViews = new ArrayList<>();
MethodConfig methodConfig = methodContext.getMethodConfig();
SampleValueSet defaultValueSet = defaultValueSet(methodConfig);
for (SampleConfig sampleConfig : methodConfig.getSampleSpec().getSampleConfigs(callingForms, defaultCallingForm, defaultValueSet, sampleType())) {
// Do not override outer initContext
InitCodeContext thisContext = initContext;
if (thisContext == null) {
thisContext = createInitCodeContext(methodContext, fieldConfigs, initCodeOutputType, sampleConfig.valueSet());
}
methodSampleViews.add(generateSample(sampleConfig, methodContext, thisContext));
}
return methodSampleViews;
}
use of com.google.api.codegen.SampleValueSet in project toolkit by googleapis.
the class SampleSpecTest method valueSetsMatching.
@Test
public void valueSetsMatching() {
SampleValueSet valueSetAlice = SampleValueSet.newBuilder().setId("alice").setParameters(SampleParameters.newBuilder().addDefaults("apple").build()).build();
SampleValueSet valueSetBob = SampleValueSet.newBuilder().setId("bob").setParameters(SampleParameters.newBuilder().addDefaults("banana").build()).build();
SampleValueSet valueSetAlison = SampleValueSet.newBuilder().setId("alison").setParameters(SampleParameters.newBuilder().addDefaults("apricot").build()).build();
final MethodConfigProto methodConfigProto = MethodConfigProto.newBuilder().addSampleValueSets(valueSetAlice).addSampleValueSets(valueSetBob).addSampleValueSets(valueSetAlison).setSamples(SampleConfiguration.newBuilder().addStandalone(SampleTypeConfiguration.newBuilder().addValueSets("ali.*").addCallingForms(".*")).addStandalone(SampleTypeConfiguration.newBuilder().addValueSets("be.*").addCallingForms(".*"))).build();
SampleSpec sampleSpec = new SampleSpec(methodConfigProto);
final List<SampleValueSet> matchingValues = sampleSpec.getSampleConfigs(Collections.singletonList(CallingForm.Request), CallingForm.Request, null, SampleType.STANDALONE).stream().map(config -> config.valueSet()).collect(Collectors.toList());
assertThat(matchingValues).containsExactly(valueSetAlice, valueSetAlison).inOrder();
}
Aggregations