You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2018/12/27 17:47:31 UTC

[pulsar] branch master updated: Improve service url and service url provider prompt. (#3257)

This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new f15afec  Improve service url and service url provider prompt. (#3257)
f15afec is described below

commit f15afec6eed12a36dec003d1e1c1f83d3e4b1e16
Author: penghui <co...@gmail.com>
AuthorDate: Fri Dec 28 01:47:27 2018 +0800

    Improve service url and service url provider prompt. (#3257)
    
    ### Motivation
    
    Improve service url and service url provider prompt when user build a pulsar client.
    
    ### Modifications
    
    Add service url and service url provider check when build a pulsar client.
    Add  UT.
    
    ### Result
    
    UT passed
---
 .../pulsar/client/impl/ClientBuilderImpl.java      | 21 +++++--
 .../pulsar/client/impl/ClientBuilderImplTest.java  | 73 ++++++++++++++++++++++
 2 files changed, 90 insertions(+), 4 deletions(-)

diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java
index d5545ce..5e00a30 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java
@@ -45,11 +45,18 @@ public class ClientBuilderImpl implements ClientBuilder {
 
     @Override
     public PulsarClient build() throws PulsarClientException {
-        if (conf.getServiceUrlProvider() != null && StringUtils.isNotBlank(conf.getServiceUrlProvider().getServiceUrl())) {
-            conf.setServiceUrl(conf.getServiceUrlProvider().getServiceUrl());
+        if (StringUtils.isBlank(conf.getServiceUrl()) && conf.getServiceUrlProvider() == null) {
+            throw new IllegalArgumentException("service URL or service URL provider needs to be specified on the ClientBuilder object.");
         }
-        if (conf.getServiceUrl() == null) {
-            throw new IllegalArgumentException("service URL or service URL provider needs to be specified on the ClientBuilder object");
+        if (StringUtils.isNotBlank(conf.getServiceUrl()) && conf.getServiceUrlProvider() != null) {
+            throw new IllegalArgumentException("Can only chose one way service URL or service URL provider.");
+        }
+        if (conf.getServiceUrlProvider() != null) {
+            if (StringUtils.isBlank(conf.getServiceUrlProvider().getServiceUrl())) {
+                throw new IllegalArgumentException("Cannot get service url from service url provider.");
+            } else {
+                conf.setServiceUrl(conf.getServiceUrlProvider().getServiceUrl());
+            }
         }
         PulsarClient client = new PulsarClientImpl(conf);
         if (conf.getServiceUrlProvider() != null) {
@@ -72,6 +79,9 @@ public class ClientBuilderImpl implements ClientBuilder {
 
     @Override
     public ClientBuilder serviceUrl(String serviceUrl) {
+        if (StringUtils.isBlank(serviceUrl)) {
+            throw new IllegalArgumentException("Param serviceUrl must not be blank.");
+        }
         conf.setServiceUrl(serviceUrl);
         if (!conf.isUseTls()) {
             enableTls(serviceUrl.startsWith("pulsar+ssl") || serviceUrl.startsWith("https"));
@@ -81,6 +91,9 @@ public class ClientBuilderImpl implements ClientBuilder {
 
     @Override
     public ClientBuilder serviceUrlProvider(ServiceUrlProvider serviceUrlProvider) {
+        if (serviceUrlProvider == null) {
+            throw new IllegalArgumentException("Param serviceUrlProvider must not be null.");
+        }
         conf.setServiceUrlProvider(serviceUrlProvider);
         return this;
     }
diff --git a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java
new file mode 100644
index 0000000..8cf9b59
--- /dev/null
+++ b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.client.impl;
+
+import org.apache.pulsar.client.api.PulsarClient;
+import org.apache.pulsar.client.api.PulsarClientException;
+import org.apache.pulsar.client.api.ServiceUrlProvider;
+import org.testng.annotations.Test;
+
+public class ClientBuilderImplTest {
+
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testClientBuilderWithServiceUrlAndServiceUrlProviderNotSet() throws PulsarClientException {
+        PulsarClient.builder().build();
+    }
+
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testClientBuilderWithNullServiceUrl() throws PulsarClientException {
+        PulsarClient.builder().serviceUrl(null).build();
+    }
+
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testClientBuilderWithNullServiceUrlProvider() throws PulsarClientException {
+        PulsarClient.builder().serviceUrlProvider(null).build();
+    }
+
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testClientBuilderWithServiceUrlAndServiceUrlProvider() throws PulsarClientException {
+        PulsarClient.builder().serviceUrlProvider(new ServiceUrlProvider() {
+            @Override
+            public void initialize(PulsarClient client) {
+
+            }
+
+            @Override
+            public String getServiceUrl() {
+                return "pulsar://localhost:6650";
+            }
+        }).serviceUrl("pulsar://localhost:6650").build();
+    }
+
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testClientBuilderWithBlankServiceUrlInServiceUrlProvider() throws PulsarClientException {
+        PulsarClient.builder().serviceUrlProvider(new ServiceUrlProvider() {
+            @Override
+            public void initialize(PulsarClient client) {
+
+            }
+
+            @Override
+            public String getServiceUrl() {
+                return "";
+            }
+        }).build();
+    }
+
+}