Thanks: looks like a bug in jackson-module-jaxb-annotations.
Would you mind filing an issue at:

https://github.com/FasterXML/jackson-module-jaxb-annotations/issues

with cut'n pasted stack trace, mention of Jackson version used (2.7.5 or so
I think)?

It's bit of an edge case, testing-wise, since it requires pieces from
different modules, but I should be able to cobble together a test case with
the info.

-+ Tatu +-


On Thu, Sep 29, 2016 at 7:51 AM, Adrian Riley <[email protected]> wrote:

> Use of Optional comes from the DropWizard configuration, this is not
> bespoke code. DropWizard masks the stack trace and instead gives that error
> message, but I've managed to extract it:
>
>
> java.lang.RuntimeException: 
> io.dropwizard.configuration.ConfigurationParsingException:
> /home/developer/projects/employee-service/employee-
> service-parent/employee-service/target/test-classes/config.yml has an
> error:
>   * Failed to parse configuration at: metrics.reporters; Must call method
> with a container type (got [reference type, class java.util.Optional<io.
> dropwizard.util.Duration<[simple type, class
> io.dropwizard.util.Duration]>])
>  at [Source: N/A; line: -1, column: -1] (through reference chain:
> coop.employee.EmployeeServiceConfiguration["metrics"]->io.dropwizard.
> metrics.MetricsFactory["reporters"])
>
>
> at com.google.common.base.Throwables.propagate(Throwables.java:160)
> at io.dropwizard.testing.DropwizardTestSupport.startIfRequired(
> DropwizardTestSupport.java:196)
> at io.dropwizard.testing.DropwizardTestSupport.before(
> DropwizardTestSupport.java:112)
> at io.dropwizard.testing.junit.DropwizardAppRule.before(
> DropwizardAppRule.java:128)
> at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:46)
> at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.junit.runners.Suite.runChild(Suite.java:128)
> at org.junit.runners.Suite.runChild(Suite.java:27)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(
> JUnit4IdeaTestRunner.java:117)
> at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(
> JUnit4IdeaTestRunner.java:42)
> at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(
> JUnitStarter.java:262)
> at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
> Caused by: io.dropwizard.configuration.ConfigurationParsingException:
> /home/developer/projects/employee-service/employee-
> service-parent/employee-service/target/test-classes/config.yml has an
> error:
>   * Failed to parse configuration at: metrics.reporters; Must call method
> with a container type (got [reference type, class java.util.Optional<io.
> dropwizard.util.Duration<[simple type, class
> io.dropwizard.util.Duration]>])
>  at [Source: N/A; line: -1, column: -1] (through reference chain:
> coop.employee.EmployeeServiceConfiguration["metrics"]->io.dropwizard.
> metrics.MetricsFactory["reporters"])
>
> at io.dropwizard.configuration.ConfigurationParsingException$
> Builder.build(ConfigurationParsingException.java:276)
> at io.dropwizard.configuration.YamlConfigurationFactory.build(
> YamlConfigurationFactory.java:152)
> at io.dropwizard.configuration.YamlConfigurationFactory.build(
> YamlConfigurationFactory.java:87)
> at io.dropwizard.cli.ConfiguredCommand.parseConfiguration(
> ConfiguredCommand.java:124)
> at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:72)
> at io.dropwizard.testing.DropwizardTestSupport.startIfRequired(
> DropwizardTestSupport.java:194)
> ... 18 more
> Caused by: com.fasterxml.jackson.databind.JsonMappingException: Must call
> method with a container type (got [reference type, class
> java.util.Optional<io.dropwizard.util.Duration<[simple type, class
> io.dropwizard.util.Duration]>])
>  at [Source: N/A; line: -1, column: -1] (through reference chain:
> coop.employee.EmployeeServiceConfiguration["metrics"]->io.dropwizard.
> metrics.MetricsFactory["reporters"])
> at com.fasterxml.jackson.databind.JsonMappingException.
> from(JsonMappingException.java:290)
> at com.fasterxml.jackson.databind.deser.DeserializerCache._
> createAndCache2(DeserializerCache.java:269)
> at com.fasterxml.jackson.databind.deser.DeserializerCache._
> createAndCacheValueDeserializer(DeserializerCache.java:244)
> at com.fasterxml.jackson.databind.deser.DeserializerCache.
> findValueDeserializer(DeserializerCache.java:142)
> at com.fasterxml.jackson.databind.DeserializationContext.
> findContextualValueDeserializer(DeserializationContext.java:444)
> at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._
> findDeserializer(TypeDeserializerBase.java:183)
> at com.fasterxml.jackson.databind.jsontype.impl.
> AsPropertyTypeDeserializer._deserializeTypedForId(
> AsPropertyTypeDeserializer.java:106)
> at com.fasterxml.jackson.databind.jsontype.impl.
> AsPropertyTypeDeserializer.deserializeTypedFromObject(
> AsPropertyTypeDeserializer.java:91)
> at com.fasterxml.jackson.databind.deser.AbstractDeserializer.
> deserializeWithType(AbstractDeserializer.java:142)
> at com.fasterxml.jackson.datatype.guava.deser.
> GuavaImmutableCollectionDeserializer._deserializeContents(
> GuavaImmutableCollectionDeserializer.java:44)
> at com.fasterxml.jackson.datatype.guava.deser.
> GuavaImmutableCollectionDeserializer._deserializeContents(
> GuavaImmutableCollectionDeserializer.java:14)
> at com.fasterxml.jackson.datatype.guava.deser.GuavaCollectionDeserializer.
> deserialize(GuavaCollectionDeserializer.java:103)
> at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(
> SettableBeanProperty.java:490)
> at com.fasterxml.jackson.databind.deser.impl.MethodProperty.
> deserializeAndSet(MethodProperty.java:95)
> at com.fasterxml.jackson.module.afterburner.deser.
> SuperSonicBeanDeserializer.deserialize(SuperSonicBeanDeserializer.
> java:156)
> at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(
> SettableBeanProperty.java:490)
> at com.fasterxml.jackson.databind.deser.impl.MethodProperty.
> deserializeAndSet(MethodProperty.java:95)
> at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(
> BeanDeserializer.java:224)
> at com.fasterxml.jackson.module.afterburner.deser.
> SuperSonicBeanDeserializer.deserialize(SuperSonicBeanDeserializer.
> java:152)
> at com.fasterxml.jackson.databind.ObjectMapper._
> readValue(ObjectMapper.java:3779)
> at com.fasterxml.jackson.databind.ObjectMapper.
> readValue(ObjectMapper.java:2050)
> at io.dropwizard.configuration.YamlConfigurationFactory.build(
> YamlConfigurationFactory.java:123)
> ... 22 more
> Caused by: java.lang.IllegalArgumentException: Must call method with a
> container type (got [reference type, class java.util.Optional<io.
> dropwizard.util.Duration<[simple type, class
> io.dropwizard.util.Duration]>])
> at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.
> findPropertyContentTypeResolver(JaxbAnnotationIntrospector.java:567)
> at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.
> findPropertyContentTypeResolver(AnnotationIntrospectorPair.java:233)
> at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.
> findPropertyContentTypeResolver(AnnotationIntrospectorPair.java:233)
> at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.
> findPropertyContentTypeDeserializer(BasicDeserializerFactory.java:1516)
> at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.
> resolveType(BasicDeserializerFactory.java:1886)
> at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.
> constructSettableProperty(BeanDeserializerFactory.java:717)
> at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.
> addBeanProps(BeanDeserializerFactory.java:504)
> at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.
> buildBeanDeserializer(BeanDeserializerFactory.java:228)
> at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.
> createBeanDeserializer(BeanDeserializerFactory.java:143)
> at com.fasterxml.jackson.databind.deser.DeserializerCache._
> createDeserializer2(DeserializerCache.java:406)
> at com.fasterxml.jackson.databind.deser.DeserializerCache._
> createDeserializer(DeserializerCache.java:352)
> at com.fasterxml.jackson.databind.deser.DeserializerCache._
> createAndCache2(DeserializerCache.java:264)
> ... 42 more
>
> It does look like a Jackson issue, but I thought someone else might have
> experienced it in this scenario. I'll try to get a test for Jackson, but at
> the moment I've just parked the upgrade to get on with something else.
>
>
> On Thursday, 29 September 2016 15:44:25 UTC+1, Tatu Saloranta wrote:
>>
>> You'd need to include the stack trace: just generally indicating it comes
>> from JaxbAnnotationIntrospector does not help a lot unfortunately.
>> Exception does not look familiar.
>> Also, if possible, it'd be great to have a self-contained test for
>> Jackson, since this sounds like either a Jackson bug (more likely), or
>> problem with DW configuration setup (less likely).
>>
>> -+ Tatu +-
>>
>> ps. Not sure why `Optional` is used in configuration, seems like an
>> anti-pattern to me. But perhaps that's what DropWizard configuration uses.
>> If not, I'd just get rid of that to simplify handling, remove one possible
>> source of issues.
>>
>>
>> On Thu, Sep 29, 2016 at 3:14 AM, Adrian Riley <[email protected]> wrote:
>>
>>> Upgraded Jackson to 2.8.3, where the code around here has changed, but
>>> still got the same error.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "dropwizard-user" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "dropwizard-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to