public LDAPSourceImpl(
      Logger logger,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_VERSION) int ldapVersion,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_HOSTNAME) String ldapHostName,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_HOSTPORT) int ldapPort,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_AUTHDN) String ldapAuthDN,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_AUTHPWD) String ldapPwd,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_SIZELIMIT) String sizeLimit,
      @Inject @Symbol(ChenilleKitLDAPConstants.LDAP_TIMELIMIT) String timeLimit) {
    this.logger = logger;
    this.ldapVersion = ldapVersion;

    if (ldapHostName == null || ldapHostName.trim().length() < 1)
      throw new RuntimeException(
          "property '" + ChenilleKitLDAPConstants.LDAP_HOSTNAME + "' cant be empty!");

    this.ldapHostName = ldapHostName;

    this.ldapPort = ldapPort;
    this.ldapAuthDN = ldapAuthDN;
    this.ldapPwd = ldapPwd;

    ldapConnection = new LDAPConnection();

    try {
      ldapConnection.setOption(LDAPv2.SIZELIMIT, new Integer(sizeLimit));
      ldapConnection.setOption(LDAPv2.TIMELIMIT, new Integer(timeLimit));
    } catch (LDAPException le) {
      logger.error(le.getMessage(), le);

      throw new RuntimeException(le);
    }
  }