Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-20723

Json processing failed with error java.lang.UnsupportedOperationException at java.sql/java.sql.Date.toInstant

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 37.0.0.Beta1, 37.0.0.Final
    • None
    • None
    • None
    • Hide

      The steps to reproduce the issue:

      1. unzip the attached zip files.
      2. go to root of the kichensink project and run the command: mvn clean package
      3. deploy generated war: mvn wildfly: deploy
      4. open the page: http://localhost:8080/kitchensink/index.jsf
      5. You can see the page fails with error "Caused by: java.lang.UnsupportedOperationException at java.sql/java.sql.Date.toInstant(Date.java:316)"

      The invocation of json processing is in the SesnEJB class's method generateIngotNoRelationshipJson(String numberSerial) which is called in MemberListProducer.retrieveAllMembersOrderedByName()

      Show
      The steps to reproduce the issue: unzip the attached zip files. go to root of the kichensink project and run the command: mvn clean package deploy generated war: mvn wildfly: deploy open the page: http://localhost:8080/kitchensink/index.jsf You can see the page fails with error "Caused by: java.lang.UnsupportedOperationException at java.sql/java.sql.Date.toInstant(Date.java:316)" The invocation of json processing is in the SesnEJB class's method generateIngotNoRelationshipJson(String numberSerial) which is called in MemberListProducer.retrieveAllMembersOrderedByName()
    • ---
    • ---

      The json processing fails serializing an entity

      Here is an example of the stack trace:

      Caused by: jakarta.json.bind.JsonbException: Unable to serialize property 'codeIngotToken' from org.jboss.as.quickstarts.kitchensink.model.ValIngot
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.ObjectSerializer.lambda$serialize$0(ObjectSerializer.java:43)
      	at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.ObjectSerializer.serialize(ObjectSerializer.java:38)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.RecursionChecker.serialize(RecursionChecker.java:38)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.KeyWriter.serialize(KeyWriter.java:41)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.NullVisibilitySwitcher.serialize(NullVisibilitySwitcher.java:40)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.NullSerializer.serialize(NullSerializer.java:67)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.SerializationContextImpl.serializeObject(SerializationContextImpl.java:197)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.SerializationContextImpl.marshall(SerializationContextImpl.java:133)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.SerializationContextImpl.marshall(SerializationContextImpl.java:159)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.JsonBinding.toJson(JsonBinding.java:131)
      	at deployment.kitchensink.war//org.jboss.as.quickstarts.kitchensink.service.SesnEJB.generateIngotNoRelationshipJson(SesnEJB.java:60)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at org.jboss.as.ee@8.0.9.GA-redhat-00004//org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
      	at org.jboss.as.weld.common@8.0.9.GA-redhat-00004//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:79)
      	at org.jboss.as.weld.common@8.0.9.GA-redhat-00004//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:89)
      	at org.jboss.as.weld.common@8.0.9.GA-redhat-00004//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:102)
      	at org.jboss.as.ee@8.0.9.GA-redhat-00004//org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.as.ejb3@8.0.9.GA-redhat-00004//org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.as.jpa@8.0.9.GA-redhat-00004//org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.as.ee@8.0.9.GA-redhat-00004//org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:40)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
      	at org.jboss.as.ee@8.0.9.GA-redhat-00004//org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.as.ejb3@8.0.9.GA-redhat-00004//org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.as.ejb3@8.0.9.GA-redhat-00004//org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:56)
      	at org.jboss.invocation@2.0.0.Final-redhat-00001//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
      	at org.jboss.as.ejb3@8.0.9.GA-redhat-00004//org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:254)
      	... 140 more
      	Suppressed: jakarta.json.stream.JsonGenerationException: Generating incomplete JSON
      		at org.eclipse.parsson//org.eclipse.parsson.JsonGeneratorImpl.close(JsonGeneratorImpl.java:521)
      		at org.eclipse.yasson//org.eclipse.yasson.internal.JsonBinding.toJson(JsonBinding.java:130)
      		... 169 more
      Caused by: java.lang.UnsupportedOperationException
      	at java.sql/java.sql.Date.toInstant(Date.java:316)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.DateSerializer.toInstant(DateSerializer.java:36)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.DateSerializer.toTemporalAccessor(DateSerializer.java:56)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.DateSerializer.formatWithFormatter(DateSerializer.java:46)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.DateSerializer.formatWithFormatter(DateSerializer.java:26)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.AbstractDateSerializer.lambda$valueSerializer$3(AbstractDateSerializer.java:63)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.AbstractDateSerializer.lambda$new$1(AbstractDateSerializer.java:51)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.AbstractDateSerializer.serializeValue(AbstractDateSerializer.java:147)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.TypeSerializer$ValueSerializer.serialize(TypeSerializer.java:51)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.types.TypeSerializer.serialize(TypeSerializer.java:37)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.KeyWriter.serialize(KeyWriter.java:41)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.NullSerializer.serialize(NullSerializer.java:67)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.ValueGetterSerializer.serialize(ValueGetterSerializer.java:43)
      	at org.eclipse.yasson//org.eclipse.yasson.internal.serializer.ObjectSerializer.lambda$serialize$0(ObjectSerializer.java:41)
      	... 179 more
      

      The "codeIngotToken" property is a java.util.Date marked with @Temporal(TemporalType.DATE):

      @Temporal(TemporalType.DATE)	
      private Date codeIngotToken;
      

      The entity is retrieved from sql query. As a result, the property is automatically assigned with java.sql.Date type:

      @NamedQueries({
        @NamedQuery(name = "EntIngot.findBySerial", query = "select distinct object(i) from EntIngot i where i.numberSerial = ?1"),
      })
      
      EntIngot entIngot = findBySerial(numberSerial);	
      //the entIngot.getCodeIngotToken() returns type java.sql.Date
      

      The jsonb processing is triggered by the code, for example:

      EntIngot entIngot = findBySerial(numberSerial);
      Jsonb jsonb = JsonbBuilder.create();
      jsonb.toJson(entIngot);
      

              lvydra Lukas Vydra
              lvydra Lukas Vydra
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: