Hi there,
I’ve run into a strange behavior with the report viewer component that didn’t happen in version 8.1. Here's the setup:
I have a window with a report viewer component. The report points to a valid report path and includes a dataset parameter called "data".
Now, here’s what’s happening:
a) If I set a default value for the data (dataset) parameter directly in the report builder, for example using [default]dummy_data with the correct structure and data, everything works fine and the report displays as expected in the viewer.
b) The moment I bind the parameter in the report viewer at runtime, again using [default]dummy_data, I get the following error:
Any idea what might be causing this? It seems like the runtime binding isn’t being picked up correctly, even though this used to work in 8.1.
Another thing while searching the forum I stumbled upon this topic and I don’t know if it can have anything to do with my issue:
Below the full error message:
7:56:48.259 [AWT-EventQueue-0] WARN Vision.reporting.Components.Viewer -- ReportLoader task could not be completed.
java.util.concurrent.ExecutionException: com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializationException: Fallback serialization failed
at java.base/java.util.concurrent.FutureTask.report(Unknown Source)
at java.base/java.util.concurrent.FutureTask.get(Unknown Source)
at java.desktop/javax.swing.SwingWorker.get(Unknown Source)
at com.inductiveautomation.reporting.components.ReportViewer$ReportLoader.done(ReportViewer.java:807)
at java.desktop/javax.swing.SwingWorker$5.run(Unknown Source)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
at java.desktop/sun.swing.AccumulativeRunnable.run(Unknown Source)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
at java.desktop/javax.swing.Timer.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializationException: Fallback serialization failed
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters.fallbackSerializer(BuiltinAdapters.java:398)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:119)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.protoEncode(ProtoRpcSerializer.java:340)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.protoEncode(ProtoRpcSerializer.java:335)
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters$8.encode(BuiltinAdapters.java:220)
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters$8.encode(BuiltinAdapters.java:215)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializerBuilder.lambda$addAdapter$9(ProtoSerializerBuilder.java:225)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializerBuilder$SerializationDelegate.encode(ProtoSerializerBuilder.java:325)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeObject(ProtoRpcSerializer.java:171)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:114)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.protoEncode(ProtoRpcSerializer.java:340)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.protoEncode(ProtoRpcSerializer.java:335)
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters$10.lambda$encode$0(BuiltinAdapters.java:266)
at java.base/java.util.HashMap.forEach(Unknown Source)
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters$10.encode(BuiltinAdapters.java:264)
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters$10.encode(BuiltinAdapters.java:259)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializerBuilder.lambda$addAdapter$9(ProtoSerializerBuilder.java:225)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializerBuilder$SerializationDelegate.encode(ProtoSerializerBuilder.java:325)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeObject(ProtoRpcSerializer.java:171)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:114)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeRpcMessage(ProtoRpcSerializer.java:85)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.writeParameters(ProtoRpcSerializer.java:374)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.lambda$invoke$5(GatewayInterface.java:331)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:363)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:328)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:335)
at jdk.proxy2/jdk.proxy2.$Proxy13.getReportData(Unknown Source)
at com.inductiveautomation.reporting.components.ReportViewer$ReportLoader.doInBackground(ReportViewer.java:775)
at com.inductiveautomation.reporting.components.ReportViewer$ReportLoader.doInBackground(ReportViewer.java:711)
at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.desktop/javax.swing.SwingWorker.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: java.lang.Integer. Forgot to register a type adapter?
at com.inductiveautomation.ignition.common.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:76)
at com.inductiveautomation.ignition.common.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:72)
at com.inductiveautomation.ignition.common.gson.TypeAdapter$1.write(TypeAdapter.java:196)
at com.inductiveautomation.ignition.common.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
at com.inductiveautomation.ignition.common.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97)
at com.inductiveautomation.ignition.common.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)
at com.inductiveautomation.ignition.common.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
at com.inductiveautomation.ignition.common.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:196)
at com.inductiveautomation.ignition.common.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:368)
at com.inductiveautomation.ignition.common.gson.Gson.toJson(Gson.java:842)
at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:712)
at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:689)
at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters.fallbackSerializer(BuiltinAdapters.java:395)
... 34 common frames omitted