329 Lotus blogs updated hourly. Who will post next? Home | Downloads | Events | Jobs | Twitter | Bookmarks | Pods | Blogs | Search | myPL | About 
 
Latest 7 Posts
Beware <script> in XPages
Wed, May 15th 2013 342
Working the system to get bugs fixed
Mon, May 13th 2013 154
Delete empty folders, take 2
Wed, Apr 10th 2013 237
@IsNotesBrowserPlugin
Wed, Mar 20th 2013 306
Are Apple customers allowed to marry non-Apple users?
Mon, Jan 21st 2013 521
Searching for design elements 100 times faster
Tue, Jan 8th 2013 535
Speak at Pulse?
Wed, Oct 17th 2012 342
Top 10
Searching for design elements 100 times faster
Tue, Jan 8th 2013 535
Are Apple customers allowed to marry non-Apple users?
Mon, Jan 21st 2013 521
Better SSJS validation for XPages
Wed, Jan 5th 2011 379
Speak at Pulse?
Wed, Oct 17th 2012 342
Beware <script> in XPages
Wed, May 15th 2013 342
Sample code for LCLSX file attachments article
Wed, Sep 5th 2012 339
New Best Practices Wiki
Tue, Jan 10th 2012 311
@IsNotesBrowserPlugin
Wed, Mar 20th 2013 306
Why inboxes fail
Wed, Jun 13th 2012 296
Another way to make an efficient date/based view
Mon, May 23rd 2011 275


LS2J static method calls and a little introspection
Andre Guirard    

I've been needing to use LS2J recently so that I could code DNS lookups and web page requests as part of a testing system I'm working on for LotusLive. The documentation is a little vague on how you work with methods in a Java class from LotusScript, so since I had to experiment to find out how it worked, I figured it would be nice to record the information here.

In most cases, you're writing the Java classes you're calling via LS2J, so you get to decide whether there are static members. But maybe you got the class from elsewhere and you don't want to have to modify it, or maybe you're just using a built-in class that you don't get to change. So it may occasionally be helpful to know how to use the static members. So here goes.

You can invoke a static method of a Java class using the JavaMethod.Invoke method with an object argument of Nothing. First you need to get a handle to the method. So for instance, to invoke the static method HTTPPing, which takes a String argument and returns an int, I would write:

       Dim jses As New JavaSession
     
Dim jclass As Javaclass
     
Set jclass = jses.GetClass("TCPClient")
     
Dim result%, url$
      url =
"http://notes.lotuslive.com"
      result = jclass.Getmethod(
"HTTPPing", "(Ljava/lang/String;)I").Invoke(Nothing, url)

The second argument to Getmethod, the method signature, can be a bit hard to come up with. The example in the help shows a sample value of "(I)Ljava/lang/String;", but a single example isn't much help unless the method you want has exactly that signature (and the example seems to be wrong anyway). Rather than try to puzzle out what the right signature might be for the method, I wrote an agent to scan the methods of a JavaClass object and display all the signatures.

       Dim jses As New JavaSession

        Dim jclass As Javaclass
       
Set jclass = jses.GetClass("TCPClient")
       
Dim jmc As Javamethodcollection
       
Dim jm As Javamethod
       
Set jmc = jclass.Getclassmethods
       
Set jm = jmc.Getfirst
       
Dim methods$
       
Do Until jm Is Nothing
               methods = methods &
{
}
& jm.Methodname & " - '" & jm.Signature & "'"
               
Set jm = jmc.Getnext
       
Loop
       
MessageBox Mid$(methods, 2)


which gives the following output:

equals - '(Ljava/lang/Object;)Z' 
hashCode - '()I'

toString - '()Ljava/lang/String;'

getClass - '()Ljava/lang/Class;'

notify - '()V'

notifyAll - '()V'

wait - '()V'

wait - '(J)V'

wait - '(JI)V'

ping - '(Ljava/lang/String;II)Z'

DNSLookup - '(Ljava/lang/String;)Ljava/lang/String;'

HTTPPing - '(Ljava/lang/String;)I'

So we can see from the last entry exactly what the signature argument should be.

---------------------
http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/ls2j-static-method-calls
May 26, 2011
221 hits



Recent Blog Posts
342


Beware <script> in XPages
Wed, May 15th 2013 12:30p   Andre Guirard
I may be stating the obvious, but I wasn't the only one on my team caught out by this, so I thought I'd best mention it. I recently discovered the hard way that there's a problem with using elements in XPages. Always use instead. Why, you ask? Either seems to work fine! The problem comes up if your application is translated. The code that decides what parts of your page are translatable doesn't know anything about the element, so your JavaScript code is marked as a localizable string. It [read] Keywords: ldd lotus xpages application best practice javascript
154


Working the system to get bugs fixed
Mon, May 13th 2013 9:20a   Andre Guirard
An issue recently came to my attention that (based on my informal poll) has been a thorn in the side for Domino administrators for quite a while. I've been trying to figure out how it is that it's never been fixed. I'm referring to the fact that end users, when they create or rename a folder, are allowed to use various characters that have special meanings in design element names -- backslash, vertical bar, underscore, forward slash (which causes problems in mobile) and enclosing the name in [read] Keywords: domino ibm ldd lotus notes notes client notesdomino bug development ideajam mobile
237


Delete empty folders, take 2
Wed, Apr 10th 2013 9:50a   Andre Guirard
I while back I wrote a post containing code to clean up empty folders from user mail files. Yesterday, someone pointed out to me that it doesn't take into account the fact that folders that contain subfolders can be technically empty, in the sense of containing no documents, but we don't want to delete them if they have subfolders which are non-empty -- or if they have subfolders we don't also want to delete. So I came up with a new version of the code that deals with those situations. As bac [read] Keywords: ldd lotus lotusscript application
306


@IsNotesBrowserPlugin
Wed, Mar 20th 2013 7:40a   Andre Guirard
In case it makes a difference for your application, here's how to tell whether you're running in the Notes browser plugin. So far, the only difference that's mattered to me is that the [FileExit] command doesn't work in NBP, causing an error dialog if you try it. %REM Function IsNotesBrowserPlugin Description: Return TRUE if we're running in the Notes browser plugin. %END REM Function IsNotesBrowserPlugin As Boolean Dim session As New NotesSession [read] Keywords: ldd lotus notes application
521


Are Apple customers allowed to marry non-Apple users?
Mon, Jan 21st 2013 2:00p   Andre Guirard
It's been an ordeal. I have an Android smartphone and use Gmail's calendar. My wife has an iPhone. You'd think it would be simple to have a shared calendar -- this is, after all, the future. As it turns out, it is possible, but the arduous process has made me wonder whether Apple considers it a form of apostasy for their customers to associate with someone who doesn't use their products. We had two alternatives to start with: we could create our shared calendar in Gmail or iCloud. No prefere [read] Keywords: ibm ldd lotus notes apple email google interface iphone java
535


Searching for design elements 100 times faster
Tue, Jan 8th 2013 9:40a   Andre Guirard
Often, entries in this blog are in reaction to questions I get, or someone else's code I've run across. One of the reasons things have been so quiet here is that my job has changed so that's not happening as often. But every now and them I'm reminded that there are things I know that it hadn't occurred to me weren't obvious, until I run across another developer who didn't know it. That's the case with this tip. Someone mentioned that it was taking their code a long time to scan mail file [read] Keywords: ldd lotus lotusscript database java network server




342


Speak at Pulse?
Wed, Oct 17th 2012 12:20p   Andre Guirard
If you're thinking of submitting an abstract to the Pulse 2013 conference in Las Vegas, you might like to register for this webcast that explains the process. If you've been doing something interesting with IBM technologies, here's your chance to shine! [read] Keywords: ibm ldd lotus tivoli
339


Sample code for LCLSX file attachments article
Wed, Sep 5th 2012 1:50p   Andre Guirard
I keep getting asked where to get the sample code for the article "Working with file attachments in the LCLSX", which used to be in the Lotus Sandbox before that went away. The code is here: LcLsxTracy.nsf [read] Keywords: ibm ldd lotus lotusscript
296


Why inboxes fail
Wed, Jun 13th 2012 6:53p   Andre Guirard
I've been doing some research recently into what causes email to fail to be delivered into inboxes, although it is visible in the All Documents view. I was concerned with this mainly because the recommended corrective action (copy compact) isn't an option for SmartCloud Notes users and their local admins, who don't have access to the users' mail servers to issue console commands. Conventional wisdom, and our technotes, claim that the problem is that the "inbox index gets corrupted". But it [read] Keywords: admin ldd lotus notes notes client bug database email
183


You can read a story of mine...
Thu, May 10th 2012 6:10a   Andre Guirard
In the recent anthology Sky-Tinted Waters from SamsDot, my story "Misprint" appears. It's about a young stage magician and a trick that works a little too well, and the dangers of not reading ahead to the end of the instructions. The other stories are also very good and I'm enjoying reading it. I hope a bunch of you will buy copies, and that you'll find the stories entertaining. No ebook version is planned at present. [read] Keywords: ldd lotus




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