Github user MikeThomsen commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/3041#discussion_r228507330
  
    --- Diff: 
nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/SolrProcessor.java
 ---
    @@ -176,70 +172,11 @@ protected final KeytabUser getKerberosKeytabUser() {
         final protected Collection<ValidationResult> 
customValidate(ValidationContext context) {
             final List<ValidationResult> problems = new ArrayList<>();
     
    -        if 
(SOLR_TYPE_CLOUD.equals(context.getProperty(SOLR_TYPE).getValue())) {
    -            final String collection = 
context.getProperty(COLLECTION).getValue();
    -            if (collection == null || collection.trim().isEmpty()) {
    -                problems.add(new ValidationResult.Builder()
    -                        .subject(COLLECTION.getName())
    -                        .input(collection).valid(false)
    -                        .explanation("A collection must specified for Solr 
Type of Cloud")
    -                        .build());
    -            }
    -        }
    -
    -        // For solr cloud the location will be the ZooKeeper host:port so 
we can't validate the SSLContext, but for standard solr
    -        // we can validate if the url starts with https we need an 
SSLContextService, if it starts with http we can't have an SSLContextService
    -        if 
(SOLR_TYPE_STANDARD.equals(context.getProperty(SOLR_TYPE).getValue())) {
    -            final String solrLocation = 
context.getProperty(SOLR_LOCATION).evaluateAttributeExpressions().getValue();
    -            if (solrLocation != null) {
    -                final SSLContextService sslContextService = 
context.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class);
    -                if (solrLocation.startsWith("https:") && sslContextService 
== null) {
    -                    problems.add(new ValidationResult.Builder()
    -                            .subject(SSL_CONTEXT_SERVICE.getDisplayName())
    -                            .valid(false)
    -                            .explanation("an SSLContextService must be 
provided when using https")
    -                            .build());
    -                } else if (solrLocation.startsWith("http:") && 
sslContextService != null) {
    -                    problems.add(new ValidationResult.Builder()
    -                            .subject(SSL_CONTEXT_SERVICE.getDisplayName())
    -                            .valid(false)
    -                            .explanation("an SSLContextService can not be 
provided when using http")
    -                            .build());
    -                }
    -            }
    -        }
    -
    -        // Validate that we username and password are provided together, 
or that neither are provided
    -        final String username = 
context.getProperty(BASIC_USERNAME).evaluateAttributeExpressions().getValue();
    -        final String password = 
context.getProperty(BASIC_PASSWORD).evaluateAttributeExpressions().getValue();
    -
    -        final boolean basicUsernameProvided = 
!StringUtils.isBlank(username);
    -        final boolean basicPasswordProvided = 
!StringUtils.isBlank(password);
    -
    -        if (basicUsernameProvided && !basicPasswordProvided) {
    -            problems.add(new ValidationResult.Builder()
    -                    .subject(BASIC_PASSWORD.getDisplayName())
    -                    .valid(false)
    -                    .explanation("a password must be provided for the 
given username")
    -                    .build());
    -        }
    -
    -        if (basicPasswordProvided && !basicUsernameProvided) {
    -            problems.add(new ValidationResult.Builder()
    -                    .subject(BASIC_USERNAME.getDisplayName())
    -                    .valid(false)
    -                    .explanation("a username must be provided for the 
given password")
    -                    .build());
    -        }
    -
    -        // Validate that only kerberos or basic auth can be set, but not 
both
    -        final KerberosCredentialsService kerberosCredentialsService = 
context.getProperty(KERBEROS_CREDENTIALS_SERVICE).asControllerService(KerberosCredentialsService.class);
    -        if (kerberosCredentialsService != null && basicUsernameProvided && 
basicPasswordProvided) {
    -            problems.add(new ValidationResult.Builder()
    -                    .subject(KERBEROS_CREDENTIALS_SERVICE.getDisplayName())
    -                    .valid(false)
    -                    .explanation("basic auth and kerberos cannot be 
configured at the same time")
    -                    .build());
    +        List<ValidationResult> _temp = new 
ArrayList<>(validateConnectionDetails(context));
    +        if (_temp.size() == 0 && 
context.getProperty(CLIENT_SERVICE).isSet()) {
    --- End diff --
    
    Fixed that too.


---

Reply via email to