unable to add "literal" header values on template
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 9.8k
- Forks
- 1.9k
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 41
Description
I am trying to use a feign.RequestInterceptor to add headers on the fly, these headers values are simple json. Example :
public void apply(RequestTemplate template) {
template.header("dummy", "{\"A\":{\"B\":\"C\"}}");
}
With version 10.7.4 I have got :
java.util.regex.PatternSyntaxException: Illegal repetition
{"B"
at java.base/java.util.regex.Pattern.error(Pattern.java:2015)
at java.base/java.util.regex.Pattern.closure(Pattern.java:3308)
at java.base/java.util.regex.Pattern.sequence(Pattern.java:2201)
at java.base/java.util.regex.Pattern.expr(Pattern.java:2056)
at java.base/java.util.regex.Pattern.compile(Pattern.java:1778)
at java.base/java.util.regex.Pattern.<init>(Pattern.java:1427)
at java.base/java.util.regex.Pattern.compile(Pattern.java:1068)
at feign.template.Expression.lambda$new$0(Expression.java:35)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at feign.template.Expression.<init>(Expression.java:35)
at feign.template.Expressions$SimpleExpression.<init>(Expressions.java:106)
at feign.template.Expressions.create(Expressions.java:86)
at feign.template.Template.parseFragment(Template.java:194)
at feign.template.Template.parseTemplate(Template.java:178)
at feign.template.Template.<init>(Template.java:60)
at feign.template.HeaderTemplate.<init>(HeaderTemplate.java:81)
at feign.template.HeaderTemplate.create(HeaderTemplate.java:57)
at feign.RequestTemplate.lambda$appendHeader$3(RequestTemplate.java:742)
at java.base/java.util.Map.compute(Map.java:1171)
at feign.RequestTemplate.appendHeader(RequestTemplate.java:740)
at feign.RequestTemplate.header(RequestTemplate.java:710)
at feign.RequestTemplate.header(RequestTemplate.java:692)
After seeing GH-1172 I had some hopes and tried with version 10.10.1, but got the same error.
I want to add "raw" headers values, no templated/parsed ones.
One simple solution would just to let this method public on RequestTemplate :
private RequestTemplate header(String name, TemplateChunk... chunks)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with RequestTemplate.header and the HeaderTemplate, Template, and Expression classes named in the stack trace. Reproduce the failure with a literal JSON header through RequestInterceptor, then inspect how header values are parsed. Done means literal values no longer trigger template-expression parsing and the existing behavior remains covered by tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100