Developing plug-ins for Domino Designer in Eclipse (DDE)
With Notes 8.5 just around the corner we also have Domino Designer for Eclipse (DDE) just around the corner. Domino Designer being built on Eclipse opens up the door for plug-in developers and tool vendors to provide tools that plug-in into Designer just like (sidebar) plug-ins plug into the Notes client. The API's are the same so the stuff you already know can be reused.
Please note: The below requires that you're running a Notes 8.5 beta with DDE and that your Eclipse IDE is configured for Notes 8.5. See this post for instructions on configuring Eclipse for Notes 8.5.
Developing plug-ins for DDE is however a little tricky as the Expeditor Toolkit or my own instructions will launch the Notes client and not DDE. Unfortunately you can't just launch DDE once Notes is launched from Eclipse since this will result in a Notes initialization error as Notes is already running and DDE is launched anew. That aside it would also be unnecessarily time consuming for day-to-day development.
The solution is to edit your existing Eclipse launch configuration (or create a new) that launches DDE instead of Notes. So how do you do it? Read on...
First bring up your Notes launch configuration. Now change the "Run a product" dropdown to "com.ibm.designer.domino.product.dde" and then switch to the "Arguments"-tab and change the "Program arguments" field from
-personality com.ibm.rcp.platform.personality -product com.ibm.notes.branding.notes -debug -console -nl en_USto
-personality com.ibm.designer.domino.personality -product com.ibm.designer.domino.product.dde -debug -console -nl en_US
Apply the settings and run the configuration and notice how DDE now launches instead of Notes. Don't you just love Eclipse?
Now we just need some published extension points...
Re: Developing plug-ins for Domino Designer in Eclipse (DDE)
I successfully launched DDE from Eclipse, bu when I try to open or create a new application, I receive the following error in Eclipse:
Exception in thread "Notes RPC monitor" java.lang.UnsatisfiedLinkError: com/ibm/designer/domino/napi/NotesSession.NNotesInit()Z
at com.ibm.designer.domino.napi.NotesSession.notesInit(NotesSession.java:115)
at com.ibm.designer.domino.ide.resources.jni.DominoConnection.initSession(DominoConnection.java:116)
at com.ibm.designer.domino.ide.resources.util.NotesSessionManager.getNotesSession(NotesSessionManager.java:63)
at com.ibm.designer.domino.ide.resources.util.NotesMonitor$TThread.run(NotesMonitor.java:270)
Any ideas?
Thanks
Torben Bang
Re: Developing plug-ins for Domino Designer in Eclipse (DDE)
This is the entire console log, when I start DDE from Eclipse. Maybe this will give you a clue:
Configuration location:
file:/C:/Documents and Settings/bdutfb/workspace_gany/.metadata/.plugins/org.eclipse.pde.core/DDE/
Configuration file:
file:/C:/Documents and Settings/bdutfb/workspace_gany/.metadata/.plugins/org.eclipse.pde.core/DDE/config.ini loaded
Install location:
file:/C:/R802/framework/rcp/eclipse/
Framework located:
file:/C:/R802/framework/rcp/eclipse/plugins/org.eclipse.osgi_3.4.0.200811140851.jar
Loading extension: com.ibm.rcp.core.logger.frameworkhook
eclipse.properties not found
Framework classpath:
file:/C:/R802/framework/rcp/eclipse/plugins/org.eclipse.osgi_3.4.0.200811140851.jar
file:/C:/R802/framework/rcp/eclipse/plugins/
file:/C:/R802/framework/rcp/eclipse/plugins/com.ibm.rcp.core.logger.frameworkhook_6.2.0.200811140851.jar
Debug options:
file:/C:/eclipse_ganymede/.options not found
osgi> 2009/03/06 09:00:44.080 CONFIG eclipse.buildId=client_620_20081114-0851
java.fullversion=J2RE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260ifx-20081002_23977 (JIT enabled, AOT enabled)
J9VM - 20081002_023977_lHdSMr
JIT - r9_20080415_1520ifx7
GC - 20080415_AA
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments: -product com.ibm.designer.domino.product.dde -personality com.ibm.designer.domino.personality -product com.ibm.designer.domino.product.dde
Command-line arguments: -product com.ibm.designer.domino.product.dde -data C:\Documents and Settings\bdutfb\workspace_gany/../runtime-New_configuration(1) -dev file:C:/Documents and Settings/bdutfb/workspace_gany/.metadata/.plugins/org.eclipse.pde.core/DDE/dev.properties -personality com.ibm.designer.domino.personality -product com.ibm.designer.domino.product.dde -debug -console ::class.method=com.ibm.rcp.core.internal.logger.frameworkhook.writeSession() ::thread=main ::loggername=com.ibm.rcp.core.internal.logger.frameworkhook
2009/03/06 09:00:44.205 SEVERE Bundle com.ibm.jxesupport not found. ::class.method=unknown ::thread=main ::loggername=org.eclipse.osgi
Time to load bundles: 157
Starting application: 17680
2009/03/06 09:01:00.759 FINE RcpD daemon is running ... ::class.method=com.ibm.rcp.core.internal.daemon.Logging.fine() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
2009/03/06 09:01:00.759 FINE Adding greedy listener with id advisorCommand ::class.method=com.ibm.rcp.core.internal.daemon.Logging.finest() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
2009/03/06 09:01:00.759 FINE Adding greedy listener with id provisioningCommand ::class.method=com.ibm.rcp.core.internal.daemon.Logging.finest() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
2009/03/06 09:01:00.853 FINE RcpD.run(): waiting for a connection ... ::class.method=com.ibm.rcp.core.internal.daemon.Logging.fine() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
Application Started: 26308
Inde i Ring selection
2009/03/06 09:01:36.821 SEVERE The content type with id "org.eclipse.wst.javascript.core.javascriptsource" specified in the extension point does not exist. ::class.method=unknown ::thread=main ::loggername=org.eclipse.core.filebuffers
2009/03/06 09:01:36.837 SEVERE The content type with id "org.eclipse.wst.javascript.core.javascriptsource" specified in the extension point does not exist. ::class.method=unknown ::thread=main ::loggername=org.eclipse.core.filebuffers
2009/03/06 09:01:41.604 SEVERE Event loop exception ::class.method=com.ibm.rcp.personality.framework.internal.RCPWorkbenchAdvisor.eventLoopException() ::thread=main ::loggername=com.ibm.rcp.personality.framework.internal
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.ibm.rcp.personality.framework.internal.RCPApplication.run(RCPApplication.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:387)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.lang.NullPointerException
at com.ibm.workplace.noteswc.ShowViewRunnable.run(ShowViewRunnable.java:219)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
... 28 more
2009/03/06 09:01:41.651 SEVERE Unhandled event loop exception ::class.method=unknown ::thread=main ::loggername=org.eclipse.ui
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.ibm.rcp.personality.framework.internal.RCPApplication.run(RCPApplication.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:387)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.lang.NullPointerException
at com.ibm.workplace.noteswc.ShowViewRunnable.run(ShowViewRunnable.java:219)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
... 28 more
Re: Developing plug-ins for Domino Designer in Eclipse (DDE)
Configuration location:
file:/C:/Documents and Settings/bdutfb/workspace_gany/.metadata/.plugins/org.eclipse.pde.core/DDE/
Configuration file:
file:/C:/Documents and Settings/bdutfb/workspace_gany/.metadata/.plugins/org.eclipse.pde.core/DDE/config.ini loaded
Install location:
file:/C:/R802/framework/rcp/eclipse/
Framework located:
file:/C:/R802/framework/rcp/eclipse/plugins/org.eclipse.osgi_3.4.0.200811140851.jar
Loading extension: com.ibm.rcp.core.logger.frameworkhook
eclipse.properties not found
Framework classpath:
file:/C:/R802/framework/rcp/eclipse/plugins/org.eclipse.osgi_3.4.0.200811140851.jar
file:/C:/R802/framework/rcp/eclipse/plugins/
file:/C:/R802/framework/rcp/eclipse/plugins/com.ibm.rcp.core.logger.frameworkhook_6.2.0.200811140851.jar
Debug options:
file:/C:/eclipse_ganymede/.options not found
osgi> 2009/03/06 09:00:44.080 CONFIG eclipse.buildId=client_620_20081114-0851
java.fullversion=J2RE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260ifx-20081002_23977 (JIT enabled, AOT enabled)
J9VM - 20081002_023977_lHdSMr
JIT - r9_20080415_1520ifx7
GC - 20080415_AA
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments: -product com.ibm.designer.domino.product.dde -personality com.ibm.designer.domino.personality -product com.ibm.designer.domino.product.dde
Command-line arguments: -product com.ibm.designer.domino.product.dde -data C:\Documents and Settings\bdutfb\workspace_gany/../runtime-New_configuration(1) -dev file:C:/Documents and Settings/bdutfb/workspace_gany/.metadata/.plugins/org.eclipse.pde.core/DDE/dev.properties -personality com.ibm.designer.domino.personality -product com.ibm.designer.domino.product.dde -debug -console ::class.method=com.ibm.rcp.core.internal.logger.frameworkhook.writeSession() ::thread=main ::loggername=com.ibm.rcp.core.internal.logger.frameworkhook
2009/03/06 09:00:44.205 SEVERE Bundle com.ibm.jxesupport not found. ::class.method=unknown ::thread=main ::loggername=org.eclipse.osgi
Time to load bundles: 157
Starting application: 17680
2009/03/06 09:01:00.759 FINE RcpD daemon is running ... ::class.method=com.ibm.rcp.core.internal.daemon.Logging.fine() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
2009/03/06 09:01:00.759 FINE Adding greedy listener with id advisorCommand ::class.method=com.ibm.rcp.core.internal.daemon.Logging.finest() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
2009/03/06 09:01:00.759 FINE Adding greedy listener with id provisioningCommand ::class.method=com.ibm.rcp.core.internal.daemon.Logging.finest() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
2009/03/06 09:01:00.853 FINE RcpD.run(): waiting for a connection ... ::class.method=com.ibm.rcp.core.internal.daemon.Logging.fine() ::thread=RcpD Command Processor ::loggername=com.ibm.rcp.core.internal.daemon
Application Started: 26308
Inde i Ring selection
2009/03/06 09:01:36.821 SEVERE The content type with id "org.eclipse.wst.javascript.core.javascriptsource" specified in the extension point does not exist. ::class.method=unknown ::thread=main ::loggername=org.eclipse.core.filebuffers
2009/03/06 09:01:36.837 SEVERE The content type with id "org.eclipse.wst.javascript.core.javascriptsource" specified in the extension point does not exist. ::class.method=unknown ::thread=main ::loggername=org.eclipse.core.filebuffers
2009/03/06 09:01:41.604 SEVERE Event loop exception ::class.method=com.ibm.rcp.personality.framework.internal.RCPWorkbenchAdvisor.eventLoopException() ::thread=main ::loggername=com.ibm.rcp.personality.framework.internal
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.ibm.rcp.personality.framework.internal.RCPApplication.run(RCPApplication.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:387)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.lang.NullPointerException
at com.ibm.workplace.noteswc.ShowViewRunnable.run(ShowViewRunnable.java:219)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
... 28 more
2009/03/06 09:01:41.651 SEVERE Unhandled event loop exception ::class.method=unknown ::thread=main ::loggername=org.eclipse.ui
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.ibm.rcp.personality.framework.internal.RCPApplication.run(RCPApplication.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:387)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.lang.NullPointerException
at com.ibm.workplace.noteswc.ShowViewRunnable.run(ShowViewRunnable.java:219)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
... 28 more





