Be careful of inserted version numbers!

You created the worlds best plugin and deployed it to all of your Lotus Notes users so this flashy new view shows in the sidebar.  You rely on some Notes API’s and everything works great on your machine.  You then create your widget’s extension.xml and post it to the widget catalog.   You send out the email the new widget is available.

You wait…you wait…you wait…

You get some good feedback that your new sidebar application works great.

Then, you get a couple of emails saying “your sidebar application isn’t showing up”.  You start asking for errors, logs, console errors, etc.  Nothing seems to show any glaring problems.  Then you start asking, well what version of Lotus Notes are you running?  You get answers like Notes 8.1.2, Notes 8.5, Notes 8.5.1, etc.  Isn’t that the beauty of Notes!  You then realize you yourself are running Notes 8.5.2 and that is what you actually wrote the plugin against – in the Eclipse IDE.  You open up the Manifest.MF to see if there would be any problems.  This is what you see:

Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui,org.eclipse.ui.views,
 org.eclipse.core.runtime,
 com.ibm.notes.java.api,
 com.ibm.notes.java.ui,
 com.ibm.notes.client;bundle-version="8.5.2"

Do you see the problem?  The problem is the plugin “com.ibm.notes.client” requires specifically version “8.5.2“.  These means if the plugin does not have the required bundles (and any versions specified) it will not activate in the Eclipse platform.  Now, let’s say this was intentional because you used some new API that was introduced in Notes 8.5.2 – then this is good!  There were no visible “crashes” or problems, the plugin just didn’t start – which is the beauty of OSGI.  If you are not intending this, then you simply need to remove the version restriction:

Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui,org.eclipse.ui.views,
 org.eclipse.core.runtime,
 com.ibm.notes.java.api,
 com.ibm.notes.java.ui,
 com.ibm.notes.client

This is actually a huge benefit of OSGI but mixing the plugin installation with widgets can cause some confusing results because there are no errors reported when the widget is installed.  The user thinks everything went “well”.  So in the end, be careful of the the Eclipse IDE, it inserts these version numbers in your manifest automatically.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s