Skip to content

IllegalArgumentException in MethodHelper for function that does not return a CharSequence #606

@timbonicus

Description

@timbonicus

I'm using the Swag Handlebars library with handlebars.java by using Handlebars.registerHelpers(File).

If I use a helper that returns a non-character value, such as subtract, I get an IllegalArgumentException:

{{#if (subtract value 1)}}
   {{!  Some code }}
{{/if}}

This is caused by MethodHelper#79, which is still casting to CharSequence. I think this should have been removed in the fix for #484.

Full stacktrace:

Caused by: com.github.jknack.handlebars.HandlebarsException: project-view:36:15: java.lang.IllegalArgumentException: argument type mismatch
    project-view:36:15
	at com.github.jknack.handlebars.helper.MethodHelper.apply(MethodHelper.java:79)
	at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
	at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
	at com.github.jknack.handlebars.Options.apply(Options.java:538)
	at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:96)
	at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
	at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
	at com.github.jknack.handlebars.Options.apply(Options.java:538)
	at com.github.jknack.handlebars.Options.fn(Options.java:433)
	at com.github.jknack.handlebars.helper.IfHelper.apply(IfHelper.java:53)
	at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
	at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
	at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
	at com.github.jknack.handlebars.internal.ForwardingTemplate.apply(ForwardingTemplate.java:100)
	at com.my.project.TemplateService.render(TemplateService.groovy:71)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions