Implementation ServiceLoader Services
Obligatory Services
JNX implementations are expected to provide a number of single ServiceLoader-type services, including:
com.hcl.domino.DominoClientBuildercom.hcl.domino.DominoProcesscom.hcl.domino.formula.FormulaCompilercom.hcl.domino.naming.Namescom.hcl.domino.richtext.structures.MemoryStructureWrapperService- A default implementation of this is available in domino-jnx-commons as
com.hcl.domino.commons.richtext.structures.DefaultMemoryStructureWrapperServicebut is not registered as a service in that project
- A default implementation of this is available in domino-jnx-commons as
java.nio.charset.spi.CharsetProviderprovidingCharsets for “LMBCS” and “LMBCS-native”
Optional/Extension Services
Additionally, there are several non-obligatory service points to provide specific capabilities. Two of them allow for contributing type conversion for the get(name, type, defaultValue) methods on collection entries and documents:
com.hcl.domino.data.CollectionEntryValueConvertercom.hcl.domino.data.DocumentValueConverter
There are a number of implementations of these in domino-jnx-commons in the com.hcl.domino.commons.converters package.
Note: it is expected that API implementations provide a DocumentValueConverter that can return an item value as a java.nio.ByteBuffer. Such a converter does not have to accept a ByteBuffer to write, however. The JNA implementation provides com.hcl.domino.jna.internal.converters.ByteBufferDocumentValueConverter.
Additionally, there are two extension services for contributing to user authentication and ID lookups:
com.hcl.domino.security.CredentialValidationTokenHandlerallows for arbitrary authentication mechanisms that resolve to a distinguished name, which be used inDominoClientto just validate orDominoClientBuilderto create a client with that namecom.hcl.domino.admin.idvault.IdVaultTokenHandlerallows for arbitrary mechanisms that findUserIdobjects for a given token