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

Bug 397773

Summary: call to MessageDialog.openInformation, openError, openWarning leads to application breakdown
Product: [RT] RAP Reporter: Andrej Dimic <adiinfo>
Component: JFaceAssignee: Project Inbox <rap-inbox>
Status: RESOLVED INVALID QA Contact:
Severity: major    
Priority: P3    
Version: 2.0   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Andrej Dimic CLA 2013-01-09 11:23:33 EST
any call to MessageDialog.openXXX (i.e openInformation) leads to ongoing Exceptions. catalina.out (Tomcat servlet container) fills several Gigabyte with Exceptions.

Example:
									MessageDialog.openInformation(content.getShell(),Messages.get().KontaktTab_MailMsg1, Messages.get().KontaktTab_MailMsg2);

It happens with RAP 2.0 M3 and M4.
Comment 1 Ivan Furnadjiev CLA 2013-01-09 11:30:47 EST
Please provide the stack trace of the exception.
Comment 2 Ivan Furnadjiev CLA 2013-01-09 11:34:38 EST
Controls Demo -> Dialogs Tab is working fine for me. A snippet to reproduce the exception will be useful as well.
Comment 3 Andrej Dimic CLA 2013-01-09 11:44:25 EST
(In reply to comment #1)
> Please provide the stack trace of the exception.

This is going on forever...

java.lang.UnsupportedOperationException: Display#sleep() not supported in current operation mode.
	at org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.sleep(SimpleLifeCycle.java:75)
	at org.eclipse.swt.widgets.Display.sleep(Display.java:1174)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:842)
	at org.eclipse.jface.window.Window.open(Window.java:817)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:334)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:364)
	at org.eclipse.jface.dialogs.MessageDialog.openInformation(MessageDialog.java:446)
	at org.eclipse.rap.kabe.KontaktTab$2.widgetSelected(KontaktTab.java:290)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:88)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:692)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1146)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1127)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1117)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessAction.execute(ProcessAction.java:27)
	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:104)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handlePostRequest(LifeCycleServiceHandler.java:97)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:65)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:58)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:105)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:92)
	at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:85)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
java.lang.UnsupportedOperationException: Display#sleep() not supported in current operation mode.
	at org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.sleep(SimpleLifeCycle.java:75)
	at org.eclipse.swt.widgets.Display.sleep(Display.java:1174)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:842)
	at org.eclipse.jface.window.Window.open(Window.java:817)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:334)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:364)
	at org.eclipse.jface.dialogs.MessageDialog.openInformation(MessageDialog.java:446)
	at org.eclipse.rap.kabe.KontaktTab$2.widgetSelected(KontaktTab.java:290)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:88)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:692)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1146)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1127)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1117)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessAction.execute(ProcessAction.java:27)
	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:104)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handlePostRequest(LifeCycleServiceHandler.java:97)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:65)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:58)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:105)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:92)
	at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:85)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
java.lang.UnsupportedOperationException: Display#sleep() not supported in current operation mode.
	at org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.sleep(SimpleLifeCycle.java:75)
	at org.eclipse.swt.widgets.Display.sleep(Display.java:1174)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:842)
	at org.eclipse.jface.window.Window.open(Window.java:817)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:334)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:364)
	at org.eclipse.jface.dialogs.MessageDialog.openInformation(MessageDialog.java:446)
	at org.eclipse.rap.kabe.KontaktTab$2.widgetSelected(KontaktTab.java:290)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:88)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:692)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1146)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1127)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1117)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessAction.execute(ProcessAction.java:27)
	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:104)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handlePostRequest(LifeCycleServiceHandler.java:97)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:65)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:58)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:105)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:92)
	at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:85)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Comment 4 Ivan Furnadjiev CLA 2013-01-09 11:52:31 EST
You are using JEE_COMPATIBILITY. If you read the JavaDoc of OperationMode#JEE_COMPATIBILITY you will find the following:
* As its only limitation, it does not support the SWT main loop (more
* specifically, the method {@link Display#sleep()} is not implemented). As
* a consequence, blocking dialogs aren't possible with this operation mode.
* Instead of blocking dialogs, the class {@link DialogUtil} allows to
* attach a callback to react on the closing of a dialog.
See this newsgroup post for more details:
http://www.eclipse.org/forums/index.php/mv/msg/262054/759310/#msg_759310
Comment 5 Andrej Dimic CLA 2013-01-10 04:27:12 EST
(In reply to comment #4)
> You are using JEE_COMPATIBILITY. If you read the JavaDoc of
> OperationMode#JEE_COMPATIBILITY you will find the following:
> * As its only limitation, it does not support the SWT main loop (more
> * specifically, the method {@link Display#sleep()} is not implemented). As
> * a consequence, blocking dialogs aren't possible with this operation mode.
> * Instead of blocking dialogs, the class {@link DialogUtil} allows to
> * attach a callback to react on the closing of a dialog.
> See this newsgroup post for more details:
> http://www.eclipse.org/forums/index.php/mv/msg/262054/759310/#msg_759310

ok, i set SWT_COMPATIBILITY and now it works.

Thanks.
Andrej