Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 422155

Summary: [Template][Tree][Table] Server crash when selectable cell with no name is clicked
Product: [RT] RAP Reporter: Tim Buschtoens <tbuschto>
Component: RWTAssignee: Project Inbox <rap-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P2    
Version: 2.2   
Target Milestone: 2.2 RC1   
Hardware: All   
OS: All   
Whiteboard:

Description Tim Buschtoens CLA 2013-11-20 11:00:24 EST
When clicking a selectable cell that has no name property set the server produces this:

java.lang.UnsupportedOperationException: Not a string: null
	at org.eclipse.rap.json.JsonValue.asString(JsonValue.java:367)
	at org.eclipse.rap.rwt.internal.protocol.WidgetOperationHandler.readText(WidgetOperationHandler.java:128)
	at org.eclipse.rap.rwt.internal.protocol.WidgetOperationHandler.createSelectionEvent(WidgetOperationHandler.java:70)
	at org.eclipse.swt.internal.widgets.tablekit.TableOperationHandler.handleNotifySelection(TableOperationHandler.java:175)
	at org.eclipse.swt.internal.widgets.tablekit.TableOperationHandler.handleNotify(TableOperationHandler.java:65)
	at org.eclipse.swt.internal.widgets.tablekit.TableOperationHandler.handleNotify(TableOperationHandler.java:1)
	at org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.handleNotify(ControlOperationHandler.java:1)
	at org.eclipse.rap.rwt.internal.protocol.WidgetOperationHandler.handleNotify(WidgetOperationHandler.java:50)
	at org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA.handleOperation(AbstractWidgetLCA.java:167)
	at org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA.readData(AbstractWidgetLCA.java:84)
	at org.eclipse.swt.internal.widgets.tablekit.TableLCA.readData(TableLCA.java:123)
	at org.eclipse.swt.internal.widgets.displaykit.DisplayLCA$1.doVisit(DisplayLCA.java:77)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor$AllWidgetTreeVisitor.visit(WidgetTreeVisitor.java:40)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:52)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.readData(DisplayLCA.java:84)
	at org.eclipse.rap.rwt.internal.lifecycle.ReadData.execute(ReadData.java:26)
	at org.eclipse.rap.rwt.internal.lifecycle.PhaseExecutor.execute(PhaseExecutor.java:35)
	at org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.execute(SimpleLifeCycle.java:51)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.runLifeCycle(LifeCycleServiceHandler.java:139)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handlePostRequest(LifeCycleServiceHandler.java:125)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:76)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:67)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:119)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:106)
	at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:99)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:368)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
	at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:953)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1014)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
	at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
	at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
	at java.lang.Thread.run(Thread.java:662)
Comment 1 Ralf Sternberg CLA 2013-11-21 04:08:35 EST
Good catch! The client sends a selection event with { ..., "text": null }. The server expects the property to be a string if it is present.

Is null a legal value for the text property? I'd say no, if there's no text, the attribute should not be present.
Comment 2 Ivan Furnadjiev CLA 2013-11-21 12:49:49 EST
(In reply to comment #1)
> ... if there's no text, the attribute should not be present.
Fixed as suggested with commit 92fdf0da8b94d6cdf557dddcf71ad703931b6e7d.