Mindoo Blog - Cutting edge technologies - About Java, Lotus Notes and iPhone

  • Life sign / Major update for Domino JNA on Github

    Karsten Lehmann  November 10 2017 17:25:35
    Wow - I haven't written a blog post in the last 9 months! It's just so much easier to write a Tweet than to produce long articles, when I split the week between three customers and my family with two children.

    Just wanted to let you know that we are alive and kicking and still doing very much Domino related work! :-)

    Technologies have as always shifted a bit. Most of the time we create pure JavaEE projects now for our customer web apps, developed in Eclipse and not Domino Designer (ok, using it to create lookup views, still working on that part ;-) ).
    A Maven build then collects all moving parts and generates an OSGi update site that can be deployed on the Domino server. So our NSFs contain no code and no further design elements except those lookup views.

    For the frontend, we are mostly using a mix of Bootstrap, React, jQuery and a lot of open source widgets and libraries that we find on the Internet. Some other areas of interest include using ES5/ES6 JavaScript features like async/await and as always exploring what other database systems have to offer.

    The backend of our apps is more and more powered by our Domino JNA project to get the most out of Domino. The project is now used in 7 of our customer web apps and services, of course running on production servers for months.

    Since my last post in January, a lot of work has been done to make the project more powerful and more robust.

    I am happy to announce that version 0.9.9 is now available on Maven Central and as an XPages Extension Library.

    Here are some of the new features:
    • APIs to convert a single richtext item or a whole document to HTML with access to embedded images - NotesNote.convertItemToHtml / NotesNote.convertNoteToHtml()
    • APIs to stop long running code, get progress information and replication progress/results - SignalHandlerUtil
    • APIs to read/write Notes.ini values - NotesIniUtils
    • Utility function to compare Notes names with wildcards (*/Company) - NotesNamingUtils.nameMatchesWildcard()
    • Support to pass open flags when opening a database, e.g. for cluster failover - OpenDatabase enum
    • Method to replicate a database with options and detailed replication stats - NotesDatabase.replicateWithServer()
    • Method NotesNote.setUNID() to change the UNID of a document
    • Utility class to get names of cluster members of a Domino server - ServerUtils

    Performance improvements:
    • Now reading view column names/sortings/formulas using C API in NotesCollection, not having to reopen the DB/View with legacy API (Notes.jar) anymore
    • Improved LMBCS string conversion performance (less copy operations for pure ASCII strings)

    Breaking changes:
    • Removed lotus.domino.Session argument from some of the NotesDatabase constructors (not needed anymore)
    • Using NoteClass enum instead of noteclass bitmask, e.g. for database searches

    I'd love to write more about all the features or product some slides and (re-)appear at conferences, but unfortunately time is very limited. So I see what I can do to at least produce more test cases or make the existing ones work.

    I should have a bit more time now, since there are not many prio 1 topics left on my list that I need to add to the project. :-)