You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by il...@apache.org on 2018/08/03 07:33:36 UTC
[cxf] branch 3.2.x-fixes updated: private -> protected + some
lambda goodness
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 3.2.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.2.x-fixes by this push:
new c59005d private -> protected + some lambda goodness
c59005d is described below
commit c59005dc9ea4a257f5f0abe80906f96bf99ec00f
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Aug 3 09:32:51 2018 +0200
private -> protected + some lambda goodness
---
.../apache/cxf/jaxrs/client/AbstractClient.java | 116 +++++----
.../apache/cxf/jaxrs/client/ClientProxyImpl.java | 286 ++++++++++-----------
.../cxf/jaxrs/client/JAXRSClientFactoryBean.java | 61 ++---
3 files changed, 233 insertions(+), 230 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 d8bd43f..223e45d 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
@@ -137,6 +137,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client query(String name, Object...values) {
addMatrixQueryParamsToBuilder(getCurrentBuilder(), name, ParameterType.QUERY, null, values);
return this;
@@ -145,6 +146,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client header(String name, Object... values) {
if (values == null) {
throw new IllegalArgumentException();
@@ -166,6 +168,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client headers(MultivaluedMap<String, String> map) {
state.getRequestHeaders().putAll(map);
return this;
@@ -174,6 +177,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client accept(MediaType... types) {
for (MediaType mt : types) {
possiblyAddHeader(HttpHeaders.ACCEPT, JAXRSUtils.mediaTypeToString(mt));
@@ -184,6 +188,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client type(MediaType ct) {
return type(JAXRSUtils.mediaTypeToString(ct));
}
@@ -191,6 +196,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client type(String type) {
state.getRequestHeaders().putSingle(HttpHeaders.CONTENT_TYPE, type);
return this;
@@ -199,6 +205,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client accept(String... types) {
for (String type : types) {
possiblyAddHeader(HttpHeaders.ACCEPT, type);
@@ -209,6 +216,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client cookie(Cookie cookie) {
possiblyAddHeader(HttpHeaders.COOKIE, cookie.toString());
return this;
@@ -217,6 +225,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client authorization(Object auth) {
String value = convertParamValue(auth, null);
state.getRequestHeaders().putSingle(HttpHeaders.AUTHORIZATION, value);
@@ -226,6 +235,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client modified(Date date, boolean ifNot) {
SimpleDateFormat dateFormat = HttpUtils.getHttpDateFormat();
String hName = ifNot ? HttpHeaders.IF_UNMODIFIED_SINCE : HttpHeaders.IF_MODIFIED_SINCE;
@@ -236,6 +246,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client language(String language) {
state.getRequestHeaders().putSingle(HttpHeaders.CONTENT_LANGUAGE, language);
return this;
@@ -244,6 +255,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client match(EntityTag tag, boolean ifNot) {
String hName = ifNot ? HttpHeaders.IF_NONE_MATCH : HttpHeaders.IF_MATCH;
state.getRequestHeaders().putSingle(hName, tag.toString());
@@ -253,6 +265,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client acceptLanguage(String... languages) {
for (String s : languages) {
possiblyAddHeader(HttpHeaders.ACCEPT_LANGUAGE, s);
@@ -263,6 +276,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client acceptEncoding(String... encs) {
for (String s : encs) {
possiblyAddHeader(HttpHeaders.ACCEPT_ENCODING, s);
@@ -273,6 +287,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client encoding(String enc) {
state.getRequestHeaders().putSingle(HttpHeaders.CONTENT_ENCODING, enc);
return this;
@@ -281,8 +296,9 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public MultivaluedMap<String, String> getHeaders() {
- MultivaluedMap<String, String> map = new MetadataMap<String, String>(false, true);
+ MultivaluedMap<String, String> map = new MetadataMap<>(false, true);
map.putAll(state.getRequestHeaders());
return map;
}
@@ -290,6 +306,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public URI getBaseURI() {
return state.getBaseURI();
}
@@ -297,6 +314,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public URI getCurrentURI() {
return getCurrentBuilder().clone().buildFromEncoded();
}
@@ -304,6 +322,7 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Response getResponse() {
return state.getResponse();
}
@@ -311,23 +330,26 @@ public abstract class AbstractClient implements Client {
/**
* {@inheritDoc}
*/
+ @Override
public Client reset() {
state.reset();
return this;
}
+ @Override
public void close() {
if (closed.compareAndSet(false, true)) {
if (cfg.getBus() == null) {
return;
}
- for (Closeable c : cfg.getEndpoint().getCleanupHooks()) {
- try {
- c.close();
- } catch (IOException e) {
- //ignore
- }
- }
+ cfg.getEndpoint().getCleanupHooks().
+ forEach(c -> {
+ try {
+ c.close();
+ } catch (IOException e) {
+ //ignore
+ }
+ });
ClientLifeCycleManager mgr = cfg.getBus().getExtension(ClientLifeCycleManager.class);
if (null != mgr) {
mgr.clientDestroyed(new FrontendClientAdapter(getConfiguration()));
@@ -364,7 +386,7 @@ public abstract class AbstractClient implements Client {
private boolean isDuplicate(String name, String value) {
List<String> values = state.getRequestHeaders().get(name);
- return values != null && values.contains(value) ? true : false;
+ return values != null && values.contains(value);
}
protected ClientState getState() {
@@ -389,9 +411,9 @@ public abstract class AbstractClient implements Client {
protected MultivaluedMap<String, String> getTemplateParametersMap(URITemplate template,
List<Object> values) {
- if (values != null && values.size() != 0) {
+ if (values != null && !values.isEmpty()) {
List<String> vars = template.getVariables();
- MultivaluedMap<String, String> templatesMap = new MetadataMap<String, String>(vars.size());
+ MultivaluedMap<String, String> templatesMap = new MetadataMap<>(vars.size());
for (int i = 0; i < vars.size(); i++) {
if (i < values.size()) {
templatesMap.add(vars.get(i), values.get(i).toString());
@@ -432,9 +454,9 @@ public abstract class AbstractClient implements Client {
currentResponseBuilder.header(entry.getKey(), entry.getValue().get(0));
continue;
}
- for (Object valObject : entry.getValue()) {
+ entry.getValue().forEach(valObject -> {
if (splitHeaders && valObject instanceof String) {
- String val = (String)valObject;
+ String val = (String) valObject;
String[] values;
if (val.length() == 0) {
values = new String[]{""};
@@ -444,7 +466,7 @@ public abstract class AbstractClient implements Client {
values = parseQuotedHeaderValue(val);
} else {
boolean splitPossible = !(HttpHeaders.SET_COOKIE.equalsIgnoreCase(entry.getKey())
- && val.toUpperCase().contains(HttpHeaders.EXPIRES.toUpperCase()));
+ && val.toUpperCase().contains(HttpHeaders.EXPIRES.toUpperCase()));
values = splitPossible ? val.split(",") : new String[]{val};
}
for (String s : values) {
@@ -456,7 +478,7 @@ public abstract class AbstractClient implements Client {
} else {
currentResponseBuilder.header(entry.getKey(), valObject);
}
- }
+ });
}
}
String ct = (String)responseMessage.get(Message.CONTENT_TYPE);
@@ -482,7 +504,7 @@ public abstract class AbstractClient implements Client {
@SuppressWarnings("unchecked")
Class<T> theClass = (Class<T>)cls;
- Object contentTypeHeader = headers.getFirst("Content-Type");
+ Object contentTypeHeader = headers.getFirst(HttpHeaders.CONTENT_TYPE);
if (contentTypeHeader == null) {
contentTypeHeader = MediaType.WILDCARD;
}
@@ -563,13 +585,10 @@ public abstract class AbstractClient implements Client {
s = (String)exchange.getOutMessage().get("transport.retransmit.url");
if (s != null && !state.getBaseURI().toString().equals(s)) {
calculateNewRequestURI(URI.create(s), getCurrentURI(), proxy);
- return;
}
-
}
protected Object[] preProcessResult(Message message) throws Exception {
-
Exchange exchange = message.getExchange();
Exception ex = message.getContent(Exception.class);
@@ -754,13 +773,12 @@ public abstract class AbstractClient implements Client {
}
} else {
Object pValue = pValues[0];
- MultivaluedMap<String, Object> values =
- InjectionUtils.extractValuesFromBean(pValue, "");
- for (Map.Entry<String, List<Object>> entry : values.entrySet()) {
- for (Object v : entry.getValue()) {
- convertMatrixOrQueryToBuilder(ub, entry.getKey(), v, pt, anns);
- }
- }
+ MultivaluedMap<String, Object> values = InjectionUtils.extractValuesFromBean(pValue, "");
+ values.forEach((key, value) -> {
+ value.forEach(v -> {
+ convertMatrixOrQueryToBuilder(ub, key, v, pt, anns);
+ });
+ });
}
}
@@ -835,17 +853,16 @@ public abstract class AbstractClient implements Client {
}
protected static void setAllHeaders(MultivaluedMap<String, String> headers, HttpURLConnection conn) {
- for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
+ headers.forEach((key, value) -> {
StringBuilder b = new StringBuilder();
- for (int i = 0; i < entry.getValue().size(); i++) {
- String value = entry.getValue().get(i);
- b.append(value);
- if (i + 1 < entry.getValue().size()) {
+ for (int i = 0; i < value.size(); i++) {
+ b.append(value.get(i));
+ if (i + 1 < value.size()) {
b.append(',');
}
}
- conn.setRequestProperty(entry.getKey(), b.toString());
- }
+ conn.setRequestProperty(key, b.toString());
+ });
}
protected String[] parseQuotedHeaderValue(String originalValue) {
@@ -955,6 +972,8 @@ public abstract class AbstractClient implements Client {
protected static MessageObserver setupInFaultObserver(final ClientConfiguration cfg) {
return new InFaultChainInitiatorObserver(cfg.getBus()) {
+
+ @Override
protected void initializeInterceptors(Exchange ex, PhaseInterceptorChain chain) {
chain.add(cfg.getInFaultInterceptors());
chain.add(new ConnectionFaultInterceptor());
@@ -1101,19 +1120,13 @@ public abstract class AbstractClient implements Client {
final ClientMessageObserver observer = new ClientMessageObserver(cfg);
- exchange.put(MessageObserver.class, new MessageObserver() {
- public void onMessage(final Message message) {
- if (!message.getExchange()
- .containsKey(Executor.class.getName() + ".USING_SPECIFIED")) {
-
- executor.execute(new Runnable() {
- public void run() {
- observer.onMessage(message);
- }
- });
- } else {
+ exchange.put(MessageObserver.class, message -> {
+ if (!message.getExchange().containsKey(Executor.class.getName() + ".USING_SPECIFIED")) {
+ executor.execute(() -> {
observer.onMessage(message);
- }
+ });
+ } else {
+ observer.onMessage(message);
}
});
}
@@ -1122,13 +1135,11 @@ public abstract class AbstractClient implements Client {
protected void setContexts(Message message, Exchange exchange,
Map<String, Object> context, boolean proxy) {
- Map<String, Object> reqContext = null;
- Map<String, Object> resContext = null;
if (context == null) {
context = new HashMap<>();
}
- reqContext = CastUtils.cast((Map<?, ?>)context.get(REQUEST_CONTEXT));
- resContext = CastUtils.cast((Map<?, ?>)context.get(RESPONSE_CONTEXT));
+ Map<String, Object> reqContext = CastUtils.cast((Map<?, ?>)context.get(REQUEST_CONTEXT));
+ Map<String, Object> resContext = CastUtils.cast((Map<?, ?>)context.get(RESPONSE_CONTEXT));
if (reqContext == null) {
reqContext = new HashMap<>(cfg.getRequestContext());
context.put(REQUEST_CONTEXT, reqContext);
@@ -1209,8 +1220,8 @@ public abstract class AbstractClient implements Client {
super(Phase.WRITE);
}
+ @Override
public void handleMessage(Message outMessage) throws Fault {
-
MessageContentsList objs = MessageContentsList.getContentsList(outMessage);
if (objs == null || objs.isEmpty()) {
return;
@@ -1239,6 +1250,7 @@ public abstract class AbstractClient implements Client {
private class RetryableImpl implements Retryable {
+ @Override
public Object[] invoke(BindingOperationInfo oi, Object[] params, Map<String, Object> context,
Exchange exchange) throws Exception {
return AbstractClient.this.retryInvoke(oi, params, context, exchange);
@@ -1250,6 +1262,7 @@ public abstract class AbstractClient implements Client {
super(Phase.PRE_STREAM);
}
+ @Override
public void handleMessage(Message message) throws Fault {
if (!message.getExchange().isSynchronous()) {
Throwable ex = message.getContent(Exception.class);
@@ -1265,10 +1278,9 @@ public abstract class AbstractClient implements Client {
cb.handleException(message, ex);
}
}
-
-
}
}
+
protected abstract class AbstractClientAsyncResponseInterceptor extends AbstractPhaseInterceptor<Message> {
AbstractClientAsyncResponseInterceptor() {
super(Phase.UNMARSHAL);
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
index 7993aae..2d31ae8 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
@@ -26,7 +26,6 @@ import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.net.URI;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -38,6 +37,7 @@ import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.logging.Logger;
+import java.util.stream.Collectors;
import javax.ws.rs.BeanParam;
import javax.ws.rs.CookieParam;
@@ -92,19 +92,19 @@ import org.apache.cxf.message.Message;
public class ClientProxyImpl extends AbstractClient implements
InvocationHandlerAware, InvocationHandler {
- private static final Logger LOG = LogUtils.getL7dLogger(ClientProxyImpl.class);
- private static final ResourceBundle BUNDLE = BundleUtils.getBundle(ClientProxyImpl.class);
- private static final String SLASH = "/";
- private static final String BUFFER_PROXY_RESPONSE = "buffer.proxy.response";
- private static final String PROXY_METHOD_PARAM_BODY_INDEX = "proxy.method.parameter.body.index";
-
- private ClassResourceInfo cri;
- private ClassLoader proxyLoader;
- private boolean inheritHeaders;
- private boolean isRoot;
- private Map<String, Object> valuesMap = Collections.emptyMap();
- private BodyWriter bodyWriter = new BodyWriter();
- private Client proxy;
+ protected static final Logger LOG = LogUtils.getL7dLogger(ClientProxyImpl.class);
+ protected static final ResourceBundle BUNDLE = BundleUtils.getBundle(ClientProxyImpl.class);
+ protected static final String SLASH = "/";
+ protected static final String BUFFER_PROXY_RESPONSE = "buffer.proxy.response";
+ protected static final String PROXY_METHOD_PARAM_BODY_INDEX = "proxy.method.parameter.body.index";
+
+ protected ClassResourceInfo cri;
+ protected ClassLoader proxyLoader;
+ protected boolean inheritHeaders;
+ protected boolean isRoot;
+ protected Map<String, Object> valuesMap = Collections.emptyMap();
+ protected BodyWriter bodyWriter = new BodyWriter();
+ protected Client proxy;
public ClientProxyImpl(URI baseURI,
ClassLoader loader,
ClassResourceInfo cri,
@@ -128,13 +128,15 @@ public class ClientProxyImpl extends AbstractClient implements
initValuesMap(varValues);
cfg.getInInterceptors().add(new ClientAsyncResponseInterceptor());
}
+
void setProxyClient(Client client) {
this.proxy = client;
}
+
private void initValuesMap(Object... varValues) {
if (isRoot) {
List<String> vars = cri.getURITemplate().getVariables();
- valuesMap = new LinkedHashMap<String, Object>();
+ valuesMap = new LinkedHashMap<>();
for (int i = 0; i < vars.size(); i++) {
if (varValues.length > 0) {
if (i < varValues.length) {
@@ -158,6 +160,7 @@ public class ClientProxyImpl extends AbstractClient implements
* method is invoked. Can throw an expected exception if ResponseExceptionMapper
* is registered
*/
+ @Override
public Object invoke(Object o, Method m, Object[] params) throws Throwable {
Class<?> declaringClass = m.getDeclaringClass();
@@ -190,7 +193,7 @@ public class ClientProxyImpl extends AbstractClient implements
URI uri = builder.buildFromEncoded(pathParams.toArray()).normalize();
MultivaluedMap<String, String> headers = getHeaders();
- MultivaluedMap<String, String> paramHeaders = new MetadataMap<String, String>();
+ MultivaluedMap<String, String> paramHeaders = new MetadataMap<>();
handleHeaders(m, params, paramHeaders, beanParamsList, types);
handleCookies(m, params, paramHeaders, beanParamsList, types);
@@ -239,16 +242,15 @@ public class ClientProxyImpl extends AbstractClient implements
}
- private void addNonEmptyPath(UriBuilder builder, String pathValue) {
+ protected void addNonEmptyPath(UriBuilder builder, String pathValue) {
if (!SLASH.equals(pathValue)) {
builder.path(pathValue);
}
}
- private MultivaluedMap<ParameterType, Parameter> getParametersInfo(Method m,
+ protected MultivaluedMap<ParameterType, Parameter> getParametersInfo(Method m,
Object[] params, OperationResourceInfo ori) {
- MultivaluedMap<ParameterType, Parameter> map =
- new MetadataMap<ParameterType, Parameter>();
+ MultivaluedMap<ParameterType, Parameter> map = new MetadataMap<>();
List<Parameter> parameters = ori.getParameters();
if (parameters.isEmpty()) {
@@ -288,7 +290,7 @@ public class ClientProxyImpl extends AbstractClient implements
&& m.getParameterTypes()[p.getIndex()] == AsyncResponse.class;
}
- private static int getBodyIndex(MultivaluedMap<ParameterType, Parameter> map,
+ protected static int getBodyIndex(MultivaluedMap<ParameterType, Parameter> map,
OperationResourceInfo ori) {
List<Parameter> list = map.get(ParameterType.REQUEST_BODY);
int index = list == null || list.size() > 1 ? -1 : list.get(0).getIndex();
@@ -305,7 +307,7 @@ public class ClientProxyImpl extends AbstractClient implements
if (status >= 300) {
Class<?>[] exTypes = m.getExceptionTypes();
if (exTypes.length == 0) {
- exTypes = new Class[]{WebApplicationException.class};
+ exTypes = new Class<?>[]{WebApplicationException.class};
}
for (Class<?> exType : exTypes) {
ResponseExceptionMapper<?> mapper = findExceptionMapper(inMessage, exType);
@@ -340,12 +342,12 @@ public class ClientProxyImpl extends AbstractClient implements
}
}
- private static ResponseExceptionMapper<?> findExceptionMapper(Message message, Class<?> exType) {
+ protected static ResponseExceptionMapper<?> findExceptionMapper(Message message, Class<?> exType) {
ClientProviderFactory pf = ClientProviderFactory.getInstance(message);
return pf.createResponseExceptionMapper(message, exType);
}
- private MultivaluedMap<String, String> setRequestHeaders(MultivaluedMap<String, String> headers,
+ protected MultivaluedMap<String, String> setRequestHeaders(MultivaluedMap<String, String> headers,
OperationResourceInfo ori,
boolean formParams,
Class<?> bodyClass,
@@ -387,35 +389,32 @@ public class ClientProxyImpl extends AbstractClient implements
return headers;
}
- private List<MediaType> getAccept(MultivaluedMap<String, String> allHeaders) {
+ protected List<MediaType> getAccept(MultivaluedMap<String, String> allHeaders) {
List<String> headers = allHeaders.get(HttpHeaders.ACCEPT);
if (headers == null || headers.isEmpty()) {
return null;
}
- List<MediaType> types = new ArrayList<>();
- for (String s : headers) {
- types.addAll(JAXRSUtils.parseMediaTypes(s));
- }
- return types;
+ return headers.stream().
+ flatMap(header -> JAXRSUtils.parseMediaTypes(header).stream()).collect(Collectors.toList());
}
- private List<Object> getPathParamValues(Method m,
+ protected List<Object> getPathParamValues(Method m,
Object[] params,
MultivaluedMap<ParameterType, Parameter> map,
List<Parameter> beanParams,
OperationResourceInfo ori,
int bodyIndex) {
- List<Object> list = new LinkedList<Object>();
+ List<Object> list = new LinkedList<>();
List<String> methodVars = ori.getURITemplate().getVariables();
List<Parameter> paramsList = getParameters(map, ParameterType.PATH);
Map<String, BeanPair> beanParamValues = new HashMap<>(beanParams.size());
- for (Parameter p : beanParams) {
+ beanParams.forEach(p -> {
beanParamValues.putAll(getValuesFromBeanParam(params[p.getIndex()], PathParam.class));
- }
+ });
if (!beanParamValues.isEmpty() && !methodVars.containsAll(beanParamValues.keySet())) {
List<String> classVars = ori.getClassResourceInfo().getURITemplate().getVariables();
- for (String classVar : classVars) {
+ classVars.forEach(classVar -> {
BeanPair pair = beanParamValues.get(classVar);
if (pair != null) {
Object paramValue = convertParamValue(pair.getValue(), pair.getAnns());
@@ -425,46 +424,45 @@ public class ClientProxyImpl extends AbstractClient implements
list.add(paramValue);
}
}
- }
+ });
}
if (isRoot) {
list.addAll(valuesMap.values());
}
- Map<String, Parameter> paramsMap = new LinkedHashMap<String, Parameter>();
- for (Parameter p : paramsList) {
+ Map<String, Parameter> paramsMap = new LinkedHashMap<>();
+ paramsList.forEach(p -> {
if (p.getName().length() == 0) {
- MultivaluedMap<String, Object> values =
- InjectionUtils.extractValuesFromBean(params[p.getIndex()], "");
- for (String var : methodVars) {
+ MultivaluedMap<String, Object> values = InjectionUtils.extractValuesFromBean(params[p.getIndex()], "");
+ methodVars.forEach(var -> {
list.addAll(values.get(var));
- }
+ });
} else {
paramsMap.put(p.getName(), p);
}
- }
+ });
Object requestBody = bodyIndex == -1 ? null : params[bodyIndex];
- for (String varName : methodVars) {
+ methodVars.forEach(varName -> {
Parameter p = paramsMap.remove(varName);
if (p != null) {
list.add(convertParamValue(params[p.getIndex()],
- m.getParameterTypes()[p.getIndex()],
- getParamAnnotations(m, p)));
+ m.getParameterTypes()[p.getIndex()],
+ getParamAnnotations(m, p)));
} else if (beanParamValues.containsKey(varName)) {
BeanPair pair = beanParamValues.get(varName);
list.add(convertParamValue(pair.getValue(), pair.getAnns()));
} else if (requestBody != null) {
try {
- Method getter = requestBody.getClass().getMethod("get" + StringUtils.capitalize(varName),
- new Class<?>[]{});
+ Method getter = requestBody.getClass().
+ getMethod("get" + StringUtils.capitalize(varName), new Class<?>[]{});
list.add(getter.invoke(requestBody, new Object[]{}));
} catch (Exception ex) {
// continue
}
}
- }
+ });
for (Parameter p : paramsMap.values()) {
if (valuesMap.containsKey(p.getName())) {
@@ -483,45 +481,46 @@ public class ClientProxyImpl extends AbstractClient implements
return list;
}
- private static Annotation[] getParamAnnotations(Method m, Parameter p) {
+ protected static Annotation[] getParamAnnotations(Method m, Parameter p) {
return m.getParameterAnnotations()[p.getIndex()];
}
- private static List<Parameter> getParameters(MultivaluedMap<ParameterType, Parameter> map,
+ protected static List<Parameter> getParameters(MultivaluedMap<ParameterType, Parameter> map,
ParameterType key) {
return map.get(key) == null ? Collections.emptyList() : map.get(key);
}
- private void handleQueries(Method m,
+ protected void handleQueries(Method m,
Object[] params,
MultivaluedMap<ParameterType, Parameter> map,
List<Parameter> beanParams,
UriBuilder ub) {
List<Parameter> qs = getParameters(map, ParameterType.QUERY);
- for (Parameter p : qs) {
- if (params[p.getIndex()] != null) {
- addMatrixQueryParamsToBuilder(ub, p.getName(), ParameterType.QUERY,
- getParamAnnotations(m, p), params[p.getIndex()]);
- }
- }
- for (Parameter p : beanParams) {
- Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], QueryParam.class);
- for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
- if (entry.getValue() != null) {
- addMatrixQueryParamsToBuilder(ub, entry.getKey(), ParameterType.QUERY,
- entry.getValue().getAnns(), entry.getValue().getValue());
- }
- }
- }
+ qs.stream().
+ filter(p -> params[p.getIndex()] != null).
+ forEachOrdered(p -> {
+ addMatrixQueryParamsToBuilder(ub, p.getName(), ParameterType.QUERY,
+ getParamAnnotations(m, p), params[p.getIndex()]);
+ });
+ beanParams.stream().
+ map(p -> getValuesFromBeanParam(params[p.getIndex()], QueryParam.class)).
+ forEachOrdered(values -> {
+ values.forEach((key, value) -> {
+ if (value != null) {
+ addMatrixQueryParamsToBuilder(ub, key, ParameterType.QUERY,
+ value.getAnns(), value.getValue());
+ }
+ });
+ });
}
- private Map<String, BeanPair> getValuesFromBeanParam(Object bean, Class<? extends Annotation> annClass) {
+ protected Map<String, BeanPair> getValuesFromBeanParam(Object bean, Class<? extends Annotation> annClass) {
Map<String, BeanPair> values = new HashMap<>();
getValuesFromBeanParam(bean, annClass, values);
return values;
}
- private Map<String, BeanPair> getValuesFromBeanParam(Object bean,
+ protected Map<String, BeanPair> getValuesFromBeanParam(Object bean,
Class<? extends Annotation> annClass,
Map<String, BeanPair> values) {
boolean completeFieldIntrospectionNeeded = false;
@@ -532,7 +531,7 @@ public class ClientProxyImpl extends AbstractClient implements
Annotation methodAnnotation = m.getAnnotation(annClass);
boolean beanParam = m.getAnnotation(BeanParam.class) != null;
if (methodAnnotation != null || beanParam) {
- Method getter = bean.getClass().getMethod("get" + propertyName, new Class[]{});
+ Method getter = bean.getClass().getMethod("get" + propertyName, new Class<?>[]{});
Object value = getter.invoke(bean, new Object[]{});
if (value != null) {
if (methodAnnotation != null) {
@@ -576,7 +575,7 @@ public class ClientProxyImpl extends AbstractClient implements
return values;
}
- private boolean getValuesFromBeanParamField(Object bean,
+ protected boolean getValuesFromBeanParamField(Object bean,
Field f,
Class<? extends Annotation> annClass,
Map<String, BeanPair> values) {
@@ -593,52 +592,53 @@ public class ClientProxyImpl extends AbstractClient implements
return jaxrsParamAnnAvailable;
}
- private void handleMatrixes(Method m,
+ protected void handleMatrixes(Method m,
Object[] params,
MultivaluedMap<ParameterType, Parameter> map,
List<Parameter> beanParams,
UriBuilder ub) {
List<Parameter> mx = getParameters(map, ParameterType.MATRIX);
- for (Parameter p : mx) {
- if (params[p.getIndex()] != null) {
- addMatrixQueryParamsToBuilder(ub, p.getName(), ParameterType.MATRIX,
- getParamAnnotations(m, p), params[p.getIndex()]);
- }
- }
- for (Parameter p : beanParams) {
- Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], MatrixParam.class);
- for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
- if (entry.getValue() != null) {
- addMatrixQueryParamsToBuilder(ub, entry.getKey(), ParameterType.MATRIX,
- entry.getValue().getAnns(), entry.getValue().getValue());
- }
- }
- }
+ mx.stream().
+ filter(p -> params[p.getIndex()] != null).
+ forEachOrdered(p -> {
+ addMatrixQueryParamsToBuilder(ub, p.getName(), ParameterType.MATRIX,
+ getParamAnnotations(m, p), params[p.getIndex()]);
+ });
+ beanParams.stream().
+ map(p -> getValuesFromBeanParam(params[p.getIndex()], MatrixParam.class)).
+ forEachOrdered(values -> {
+ values.forEach((key, value) -> {
+ if (value != null) {
+ addMatrixQueryParamsToBuilder(ub, key, ParameterType.MATRIX,
+ value.getAnns(), value.getValue());
+ }
+ });
+ });
}
- private MultivaluedMap<String, String> handleForm(Method m,
+ protected MultivaluedMap<String, String> handleForm(Method m,
Object[] params,
MultivaluedMap<ParameterType, Parameter> map,
List<Parameter> beanParams) {
- MultivaluedMap<String, String> form = new MetadataMap<String, String>();
+ MultivaluedMap<String, String> form = new MetadataMap<>();
List<Parameter> fm = getParameters(map, ParameterType.FORM);
- for (Parameter p : fm) {
+ fm.forEach(p -> {
addFormValue(form, p.getName(), params[p.getIndex()], getParamAnnotations(m, p));
- }
- for (Parameter p : beanParams) {
- Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], FormParam.class);
- for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
- addFormValue(form, entry.getKey(), entry.getValue().getValue(), entry.getValue().getAnns());
- }
- }
+ });
+ beanParams.stream().
+ map(p -> getValuesFromBeanParam(params[p.getIndex()], FormParam.class)).
+ forEachOrdered(values -> {
+ values.forEach((key, value) -> {
+ addFormValue(form, key, value.getValue(), value.getAnns());
+ });
+ });
return form;
}
- private void addFormValue(MultivaluedMap<String, String> form, String name,
- Object pValue, Annotation[] anns) {
+ protected void addFormValue(MultivaluedMap<String, String> form, String name, Object pValue, Annotation[] anns) {
if (pValue != null) {
if (InjectionUtils.isSupportedCollectionOrArray(pValue.getClass())) {
Collection<?> c = pValue.getClass().isArray()
@@ -655,13 +655,13 @@ public class ClientProxyImpl extends AbstractClient implements
}
- private List<Attachment> handleMultipart(MultivaluedMap<ParameterType, Parameter> map,
+ protected List<Attachment> handleMultipart(MultivaluedMap<ParameterType, Parameter> map,
OperationResourceInfo ori,
Object[] params) {
- List<Attachment> atts = new LinkedList<Attachment>();
+ List<Attachment> atts = new LinkedList<>();
List<Parameter> fm = getParameters(map, ParameterType.REQUEST_BODY);
- for (Parameter p : fm) {
+ fm.forEach(p -> {
Multipart part = getMultipart(ori, p.getIndex());
if (part != null) {
Object partObject = params[p.getIndex()];
@@ -669,65 +669,64 @@ public class ClientProxyImpl extends AbstractClient implements
atts.add(new Attachment(part.value(), part.type(), partObject));
}
}
- }
+ });
return atts;
}
- private void handleHeaders(Method m,
+ protected void handleHeaders(Method m,
Object[] params,
MultivaluedMap<String, String> headers,
List<Parameter> beanParams,
MultivaluedMap<ParameterType, Parameter> map) {
List<Parameter> hs = getParameters(map, ParameterType.HEADER);
- for (Parameter p : hs) {
- if (params[p.getIndex()] != null) {
- headers.add(p.getName(), convertParamValue(params[p.getIndex()], getParamAnnotations(m, p)));
- }
- }
- for (Parameter p : beanParams) {
- Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], HeaderParam.class);
- for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
- if (entry.getValue() != null) {
- headers.add(entry.getKey(),
- convertParamValue(entry.getValue().getValue(), entry.getValue().getAnns()));
- }
- }
- }
+ hs.stream().
+ filter(p -> params[p.getIndex()] != null).
+ forEachOrdered(p -> {
+ headers.add(p.getName(), convertParamValue(params[p.getIndex()], getParamAnnotations(m, p)));
+ });
+ beanParams.stream().
+ map(p -> getValuesFromBeanParam(params[p.getIndex()], HeaderParam.class)).
+ forEachOrdered(values -> {
+ values.forEach((key, value) -> {
+ if (value != null) {
+ headers.add(key, convertParamValue(value.getValue(), value.getAnns()));
+ }
+ });
+ });
}
- private static Multipart getMultipart(OperationResourceInfo ori, int index) {
+ protected static Multipart getMultipart(OperationResourceInfo ori, int index) {
Method aMethod = ori.getAnnotatedMethod();
return aMethod != null ? AnnotationUtils.getAnnotation(
aMethod.getParameterAnnotations()[index], Multipart.class) : null;
}
- private void handleCookies(Method m,
+ protected void handleCookies(Method m,
Object[] params,
MultivaluedMap<String, String> headers,
List<Parameter> beanParams,
MultivaluedMap<ParameterType, Parameter> map) {
List<Parameter> cs = getParameters(map, ParameterType.COOKIE);
- for (Parameter p : cs) {
- if (params[p.getIndex()] != null) {
- headers.add(HttpHeaders.COOKIE,
+ cs.stream().
+ filter(p -> params[p.getIndex()] != null).
+ forEachOrdered(p -> {
+ headers.add(HttpHeaders.COOKIE,
p.getName() + '='
+ convertParamValue(params[p.getIndex()].toString(), getParamAnnotations(m, p)));
- }
- }
- for (Parameter p : beanParams) {
- Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], CookieParam.class);
- for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
- if (entry.getValue() != null) {
- headers.add(HttpHeaders.COOKIE,
- entry.getKey() + "="
- + convertParamValue(entry.getValue().getValue(),
- entry.getValue().getAnns()));
- }
- }
- }
+ });
+ beanParams.stream().
+ map(p -> getValuesFromBeanParam(params[p.getIndex()], CookieParam.class)).
+ forEachOrdered(values -> {
+ values.forEach((key, value) -> {
+ if (value != null) {
+ headers.add(HttpHeaders.COOKIE,
+ key + "=" + convertParamValue(value.getValue(), value.getAnns()));
+ }
+ });
+ });
}
//CHECKSTYLE:OFF
- private Object doChainedInvocation(URI uri,
+ protected Object doChainedInvocation(URI uri,
MultivaluedMap<String, String> headers,
OperationResourceInfo ori,
Object[] methodParams,
@@ -822,7 +821,7 @@ public class ClientProxyImpl extends AbstractClient implements
return null;
}
- private InvocationCallback<Object> doCheckAsyncCallback(OperationResourceInfo ori,
+ protected InvocationCallback<Object> doCheckAsyncCallback(OperationResourceInfo ori,
InvocationCallback<Object> callback) {
Type callbackOutType = getCallbackType(callback);
Class<?> callbackRespClass = getCallbackClass(callbackOutType);
@@ -852,7 +851,7 @@ public class ClientProxyImpl extends AbstractClient implements
protected JaxrsClientCallback<?> newJaxrsClientCallback(InvocationCallback<Object> asyncCallback,
Class<?> responseClass,
Type outGenericType) {
- return new JaxrsClientCallback<Object>(asyncCallback, responseClass, outGenericType);
+ return new JaxrsClientCallback<>(asyncCallback, responseClass, outGenericType);
}
@Override
@@ -930,8 +929,9 @@ public class ClientProxyImpl extends AbstractClient implements
: aMethod.getParameterAnnotations()[bodyIndex];
}
- private class BodyWriter extends AbstractBodyWriter {
+ protected class BodyWriter extends AbstractBodyWriter {
+ @Override
protected void doWriteBody(Message outMessage,
Object body,
Type bodyType,
@@ -978,9 +978,9 @@ public class ClientProxyImpl extends AbstractClient implements
}
- private static class BeanPair {
- private Object value;
- private Annotation[] anns;
+ protected static class BeanPair {
+ protected Object value;
+ protected Annotation[] anns;
BeanPair(Object value, Annotation[] anns) {
this.value = value;
this.anns = anns;
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
index 47f2888..65ee66e 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
@@ -41,7 +41,6 @@ import org.apache.cxf.endpoint.ClientLifeCycleManager;
import org.apache.cxf.endpoint.ConduitSelector;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.UpfrontConduitSelector;
-import org.apache.cxf.feature.Feature;
import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
import org.apache.cxf.jaxrs.JAXRSServiceImpl;
@@ -53,17 +52,17 @@ import org.apache.cxf.service.factory.FactoryBeanListener;
public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
- private static final Logger LOG = LogUtils.getL7dLogger(JAXRSClientFactoryBean.class);
+ protected static final Logger LOG = LogUtils.getL7dLogger(JAXRSClientFactoryBean.class);
- private String username;
- private String password;
- private boolean inheritHeaders;
- private MultivaluedMap<String, String> headers;
- private ClientState initialState;
- private boolean threadSafe;
- private long timeToKeepState;
- private Class<?> serviceClass;
- private ClassLoader proxyLoader;
+ protected String username;
+ protected String password;
+ protected boolean inheritHeaders;
+ protected MultivaluedMap<String, String> headers;
+ protected ClientState initialState;
+ protected boolean threadSafe;
+ protected long timeToKeepState;
+ protected Class<?> serviceClass;
+ protected ClassLoader proxyLoader;
public JAXRSClientFactoryBean() {
this(new JAXRSServiceFactoryBean());
@@ -172,7 +171,7 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
}
/**
- * Returns the service class
+ * Returns the service class.
*/
public Class<?> getServiceClass() {
return serviceClass;
@@ -185,15 +184,15 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
* @param map the headers
*/
public void setHeaders(Map<String, String> map) {
- headers = new MetadataMap<String, String>();
- for (Map.Entry<String, String> entry : map.entrySet()) {
- String[] values = entry.getValue().split(",");
+ headers = new MetadataMap<>();
+ map.forEach((key, value) -> {
+ String[] values = value.split(",");
for (String v : values) {
if (v.length() != 0) {
- headers.add(entry.getKey(), v);
+ headers.add(key, v);
}
}
- }
+ });
}
/**
@@ -235,14 +234,14 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
}
}
- private void notifyLifecycleManager(Object client) {
+ protected void notifyLifecycleManager(Object client) {
ClientLifeCycleManager mgr = bus.getExtension(ClientLifeCycleManager.class);
if (null != mgr) {
mgr.clientCreated(new FrontendClientAdapter(WebClient.getConfig(client)));
}
}
- private ClientState getActualState() {
+ protected ClientState getActualState() {
if (threadSafe) {
initialState = new ThreadLocalClientState(getAddress(), timeToKeepState);
}
@@ -254,7 +253,7 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
}
/**
- * Creates a proxy
+ * Creates a proxy.
* @param cls the proxy class
* @param varValues optional list of values which will be used to substitute
* template variables specified in the class-level JAX-RS Path annotations
@@ -306,20 +305,14 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
}
boolean isRoot = cri.getURITemplate() != null;
- ClientProxyImpl proxyImpl = null;
ClientState actualState = getActualState();
- proxyImpl = createClientProxy(cri, isRoot, actualState, varValues);
+ ClientProxyImpl proxyImpl = createClientProxy(cri, isRoot, actualState, varValues);
initClient(proxyImpl, ep, actualState == null);
final Class<?> serviceClassFinal = cri.getServiceClass();
- ClassLoader theLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-
- @Override
- public ClassLoader run() {
- return proxyLoader == null ? serviceClassFinal.getClassLoader() : proxyLoader;
- }
- });
- Class<?>[] ifaces = new Class[]{Client.class, InvocationHandlerAware.class, cri.getServiceClass()};
+ ClassLoader theLoader = AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () ->
+ proxyLoader == null ? serviceClassFinal.getClassLoader() : proxyLoader);
+ Class<?>[] ifaces = new Class<?>[]{Client.class, InvocationHandlerAware.class, cri.getServiceClass()};
Client actualClient = (Client)ProxyHelper.getProxy(theLoader, ifaces, proxyImpl);
proxyImpl.setProxyClient(actualClient);
notifyLifecycleManager(actualClient);
@@ -400,7 +393,7 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
if (cls == String.class
&& AnnotationUtils.getAnnotation(anns, HeaderParam.class) == null
&& AnnotationUtils.getAnnotation(anns, CookieParam.class) == null) {
- return (ParamConverter<T>)new UrlEncodingParamConverter(encodeClientParametersList);
+ return (ParamConverter<T>) new UrlEncodingParamConverter(encodeClientParametersList);
}
return null;
}
@@ -411,9 +404,9 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
protected void applyFeatures(AbstractClient client) {
if (getFeatures() != null) {
- for (Feature feature : getFeatures()) {
+ getFeatures().forEach(feature -> {
feature.initialize(client.getConfiguration(), getBus());
- }
+ });
}
}
@@ -424,6 +417,4 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
public void setInitialState(ClientState initialState) {
this.initialState = initialState;
}
-
-
}