Developing plugins for IBM Notes on Mac

I’ve been developing plugins for IBM Notes on Mac for years now but never really got around to sharing the steps on the blog. The below steps – in very crude form – works with Java 8 on Mac OS El Capitan (v. 10.11) using IBM Notes 9.0.1. The below sections are additions to the regular steps on creating a target platform documented otherwise on this blog

Main-tab

Run a product: com.ibm.notes.branding.notes

Execution Envionment: JavaSE-1.6

Arguments-tab

Program arguments:

-personality com.ibm.rcp.platform.personality
-debug
-console
-ws cocoa

VM Arguments:

-Declipse.registry.nulltoken=true
-Djava.util.logging.config.class=com.ibm.rcp.core.internal.logger.boot.LoggerConfig
-Dcom.ibm.pvc.webcontainer.port=8080
-Declipse.pluginCustomization="/Applications/IBM Notes.app/Contents/MacOS/rcp/plugin_customization.ini"
-Djava.protocol.handler.pkgs=com.ibm.net.ssl.www.protocol
-Dosgi.hook.configurators.exclude=org.eclipse.core.runtime.internal.adaptor.EclipseLogHook
-Dosgi.framework.extensions=com.ibm.rcp.core.logger.frameworkhook
-Xbootclasspath/a:"/Applications/IBM Notes.app/Contents/MacOS/rcp/eclipse/plugins/com.ibm.rcp.base_${rcp.base_version}/rcpbootcp.jar"
-XstartOnFirstThread

Environment-tab

  • DYLD_LIBRARY_PATH=/Applications/IBM Notes.app/Contents/MacOS
  • NOTESBIN=/Applications/IBM Notes.app/Contents/MacOS

Notes / Eclipse / Lotus Expeditor mapping

Developing plug-ins for Lotus Notes or Expeditor can be complicated enough but you also have to look out for platform differences and the difference in capabilities between different Notes/Expeditor/Eclipse versions. To make this easier for myself I’ve started compiling a Notes version to Eclipse version to Expeditor version mapping table (Notes / Eclipse / Lotus Expeditor mapping).

If you know one of the missing versions please let me know so the table may be complete and be a good reference for us all.

Tip for improving Notes startup time from Eclipse

On Tuesday I was contacted by a fellow Yellow-head concerning my Lotusphere 2009 demos and the startup time of Notes from Eclipse. The demos had nothing to do with it – the issue was with his Eclipse setup and was easy to fix.

He was experiencing that it took minutes to launch Notes from Eclipse which made development very frustrating and time consuming. He was using Eclipse configured through Lotus Expeditor Toolkit which made me take special notice as this could be a general problem and something many may/will experience.

After discussing his setup for a while I thought a little about it to tried and think of what could slow down Notes startup. One of the first things I could think of was that he might (inadvertently) be clearing his Eclipse workspace very time he launched Notes. This operation is time consuming and it turned out to be the case. After correcting this he was down to launch times in order of seconds which is also what I experience.

The Eclipse workspace contains all your Eclipse settings as well as a persistent registry of the plug-ins installed on the platform as well as their dependencies. This dependency graph takes a while to put together as it requires reading through all the plug-in manifests and trying to resolve the dependencies specified there. So as you can imagine clearing the workspace before each launch of Notes will take unnecessarily long. If no plug-ins are added to the core platform it doesn’t make any sense to recalculate this dependency graph.

To make sure you don’t clear your workspace when launching Notes from Eclipse do as follows:

  1. Open the launch configuration settings (select “RunRun Configurations…” from the menus)
  2. Select your Notes launch configuration (probably named “Notes” or similar)
  3. On the “Main”-tab take a look at the “Workspace Data”-section at the top. Make sure there isn’t a checkmark in the “Clear” ckecbox. If there is, remove it and apply the changes.

That’s all there is to it.

Installing Lotus Expeditor Toolkit 6.2 – there’s an issue with the instructions

In preparation for my Lotusphere session I installed Lotus Expeditor toolkit 6.2 on top of a clean Eclipse 3.4 install in order to test it out. One of the things I noticed was that there is an error in the install guidelines – not critical but if you’re new to Eclipse you might be stumped. The documentation also fails to mention how to configure the Toolkit once installed. Read on…

The error is in the doc/index.html in step 5 where it states

"Select Add Site and browse to the drive
and directory where the Lotus Expeditor
Toolkit update site zip file is located
and click OK."

The problem is that the Expeditor toolkit that I downloaded from IBM Partnerworld didn’t have a zip-file but instead an unpacked update site. In my case step 5 should instead be

"Select Add Site and browse to the drive
and directory where you unpacked the Lotus
Expeditor Toolkit and select the
Expeditor_Toolkit_install directory and
click OK."

The remaining steps are fine and installing the toolkit is almost easy… There is one caveat the documentation fails to mention and that’s how to fill in the dialog that pops up once the Toolkit has been installed and Eclipse has been restarted. I fill in the dialog as follows (with Notes 8.5 installed in C:Program FilesNotes 8):

  • Lotus Notes 8
  • C:Program FilesNotes8frameworkrcpeclipse
  • jre6
  • 1.5
  • Display the first time a new workspace opens

SWT @ Notes 8: Network awareness from SWT components

One of the big strengths of having Notes 8 built in Lotus Expeditor is that you have access to all the functionality of the underlying Expeditor platform including its services. On if the nice ones is that you can be notified when the underlying network connectivity is available and/or unavailable.