You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hu...@apache.org on 2019/07/18 01:44:15 UTC
[dubbo] branch master updated: follow up for pr#4339,
remove the space (#4591)
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/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new b4afeb9 follow up for pr#4339, remove the space (#4591)
b4afeb9 is described below
commit b4afeb982b943ca8c6bbd261302a9e161c2e98a9
Author: Ian Luo <ia...@gmail.com>
AuthorDate: Thu Jul 18 09:44:03 2019 +0800
follow up for pr#4339, remove the space (#4591)
---
.../extension/AdaptiveClassCodeGenerator.java | 84 +++++++++++-----------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java
index 239f862..610534f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java
@@ -31,56 +31,56 @@ import org.apache.dubbo.common.utils.StringUtils;
* Code generator for Adaptive class
*/
public class AdaptiveClassCodeGenerator {
-
+
private static final Logger logger = LoggerFactory.getLogger(AdaptiveClassCodeGenerator.class);
private static final String CLASSNAME_INVOCATION = "org.apache.dubbo.rpc.Invocation";
-
+
private static final String CODE_PACKAGE = "package %s;\n";
-
+
private static final String CODE_IMPORTS = "import %s;\n";
-
+
private static final String CODE_CLASS_DECLARATION = "public class %s$Adaptive implements %s {\n";
-
+
private static final String CODE_METHOD_DECLARATION = "public %s %s(%s) %s {\n%s}\n";
-
+
private static final String CODE_METHOD_ARGUMENT = "%s arg%d";
-
+
private static final String CODE_METHOD_THROWS = "throws %s";
-
+
private static final String CODE_UNSUPPORTED = "throw new UnsupportedOperationException(\"The method %s of interface %s is not adaptive method!\");\n";
-
+
private static final String CODE_URL_NULL_CHECK = "if (arg%d == null) throw new IllegalArgumentException(\"url == null\");\n%s url = arg%d;\n";
-
+
private static final String CODE_EXT_NAME_ASSIGNMENT = "String extName = %s;\n";
-
+
private static final String CODE_EXT_NAME_NULL_CHECK = "if(extName == null) "
+ "throw new IllegalStateException(\"Failed to get extension (%s) name from url (\" + url.toString() + \") use keys(%s)\");\n";
-
+
private static final String CODE_INVOCATION_ARGUMENT_NULL_CHECK = "if (arg%d == null) throw new IllegalArgumentException(\"invocation == null\"); "
+ "String methodName = arg%d.getMethodName();\n";
-
-
+
+
private static final String CODE_EXTENSION_ASSIGNMENT = "%s extension = (%<s)%s.getExtensionLoader(%s.class).getExtension(extName);\n";
- private static final String CODE_EXTENSION_METHOD_INVOKE_ARGUMENT = "arg%d ";
+ private static final String CODE_EXTENSION_METHOD_INVOKE_ARGUMENT = "arg%d";
private final Class<?> type;
-
+
private String defaultExtName;
-
+
public AdaptiveClassCodeGenerator(Class<?> type, String defaultExtName) {
this.type = type;
this.defaultExtName = defaultExtName;
}
-
+
/**
* test if given type has at least one method annotated with <code>SPI</code>
*/
private boolean hasAdaptiveMethod() {
return Arrays.stream(type.getMethods()).anyMatch(m -> m.isAnnotationPresent(Adaptive.class));
}
-
+
/**
* generate and return class code
*/
@@ -94,13 +94,13 @@ public class AdaptiveClassCodeGenerator {
code.append(generatePackageInfo());
code.append(generateImports());
code.append(generateClassDeclaration());
-
+
Method[] methods = type.getMethods();
for (Method method : methods) {
code.append(generateMethod(method));
}
code.append("}");
-
+
if (logger.isDebugEnabled()) {
logger.debug(code.toString());
}
@@ -127,18 +127,18 @@ public class AdaptiveClassCodeGenerator {
private String generateClassDeclaration() {
return String.format(CODE_CLASS_DECLARATION, type.getSimpleName(), type.getCanonicalName());
}
-
+
/**
- * generate method not annotated with Adaptive with throwing unsupported exception
+ * generate method not annotated with Adaptive with throwing unsupported exception
*/
private String generateUnsupported(Method method) {
return String.format(CODE_UNSUPPORTED, method, type.getName());
}
-
+
/**
* get index of parameter with type URL
*/
- private int getUrlTypeIndex(Method method) {
+ private int getUrlTypeIndex(Method method) {
int urlTypeIndex = -1;
Class<?>[] pts = method.getParameterTypes();
for (int i = 0; i < pts.length; ++i) {
@@ -149,7 +149,7 @@ public class AdaptiveClassCodeGenerator {
}
return urlTypeIndex;
}
-
+
/**
* generate method declaration
*/
@@ -171,9 +171,9 @@ public class AdaptiveClassCodeGenerator {
.mapToObj(i -> String.format(CODE_METHOD_ARGUMENT, pts[i].getCanonicalName(), i))
.collect(Collectors.joining(", "));
}
-
+
/**
- * generate method throws
+ * generate method throws
*/
private String generateMethodThrows(Method method) {
Class<?>[] ets = method.getExceptionTypes();
@@ -184,14 +184,14 @@ public class AdaptiveClassCodeGenerator {
return "";
}
}
-
+
/**
- * generate method URL argument null check
+ * generate method URL argument null check
*/
private String generateUrlNullCheck(int index) {
return String.format(CODE_URL_NULL_CHECK, index, URL.class.getName(), index);
}
-
+
/**
* generate method content
*/
@@ -202,7 +202,7 @@ public class AdaptiveClassCodeGenerator {
return generateUnsupported(method);
} else {
int urlTypeIndex = getUrlTypeIndex(method);
-
+
// found parameter in URL type
if (urlTypeIndex != -1) {
// Null Point check
@@ -215,19 +215,19 @@ public class AdaptiveClassCodeGenerator {
String[] value = getMethodAdaptiveValue(adaptiveAnnotation);
boolean hasInvocation = hasInvocationArgument(method);
-
+
code.append(generateInvocationArgumentNullCheck(method));
-
+
code.append(generateExtNameAssignment(value, hasInvocation));
// check extName == null?
code.append(generateExtNameNullCheck(value));
-
+
code.append(generateExtensionAssignment());
// return statement
code.append(generateReturnAndInvocation(method));
}
-
+
return code.toString();
}
@@ -279,7 +279,7 @@ public class AdaptiveClassCodeGenerator {
}
}
}
-
+
return String.format(CODE_EXT_NAME_ASSIGNMENT, getNameCode);
}
@@ -302,7 +302,7 @@ public class AdaptiveClassCodeGenerator {
return returnStatement + String.format("extension.%s(%s);\n", method.getName(), args);
}
-
+
/**
* test if method has argument of type <code>Invocation</code>
*/
@@ -310,7 +310,7 @@ public class AdaptiveClassCodeGenerator {
Class<?>[] pts = method.getParameterTypes();
return Arrays.stream(pts).anyMatch(p -> CLASSNAME_INVOCATION.equals(p.getName()));
}
-
+
/**
* generate code to test argument of type <code>Invocation</code> is null
*/
@@ -343,7 +343,7 @@ public class AdaptiveClassCodeGenerator {
*/
private String generateUrlAssignmentIndirectly(Method method) {
Class<?>[] pts = method.getParameterTypes();
-
+
// find URL getter method
for (int i = 0; i < pts.length; ++i) {
for (Method m : pts[i].getMethods()) {
@@ -357,7 +357,7 @@ public class AdaptiveClassCodeGenerator {
}
}
}
-
+
// getter method not found, throw
throw new IllegalStateException("Failed to create adaptive class for interface " + type.getName()
+ ": not found url parameter or url attribute in parameters of method " + method.getName());
@@ -380,5 +380,5 @@ public class AdaptiveClassCodeGenerator {
code.append(String.format("%s url = arg%d.%s();\n", URL.class.getName(), index, method));
return code.toString();
}
-
+
}