Fix [SonarQube] Generic exceptions Error, RuntimeException, Throwable
and Exception should never be thrown (Define and throw a dedicated
exception instead of using a generic one)

Fix [SonarQube] Throws declarations should not be redundant (Remove the
declaration of thrown exception 'IOException' which is a subclass of
another one)
Move common static strings to abstract class
Move common strings to abstract class
Move static message strings to abstract class
Move common strings to abstract class
Update javadoc
Fix [SonarQube] Generic exceptions Error, RuntimeException, Throwable
and Exception should never be thrown (Define and throw a dedicated
exception instead of using a generic one)

Fix [SonarQube] Throws declarations should not be redundant (Remove the
declaration of thrown exception '' which is a subclass of another one)

Add constructor

Extend abstract class

Update javadoc
Change scope on logger to default
Update javadoc
Fix [SonarQube] Generic exceptions Error, RuntimeException, Throwable
and Exception should never be thrown (Define and throw a dedicated
exception instead of using a generic one)

Fix [SonarQube] Throws declarations should not be redundant (Remove the
declaration of thrown exception '' which is a subclass of another one)
Change scope on logger to default
Update javadoc
Fix [SonarQube] Generic exceptions Error, RuntimeException, Throwable
and Exception should never be thrown (Define and throw a dedicated
exception instead of using a generic one)

Fix [SonarQube] Throws declarations should not be redundant (Remove the
declaration of thrown exception '' which is a subclass of another one)
Change logger scope to default
Update javadoc
Fix [SonarQube] Generic exceptions Error, RuntimeException, Throwable
and Exception should never be thrown (Define and throw a dedicated
exception instead of using a generic one)

Fix [SonarQube] Throws declarations should not be redundant (Remove the
declaration of thrown exception '' which is a subclass of another one)
Change visibility on logger to default
Fix [SonarQube] Generic exceptions Error, RuntimeException, Throwable
and Exception should never be thrown (Define and throw a dedicated
exception instead of using a generic one)

Fix [SonarQube] Throws declarations should not be redundant (Remove the
declaration of thrown exception '' which is a subclass of another one)
Change visibility on logger to default
Update javadoc