March Lotus Technical Information and Education (LTIE) community meeting

If you’re interested in plugin development and the recently published RedWiki on plugin development for Lotus Notes, Sametime and Symphony (easy url is http://bit.ly/pluginredwiki) be sure to join us for the March March Lotus Technical Information and Education (LTIE) community meeting. The conference call will be on 22 March at 10am Central Time (10am Eastern, 3pm CET).

For more info head over to the Lotus Technical Information and Education wiki on Lotus Greenhouse (look under “When we meet” at the bottom of the page).

jWidgets to make it easier to develop Eclipse based components for composite applications

Perusing the the Composite Application Wiki I discovered a technology IBM calls jWidgets. Basically they are for Composite Application Java component development what iWidgets are to websites that is a widget framework for easily and more quickly doing stuff. Developing Java components for composite applications is a little hard as you have to manage wires etc. yourself. A framework would make that a lot easier and that’s exactly what jWidgets are.

Having the technology available to Lotus Notes (and not just Lotus Expeditor) would be really cool. From an IBM’er I however learned that they haven’t been formally tested in Notes, but the technical capability is there. They have only been tested formally in Lotus Expeditor 6.2.2.

jWidgets – Easy Creation of Java Composite Application Components

What is new in 8.5.2 for XPages

Lotus Notes/Domino 8.5.2 is out and the other day I was hosting an XPages training session so I thought a little bit about what’s new with XPages. Of course XPage ninjas like Matt has already written about it (Matt White: What’s new with XPages in 8.5.2) but as I was reading up I found some links I wanted to highlight. Most info may be found on the IBM wiki.

  • onClientLoad Event. Its now possible to add scripts in the events to be executed when the page is submitted or this panel or some containing panel is partial updated.
  • Extensions API
  • Two new Global Objects for Server Side JavaScript, sessionAsSigner (open a session using the signer rights) and sessionAsSignerWithFullAccess(open a session using the signer rights, while giving it full access to the data)
    • sessionAsSigner – Assigns credentials based on the signer of the of XPages design element. The session is restricted by the application’s ACL and the security tab of the server’s Domino Directory entry.
    • sessionAsSignerWithFullAccess – Assigns credentials based on the signer of the of XPages design element and allows full administrative access to the application’s data. The signer must have the right to such access or the session is not created.
  • New resource xp:headTag – this allow you in an easy way to put stuff into the header of a XPage
  • XPages ECL to Permissions updated to include more Java Permissions
    In V851 of XPages, security for executing Java code in XPages in the Notes Client was very restricted. For XPages V852, the Java Permissions managed by the XPages ECL settings have been broadened to be similar to the set of Java Permissions allowed by Java Agents and to bring a level of equivalence between Java Permissions allowed for XPages on Domino Server (Unrestricted) and XPages in the Notes Client. For example, in V851 the ECL Network permission only covered the Java SocketPermission, now it covers NetPermission and other related Java network permissions.
  • Referencing a Managed Bean from JavaScript now supported in XPiNC. This fixes a bug where a Managed Bean, first referenced in JavaScript (which triggered the creation of the Bean) caused a security exception. The workaround was to first have this Managed Bean referenced and created as a DataSource (referencing the Bean from then on was fine). This bug is now fixed.

New functionality was added in Notes 8.5.1 to make MyWidgets more dynamic

In Lotus Notes 8.5.1 a small, but very useful, addition was made made to the MyWidgets funtionality. From Notes 8.5.1 the preferences that you specify for your widgets may be computed by the platform instead of being mapped to something you specify via LiveText or text selection. Below is a small snippet from an extension.ml file showing how a value is normally mapped to a parameter (in this case “Mikkel Flindt Heisterberg” is mapped to the “name” parameter).

<preference name="name">
<value>Mikkel Flindt Heisterberg</value>
<displayName>name</displayName>
<enumValues/>
<enumDisplayValues/>
<datatype></datatype>
<isEnum>false</isEnum>
<isRequired>true</isRequired>
<isHidden>false</isHidden>
</preference>

So what if you want to use the current username or the current date? Well up to now you were at a loss or you had to incorporate the functionality into the service you linked to. But since this isn’t always possible IBM added the option of specifying it in the widget itself.

The way to do it is by using a “name” or “date” command in place of the static text (“Mikkel Flindt Heisterberg” in the example above). The syntax is as follows:

${command:parameter}

The following two commands are available:

  • name
  • date

As you might be to format the date or specify the part of the username you need (common name, organization etc.) you use “parameter” part to further instruct the command. Below is some documentation on each of the commands.

  • ${name:nameType}
    For example: ${name:cn}/${name:ou}/${name:o} will resolve to “CommonName/OrganizationlUnit/Organization.” For example: ${name:dn} will resolve to the user’s full distinguished name.
  • ${date:dateformat}
    For example: ${date:yyyy MM DD} will resolve to the current date (in this example “2009 03 20”). The “dateFormat” should be a valid Java date format string.

Using the “name” command the above XML snippet becomes:

<preference name="name">
<value>${name:cn}</value>
<displayName>name</displayName>
<enumValues/>
<enumDisplayValues/>
<datatype></datatype>
<isEnum>false</isEnum>
<isRequired>true</isRequired>
<isHidden>false</isHidden>
</preference>

Information is available in the infocenter (Using a widget property to filter a current user name or date)

Bob Balfe: plugin_customization.ini and Eclipse preferences

Bob has, once again, written a very nice post on his blog. This time it’s on plugin preferences and how the plugin_customization.ini file fits in and where Eclipse preferences are stored. As this is common cause of concern and questions from plugin developers and admins I wanted to point to the post.

Bob Balfe: plugin_customization.ini and Eclipse preferences

Why I’m not using the Lotus Expeditor Toolkit

Every time I get questions on developing plugins for the Lotus Notes 8 platform I mention that I really can’t comment too much on Lotus Expeditor Toolkit installation and usage questions. The reason is that I do not use the toolkit when developing for Lotus Notes. Since I get the question so much I thought I would take it to the blog as well.

The main reason I started developing for Lotus Notes without the Lotus Expeditor Toolkit was due to two reasons:

  1. Because I kept receiving new betas of the Lotus Notes client from IBM Lotus and because XPD toolkit wouldn’t work with these betas
  2. I wanted to use newer Eclipse versions than what the XPD toolkit supported

It’s not that I don’t find the toolkit valuable but for the work I do it isn’t a requirement.

I understand why you might want to use Lotus Expeditor Toolkit as it may be considered easier (if you’re not so Eclispe savy), because you have to! or because you need to switch target platform often (Notes -> Symphony -> Sametime).

How to extend Notes 8: New version of the demo application

I just posted an update to the demo application for my Extending Notes 8 series of posts. The demo application is discussed in more detail in my previous post (How to extend Notes 8: LiveText demo application). The issue was that I had a button to create a demo e-mail in the UI which made the plugin depend on the Notes Java UI API which was added in Notes 8.5.1 and hence meant that the demo application wasn’t installable on previous Notes versions… 😦

To remedy that I built an new version where the button using the offending API is added from an Eclipse plugin fragment and using a custom extension point (if you’re running Notes 8.5.1+). More on that approach at a later date. For now you may install the new version using the updated widget descriptor (extension.xml) (simply drag the link to your MyWidgets sidebar plugin).

If you do an update – which there’s absolutely no reason to if it already works for you – the only way to tell is by verifying that the version number at the bottom of the sidebar application is changed to 1.0.1.

That’s all for this post. All the posts in the series may be found under the extending_notes8 tag.