This is an automated email from the ASF dual-hosted git repository. buhhunyx pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 0a961b125c0f81fc8d130ad99cc2c986e0dcdfb0 Author: Alexey Markevich <[email protected]> AuthorDate: Fri May 22 12:36:54 2020 +0300 cxf-rt-rs-client: fix warn and minor improvements --- .../apache/cxf/jaxrs/client/AbstractClient.java | 35 +++++++--------------- .../org/apache/cxf/jaxrs/client/WebClientTest.java | 7 +++++ 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java index 511dba4..d398cbb 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java @@ -26,7 +26,6 @@ import java.lang.annotation.Annotation; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; -import java.net.HttpURLConnection; import java.net.URI; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -456,8 +455,8 @@ public abstract class AbstractClient implements Client { entry.getValue().forEach(valObject -> { if (splitHeaders && valObject instanceof String) { String val = (String) valObject; - String[] values; - if (val.length() == 0) { + final String[] values; + if (val.isEmpty()) { values = new String[]{""}; } else if (val.charAt(0) == '"' && val.charAt(val.length() - 1) == '"') { // if the value starts with a quote and ends with a quote, we do a best @@ -470,7 +469,7 @@ public abstract class AbstractClient implements Client { } for (String s : values) { String theValue = s.trim(); - if (theValue.length() > 0) { + if (!theValue.isEmpty()) { currentResponseBuilder.header(entry.getKey(), theValue); } } @@ -766,7 +765,7 @@ public abstract class AbstractClient implements Client { } else { addMatrixOrQueryToBuilder(ub, paramName, pt, pValues); } - } else { + } else if (pValues != null && pValues.length > 0) { Object pValue = pValues[0]; MultivaluedMap<String, Object> values = InjectionUtils.extractValuesFromBean(pValue, ""); values.forEach((key, value) -> { @@ -847,19 +846,6 @@ public abstract class AbstractClient implements Client { throw new ProcessingException(errorMessage, actualEx); } - protected static void setAllHeaders(MultivaluedMap<String, String> headers, HttpURLConnection conn) { - headers.forEach((key, value) -> { - StringBuilder b = new StringBuilder(); - for (int i = 0; i < value.size(); i++) { - b.append(value.get(i)); - if (i + 1 < value.size()) { - b.append(','); - } - } - conn.setRequestProperty(key, b.toString()); - }); - } - protected String[] parseQuotedHeaderValue(String originalValue) { // this algorithm isn't perfect; see CXF-3518 for further discussion. List<String> results = new ArrayList<>(); @@ -868,10 +854,10 @@ public abstract class AbstractClient implements Client { int lastIndex = chars.length - 1; boolean quote = false; - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); for (int pos = 0; pos <= lastIndex; pos++) { - char c = chars[pos]; + final char c = chars[pos]; if (pos == lastIndex) { sb.append(c); results.add(sb.toString()); @@ -885,8 +871,7 @@ public abstract class AbstractClient implements Client { if (quote) { pos++; if (pos <= lastIndex) { - c = chars[pos]; - sb.append(c); + sb.append(chars[pos]); } if (pos == lastIndex) { results.add(sb.toString()); @@ -900,7 +885,7 @@ public abstract class AbstractClient implements Client { sb.append(c); } else { results.add(sb.toString()); - sb = new StringBuilder(); + sb.setLength(0); } break; default: @@ -1071,7 +1056,7 @@ public abstract class AbstractClient implements Client { protected Object checkIfBodyEmpty(Object body, String contentType) { //CHECKSTYLE:OFF if (body != null - && (body.getClass() == String.class && ((String)body).length() == 0 + && (body.getClass() == String.class && ((String)body).isEmpty() || body.getClass() == Form.class && ((Form)body).asMap().isEmpty() || Map.class.isAssignableFrom(body.getClass()) && ((Map<?, ?>)body).isEmpty() && !MediaType.APPLICATION_JSON.equals(contentType) @@ -1210,7 +1195,7 @@ public abstract class AbstractClient implements Client { } } - protected abstract class AbstractBodyWriter extends AbstractOutDatabindingInterceptor { + protected abstract static class AbstractBodyWriter extends AbstractOutDatabindingInterceptor { public AbstractBodyWriter() { super(Phase.WRITE); diff --git a/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java b/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java index 150e696..10830d3 100644 --- a/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java +++ b/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java @@ -141,6 +141,13 @@ public class WebClientTest { } @Test + public void testEmptyQueryKey() { + WebClient wc = WebClient.create("http://foo"); + wc.query(""); + assertEquals("http://foo", wc.getCurrentURI().toString()); + } + + @Test public void testForward() { WebClient wc = WebClient.create("http://foo"); wc.to("http://foo/bar", true);
