%Include in actions

I must admit that I have never been a big fan of using the built-in include files supplied with Notes e.g. lsconst.lss but recently I have started using them to make my code more readable. Using the include file you can write

Dim rc As Integer
rc = Msgbox("Should we continue deleting the contents of your harddrive?", MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON2, "Continue?")
If rc=IDNO Then
  Exit Sub
End If

which is much more readable than the same code without the constants but using magic numbers.

Dim rc As Integer
rc = Msgbox("Should we continue deleting the contents of your harddrive?", 4+32+256, "Continue?")
If rc=7 Then
  Exit Sub
End If

Today however I realized that you cannot use the include files in (form) actions since the compiler does not allow the use of the Public keyword. All constants in lsconst.lss is defined as Public so that’s a no go. Copying lsconst.lss to something like friendly_lsconst.lss, removing the use of Public and the reference at the bottom to lsprcval.lss and including the copy instead solves the problem. This restriction isn’t documented in Domino Designer help and severely limits the usability in my mind. Since the constants are inserted at compile time it shouldn’t be a problem.

Below is a screenshot of the compile error from Domino Designer. I’m running Notes 7.0.2 on Windows XP Prof. SP2.

Avoiding use of ExceptionUtils

For a long time for error reporting I have been using Apache Commons Lang to convert a stacktrace to a string (Avoiding use of org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(Throwable)) but for a project I was fixing up today the dependency was overkill since it was the only thing I used. A simple replacement is:

StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
String stack_trace = sw.getBuffer().toString();

Commons Lang is still very much in my arsenal since it has utility methods to so many nice to have functions…

XML entities when doing XSL transformations using LotusScript

I stumbled over an interesting post on developerWorks on external XML entities and XSL transformations in LotusScript: XSLT transform-ignoring external entity reference in R7.0.2 – but worked well on R6.5.4. I was puzzled by the post and looked a bit into it and was unable to find any real LotusScript API support for working with XML entities when processing XML in LotusScript.

I find it funny that there doesn’t appear to be any real API support for XML entities in LotusScript that I can see anyway. Hmmm – gotta go into Sherlock Holmes mode…

Patch for lost messages in Sametime 7.5.1 tabbed chat interface

As previously mentioned (Sametime 7.5.1 tabbed interface is loosing messages!) I upgraded to Sametime Connect 7.5.1 and began loosing chat messages when using the new tabbed chat interface. I was kindly informed by Hans-Peter Kuessner from Domblog.de of two IBM patches for the issue. I contacted Lotus Support and requested the hotfixes and promptly received them. I have provisioned the hotfix to my users using the automatisk provisioning built into Sametime 7.5. The automatic update of user Connect clients has worked like a charm and the patch has solved the issue. Nice!

Below is a screenshot of the dialog shown to users after the patch has been automatically installed and a screenshot of the “Manage plug-ins” dialog after the feature patch has been installed.

Only feature I could see the need for would be some way to see which users have installed the patch and who haven’t. Of cause users do not have the option of not installing the patch but still it would be nice to know how many of the users have been updated. Some might be connecting from home where they might not have access to the update site. I haven’t checked the log so strictly speaking I don’t know if it’s there but somehow I doubt it.

DIIOP_IOR_HOST

Today is slow on new topics so I thought I would share a nice (D)IIOP notes.ini related setting for the Domino server. When you run the Domino IIOP server behind a NAT’ed connection you will need to change the IP address that the server publishes through its diiop_ior.txt file. If you don’t clients will try to connect to the un-NAT’ed IP address instead of the NAT’ed one (since that’s the one Domino binds to).

The solution is to set the DIIOP_IOR_HOST notes.ini setting to the NAT’ed address and restart the DIIOP task. This will make the diiop_ior.txt contain the NAT’ed address.

Please note that the setting is called DIIOPIORHOST from Domino 7 and onwards but DIIOP_IOR_HOST is still supported as stated in the notes.ini documentation on developerWorks.