357 Lotus blogs updated hourly. Who will post next? Home | Downloads | Events | Pods | Blogs | Search | myPL | About 
Latest 7 Posts
Quick Tip: Use Dojo Content Panes for Speedier Initial Page Loads
Mon, Aug 18th 2014 86
My Sessions at MWLUG This Year
Mon, Aug 18th 2014 80
Domino SSL and Reverse Proxies
Mon, Aug 18th 2014 204
Quicker Tip: Lowering XPage Build Overhead When Using Jars
Thu, Aug 14th 2014 139
Be a Better Programmer, Part 4
Thu, Aug 14th 2014 183
Quick Tip: facetName-less Callbacks in XPages
Wed, Aug 13th 2014 138
How I Learned to Stop Worrying and Love C Structs
Mon, Aug 4th 2014 152
Top 10
"Build Automatically", "Refresh automatically", and "Team Development"
Thu, Jan 23rd 2014 439
So it goes.
Mon, May 12th 2014 421
An XPage As A Tree: Implications
Wed, Apr 16th 2014 394
The Trouble With Developing on Domino
Tue, Jul 8th 2014 388
SNTT: Reconstructing DateRanges
Thu, Feb 27th 2014 385
Be a Better Programmer, Part 1
Thu, May 15th 2014 343
Wed, Jun 4th 2014 313
Better Living Through Reverse Proxies
Thu, May 30th 2013 310
My Current Ideal App-Dev Routine, April 2014
Sun, Apr 27th 2014 282
My Current Model Framework, Part 2: An Example
Fri, Feb 21st 2014 279

Arbitrary Scripting Languages in XPages
Jesse Gallagher    

I think I've settled on JSR 223, the generic "Scripting in Java" specification, as the likely best way to embed Ruby. It seems like the "correct" way to do it and generally the cleanest. I don't like the notion that the way to customize the runtime is by setting system properties, so I'm still a little wary, but it'll do for now, in any event.

The side benefit of JSR 223 (and this would be true of BSF as well) is that it supports a crapload of languages, and it does so in a very unified and generic way. Accordingly, I modified my ViewHandler and created a GenericBindingFactory to browse through the list of non-Ruby available languages and create EL bindings for each.

The upshot is that, when this code is active, any JSR-223-compliant language in your server's classpath will become available for "#{whatever: ... }" bindings just by virtue of its presence. Note, though, that that doesn't necessarily mean it will be a good experience. For one, the page's variables (like param, facesContext, view, and so forth) aren't just available - you'd have to make something like the method_missing method I wrote for Ruby to automatically resolve them via FacesContext.getCurrentInstance(). Furthermore, some languages are problematic: for some reason, Jython throws NullPointerException errors for even the most basic formulas on almost every page load, while PHP still requires <?php ?> tags and spits anything else out to the server console.

I know what question is on the tip of your tongue, though, so I won't keep you waiting: yes, you can use your home-grown string-concatenation operators in Scheme! You can breathe a sigh of relief now:

<xp:text><xp:this.value><![CDATA[#{scheme: (set! + (let ((original+ +)) (lambda args (if (and (not (null? args)) (string? (car args))) (apply string-append args) (apply original+ args))))) (+ "Hello " "from " "Scheme") }]]></xp:this.value></xp:text>

Yes, that works, and no, there's no reason to do it. If you really like Lisp, though, Scheme and Clojure can now be in your XPages toolbox.

Once I'm able to post to OpenNTF, I'll include this in my first Ruby-in-XPages release, though I may leave the applicable code commented out by default. Who knows what horrors this could unleash?

Apr 19, 2012
100 hits

Recent Blog Posts

Quick Tip: Use Dojo Content Panes for Speedier Initial Page Loads
Mon, Aug 18th 2014 5:13p   Jesse Gallagher
The XPages Extension Library is full of hidden gems and one I particularly like keeping in my back pocket is the control. It's a fairly unassuming control; like the rest of the components in the "Dojo Layout" category, it takes its name and basic concept from the underlying Dijit. However, you don't have to use it in a full Dojo layout - and, in fact, all of the actual layout types have more-appropriate XSP components. Presumably, its initial use is to load content from a specified UR [read] Keywords: xpages database dojo javascript network properties

My Sessions at MWLUG This Year
Mon, Aug 18th 2014 1:13p   Jesse Gallagher
As I mentioned at the end of this morning's post about SSL and reverse proxies, I'm going to be giving a session on using a reverse proxy in front of Domino at this year's MWLUG next week. Specifically, it will be one of two sessions, both on Friday: OS101: Load Balancing, Failover, and More With nginx I'll be discussing the general reasons why you would use a reverse proxy - not just the aforementioned SSL benefit, but also load balancing, failover, multi-app integration, new feature [read] Keywords: domino xpages integration server

Domino SSL and Reverse Proxies
Mon, Aug 18th 2014 7:12a   Jesse Gallagher
Domino's SSL stack has been long-in-the-tooth and awkward to deal with for a while. Until recently, this has mostly just resulted in the sort of stilted way you have to set up SSL keychains, using the Server Certificate Admin database initially and then "IKeyMan" more and more (specifically, an old version you need 32-bit Windows XP for, like a barbarian), but the job eventually got done. However, as a post from Steve Pitcher points out, this is becoming rapidly impractical. While I gen [read] Keywords: admin domino ibm database development server smtp websphere

Quicker Tip: Lowering XPage Build Overhead When Using Jars
Thu, Aug 14th 2014 1:13p   Jesse Gallagher
(Caveat: I don't actually know if this matters with the Jar design element in 9.0+, since the only times I've needed it are with clients using obsolete versions) If you use Jar files stored in an NSF in your build path with XPages apps, you've likely noticed that it makes your build times interminable, particularly if it's a large library. From what I can tell, Designer seems convinced that it must download the entire Jar file during every build, in order to find out what's inside of [read] Keywords: xpages archive eclipse

Be a Better Programmer, Part 4
Thu, Aug 14th 2014 7:12a   Jesse Gallagher
This topic isn't, strictly speaking, in the same vein as the rest of this series; instead, it's more of a meandering "case study" sort of thing. But it has something of a unifying theme, if you'll bear with me: Be Mindful of Your Layer of Abstraction Basically everything about computers has to do with layers of abstraction, but what I have in mind at the moment is how it interacts with web programming. First, I'll dive into a bit of background. The original premise of HTML was that [read] Keywords: domino xpages best practice css desktop development java javascript properties server widgets

Quick Tip: facetName-less Callbacks in XPages
Wed, Aug 13th 2014 5:12p   Jesse Gallagher
When you're setting up a Custom Control, you likely know by now that you can set up callback areas to add content to a specified place inside your CC content when it's rendered. They typically look something like this: Content Above Content Below You then drop content in there like so in your XPage: That works fine. However, you can benefit greatly by learning that both properties of the callback are optional. Leaving off the id isn't particularly interesting, [read] Keywords: ibm xpages properties xml

How I Learned to Stop Worrying and Love C Structs
Mon, Aug 4th 2014 8:12p   Jesse Gallagher
Since a large amount of on-site client time has put my framework work on hold for a bit, I figured I'd continue my dalliance in the world of raw item data. Specifically, what I've been doing is filling out the collection of structs with Java wrappers, particularly in the "cd" subpackage. For someone like me who has only done bits and pieces of C over the years, this is a fruitful experience, particularly since I'm dealing with just the core concept of the Notes API data structures wit [read] Keywords: domino dxl ibm notes rich text rich-text bug css java

Delving Into NSF Raw Item Data
Tue, Jul 29th 2014 11:12a   Jesse Gallagher
For the Design package of the OpenNTF Domino API, one of my goals was to add the ability to access the supporting structures around XPages: file resources, images, CSS, and, crucially, Java classes and the XPages themselves. My weapon of choice for the whole API is DXL, and this covered the job nicely for most of those aspects. DXL has clean representations for the first three in the list: specialized XML formats containing the pertinent metadata and a single BASE64-encoded block of the ac [read] Keywords: agent domino dxl lotus lotusscript notes rich text xpages css java leak openntf xml

Building an App with the frostillic.us Framework, Part 6
Wed, Jul 23rd 2014 12:12p   Jesse Gallagher
Define the data model Create the view and add it to an XPage Create the editing page Add validation and translation to the model Add notification to the model Add sorting to the view Basic servlet REST with Angular.js Add sorting to the view This step in the framework example is very similar to the second in that there's nothing particularly Framework-y about it. Technically, the work in the title of this step is already done: I had already enabled click-to-sort and set sortable="true" i [read] Keywords: notes xpages java


The Industry's Vileness
Tue, Jul 22nd 2014 9:13p   Jesse Gallagher
Fair warning: this post isn't technical. It's also full of sweeping generalities. When I attended middle and high school, it was as part of the last group of geeks and nerds that should face systemic ostracization. Naturally, high school will still be terrible for most people, just because it's full of high schoolers, but the world at large has seen a near-complete triumph for geeks and nerds generally. And this has had some very positive side effects: because we had to deal with exclu [read] Keywords: community development

Created and Maintained by Yancy Lent - About - Blog Submission - Suggestions - Change Log - Blog Widget - Advertising - Mobile Edition