[ 
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)

Reply via email to