The code looks good, I've found no issues.
I've tested the LRT with a CSV system and it failed with exception:
java.lang.UnsupportedOperationException: Operation Synchronization is not supported. Use reconscilation instead!
at eu.bcvsolutions.idm.connectors.csv.CSVConnConnector.sync(CSVConnConnector.java:113)
at org.identityconnectors.framework.impl.api.local.operations.SyncImpl.sync(SyncImpl.java:137)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.identityconnectors.framework.impl.api.local.operations.ConnectorAPIOperationRunnerProxy.invoke(ConnectorAPIOperationRunnerProxy.java:98)
at com.sun.proxy.$Proxy527.sync(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.identityconnectors.framework.impl.api.local.operations.ThreadClassLoaderManagerProxy.invoke(ThreadClassLoaderManagerProxy.java:96)
at com.sun.proxy.$Proxy527.sync(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.identityconnectors.framework.impl.api.BufferedResultsProxy$BufferedResultsHandler.run(BufferedResultsProxy.java:165)
The CSV I'm using is really simple but I think it should be sufficient:
item
number1
number2
number3
The exported system is attached.
I also really think the documentation should be extended a little bit. The configuration of the LRT is simple and its description is sufficient but I'd expect to see a bit more information about the system configuration.
Also, a more nice-to-have feature would be the ability to select whether you want to create, update or delete items during synchronization. Whether or not you implement it is up to you but the code is structured nicely, so this should be really easy to implement.