|
@@ -29,8 +29,7 @@ import org.slf4j.LoggerFactory;
|
|
|
*/
|
|
|
public class ExtensionLoader<T> {
|
|
|
|
|
|
- private static final Logger logger = LoggerFactory
|
|
|
- .getLogger(ExtensionLoader.class);
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(ExtensionLoader.class);
|
|
|
|
|
|
private static final String SERVICES_DIRECTORY = "META-INF/services/";
|
|
|
|
|
@@ -38,8 +37,7 @@ public class ExtensionLoader<T> {
|
|
|
|
|
|
private static final String DEFAULT_CLASSLOADER_POLICY = "internal";
|
|
|
|
|
|
- private static final Pattern NAME_SEPARATOR = Pattern
|
|
|
- .compile("\\s*[,]+\\s*");
|
|
|
+ private static final Pattern NAME_SEPARATOR = Pattern.compile("\\s*[,]+\\s*");
|
|
|
|
|
|
private static final ConcurrentMap<Class<?>, ExtensionLoader<?>> EXTENSION_LOADERS = new ConcurrentHashMap<>();
|
|
|
|
|
@@ -180,8 +178,7 @@ 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);
|
|
|
+ + ") could not be instantiated: " + t.getMessage(), t);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -201,8 +198,7 @@ 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);
|
|
|
+ + ") could not be instantiated: " + t.getMessage(), t);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -268,8 +264,10 @@ public class ExtensionLoader<T> {
|
|
|
Map<String, Class<?>> extensionClasses = new HashMap<>();
|
|
|
|
|
|
if (spiDir != null && standbyDir != null) {
|
|
|
- // 1. plugin folder,customized extension classLoader (jar_dir/plugin)
|
|
|
- String dir = File.separator + this.getJarDirectoryPath() + spiDir; // + "plugin";
|
|
|
+ // 1. plugin folder,customized extension classLoader
|
|
|
+ // (jar_dir/plugin)
|
|
|
+ String dir = File.separator + this.getJarDirectoryPath() + spiDir; // +
|
|
|
+ // "plugin";
|
|
|
|
|
|
File externalLibDir = new File(dir);
|
|
|
if (!externalLibDir.exists()) {
|
|
@@ -326,8 +324,7 @@ public class ExtensionLoader<T> {
|
|
|
try {
|
|
|
BufferedReader reader = null;
|
|
|
try {
|
|
|
- reader = new BufferedReader(
|
|
|
- new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
|
|
|
+ reader = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
|
|
|
String line = null;
|
|
|
while ((line = reader.readLine()) != null) {
|
|
|
final int ci = line.indexOf('#');
|
|
@@ -347,10 +344,12 @@ public class ExtensionLoader<T> {
|
|
|
// Class.forName(line, true,
|
|
|
// classLoader);
|
|
|
if (!type.isAssignableFrom(clazz)) {
|
|
|
- throw new IllegalStateException(
|
|
|
- "Error when load extension class(interface: " + type
|
|
|
- + ", class line: " + clazz.getName()
|
|
|
- + "), class " + clazz.getName()
|
|
|
+ throw new IllegalStateException("Error when load extension class(interface: "
|
|
|
+ + type
|
|
|
+ + ", class line: "
|
|
|
+ + clazz.getName()
|
|
|
+ + "), class "
|
|
|
+ + clazz.getName()
|
|
|
+ "is not subtype of interface.");
|
|
|
} else {
|
|
|
try {
|
|
@@ -368,9 +367,9 @@ public class ExtensionLoader<T> {
|
|
|
extensionClasses.put(n, clazz);
|
|
|
} else if (c != clazz) {
|
|
|
cachedNames.remove(clazz);
|
|
|
- throw new IllegalStateException(
|
|
|
- "Duplicate extension " + type.getName() + " name "
|
|
|
- + n + " on "
|
|
|
+ throw new IllegalStateException("Duplicate extension "
|
|
|
+ + type.getName()
|
|
|
+ + " name " + n + " on "
|
|
|
+ c.getName() + " and "
|
|
|
+ clazz.getName());
|
|
|
}
|
|
@@ -380,9 +379,12 @@ public class ExtensionLoader<T> {
|
|
|
}
|
|
|
}
|
|
|
} catch (Throwable t) {
|
|
|
- IllegalStateException e = new IllegalStateException(
|
|
|
- "Failed to load extension class(interface: " + type + ", class line: "
|
|
|
- + line + ") in " + url
|
|
|
+ IllegalStateException e = new IllegalStateException("Failed to load extension class(interface: "
|
|
|
+ + type
|
|
|
+ + ", class line: "
|
|
|
+ + line
|
|
|
+ + ") in "
|
|
|
+ + url
|
|
|
+ ", cause: "
|
|
|
+ t.getMessage(),
|
|
|
t);
|
|
@@ -397,15 +399,13 @@ public class ExtensionLoader<T> {
|
|
|
}
|
|
|
} catch (Throwable t) {
|
|
|
logger.error("Exception when load extension class(interface: " + type + ", class file: " + url
|
|
|
- + ") in " + url,
|
|
|
- t);
|
|
|
+ + ") in " + url, t);
|
|
|
}
|
|
|
} // end of while urls
|
|
|
}
|
|
|
} catch (Throwable t) {
|
|
|
- logger.error(
|
|
|
- "Exception when load extension class(interface: " + type + ", description file: " + fileName + ").",
|
|
|
- t);
|
|
|
+ logger.error("Exception when load extension class(interface: " + type + ", description file: " + fileName
|
|
|
+ + ").", t);
|
|
|
}
|
|
|
}
|
|
|
|