[ https://issues.apache.org/jira/browse/CAMEL-20678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen reassigned CAMEL-20678: ----------------------------------- Assignee: Claus Ibsen > camel-google-sheets - Error setting scopes parameter when using > google-sheets-stream > ------------------------------------------------------------------------------------- > > Key: CAMEL-20678 > URL: https://issues.apache.org/jira/browse/CAMEL-20678 > Project: Camel > Issue Type: Bug > Affects Versions: 4.5.0 > Environment: Windows 10 > JBang version: 0.116.0 > Camel JBang version: 4.5.0 > Reporter: Orette > Assignee: Claus Ibsen > Priority: Minor > > I am having an issue authenticating via a service account using the > google-sheets-stream component. > When using a service account the {{scope}} parameter must be set and this > parameter type is a collection. > I however receive the below error when the scope is set to a collection. And > a separate error when it is set to a string. > based on looking through the code, I believe the issue stems from the > function {{parseParameters}} in the class > {{{}org.apache.camel.dsl.yaml.common.YamlDeserializerSupport{}}}. Based on my > understanding of the code, it seems to assume that all parameters are scalar. > > *The route I'm running via jbang.* > {code:java} > # camel-k: language=yaml > # Write your routes here, for example: > - from: > uri: "google-sheets-stream" > parameters: > serviceAccountKey: "application-key.json" > spreadsheetId: "sheetid" > maxResults: "1" > range: "Sheet1!A:B" > delay: "60000" > scopes: > - "https://www.googleapis.com/auth/drive" > steps: > - log: "${body}" > {code} > > *Exception when the scope is set as a collection.* > {code:java} > Node type map is invalid, expected key-value > in file:cheese.yaml, line 7, column 7: > serviceAccountKey: "application ... > ^ > at > org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asScalarMap(YamlDeserializerSupport.java:220) > at > org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.parseParameters(YamlDeserializerSupport.java:391) > at > org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinitionDeserializer.setProperties(OutputAwareFromDefinitionDeserializer.java:97) > at > org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinitionDeserializer.setProperties(OutputAwareFromDefinitionDeserializer.java:34) > at > org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:67) > at > org.apache.camel.dsl.yaml.common.YamlDeserializationContext.lambda$resolve$1(YamlDeserializationContext.java:198) > at > org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader$1.configure(YamlRoutesBuilderLoader.java:170) > at > org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:780) > at > org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:725) > at > org.apache.camel.builder.RouteBuilder.prepareModel(RouteBuilder.java:648) > at > org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:666) > at > org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:984) > at > org.apache.camel.main.RoutesConfigurer.addDiscoveredRoutes(RoutesConfigurer.java:254) > at > org.apache.camel.main.RoutesConfigurer.configureRoutes(RoutesConfigurer.java:236) > at > org.apache.camel.main.BaseMainSupport.configureRoutes(BaseMainSupport.java:640) > at > org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:720) > at > org.apache.camel.main.MainSupport.initCamelContext(MainSupport.java:339) > at org.apache.camel.main.KameletMain.doInit(KameletMain.java:354) > at > org.apache.camel.support.service.BaseService.init(BaseService.java:78) > at > org.apache.camel.support.service.BaseService.start(BaseService.java:105) > at > org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1125) > at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:811) > at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:301) > at > org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71) > at > org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:37) > at picocli.CommandLine.executeUserObject(CommandLine.java:2041) > at picocli.CommandLine.access$1500(CommandLine.java:148) > at > picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) > at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) > at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) > at > picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) > at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) > at picocli.CommandLine.execute(CommandLine.java:2170) > at > org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:164) > at > org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:60) > at main.CamelJBang.main(CamelJBang.java:36) > {code} > > *If the scope is set as a string* > {code:java} > # camel-k: language=yaml > # Write your routes here, for example: > - from: > uri: "google-sheets-stream" > parameters: > serviceAccountKey: "application-key.json" > spreadsheetId: "sheetid" > maxResults: "1" > range: "Sheet1!A:B" > delay: "60000" > scopes: "https://www.googleapis.com/auth/drive" > steps: > - log: "${body}" > {code} > > *I receive the below error* > {code:java} > Caused by: org.apache.camel.RuntimeCamelException: > org.apache.camel.NoTypeConversionAvailableException: No type converter > available to convert from type: java.lang.String to the required type: > java.util.Collection > at > org.apache.camel.RuntimeCamelException.wrapRuntimeCamelException(RuntimeCamelException.java:51) > at > org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:97) > at > org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamEndpointConfigurer.configure(GoogleSheetsStreamEndpointConfigurer.java:69) > at > org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:805) > ... 43 more > Caused by: org.apache.camel.NoTypeConversionAvailableException: No type > converter available to convert from type: java.lang.String to the required > type: java.util.Collection > at > org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:199) > at > org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:183) > at > org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:95) > ... 45 more{code} > {{}}{{}} -- This message was sent by Atlassian Jira (v8.20.10#820010)