In my NSF ODP Tooling project, I've distilled the requires Notes API classes into some thin interfaces to make the actual backing API portable. It'd sure be nice to have the ability to run this without either local Notes native dependencies or my OSGi plugins specifically on the server.
Looking through the API, these are the things that seem to be currently not implemented that I would need. I'd also have to suss out some other details that may make some capabilities impractical, but these would be prerequisites regardless:
DXL Exporter with the following abilities:
- Charset = UTF-8
- OutputDoctype = false
- ForceNoteFormat
- RichTextAsItemData
- OmitItemNames
- setting property 38 or to true or false (I forget what that property is, but it's important)
DXL Importer with the following abilities:
- DesignImportOption = REPLACE_ELSE_CREATE
- ACLImportOption = REPLACE_ELSE_IGNORE
- ReplaceDBProperties = true
- ReplicaRequiredForReplaceOrUpdate = false
- getting the result log XML
Database:
- get/set title
- iterate over all design notes
- get a shared field's note ID by title (ideally faster than iterating would do)
- check the effective access level (to see if the user has at least Designer access)
Note:
- NSFNoteLSCompileExt
- NSFNoteSign
- rich text support looks like it'll probably work as-is, since I could parse the data from bytes
- NSFNoteGetInfo with _NOTE_CLASS
Not for this specific use - here, it'd be a matter of taking an ODP in the abstract (whether DXL or otherwise) and having enough of an API to make it into a binary NSF with everything compiled and stored properly. The annoying part now is needing OSGi plugins installed on a remote server or having a problem-prone local installation.
That said, the need for this specific idea is lessened both by the trend of the AppDev Pack and my recent work in using containers to do ODP<->NSF operations. Though that still uses older APIs, using a container lessens the local requirements that make the process a pain.
With the ability to do round trip safe source control (as presented at Engage 2023), does this idea still stand as described?