couchbase-protolib/src/main/java/com/streamsets/pipeline/lib/couchbase/CouchbaseConnector.java
private static void validateConfig(BaseCouchbaseConfig config, List<Stage.ConfigIssue> issues, Stage.Context context){
    if(config.couchbase.nodes == null) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.nodes", Errors.COUCHBASE_29));
    }

    if(config.couchbase.kvTimeout < 0) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.kvTimeout", Errors.COUCHBASE_30));
    }

    if(config.couchbase.connectTimeout < 0) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.connectTimeout", Errors.COUCHBASE_31));
    }

    if(config.couchbase.disconnectTimeout < 0) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.disconnectTimeout", Errors.COUCHBASE_32));
    }

    if(config.couchbase.tls.tlsEnabled) {
      config.couchbase.tls.init(context, Groups.COUCHBASE.name(), "config.couchbase.tls.", issues);
    }

    if(config.credentials.version == null) {
      issues.add(context.createConfigIssue(Groups.CREDENTIALS.name(), "config.credentials.version", Errors.COUCHBASE_33));
    }

    if(config.credentials.version == AuthenticationType.USER) {
      if(config.credentials.userName == null) {
        issues.add(context.createConfigIssue(Groups.CREDENTIALS.name(), "config.credentials.userName", Errors.COUCHBASE_34));
      }

      if(config.credentials.userPassword == null) {
        issues.add(context.createConfigIssue(Groups.CREDENTIALS.name(), "config.credentials.userPassword", Errors.COUCHBASE_35));
      }
    }
  }
private static void validateConfig(BaseCouchbaseConfig config, List<Stage.ConfigIssue> issues, Stage.Context context){
    if(config.couchbase.nodes == null) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.nodes", Errors.COUCHBASE_29));
    }

    if(config.couchbase.kvTimeout < 0) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.kvTimeout", Errors.COUCHBASE_30));
    }

    if(config.couchbase.connectTimeout < 0) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.connectTimeout", Errors.COUCHBASE_31));
    }

    if(config.couchbase.disconnectTimeout < 0) {
      issues.add(context.createConfigIssue(Groups.COUCHBASE.name(), "config.couchbase.disconnectTimeout", Errors.COUCHBASE_32));
    }

    if(config.couchbase.tls.tlsEnabled) {
      config.couchbase.tls.init(context, Groups.COUCHBASE.name(), "config.couchbase.tls.", issues);
    }

    if(config.credentials.version == null) {
      issues.add(context.createConfigIssue(Groups.CREDENTIALS.name(), "config.credentials.version", Errors.COUCHBASE_33));
    }

    if(config.credentials.version == AuthenticationType.USER) {
      if(config.credentials.userName == null) {
        issues.add(context.createConfigIssue(Groups.CREDENTIALS.name(), "config.credentials.userName", Errors.COUCHBASE_34));
      }

      if(config.credentials.userPassword == null) {
        issues.add(context.createConfigIssue(Groups.CREDENTIALS.name(), "config.credentials.userPassword", Errors.COUCHBASE_35));
      }
    }
  }
Validates connection configurations that don't require runtime exception handling
@param config the stage configuration
@param issues the list of configuration issues
@param context the context for the stage