/**
* {@link ClassLoadingStrategy} will be used to configure {@link PluginClassLoader} loading order
- * and contains all possible options supported by {@link PluginClassLoader} where
- * A=Application Source ( load classes from parent classLoader)
- * P=Plugin Source ( load classes from this classloader)
- * D=Dependencies ( load classes from dependencies)
+ * and contains all possible options supported by {@link PluginClassLoader} where:
+ * {@code
+ * A = Application Source (load classes from parent classLoader)
+ * P = Plugin Source (load classes from this classloader)
+ * D = Dependencies (load classes from dependencies)
+ * }
*/
public class ClassLoadingStrategy {
/**
- * application(parent)->plugin->dependencies
+ * application(parent) -> plugin -> dependencies
*/
public static final ClassLoadingStrategy APD = new ClassLoadingStrategy(Arrays.asList(Source.APPLICATION, Source.PLUGIN, Source.DEPENDENCIES));
+
/**
- * application(parent)->dependencies->plugin
+ * application(parent) -> dependencies -> plugin
*/
- public static final ClassLoadingStrategy ADP=new ClassLoadingStrategy(Arrays.asList(Source.APPLICATION,Source.DEPENDENCIES,Source.APPLICATION));
+ public static final ClassLoadingStrategy ADP = new ClassLoadingStrategy(Arrays.asList(Source.APPLICATION, Source.DEPENDENCIES, Source.APPLICATION));
+
/**
- * plugin->application(parent)->dependencies
+ * plugin -> application(parent) -> dependencies
*/
- public static final ClassLoadingStrategy PAD=new ClassLoadingStrategy(Arrays.asList(Source.PLUGIN,Source.APPLICATION,Source.DEPENDENCIES));
+ public static final ClassLoadingStrategy PAD = new ClassLoadingStrategy(Arrays.asList(Source.PLUGIN, Source.APPLICATION, Source.DEPENDENCIES));
+
/**
- * dependencies->application(parent)->plugin
+ * dependencies -> application(parent) -> plugin
*/
- public static final ClassLoadingStrategy DAP=new ClassLoadingStrategy(Arrays.asList(Source.DEPENDENCIES,Source.APPLICATION,Source.PLUGIN));
+ public static final ClassLoadingStrategy DAP = new ClassLoadingStrategy(Arrays.asList(Source.DEPENDENCIES, Source.APPLICATION, Source.PLUGIN));
+
/**
- * dependencies->plugin->application(parent)
+ * dependencies -> plugin -> application(parent)
*/
- public static final ClassLoadingStrategy DPA=new ClassLoadingStrategy(Arrays.asList(Source.DEPENDENCIES,Source.PLUGIN,Source.APPLICATION));
+ public static final ClassLoadingStrategy DPA = new ClassLoadingStrategy(Arrays.asList(Source.DEPENDENCIES, Source.PLUGIN, Source.APPLICATION));
+
/**
- * plugin->dependencies->application(parent)
+ * plugin -> dependencies -> application(parent)
*/
- public static final ClassLoadingStrategy PDA =new ClassLoadingStrategy(Arrays.asList(Source.PLUGIN, Source.DEPENDENCIES, Source.APPLICATION));
-
+ public static final ClassLoadingStrategy PDA = new ClassLoadingStrategy(Arrays.asList(Source.PLUGIN, Source.DEPENDENCIES, Source.APPLICATION));
private final List<Source> sources;
}
public enum Source {
- PLUGIN, APPLICATION,DEPENDENCIES;
+ PLUGIN, APPLICATION, DEPENDENCIES;
}
+
}
this(pluginManager, pluginDescriptor, parent, parentFirst ? ClassLoadingStrategy.APD : ClassLoadingStrategy.PDA);
}
-
/**
* classloading according to {@code classLoadingStrategy}
*/
log.trace("Found loaded class '{}'", className);
return loadedClass;
}
+
for (ClassLoadingStrategy.Source classLoadingSource : classLoadingStrategy.getSources()) {
Class<?> c = null;
try {
c = loadClassFromDependencies(className);
break;
}
- } catch (ClassNotFoundException ignored) {
+ } catch (ClassNotFoundException ignored) {}
- }
if (c != null) {
- log.trace("Found class '{}' in {} classpath", className,classLoadingSource);
+ log.trace("Found class '{}' in {} classpath", className, classLoadingSource);
return c;
} else {
- log.trace("Couldn't find class '{}' in {} classpath", className,classLoadingSource);
+ log.trace("Couldn't find class '{}' in {} classpath", className, classLoadingSource);
}
-
}
+
throw new ClassNotFoundException(className);
}
}
url = findResourceFromDependencies(name);
break;
}
+
if (url != null) {
- log.trace("Found resource '{}' in {} classpath", name,classLoadingSource);
+ log.trace("Found resource '{}' in {} classpath", name, classLoadingSource);
return url;
} else {
- log.trace("Couldn't find resource '{}' in {}.", name,classLoadingSource);
+ log.trace("Couldn't find resource '{}' in {}", name, classLoadingSource);
}
}
- return null;
+ return null;
}
@Override
break;
}
}
- return Collections.enumeration(resources);
+ return Collections.enumeration(resources);
}
protected Class<?> loadClassFromDependencies(String className) {