Describe the bug
When clicking a marker or dragging it, the event is not fired properly and a json parse exception is generated.
java.lang.IllegalArgumentException: Unable to create an event object of type com.flowingcode.vaadin.addons.googlemaps.GoogleMapMarker$GoogleMapMarkerClickEvent
at com.vaadin.flow.component.ComponentEventBus.createEventForDomEvent(ComponentEventBus.java:536) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.component.ComponentEventBus.handleDomEvent(ComponentEventBus.java:493) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.component.ComponentEventBus.lambda$addDomTrigger$dd1b7957$1(ComponentEventBus.java:301) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.internal.nodefeature.ElementListenerMap.lambda$fireEvent$2(ElementListenerMap.java:501) ~[flow-server-25.1.11.jar:25.1.11]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) ~[na:na]
at com.vaadin.flow.internal.nodefeature.ElementListenerMap.fireEvent(ElementListenerMap.java:501) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.communication.rpc.EventRpcHandler.handleNode(EventRpcHandler.java:62) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.communication.rpc.AbstractRpcInvocationHandler.handle(AbstractRpcInvocationHandler.java:80) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:619) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$6(ServerRpcHandler.java:600) ~[flow-server-25.1.11.jar:25.1.11]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) ~[na:na]
at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:600) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:424) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:137) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:63) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1835) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:402) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:106) ~[vaadin-spring-25.1.11.jar:na]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) ~[tomcat-embed-core-11.0.22.jar:6.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:513) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:333) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:262) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:139) ~[spring-webmvc-7.0.8.jar:7.0.8]
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177) ~[spring-webmvc-7.0.8.jar:7.0.8]
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:49) ~[spring-webmvc-7.0.8.jar:7.0.8]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[spring-webmvc-7.0.8.jar:7.0.8]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866) ~[spring-webmvc-7.0.8.jar:7.0.8]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000) ~[spring-webmvc-7.0.8.jar:7.0.8]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903) ~[spring-webmvc-7.0.8.jar:7.0.8]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649) ~[tomcat-embed-core-11.0.22.jar:6.1]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874) ~[spring-webmvc-7.0.8.jar:7.0.8]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) ~[tomcat-embed-core-11.0.22.jar:6.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-11.0.22.jar:11.0.22]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-7.0.8.jar:7.0.8]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.8.jar:7.0.8]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-7.0.8.jar:7.0.8]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.8.jar:7.0.8]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:199) ~[spring-web-7.0.8.jar:7.0.8]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.8.jar:7.0.8]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1272) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1801) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[tomcat-embed-core-11.0.22.jar:11.0.22]
at java.base/java.lang.Thread.run(Thread.java:1474) ~[na:na]
Caused by: java.lang.IllegalArgumentException: Cannot deserialize JSON to type elemental.json.JsonValue: Cannot construct instance of `elemental.json.JsonValue` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [No location information]
at com.vaadin.flow.internal.JacksonCodec.decodeAs(JacksonCodec.java:234) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.component.ComponentEventBus.lambda$createEventDataObjects$6(ComponentEventBus.java:375) ~[flow-server-25.1.11.jar:25.1.11]
at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:987) ~[na:na]
at com.vaadin.flow.component.ComponentEventBus.createEventDataObjects(ComponentEventBus.java:365) ~[flow-server-25.1.11.jar:25.1.11]
at com.vaadin.flow.component.ComponentEventBus.createEventForDomEvent(ComponentEventBus.java:522) ~[flow-server-25.1.11.jar:25.1.11]
... 60 common frames omitted
Caused by: tools.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `elemental.json.JsonValue` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [No location information]
at tools.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:70) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1995) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:511) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1525) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:254) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.deser.DeserializationContextExt.readRootValue(DeserializationContextExt.java:266) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:2610) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:978) ~[jackson-databind-3.1.4.jar:3.1.4]
at tools.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:1291) ~[jackson-databind-3.1.4.jar:3.1.4]
at com.vaadin.flow.internal.JacksonCodec.decodeAs(JacksonCodec.java:230) ~[flow-server-25.1.11.jar:25.1.11]
... 64 common frames omitted
Expected behavior
Same behaviour as previous versions, events should be fired properly
Minimal reproducible example
- Create a blank project from Vaadin Start
- Add the maven dependency of
<dependency>
<groupId>com.flowingcode.vaadin.addons</groupId>
<artifactId>google-maps</artifactId>
<version>2.5.1-SNAPSHOT</version>
</dependency>
- Add the following snipped on the view
GoogleMap gmaps = new GoogleMap("yourApiKey",null,null);
gmaps.setMapType(GoogleMap.MapType.SATELLITE);
gmaps.setSizeFull();
gmaps.setCenter(new LatLon(0,0));
var marker = gmaps.addMarker("Center", new LatLon(0,0), true, "");
marker.addClickListener(event -> {
Notification.show("Marker clicked");
});
add(gmaps);
Java Version: 25
Vaadin Version: 25.1.8
Spring Boot: 4.0.7
Google Maps plugin version: 2.5.1-Snapshot and 2.5.0 affected (at least)
- Run the code and when clicking the marker you'll get the following exception:
Add-on Version
2.5.0 / 2.5.1-Snapshot
Vaadin Version
25.1.8
Additional information
The issue happens with Marker Click and Marker Drag events at least. Couldn't test all the features yet.
Describe the bug
When clicking a marker or dragging it, the event is not fired properly and a json parse exception is generated.
Expected behavior
Same behaviour as previous versions, events should be fired properly
Minimal reproducible example
Java Version: 25
Vaadin Version: 25.1.8
Spring Boot: 4.0.7
Google Maps plugin version: 2.5.1-Snapshot and 2.5.0 affected (at least)
Add-on Version
2.5.0 / 2.5.1-Snapshot
Vaadin Version
25.1.8
Additional information
The issue happens with Marker Click and Marker Drag events at least. Couldn't test all the features yet.