New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JsonbException while marshalling: Invalid count of arguments for setter #82
Comments
I've run into this same problem marshalling some model classes that work fine with Jaxb.
|
Signed-off-by: David Kral <david.k.kral@oracle.com>
I just ran into this issue with my custom model classes. I have some REST representational classes with utility methods that starts with "setXXXXXXX(parameter1, paramater2, .....). IMHO I think Yasson should validate that the "set" methods have one and only one parameter before invoking them. It will be a hassle for people coming from Java EE7+Jackson (as I am). Should I open a new issue for this ? Regards! |
I found that the number of arguments is being validated in
It wouldn't be better to log a warning maybe ? It is blocking if I have a method starting with "set" and receiving multiple parameters. Another better option would be exclude this properties from being parsed at all maybe in
|
Sorry, please omit the previous comments, I just found out that it is fixed in master eaebfcb#diff-0b679cdd432a9709d06c281d3ac6656b |
Hi @cristhiank , |
I have a large project that uses cxf-xjc-plugin to autogenerate JAXB bindings for a series of XSDs, and this is able to marshall XML without a problem.
We recently tried to use Jersey's JSON marshalling option, and this has been failing for us with the following exception below.
javax.json.bind.JsonbException: Invalid count of arguments for setter: public void javax.xml.datatype.XMLGregorianCalendar.setTime(int,int,int) org.eclipse.yasson.internal.model.Property.getPropertyType(Property.java:137) org.eclipse.yasson.internal.model.PropertyModel.<init>(PropertyModel.java:85) org.eclipse.yasson.internal.model.customization.ordering.PropertyOrdering.lambda$orderProperties$0(PropertyOrdering.java:79) java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1620) java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) org.eclipse.yasson.internal.model.customization.ordering.PropertyOrdering.orderProperties(PropertyOrdering.java:80) org.eclipse.yasson.internal.ClassParser.parseProperties(ClassParser.java:60) org.eclipse.yasson.internal.MappingContext$ParseClassModelFunction.apply(MappingContext.java:56) org.eclipse.yasson.internal.MappingContext$ParseClassModelFunction.apply(MappingContext.java:37) java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) org.eclipse.yasson.internal.MappingContext.getOrCreateClassModel(MappingContext.java:100) org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:57) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:91) org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:92) org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:59) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:91) org.eclipse.yasson.internal.serializer.CollectionSerializer.serializeInternal(CollectionSerializer.java:76) org.eclipse.yasson.internal.serializer.CollectionSerializer.serializeInternal(CollectionSerializer.java:35) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:91) org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:92) org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:59) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:91) org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:92) org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:59) org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60) org.eclipse.yasson.internal.Marshaller.serializeRoot(Marshaller.java:118) org.eclipse.yasson.internal.Marshaller.marshall(Marshaller.java:76) org.eclipse.yasson.internal.JsonBinding.toJson(JsonBinding.java:98) org.glassfish.jersey.jsonb.internal.JsonBindingProvider.writeTo(JsonBindingProvider.java:118) org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:266) org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:251) org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:109) org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:85) org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1135) org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:662) org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:395) org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:385) org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:280) org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) org.glassfish.jersey.internal.Errors.process(Errors.java:316) org.glassfish.jersey.internal.Errors.process(Errors.java:298) org.glassfish.jersey.internal.Errors.process(Errors.java:268) org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416) org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
We are using the following JAXB related jars:
[INFO] javax.activation:activation:jar:1.1:compile [INFO] javax.annotation:javax.annotation-api:jar:1.2:compile [INFO] javax.el:javax.el-api:jar:3.0.0:compile [INFO] javax.enterprise:cdi-api:jar:2.0:compile [INFO] javax.inject:javax.inject:jar:1:compile [INFO] javax.interceptor:javax.interceptor-api:jar:1.2:compile [INFO] javax.json:javax.json-api:jar:1.1:compile [INFO] javax.json.bind:javax.json.bind-api:jar:1.0:compile [INFO] javax.mail:mail:jar:1.4.7:compile [INFO] javax.servlet:javax.servlet-api:jar:4.0.0:provided [INFO] javax.servlet:servlet-api:jar:2.3:compile [INFO] javax.transaction:jta:jar:1.1:compile [INFO] javax.validation:validation-api:jar:1.1.0.Final:compile [INFO] javax.ws.rs:javax.ws.rs-api:jar:2.1:compile [INFO] javax.ws.rs:jsr311-api:jar:1.1.1:compile [INFO] javax.xml.bind:jaxb-api:jar:2.1:compile [INFO] javax.xml.stream:stax-api:jar:1.0-2:compile [INFO] org.eclipse:yasson:jar:1.0:compile [INFO] org.eclipse.persistence:org.eclipse.persistence.asm:jar:2.6.4:compile [INFO] org.eclipse.persistence:org.eclipse.persistence.core:jar:2.6.4:compile [INFO] org.eclipse.persistence:org.eclipse.persistence.moxy:jar:2.6.4:compile [INFO] org.glassfish:javax.json:jar:1.0.4:compile [INFO] org.glassfish.hk2:hk2-api:jar:2.5.0-b42:compile [INFO] org.glassfish.hk2:hk2-locator:jar:2.5.0-b42:compile [INFO] org.glassfish.hk2:hk2-utils:jar:2.5.0-b42:compile [INFO] org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile [INFO] org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b42:compile [INFO] org.glassfish.hk2.external:javax.inject:jar:2.5.0-b42:compile [INFO] org.glassfish.jersey.bundles:jaxrs-ri:jar:2.26:compile [INFO] org.glassfish.jersey.containers:jersey-container-servlet:jar:2.26:compile [INFO] org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.26:compile [INFO] org.glassfish.jersey.core:jersey-client:jar:2.26:compile [INFO] org.glassfish.jersey.core:jersey-common:jar:2.26:compile [INFO] org.glassfish.jersey.core:jersey-server:jar:2.26:compile [INFO] org.glassfish.jersey.ext:jersey-entity-filtering:jar:2.26:compile [INFO] org.glassfish.jersey.inject:jersey-hk2:jar:2.26:compile [INFO] org.glassfish.jersey.media:jersey-media-jaxb:jar:2.26:compile [INFO] org.glassfish.jersey.media:jersey-media-json-binding:jar:2.26:compile [INFO] org.glassfish.jersey.media:jersey-media-moxy:jar:2.26:compile [INFO] org.glassfish.jersey.media:jersey-media-sse:jar:2.26:compile [INFO] org.hamcrest:hamcrest-core:jar:1.3:test [INFO] org.javassist:javassist:jar:3.22.0-CR2:compile [INFO] xalan:xalan:jar:2.7.0:compile [INFO] xerces:xercesImpl:jar:2.6.2:compile [INFO] xml-apis:xml-apis:jar:1.0.b2:compile
The setter javax.xml.datatype.XMLGregorianCalendar.setTime(int,int,int) is a valid setter from the perspective of the docs for XMLGregorianCalendar, does this look familiar to anyone?
The text was updated successfully, but these errors were encountered: