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 <[email protected]>
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();
+ }
+
+}