This is an automated email from the ASF dual-hosted git repository.
huxing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new f76ae21 Optimize the code: fix CallbackServiceCodec.java
exportOrunexportCallbackService method issue. (#3199)
f76ae21 is described below
commit f76ae2165018ca78cbb9286fe9bd4869bc2dbeb6
Author: 于玉桔 <[email protected]>
AuthorDate: Tue Jan 15 09:42:03 2019 +0800
Optimize the code: fix CallbackServiceCodec.java
exportOrunexportCallbackService method issue. (#3199)
* Optimize the code: fix url to null, NullPointerException, change private
variable to camel mode.
* Optimize the code: exportOrUnexportCallbackService method camel mode.
* Optimize the code: fix method:encodeInvocationArgument private
callbackStatus is camel writing.
* Optimize the code: fix name issue
* Exporter is a noun, we should use a verb here, like Export.
* The generics that can be inferred automatically are also deleted.
---
.../rpc/protocol/dubbo/CallbackServiceCodec.java | 34 +++++++++++-----------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
index aa5c02b..4d2f3c6 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
@@ -77,41 +77,41 @@ class CallbackServiceCodec {
* @throws IOException
*/
@SuppressWarnings({"unchecked", "rawtypes"})
- private static String exportOrunexportCallbackService(Channel channel, URL
url, Class clazz, Object inst, Boolean export) throws IOException {
+ private static String exportOrUnexportCallbackService(Channel channel, URL
url, Class clazz, Object inst, Boolean export) throws IOException {
int instid = System.identityHashCode(inst);
- Map<String, String> params = new HashMap<String, String>(3);
+ Map<String, String> params = new HashMap<>(3);
// no need to new client again
params.put(Constants.IS_SERVER_KEY, Boolean.FALSE.toString());
// mark it's a callback, for troubleshooting
params.put(Constants.IS_CALLBACK_SERVICE, Boolean.TRUE.toString());
- String group = url.getParameter(Constants.GROUP_KEY);
+ String group = (url == null ? null :
url.getParameter(Constants.GROUP_KEY));
if (group != null && group.length() > 0) {
params.put(Constants.GROUP_KEY, group);
}
// add method, for verifying against method, automatic fallback (see
dubbo protocol)
params.put(Constants.METHODS_KEY,
StringUtils.join(Wrapper.getWrapper(clazz).getDeclaredMethodNames(), ","));
- Map<String, String> tmpmap = new HashMap<String,
String>(url.getParameters());
- tmpmap.putAll(params);
- tmpmap.remove(Constants.VERSION_KEY);// doesn't need to distinguish
version for callback
- tmpmap.put(Constants.INTERFACE_KEY, clazz.getName());
- URL exporturl = new URL(DubboProtocol.NAME,
channel.getLocalAddress().getAddress().getHostAddress(),
channel.getLocalAddress().getPort(), clazz.getName() + "." + instid, tmpmap);
+ Map<String, String> tmpMap = new HashMap<>(url.getParameters());
+ tmpMap.putAll(params);
+ tmpMap.remove(Constants.VERSION_KEY);// doesn't need to distinguish
version for callback
+ tmpMap.put(Constants.INTERFACE_KEY, clazz.getName());
+ URL exportUrl = new URL(DubboProtocol.NAME,
channel.getLocalAddress().getAddress().getHostAddress(),
channel.getLocalAddress().getPort(), clazz.getName() + "." + instid, tmpMap);
// no need to generate multiple exporters for different channel in the
same JVM, cache key cannot collide.
String cacheKey = getClientSideCallbackServiceCacheKey(instid);
- String countkey = getClientSideCountKey(clazz.getName());
+ String countKey = getClientSideCountKey(clazz.getName());
if (export) {
// one channel can have multiple callback instances, no need to
re-export for different instance.
if (!channel.hasAttribute(cacheKey)) {
if (!isInstancesOverLimit(channel, url, clazz.getName(),
instid, false)) {
- Invoker<?> invoker = proxyFactory.getInvoker(inst, clazz,
exporturl);
+ Invoker<?> invoker = proxyFactory.getInvoker(inst, clazz,
exportUrl);
// should destroy resource?
Exporter<?> exporter = protocol.export(invoker);
// this is used for tracing if instid has published
service or not.
channel.setAttribute(cacheKey, exporter);
- logger.info("export a callback service :" + exporturl + ",
on " + channel + ", url is: " + url);
- increaseInstanceCount(channel, countkey);
+ logger.info("Export a callback service :" + exportUrl + ",
on " + channel + ", url is: " + url);
+ increaseInstanceCount(channel, countKey);
}
}
} else {
@@ -119,7 +119,7 @@ class CallbackServiceCodec {
Exporter<?> exporter = (Exporter<?>)
channel.getAttribute(cacheKey);
exporter.unexport();
channel.removeAttribute(cacheKey);
- decreaseInstanceCount(channel, countkey);
+ decreaseInstanceCount(channel, countKey);
}
}
return String.valueOf(instid);
@@ -245,17 +245,17 @@ class CallbackServiceCodec {
public static Object encodeInvocationArgument(Channel channel,
RpcInvocation inv, int paraIndex) throws IOException {
// get URL directly
URL url = inv.getInvoker() == null ? null : inv.getInvoker().getUrl();
- byte callbackstatus = isCallBack(url, inv.getMethodName(), paraIndex);
+ byte callbackStatus = isCallBack(url, inv.getMethodName(), paraIndex);
Object[] args = inv.getArguments();
Class<?>[] pts = inv.getParameterTypes();
- switch (callbackstatus) {
+ switch (callbackStatus) {
case CallbackServiceCodec.CALLBACK_NONE:
return args[paraIndex];
case CallbackServiceCodec.CALLBACK_CREATE:
- inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex,
exportOrunexportCallbackService(channel, url, pts[paraIndex], args[paraIndex],
true));
+ inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex,
exportOrUnexportCallbackService(channel, url, pts[paraIndex], args[paraIndex],
true));
return null;
case CallbackServiceCodec.CALLBACK_DESTROY:
- inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex,
exportOrunexportCallbackService(channel, url, pts[paraIndex], args[paraIndex],
false));
+ inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex,
exportOrUnexportCallbackService(channel, url, pts[paraIndex], args[paraIndex],
false));
return null;
default:
return args[paraIndex];