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();
+ }
+
+}