Development Documentation

The following documentation is about developing LSC itself - not a LSC synchronization task. Make sure you’ve read all the general documentation before continuing here!

Working environment

As well as the general Requirements, you need some extra tools to hack LSC - make sure you match these requirements:

  • Java Virtual Machine (JDK) >= 1.8

  • Maven >=2 (Maven 3 recommended)

  • Add the mvn command line wrapper to Maven in your path (through ~/.bashrc or something equivalent)

  • You can use Eclipse, NetBeans,… to edit the Java code. Integrating LSC and its Maven dependencies is described here.

You should follow our defined code style.

Java API for LSC-core

The JavaDoc is generated from comments in LSC code. It needs a lot of improvement, all comments in code are very welcome!

This can be very useful to get a function name to call from SyncOptions in the configuration file (see LscBean, AD, ScriptableJndiServices, DateUtils

Development tools

You can find LSC on GitHub: https://github.com/lsc-project. There you can fill bugs, see the history of commits,…

Running tests

Note

Tests are run through Maven.

Run all tests (opendj profile required) :

mvn -Popendj test

Run one test, named MyTest (note: don’t put in the classpath here, write MyTest not org.lsc.MyTest!):

mvn -Popendj -Dtest=MyTest test

Don’t run tests:

mvn -Dmaven.test.skip=true someOtherTarget

Building

Various builds can be done :

  • the standard build requires OpenDJ to run tests.

mvn -Popendj clean package
  • the light build does not require OpenDJ but you must skip tests:

mvn -Dmaven.test.skip=true clean package
  • a build including PostgreSQL jar (can be with or without OpenDJ)

mvn -Ppostgresql -Popendj clean package

Releasing

See these notes on doing a release.

Run LSC under Eclipse

This section covers:

  • Integration of LSC in an Eclipse (netbeans) environment

  • Installation of maven integrated plugin in ide environnement

  • Running / debuging LSC

Please follow: Integrated Development Environment Integration