Orette created CAMEL-20678:
------------------------------

             Summary: 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


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