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 21046c8 some optimize on ExtensionLoader (#3307)
21046c8 is described below
commit 21046c85ea960c754d1f695530bff1a4b0aaa729
Author: XiaoJie Li <[email protected]>
AuthorDate: Sat Jan 26 22:52:12 2019 +0800
some optimize on ExtensionLoader (#3307)
* some optimize on ExtensionLoader
* make ci rerun
* fix compile error
* fix ci failure
---
.../dubbo/common/extension/ExtensionLoader.java | 57 +++++++++++-----------
.../common/extension/ExtensionLoaderTest.java | 14 +++---
.../extension/ExtensionLoader_Adaptive_Test.java | 18 +++----
3 files changed, 44 insertions(+), 45 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index 42fa01b..380dbbf 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -110,10 +110,10 @@ public class ExtensionLoader<T> {
throw new IllegalArgumentException("Extension type == null");
}
if (!type.isInterface()) {
- throw new IllegalArgumentException("Extension type(" + type + ")
is not interface!");
+ throw new IllegalArgumentException("Extension type (" + type + ")
is not interface!");
}
if (!withExtensionAnnotation(type)) {
- throw new IllegalArgumentException("Extension type(" + type +
+ throw new IllegalArgumentException("Extension type (" + type +
") is not extension, because WITHOUT @" +
SPI.class.getSimpleName() + " Annotation!");
}
@@ -354,8 +354,7 @@ public class ExtensionLoader<T> {
*/
public T getDefaultExtension() {
getExtensionClasses();
- if (null == cachedDefaultName || cachedDefaultName.length() == 0
- || "true".equals(cachedDefaultName)) {
+ if (StringUtils.isBlank(cachedDefaultName) ||
"true".equals(cachedDefaultName)) {
return null;
}
return getExtension(cachedDefaultName);
@@ -394,11 +393,11 @@ public class ExtensionLoader<T> {
if (!type.isAssignableFrom(clazz)) {
throw new IllegalStateException("Input type " +
- clazz + "not implement Extension " + type);
+ clazz + " doesn't implement the Extension " + type);
}
if (clazz.isInterface()) {
throw new IllegalStateException("Input type " +
- clazz + "can not be interface!");
+ clazz + " can't be interface!");
}
if (!clazz.isAnnotationPresent(Adaptive.class)) {
@@ -407,14 +406,14 @@ public class ExtensionLoader<T> {
}
if (cachedClasses.get().containsKey(name)) {
throw new IllegalStateException("Extension name " +
- name + " already existed(Extension " + type + ")!");
+ name + " already exists (Extension " + type + ")!");
}
cachedNames.put(clazz, name);
cachedClasses.get().put(name, clazz);
} else {
if (cachedAdaptiveClass != null) {
- throw new IllegalStateException("Adaptive Extension already
existed(Extension " + type + ")!");
+ throw new IllegalStateException("Adaptive Extension already
exists (Extension " + type + ")!");
}
cachedAdaptiveClass = clazz;
@@ -435,11 +434,11 @@ public class ExtensionLoader<T> {
if (!type.isAssignableFrom(clazz)) {
throw new IllegalStateException("Input type " +
- clazz + "not implement Extension " + type);
+ clazz + " doesn't implement Extension " + type);
}
if (clazz.isInterface()) {
throw new IllegalStateException("Input type " +
- clazz + "can not be interface!");
+ clazz + " can't be interface!");
}
if (!clazz.isAnnotationPresent(Adaptive.class)) {
@@ -448,7 +447,7 @@ public class ExtensionLoader<T> {
}
if (!cachedClasses.get().containsKey(name)) {
throw new IllegalStateException("Extension name " +
- name + " not existed(Extension " + type + ")!");
+ name + " doesn't exist (Extension " + type + ")!");
}
cachedNames.put(clazz, name);
@@ -456,7 +455,7 @@ public class ExtensionLoader<T> {
cachedInstances.remove(name);
} else {
if (cachedAdaptiveClass == null) {
- throw new IllegalStateException("Adaptive Extension not
existed(Extension " + type + ")!");
+ throw new IllegalStateException("Adaptive Extension doesn't
exist (Extension " + type + ")!");
}
cachedAdaptiveClass = clazz;
@@ -477,12 +476,12 @@ public class ExtensionLoader<T> {
cachedAdaptiveInstance.set(instance);
} catch (Throwable t) {
createAdaptiveInstanceError = t;
- throw new IllegalStateException("fail to create
adaptive instance: " + t.toString(), t);
+ throw new IllegalStateException("Failed to create
adaptive instance: " + t.toString(), t);
}
}
}
} else {
- throw new IllegalStateException("fail to create adaptive
instance: " + createAdaptiveInstanceError.toString(),
createAdaptiveInstanceError);
+ throw new IllegalStateException("Failed to create adaptive
instance: " + createAdaptiveInstanceError.toString(),
createAdaptiveInstanceError);
}
}
@@ -535,8 +534,8 @@ public class ExtensionLoader<T> {
}
return instance;
} catch (Throwable t) {
- throw new IllegalStateException("Extension instance(name: " + name
+ ", class: " +
- type + ") could not be instantiated: " + t.getMessage(),
t);
+ throw new IllegalStateException("Extension instance (name: " +
name + ", class: " +
+ type + ") couldn't be instantiated: " + t.getMessage(), t);
}
}
@@ -564,7 +563,7 @@ public class ExtensionLoader<T> {
method.invoke(instance, object);
}
} catch (Exception e) {
- logger.error("fail to inject via method " +
method.getName()
+ logger.error("Failed to inject via method " +
method.getName()
+ " of interface " + type.getName() + ": "
+ e.getMessage(), e);
}
}
@@ -608,7 +607,7 @@ public class ExtensionLoader<T> {
if ((value = value.trim()).length() > 0) {
String[] names = NAME_SEPARATOR.split(value);
if (names.length > 1) {
- throw new IllegalStateException("more than 1 default
extension name on extension " + type.getName()
+ throw new IllegalStateException("More than 1 default
extension name on extension " + type.getName()
+ ": " + Arrays.toString(names));
}
if (names.length == 1) {
@@ -644,7 +643,7 @@ public class ExtensionLoader<T> {
}
}
} catch (Throwable t) {
- logger.error("Exception when load extension class(interface: " +
+ logger.error("Exception occured when loading extension class
(interface: " +
type + ", description file: " + fileName + ").", t);
}
}
@@ -672,7 +671,7 @@ public class ExtensionLoader<T> {
loadClass(extensionClasses, resourceURL,
Class.forName(line, true, classLoader), name);
}
} catch (Throwable t) {
- IllegalStateException e = new
IllegalStateException("Failed to load extension class(interface: " + type + ",
class line: " + line + ") in " + resourceURL + ", cause: " + t.getMessage(), t);
+ IllegalStateException e = new
IllegalStateException("Failed to load extension class (interface: " + type + ",
class line: " + line + ") in " + resourceURL + ", cause: " + t.getMessage(), t);
exceptions.put(line, e);
}
}
@@ -681,16 +680,16 @@ public class ExtensionLoader<T> {
reader.close();
}
} catch (Throwable t) {
- logger.error("Exception when load extension class(interface: " +
+ logger.error("Exception occured when loading extension class
(interface: " +
type + ", class file: " + resourceURL + ") in " +
resourceURL, t);
}
}
private void loadClass(Map<String, Class<?>> extensionClasses,
java.net.URL resourceURL, Class<?> clazz, String name) throws
NoSuchMethodException {
if (!type.isAssignableFrom(clazz)) {
- throw new IllegalStateException("Error when load extension
class(interface: " +
+ throw new IllegalStateException("Error occured when loading
extension class (interface: " +
type + ", class line: " + clazz.getName() + "), class "
- + clazz.getName() + "is not subtype of interface.");
+ + clazz.getName() + " is not subtype of interface.");
}
if (clazz.isAnnotationPresent(Adaptive.class)) {
if (cachedAdaptiveClass == null) {
@@ -703,7 +702,7 @@ public class ExtensionLoader<T> {
} else if (isWrapperClass(clazz)) {
Set<Class<?>> wrappers = cachedWrapperClasses;
if (wrappers == null) {
- cachedWrapperClasses = new ConcurrentHashSet<Class<?>>();
+ cachedWrapperClasses = new ConcurrentHashSet<>();
wrappers = cachedWrapperClasses;
}
wrappers.add(clazz);
@@ -769,7 +768,7 @@ public class ExtensionLoader<T> {
try {
return injectExtension((T)
getAdaptiveExtensionClass().newInstance());
} catch (Exception e) {
- throw new IllegalStateException("Can not create adaptive extension
" + type + ", cause: " + e.getMessage(), e);
+ throw new IllegalStateException("Can't create adaptive extension "
+ type + ", cause: " + e.getMessage(), e);
}
}
@@ -800,7 +799,7 @@ public class ExtensionLoader<T> {
}
// no need to generate adaptive class since there's no adaptive method
found.
if (!hasAdaptiveAnnotation) {
- throw new IllegalStateException("No adaptive method on extension "
+ type.getName() + ", refuse to create the adaptive class!");
+ throw new IllegalStateException("No adaptive method exist on
extension " + type.getName() + ", refuse to create the adaptive class!");
}
codeBuilder.append("package
").append(type.getPackage().getName()).append(";");
@@ -815,7 +814,7 @@ public class ExtensionLoader<T> {
Adaptive adaptiveAnnotation = method.getAnnotation(Adaptive.class);
StringBuilder code = new StringBuilder(512);
if (adaptiveAnnotation == null) {
- code.append("throw new UnsupportedOperationException(\"method
")
+ code.append("throw new UnsupportedOperationException(\"The
method ")
.append(method.toString()).append(" of interface ")
.append(type.getName()).append(" is not adaptive
method!\");");
} else {
@@ -858,7 +857,7 @@ public class ExtensionLoader<T> {
}
}
if (attribMethod == null) {
- throw new IllegalStateException("fail to create
adaptive class for interface " + type.getName()
+ 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());
}
@@ -934,7 +933,7 @@ public class ExtensionLoader<T> {
code.append("\nString extName =
").append(getNameCode).append(";");
// check extName == null?
String s = String.format("\nif(extName == null) " +
- "throw new IllegalStateException(\"Fail to get
extension(%s) name from url(\" + url.toString() + \") use keys(%s)\");",
+ "throw new IllegalStateException(\"Failed to
get extension (%s) name from url (\" + url.toString() + \") use keys(%s)\");",
type.getName(), Arrays.toString(value));
code.append(s);
diff --git
a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
index 3f767e8..b0e878c 100644
---
a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
+++
b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
@@ -87,7 +87,7 @@ public class ExtensionLoaderTest {
fail();
} catch (IllegalArgumentException expected) {
assertThat(expected.getMessage(),
- containsString("Extension type(class
org.apache.dubbo.common.extension.ExtensionLoaderTest) is not interface"));
+ containsString("Extension type (class
org.apache.dubbo.common.extension.ExtensionLoaderTest) is not interface"));
}
}
@@ -263,7 +263,7 @@ public class ExtensionLoaderTest {
ExtensionLoader.getExtensionLoader(AddExt1.class).addExtension("impl1",
AddExt1_ManualAdd1.class);
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Extension name
impl1 already existed(Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt1)!"));
+ assertThat(expected.getMessage(), containsString("Extension name
impl1 already exists (Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt1)!"));
}
}
@@ -286,7 +286,7 @@ public class ExtensionLoaderTest {
loader.addExtension(null, AddExt1_ManualAdaptive.class);
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Adaptive
Extension already existed(Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt1)!"));
+ assertThat(expected.getMessage(), containsString("Adaptive
Extension already exists (Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt1)!"));
}
}
@@ -335,7 +335,7 @@ public class ExtensionLoaderTest {
ExtensionLoader.getExtensionLoader(AddExt1.class).replaceExtension("NotExistedExtension",
AddExt1_ManualAdd1.class);
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Extension name
NotExistedExtension not existed(Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt1)"));
+ assertThat(expected.getMessage(), containsString("Extension name
NotExistedExtension doesn't exist (Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt1)"));
}
}
@@ -347,7 +347,7 @@ public class ExtensionLoaderTest {
loader.replaceExtension(null, AddExt4_ManualAdaptive.class);
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Adaptive
Extension not existed(Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt4)"));
+ assertThat(expected.getMessage(), containsString("Adaptive
Extension doesn't exist (Extension interface
org.apache.dubbo.common.extension.ext8_add.AddExt4)"));
}
}
@@ -361,7 +361,7 @@ public class ExtensionLoaderTest {
loader.getExtension("error");
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Failed to load
extension class(interface: interface
org.apache.dubbo.common.extension.ext7.InitErrorExt"));
+ assertThat(expected.getMessage(), containsString("Failed to load
extension class (interface: interface
org.apache.dubbo.common.extension.ext7.InitErrorExt"));
assertThat(expected.getCause(),
instanceOf(ExceptionInInitializerError.class));
}
}
@@ -437,4 +437,4 @@ public class ExtensionLoaderTest {
Assertions.assertNull(injectExtImpl.getGenericType());
}
-}
\ No newline at end of file
+}
diff --git
a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
index b4db6d4..fe64a63 100644
---
a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
+++
b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
@@ -147,8 +147,8 @@ public class ExtensionLoader_Adaptive_Test {
fail();
} catch (IllegalStateException expected) {
assertThat(expected.getMessage(),
- allOf(containsString("Can not create adaptive extension
interface org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt"),
- containsString("No adaptive method on extension
org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt, refuse to create
the adaptive class")));
+ allOf(containsString("Can't create adaptive extension
interface org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt"),
+ containsString("No adaptive method exist on
extension org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt, refuse to
create the adaptive class")));
}
// report same error when get is invoked for multiple times
try {
@@ -156,8 +156,8 @@ public class ExtensionLoader_Adaptive_Test {
fail();
} catch (IllegalStateException expected) {
assertThat(expected.getMessage(),
- allOf(containsString("Can not create adaptive extension
interface org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt"),
- containsString("No adaptive method on extension
org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt, refuse to create
the adaptive class")));
+ allOf(containsString("Can't create adaptive extension
interface org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt"),
+ containsString("No adaptive method exist on
extension org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt, refuse to
create the adaptive class")));
}
}
@@ -185,7 +185,7 @@ public class ExtensionLoader_Adaptive_Test {
ExtensionLoader.getExtensionLoader(NoUrlParamExt.class).getAdaptiveExtension();
fail();
} catch (Exception expected) {
- assertThat(expected.getMessage(), containsString("fail to create
adaptive class for interface "));
+ assertThat(expected.getMessage(), containsString("Failed to create
adaptive class for interface "));
assertThat(expected.getMessage(), containsString(": not found url
parameter or url attribute in parameters of method "));
}
}
@@ -218,7 +218,7 @@ public class ExtensionLoader_Adaptive_Test {
ext.echo(holder, "haha");
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Fail to get
extension("));
+ assertThat(expected.getMessage(), containsString("Failed to get
extension"));
}
url = url.addParameter("ext2", "XXX");
@@ -281,7 +281,7 @@ public class ExtensionLoader_Adaptive_Test {
ext.echo(holder, "impl1");
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Fail to get
extension("));
+ assertThat(expected.getMessage(), containsString("Failed to get
extension"));
}
url = url.addParameter("key1", "impl1");
@@ -290,7 +290,7 @@ public class ExtensionLoader_Adaptive_Test {
ext.echo(holder, "haha");
fail();
} catch (IllegalStateException expected) {
- assertThat(expected.getMessage(), containsString("Fail to get
extension(org.apache.dubbo.common.extension.ext2.Ext2) name from url"));
+ assertThat(expected.getMessage(), containsString("Failed to get
extension (org.apache.dubbo.common.extension.ext2.Ext2) name from url"));
}
}
@@ -319,4 +319,4 @@ public class ExtensionLoader_Adaptive_Test {
Ext6Impl2 impl = (Ext6Impl2) ext;
assertNull(impl.getList());
}
-}
\ No newline at end of file
+}