diff --git a/src/main/java/org/codehaus/classworlds/BytesURLConnection.java b/src/main/java/org/codehaus/classworlds/BytesURLConnection.java index c0f20ad..c42c168 100644 --- a/src/main/java/org/codehaus/classworlds/BytesURLConnection.java +++ b/src/main/java/org/codehaus/classworlds/BytesURLConnection.java @@ -25,7 +25,7 @@ */ @Deprecated public class BytesURLConnection extends URLConnection { - protected byte[] content; + protected final byte[] content; protected int offset; diff --git a/src/main/java/org/codehaus/classworlds/BytesURLStreamHandler.java b/src/main/java/org/codehaus/classworlds/BytesURLStreamHandler.java index b3a1c3b..894adaf 100644 --- a/src/main/java/org/codehaus/classworlds/BytesURLStreamHandler.java +++ b/src/main/java/org/codehaus/classworlds/BytesURLStreamHandler.java @@ -27,7 +27,7 @@ */ @Deprecated public class BytesURLStreamHandler extends URLStreamHandler { - byte[] content; + final byte[] content; int offset; diff --git a/src/main/java/org/codehaus/classworlds/ClassRealm.java b/src/main/java/org/codehaus/classworlds/ClassRealm.java index 5d1e2c5..389b52a 100644 --- a/src/main/java/org/codehaus/classworlds/ClassRealm.java +++ b/src/main/java/org/codehaus/classworlds/ClassRealm.java @@ -60,6 +60,7 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * @author bob mcwhirter * @author Jason van Zyl */ +@SuppressWarnings("rawtypes") @Deprecated public interface ClassRealm { String getId(); diff --git a/src/main/java/org/codehaus/classworlds/ClassRealmAdapter.java b/src/main/java/org/codehaus/classworlds/ClassRealmAdapter.java index b86f35d..27b8cd9 100644 --- a/src/main/java/org/codehaus/classworlds/ClassRealmAdapter.java +++ b/src/main/java/org/codehaus/classworlds/ClassRealmAdapter.java @@ -26,6 +26,7 @@ * * @author Andrew Williams */ +@SuppressWarnings({"UnnecessaryLocalVariable", "DeprecatedIsStillUsed", "rawtypes"}) @Deprecated public class ClassRealmAdapter implements ClassRealm { @@ -35,7 +36,7 @@ public static ClassRealmAdapter getInstance(org.codehaus.plexus.classworlds.real return adapter; } - private org.codehaus.plexus.classworlds.realm.ClassRealm realm; + private final org.codehaus.plexus.classworlds.realm.ClassRealm realm; private ClassRealmAdapter(org.codehaus.plexus.classworlds.realm.ClassRealm newRealm) { this.realm = newRealm; diff --git a/src/main/java/org/codehaus/classworlds/ClassRealmReverseAdapter.java b/src/main/java/org/codehaus/classworlds/ClassRealmReverseAdapter.java index a657ba6..f6eca5d 100644 --- a/src/main/java/org/codehaus/classworlds/ClassRealmReverseAdapter.java +++ b/src/main/java/org/codehaus/classworlds/ClassRealmReverseAdapter.java @@ -26,6 +26,7 @@ * * @author Andrew Williams */ +@SuppressWarnings({"UnnecessaryLocalVariable", "rawtypes"}) @Deprecated public class ClassRealmReverseAdapter extends org.codehaus.plexus.classworlds.realm.ClassRealm { @@ -35,7 +36,7 @@ public static ClassRealmReverseAdapter getInstance(ClassRealm oldRealm) { return adapter; } - private ClassRealm realm; + private final ClassRealm realm; private ClassRealmReverseAdapter(ClassRealm oldRealm) { super(ClassWorldReverseAdapter.getInstance(oldRealm.getWorld()), oldRealm.getId(), oldRealm.getClassLoader()); @@ -100,6 +101,7 @@ public URL getResource(String name) { return realm.getResource(name); } + @SuppressWarnings("unchecked") public Enumeration findResources(String name) throws IOException { return realm.findResources(name); } diff --git a/src/main/java/org/codehaus/classworlds/ClassWorld.java b/src/main/java/org/codehaus/classworlds/ClassWorld.java index 87690dd..3e497ba 100644 --- a/src/main/java/org/codehaus/classworlds/ClassWorld.java +++ b/src/main/java/org/codehaus/classworlds/ClassWorld.java @@ -24,6 +24,7 @@ * * @author Andrew Williams */ +@SuppressWarnings("rawtypes") @Deprecated public class ClassWorld { private ClassWorldAdapter adapter; diff --git a/src/main/java/org/codehaus/classworlds/ClassWorldAdapter.java b/src/main/java/org/codehaus/classworlds/ClassWorldAdapter.java index b77aa72..0bc4af9 100644 --- a/src/main/java/org/codehaus/classworlds/ClassWorldAdapter.java +++ b/src/main/java/org/codehaus/classworlds/ClassWorldAdapter.java @@ -24,6 +24,7 @@ * * @author Andrew Williams */ +@SuppressWarnings("rawtypes") @Deprecated public class ClassWorldAdapter extends ClassWorld { @@ -31,7 +32,7 @@ public static ClassWorldAdapter getInstance(org.codehaus.plexus.classworlds.Clas return new ClassWorldAdapter(newWorld); } - private org.codehaus.plexus.classworlds.ClassWorld world; + private final org.codehaus.plexus.classworlds.ClassWorld world; private ClassWorldAdapter(org.codehaus.plexus.classworlds.ClassWorld newWorld) { super(false); diff --git a/src/main/java/org/codehaus/classworlds/ClassWorldException.java b/src/main/java/org/codehaus/classworlds/ClassWorldException.java index e7b0897..749752d 100644 --- a/src/main/java/org/codehaus/classworlds/ClassWorldException.java +++ b/src/main/java/org/codehaus/classworlds/ClassWorldException.java @@ -59,7 +59,7 @@ public class ClassWorldException extends Exception { /** * The world. */ - private ClassWorld world; + private final ClassWorld world; // ------------------------------------------------------------ // Constructors diff --git a/src/main/java/org/codehaus/classworlds/ClassWorldReverseAdapter.java b/src/main/java/org/codehaus/classworlds/ClassWorldReverseAdapter.java index 736c76f..31c9131 100644 --- a/src/main/java/org/codehaus/classworlds/ClassWorldReverseAdapter.java +++ b/src/main/java/org/codehaus/classworlds/ClassWorldReverseAdapter.java @@ -25,9 +25,10 @@ * * @author Andrew Williams */ +@SuppressWarnings({"unchecked", "rawtypes"}) @Deprecated public class ClassWorldReverseAdapter extends org.codehaus.plexus.classworlds.ClassWorld { - private static HashMap instances = new HashMap(); + private static final HashMap instances = new HashMap(); public static ClassWorldReverseAdapter getInstance(ClassWorld oldWorld) { if (instances.containsKey(oldWorld)) return (ClassWorldReverseAdapter) instances.get(oldWorld); @@ -38,7 +39,7 @@ public static ClassWorldReverseAdapter getInstance(ClassWorld oldWorld) { return adapter; } - private ClassWorld world; + private final ClassWorld world; private ClassWorldReverseAdapter(ClassWorld newWorld) { super(); diff --git a/src/main/java/org/codehaus/classworlds/Configurator.java b/src/main/java/org/codehaus/classworlds/Configurator.java index fe79c5e..5f76e53 100644 --- a/src/main/java/org/codehaus/classworlds/Configurator.java +++ b/src/main/java/org/codehaus/classworlds/Configurator.java @@ -29,7 +29,7 @@ */ @Deprecated public class Configurator { - private ConfiguratorAdapter config; + private final ConfiguratorAdapter config; /** Construct. * @@ -108,6 +108,7 @@ protected void loadGlob(String line, ClassRealm realm) throws MalformedURLExcept * @throws FileNotFoundException If the line does not represent * a valid path element in the filesystem. */ + @SuppressWarnings("RedundantThrows") protected void loadGlob(String line, ClassRealm realm, boolean optionally) throws MalformedURLException, FileNotFoundException { config.loadGlob(line, realm, optionally); @@ -121,6 +122,7 @@ protected void loadGlob(String line, ClassRealm realm, boolean optionally) * @throws ConfigurationException If the property does not * exist or if there is a syntax error. */ + @SuppressWarnings("RedundantThrows") protected String filter(String text) throws ConfigurationException { return config.filter(text); } diff --git a/src/main/java/org/codehaus/classworlds/ConfiguratorAdapter.java b/src/main/java/org/codehaus/classworlds/ConfiguratorAdapter.java index 1731174..3704171 100644 --- a/src/main/java/org/codehaus/classworlds/ConfiguratorAdapter.java +++ b/src/main/java/org/codehaus/classworlds/ConfiguratorAdapter.java @@ -27,19 +27,15 @@ public class ConfiguratorAdapter extends Configurator { public static ConfiguratorAdapter getInstance( org.codehaus.plexus.classworlds.launcher.Configurator newConfig, Launcher launcher) { - ConfiguratorAdapter adapter = new ConfiguratorAdapter(newConfig, launcher); - - return adapter; + return new ConfiguratorAdapter(newConfig, launcher); } public static ConfiguratorAdapter getInstance( org.codehaus.plexus.classworlds.launcher.Configurator newConfig, ClassWorld world) { - ConfiguratorAdapter adapter = new ConfiguratorAdapter(newConfig, world); - - return adapter; + return new ConfiguratorAdapter(newConfig, world); } - private org.codehaus.plexus.classworlds.launcher.Configurator config; + private final org.codehaus.plexus.classworlds.launcher.Configurator config; private ConfiguratorAdapter(org.codehaus.plexus.classworlds.launcher.Configurator config, Launcher launcher) { super(launcher); @@ -55,6 +51,7 @@ public void associateRealms() { config.associateRealms(); } + @SuppressWarnings("DuplicateThrows") public void configureAdapter(InputStream is) throws IOException, MalformedURLException, ConfigurationException, DuplicateRealmException, NoSuchRealmException { diff --git a/src/main/java/org/codehaus/classworlds/DefaultClassRealm.java b/src/main/java/org/codehaus/classworlds/DefaultClassRealm.java index 2f85a5e..d743525 100644 --- a/src/main/java/org/codehaus/classworlds/DefaultClassRealm.java +++ b/src/main/java/org/codehaus/classworlds/DefaultClassRealm.java @@ -29,9 +29,10 @@ import java.net.URL; import java.util.Enumeration; +@SuppressWarnings("rawtypes") @Deprecated public class DefaultClassRealm implements ClassRealm { - private ClassRealmAdapter adapter; + private final ClassRealmAdapter adapter; public DefaultClassRealm(ClassWorld world, String id) { this(world, id, null); diff --git a/src/main/java/org/codehaus/classworlds/DuplicateRealmException.java b/src/main/java/org/codehaus/classworlds/DuplicateRealmException.java index dd2d011..cc8df3f 100644 --- a/src/main/java/org/codehaus/classworlds/DuplicateRealmException.java +++ b/src/main/java/org/codehaus/classworlds/DuplicateRealmException.java @@ -60,7 +60,7 @@ public class DuplicateRealmException extends ClassWorldException { /** * The realm id. */ - private String id; + private final String id; // ------------------------------------------------------------ // Constructors diff --git a/src/main/java/org/codehaus/classworlds/NoSuchRealmException.java b/src/main/java/org/codehaus/classworlds/NoSuchRealmException.java index 861d725..4e388ed 100644 --- a/src/main/java/org/codehaus/classworlds/NoSuchRealmException.java +++ b/src/main/java/org/codehaus/classworlds/NoSuchRealmException.java @@ -60,7 +60,7 @@ public class NoSuchRealmException extends ClassWorldException { /** * The realm id. */ - private String id; + private final String id; // ------------------------------------------------------------ // Constructors diff --git a/src/main/java/org/codehaus/plexus/classworlds/ClassWorld.java b/src/main/java/org/codehaus/plexus/classworlds/ClassWorld.java index 97dc729..55e77fa 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/ClassWorld.java +++ b/src/main/java/org/codehaus/plexus/classworlds/ClassWorld.java @@ -37,7 +37,7 @@ * @author bob mcwhirter */ public class ClassWorld implements Closeable { - private Map realms; + private final Map realms; private final List listeners = new ArrayList<>(); @@ -101,9 +101,10 @@ public synchronized ClassRealm newRealm(String id, ClassLoader classLoader, Pred * Closes all contained class realms. * @since 2.7.0 */ + @SuppressWarnings("RedundantThrows") @Override public synchronized void close() throws IOException { - realms.values().stream().forEach(this::disposeRealm); + realms.values().forEach(this::disposeRealm); realms.clear(); } diff --git a/src/main/java/org/codehaus/plexus/classworlds/ClassWorldException.java b/src/main/java/org/codehaus/plexus/classworlds/ClassWorldException.java index 0dbcd19..e9c43a6 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/ClassWorldException.java +++ b/src/main/java/org/codehaus/plexus/classworlds/ClassWorldException.java @@ -29,7 +29,7 @@ public class ClassWorldException extends Exception { /** * The world. */ - private ClassWorld world; + private final ClassWorld world; // ------------------------------------------------------------ // Constructors diff --git a/src/main/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParser.java b/src/main/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParser.java index 7f9f5b1..4861c09 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParser.java +++ b/src/main/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParser.java @@ -312,6 +312,7 @@ public void parse(InputStream is) * a valid path element in the filesystem. * @throws ConfigurationException will never occur (thrown for backwards compatibility) */ + @SuppressWarnings("RedundantThrows") protected void loadGlob(String line, boolean optionally) throws MalformedURLException, FileNotFoundException, ConfigurationException { File globFile = new File(line); @@ -333,20 +334,12 @@ protected void loadGlob(String line, boolean optionally) final String suffix = localName.substring(starLoc + 1); - File[] matches = dir.listFiles((dir1, name) -> { - if (!name.startsWith(prefix)) { - return false; - } + File[] matches = dir.listFiles((dir1, name) -> name.startsWith(prefix) || name.endsWith(suffix)); - if (!name.endsWith(suffix)) { - return false; + if (matches != null) { + for (File match : matches) { + handler.addLoadFile(match); } - - return true; - }); - - for (File match : matches) { - handler.addLoadFile(match); } } @@ -390,7 +383,7 @@ protected String filter(String text) throws ConfigurationException { propValue = systemProperties.getProperty(propName); /* do our best if we are not running from surefire */ - if (propName.equals("basedir") && (propValue == null || propValue.equals(""))) { + if (propName.equals("basedir") && (propValue == null || propValue.isEmpty())) { propValue = (new File("")).getAbsolutePath(); } diff --git a/src/main/java/org/codehaus/plexus/classworlds/launcher/Launcher.java b/src/main/java/org/codehaus/plexus/classworlds/launcher/Launcher.java index 83c4fcd..a59fb6c 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/launcher/Launcher.java +++ b/src/main/java/org/codehaus/plexus/classworlds/launcher/Launcher.java @@ -315,6 +315,7 @@ public static void main(String[] args) { System.exit(exitCode); } catch (Exception e) { + //noinspection CallToPrintStackTrace e.printStackTrace(); System.exit(100); diff --git a/src/main/java/org/codehaus/plexus/classworlds/realm/ClassRealm.java b/src/main/java/org/codehaus/plexus/classworlds/realm/ClassRealm.java index 4513f99..bbeacee 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/realm/ClassRealm.java +++ b/src/main/java/org/codehaus/plexus/classworlds/realm/ClassRealm.java @@ -16,7 +16,6 @@ * limitations under the License. */ -import java.io.Closeable; import java.io.IOException; import java.io.PrintStream; import java.net.MalformedURLException; @@ -48,20 +47,18 @@ */ public class ClassRealm extends URLClassLoader { - private ClassWorld world; + private final ClassWorld world; - private String id; + private final String id; - private SortedSet foreignImports; + private final SortedSet foreignImports; private SortedSet parentImports; - private Strategy strategy; + private final Strategy strategy; private ClassLoader parentClassLoader; - private static final boolean isParallelCapable = Closeable.class.isAssignableFrom(URLClassLoader.class); - private final ConcurrentMap lockMap; /** @@ -83,13 +80,10 @@ public ClassRealm(ClassWorld world, String id, ClassLoader baseClassLoader) { strategy = StrategyFactory.getStrategy(this); - lockMap = isParallelCapable ? new ConcurrentHashMap<>() : null; - - if (isParallelCapable) { - // We must call super.getClassLoadingLock at least once - // to avoid NPE in super.loadClass. - super.getClassLoadingLock(getClass().getName()); - } + lockMap = new ConcurrentHashMap<>(); + // We must call super.getClassLoadingLock at least once + // to avoid NPE in super.loadClass. + super.getClassLoadingLock(getClass().getName()); } public String getId() { @@ -173,10 +167,8 @@ public ClassRealm getParentRealm() { } public ClassRealm createChildRealm(String id) throws DuplicateRealmException { - ClassRealm childRealm = getWorld().newRealm(id, (ClassLoader) null); - + ClassRealm childRealm = getWorld().newRealm(id, null); childRealm.setParentRealm(this); - return childRealm; } @@ -189,6 +181,7 @@ public void addURL(URL url) { try { url = new URL(urlStr); } catch (MalformedURLException e) { + //noinspection CallToPrintStackTrace e.printStackTrace(); } } @@ -206,14 +199,7 @@ public Class loadClass(String name) throws ClassNotFoundException { } protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { - if (isParallelCapable) { - return unsynchronizedLoadClass(name, resolve); - - } else { - synchronized (this) { - return unsynchronizedLoadClass(name, resolve); - } - } + return unsynchronizedLoadClass(name, resolve); } private Class unsynchronizedLoadClass(String name, boolean resolve) throws ClassNotFoundException { @@ -229,6 +215,7 @@ private Class unsynchronizedLoadClass(String name, boolean resolve) throws Cl // overwrites // https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ClassLoader.html#findClass(java.lang.String,java.lang.String) // introduced in Java9 + @SuppressWarnings("Since15") protected Class findClass(String moduleName, String name) { if (moduleName != null) { return null; @@ -359,21 +346,14 @@ public Class loadClassFromSelf(String name) { } private Object getClassRealmLoadingLock(String name) { - if (isParallelCapable) { - return getClassLoadingLock(name); - } else { - return this; - } + return getClassLoadingLock(name); } @Override protected Object getClassLoadingLock(String name) { - if (isParallelCapable) { - Object newLock = new Object(); - Object lock = lockMap.putIfAbsent(name, newLock); - return (lock == null) ? newLock : lock; - } - return this; + Object newLock = new Object(); + Object lock = lockMap.putIfAbsent(name, newLock); + return (lock == null) ? newLock : lock; } public Class loadClassFromParent(String name) { @@ -459,9 +439,6 @@ public Enumeration loadResourcesFromParent(String name) { } static { - if (isParallelCapable) // Avoid running this method on older jdks - { - registerAsParallelCapable(); - } + registerAsParallelCapable(); } } diff --git a/src/main/java/org/codehaus/plexus/classworlds/realm/DuplicateRealmException.java b/src/main/java/org/codehaus/plexus/classworlds/realm/DuplicateRealmException.java index a596a70..64e68ac 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/realm/DuplicateRealmException.java +++ b/src/main/java/org/codehaus/plexus/classworlds/realm/DuplicateRealmException.java @@ -33,7 +33,7 @@ public class DuplicateRealmException extends ClassWorldException { /** * The realm id. */ - private String id; + private final String id; // ------------------------------------------------------------ // Constructors diff --git a/src/main/java/org/codehaus/plexus/classworlds/realm/Entry.java b/src/main/java/org/codehaus/plexus/classworlds/realm/Entry.java index 94a0366..1bc4a44 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/realm/Entry.java +++ b/src/main/java/org/codehaus/plexus/classworlds/realm/Entry.java @@ -82,7 +82,7 @@ boolean matches(String name) { } return pkgName.length() == pkg.length() - 2 && pkg.regionMatches(0, pkgName, 0, pkgName.length()); - } else if (pkg.length() > 0) { + } else if (!pkg.isEmpty()) { if (name.indexOf('/') < 0) { // a binary class name, e.g. java.lang.Object @@ -93,7 +93,8 @@ boolean matches(String name) { } else if (name.charAt(pkg.length()) == '.') { // prefix match of package name return true; - } else if (name.charAt(pkg.length()) == '$') { + } else //noinspection RedundantIfStatement + if (name.charAt(pkg.length()) == '$') { // prefix match of enclosing type return true; } @@ -115,7 +116,8 @@ boolean matches(String name) { } else if (name.charAt(pkg.length()) == '$') { // prefix match of nested class file return true; - } else if (name.length() == pkg.length() + 6 && name.endsWith(".class")) { + } else //noinspection RedundantIfStatement + if (name.length() == pkg.length() + 6 && name.endsWith(".class")) { // exact match of class file return true; } diff --git a/src/main/java/org/codehaus/plexus/classworlds/realm/NoSuchRealmException.java b/src/main/java/org/codehaus/plexus/classworlds/realm/NoSuchRealmException.java index bedcb1d..e0c80fd 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/realm/NoSuchRealmException.java +++ b/src/main/java/org/codehaus/plexus/classworlds/realm/NoSuchRealmException.java @@ -33,7 +33,7 @@ public class NoSuchRealmException extends ClassWorldException { /** * The realm id. */ - private String id; + private final String id; // ------------------------------------------------------------ // Constructors diff --git a/src/main/java/org/codehaus/plexus/classworlds/strategy/AbstractStrategy.java b/src/main/java/org/codehaus/plexus/classworlds/strategy/AbstractStrategy.java index 7f610b7..30e8887 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/strategy/AbstractStrategy.java +++ b/src/main/java/org/codehaus/plexus/classworlds/strategy/AbstractStrategy.java @@ -30,7 +30,7 @@ */ public abstract class AbstractStrategy implements Strategy { - protected ClassRealm realm; + protected final ClassRealm realm; public AbstractStrategy(ClassRealm realm) { this.realm = realm; diff --git a/src/main/java/org/codehaus/plexus/classworlds/strategy/OsgiBundleStrategy.java b/src/main/java/org/codehaus/plexus/classworlds/strategy/OsgiBundleStrategy.java index 24b491a..f555fde 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/strategy/OsgiBundleStrategy.java +++ b/src/main/java/org/codehaus/plexus/classworlds/strategy/OsgiBundleStrategy.java @@ -68,6 +68,7 @@ public URL getResource(String name) { return resource; } + @SuppressWarnings("RedundantThrows") public Enumeration getResources(String name) throws IOException { Enumeration imports = realm.loadResourcesFromImport(name); Enumeration self = realm.loadResourcesFromSelf(name); diff --git a/src/main/java/org/codehaus/plexus/classworlds/strategy/ParentFirstStrategy.java b/src/main/java/org/codehaus/plexus/classworlds/strategy/ParentFirstStrategy.java index 7961ae1..cd21b60 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/strategy/ParentFirstStrategy.java +++ b/src/main/java/org/codehaus/plexus/classworlds/strategy/ParentFirstStrategy.java @@ -61,6 +61,7 @@ public URL getResource(String name) { return resource; } + @SuppressWarnings("RedundantThrows") public Enumeration getResources(String name) throws IOException { Enumeration imports = realm.loadResourcesFromImport(name); Enumeration parent = realm.loadResourcesFromParent(name); diff --git a/src/main/java/org/codehaus/plexus/classworlds/strategy/SelfFirstStrategy.java b/src/main/java/org/codehaus/plexus/classworlds/strategy/SelfFirstStrategy.java index 27adaf6..8bc7a9e 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/strategy/SelfFirstStrategy.java +++ b/src/main/java/org/codehaus/plexus/classworlds/strategy/SelfFirstStrategy.java @@ -61,6 +61,7 @@ public URL getResource(String name) { return resource; } + @SuppressWarnings("RedundantThrows") public Enumeration getResources(String name) throws IOException { Enumeration imports = realm.loadResourcesFromImport(name); Enumeration self = realm.loadResourcesFromSelf(name); diff --git a/src/main/java/org/codehaus/plexus/classworlds/strategy/Strategy.java b/src/main/java/org/codehaus/plexus/classworlds/strategy/Strategy.java index 95efccf..145bfc9 100644 --- a/src/main/java/org/codehaus/plexus/classworlds/strategy/Strategy.java +++ b/src/main/java/org/codehaus/plexus/classworlds/strategy/Strategy.java @@ -32,6 +32,7 @@ public interface Strategy { URL getResource(String name); + @SuppressWarnings("RedundantThrows") Enumeration getResources(String name) throws IOException; ClassRealm getRealm(); diff --git a/src/test/java/org/codehaus/plexus/classworlds/TestUtil.java b/src/test/java/org/codehaus/plexus/classworlds/TestUtil.java index 260f44d..773ea8f 100644 --- a/src/test/java/org/codehaus/plexus/classworlds/TestUtil.java +++ b/src/test/java/org/codehaus/plexus/classworlds/TestUtil.java @@ -43,7 +43,7 @@ public static String getBasedir() { String basedir = System.getProperty("basedir"); /* do our best if we are not running from surefire */ - if (basedir == null || basedir.length() <= 0) { + if (basedir == null || basedir.isEmpty()) { basedir = (new File("")).getAbsolutePath(); } diff --git a/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParserTest.java b/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParserTest.java index 42fc1ed..7495d70 100644 --- a/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParserTest.java +++ b/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfigurationParserTest.java @@ -9,7 +9,7 @@ class ConfigurationParserTest extends AbstractClassWorldsTestCase { - ConfigurationParser configurator = new ConfigurationParser(null, System.getProperties()); + final ConfigurationParser configurator = new ConfigurationParser(null, System.getProperties()); @Test void testFilter_Unterminated() { diff --git a/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfiguratorTest.java b/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfiguratorTest.java index ddbd86a..d6718f9 100644 --- a/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfiguratorTest.java +++ b/src/test/java/org/codehaus/plexus/classworlds/launcher/ConfiguratorTest.java @@ -303,6 +303,7 @@ void testSet_Using_Filtered_Default() throws Exception { assertEquals(System.getProperty("user.home") + "/m2", System.getProperty("set.using.filtered.default")); } + @SuppressWarnings("OptionalGetWithoutIsPresent") @Test void testFromFromFrom() throws Exception { this.configurator.configure(getConfigPath("valid-from-from-from.conf")); @@ -343,6 +344,7 @@ private FileInputStream getConfigPath(String name) throws Exception { private void assertArrayContains(URL[] array, URL url) { for (URL value : array) { + //noinspection UrlHashCode if (url.equals(value)) { return; } diff --git a/src/test/java/org/codehaus/plexus/classworlds/realm/DefaultClassRealmTest.java b/src/test/java/org/codehaus/plexus/classworlds/realm/DefaultClassRealmTest.java index 965edc8..7751a68 100644 --- a/src/test/java/org/codehaus/plexus/classworlds/realm/DefaultClassRealmTest.java +++ b/src/test/java/org/codehaus/plexus/classworlds/realm/DefaultClassRealmTest.java @@ -106,60 +106,58 @@ void testLoadNonExistentClass() { @Test void testImport() throws Exception { - ClassWorld world = new ClassWorld(); - - ClassRealm r0 = world.newRealm("r0"); - - ClassRealm r1 = world.newRealm("r1"); - - r0.addURL(getJarUrl("component0-1.0.jar")); - - r1.importFrom("r0", "org.codehaus.plexus"); - - loadClass(r1, "org.codehaus.plexus.Component0"); + try (ClassWorld world = new ClassWorld()) { + ClassRealm r0 = world.newRealm("r0"); + ClassRealm r1 = world.newRealm("r1"); + r0.addURL(getJarUrl("component0-1.0.jar")); + r1.importFrom("r0", "org.codehaus.plexus"); + loadClass(r1, "org.codehaus.plexus.Component0"); + } } @Test void testParentImport() throws Exception { - ClassWorld world = new ClassWorld(); + try (ClassWorld world = new ClassWorld()) { - ClassRealm parent = world.newRealm("parent"); + ClassRealm parent = world.newRealm("parent"); - ClassRealm child = world.newRealm("child"); + ClassRealm child = world.newRealm("child"); - parent.addURL(getJarUrl("component0-1.0.jar")); + parent.addURL(getJarUrl("component0-1.0.jar")); - child.setParentRealm(parent); + child.setParentRealm(parent); - Class type = loadClass(child, "org.codehaus.plexus.Component0"); + Class type = loadClass(child, "org.codehaus.plexus.Component0"); - child.importFromParent("non-existing"); + child.importFromParent("non-existing"); - assertSame(null, loadClassOrNull(child, "org.codehaus.plexus.Component0")); + assertSame(null, loadClassOrNull(child, "org.codehaus.plexus.Component0")); - child.importFromParent("org.codehaus.plexus"); + child.importFromParent("org.codehaus.plexus"); - assertSame(type, loadClass(child, "org.codehaus.plexus.Component0")); + assertSame(type, loadClass(child, "org.codehaus.plexus.Component0")); + } } @Test void testLoadClassFromBaseClassLoaderBeforeSelf() throws Exception { - ClassWorld world = new ClassWorld(); + try (ClassWorld world = new ClassWorld()) { - ClassRealm base = world.newRealm("base"); + ClassRealm base = world.newRealm("base"); - base.addURL(getJarUrl("a.jar")); + base.addURL(getJarUrl("a.jar")); - ClassRealm child = world.newRealm("child", base); + ClassRealm child = world.newRealm("child", base); - child.addURL(getJarUrl("a.jar")); + child.addURL(getJarUrl("a.jar")); - Class baseClass = loadClass(base, "a.A"); - Class childClass = loadClass(child, "a.A"); + Class baseClass = loadClass(base, "a.A"); + Class childClass = loadClass(child, "a.A"); - assertSame(base, baseClass.getClassLoader()); - assertSame(base, childClass.getClassLoader()); - assertSame(baseClass, childClass); + assertSame(base, baseClass.getClassLoader()); + assertSame(base, childClass.getClassLoader()); + assertSame(baseClass, childClass); + } } @Test @@ -196,29 +194,31 @@ void testMalformedResource() throws Exception { mainRealm.addURL(jarUrl); - ClassLoader officialClassLoader = new URLClassLoader(new URL[] {jarUrl}); + try (URLClassLoader officialClassLoader = new URLClassLoader(new URL[] {jarUrl})) { - String resource = "META-INF/plexus/components.xml"; + String resource = "META-INF/plexus/components.xml"; - assertNotNull(mainRealm.getResource(resource)); - assertNotNull(officialClassLoader.getResource(resource)); + assertNotNull(mainRealm.getResource(resource)); + assertNotNull(officialClassLoader.getResource(resource)); - /* - * NOTE: Resource names with a leading slash are invalid when passed to a class loader and must not be found! - * One can use a leading slash in Class.getResource() but not in ClassLoader.getResource(). - */ + /* + * NOTE: Resource names with a leading slash are invalid when passed to a class loader and must not be found! + * One can use a leading slash in Class.getResource() but not in ClassLoader.getResource(). + */ - assertSame(null, mainRealm.getResource("/" + resource)); - assertSame(null, officialClassLoader.getResource("/" + resource)); + assertSame(null, mainRealm.getResource("/" + resource)); + assertSame(null, officialClassLoader.getResource("/" + resource)); - /* - * For backward-compat, legacy class realms have to support leading slashes. - */ + /* + * For backward-compat, legacy class realms have to support leading slashes. + */ - org.codehaus.classworlds.ClassRealm legacyRealm = ClassRealmAdapter.getInstance(mainRealm); - assertNotNull(legacyRealm.getResource("/" + resource)); - assertNotNull(legacyRealm.getResourceAsStream("/" + resource)); - assertTrue(legacyRealm.findResources("/" + resource).hasMoreElements()); + @SuppressWarnings("deprecation") + org.codehaus.classworlds.ClassRealm legacyRealm = ClassRealmAdapter.getInstance(mainRealm); + assertNotNull(legacyRealm.getResource("/" + resource)); + assertNotNull(legacyRealm.getResourceAsStream("/" + resource)); + assertTrue(legacyRealm.findResources("/" + resource).hasMoreElements()); + } } @Test diff --git a/src/test/java/org/codehaus/plexus/classworlds/realm/EntryTest.java b/src/test/java/org/codehaus/plexus/classworlds/realm/EntryTest.java index c00bcdc..9d03670 100644 --- a/src/test/java/org/codehaus/plexus/classworlds/realm/EntryTest.java +++ b/src/test/java/org/codehaus/plexus/classworlds/realm/EntryTest.java @@ -15,6 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import java.io.IOException; + import org.codehaus.plexus.classworlds.AbstractClassWorldsTestCase; import org.codehaus.plexus.classworlds.ClassWorld; import org.junit.jupiter.api.Test; @@ -30,139 +32,149 @@ class EntryTest extends AbstractClassWorldsTestCase { @Test void testCompareTo() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry1 = new Entry(r, "org.test"); - Entry entry2 = new Entry(r, "org.test.impl"); + Entry entry1 = new Entry(r, "org.test"); + Entry entry2 = new Entry(r, "org.test.impl"); - assertTrue(entry1.compareTo(entry2) > 0, "org.test > org.test.impl"); + assertTrue(entry1.compareTo(entry2) > 0, "org.test > org.test.impl"); + } } /** * Tests the equality is realm independant */ @Test - void testEquals() throws DuplicateRealmException { - ClassWorld cw = new ClassWorld(); - ClassRealm r1 = cw.newRealm("test1"); - ClassRealm r2 = cw.newRealm("test2"); + void testEquals() throws DuplicateRealmException, IOException { + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r1 = cw.newRealm("test1"); + ClassRealm r2 = cw.newRealm("test2"); - Entry entry1 = new Entry(r1, "org.test"); - Entry entry2 = new Entry(r2, "org.test"); + Entry entry1 = new Entry(r1, "org.test"); + Entry entry2 = new Entry(r2, "org.test"); - assertEquals(entry1, entry2, "entry1 == entry2"); - assertEquals(entry1.hashCode(), entry2.hashCode(), "entry1.hashCode() == entry2.hashCode()"); + assertEquals(entry1, entry2, "entry1 == entry2"); + assertEquals(entry1.hashCode(), entry2.hashCode(), "entry1.hashCode() == entry2.hashCode()"); + } } @Test void testMatchesClassByPackageImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, "org.test"); + Entry entry = new Entry(r, "org.test"); - assertTrue(entry.matches("org.test.MyClass")); - assertTrue(entry.matches("org.test.MyClass$NestedClass")); - assertTrue(entry.matches("org.test.MyClassUtils")); - assertTrue(entry.matches("org.test.impl.MyClass")); - assertFalse(entry.matches("org.tests.AnotherClass")); + assertTrue(entry.matches("org.test.MyClass")); + assertTrue(entry.matches("org.test.MyClass$NestedClass")); + assertTrue(entry.matches("org.test.MyClassUtils")); + assertTrue(entry.matches("org.test.impl.MyClass")); + assertFalse(entry.matches("org.tests.AnotherClass")); + } } @Test void testMatchesClassByClassImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, "org.test.MyClass"); + Entry entry = new Entry(r, "org.test.MyClass"); - assertTrue(entry.matches("org.test.MyClass")); - assertTrue(entry.matches("org.test.MyClass$NestedClass")); - assertFalse(entry.matches("org.test.MyClassUtils")); - assertFalse(entry.matches("org.test.AnotherClass")); + assertTrue(entry.matches("org.test.MyClass")); + assertTrue(entry.matches("org.test.MyClass$NestedClass")); + assertFalse(entry.matches("org.test.MyClassUtils")); + assertFalse(entry.matches("org.test.AnotherClass")); + } } @Test void testMatchesResourceByPackageImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, "org.test"); + Entry entry = new Entry(r, "org.test"); - assertTrue(entry.matches("org/test/MyClass.class")); - assertTrue(entry.matches("org/test/MyClass$NestedClass.class")); - assertTrue(entry.matches("org/test/MyClasses.properties")); - assertTrue(entry.matches("org/test/impl/MyClass.class")); - assertFalse(entry.matches("org/tests/AnotherClass.class")); + assertTrue(entry.matches("org/test/MyClass.class")); + assertTrue(entry.matches("org/test/MyClass$NestedClass.class")); + assertTrue(entry.matches("org/test/MyClasses.properties")); + assertTrue(entry.matches("org/test/impl/MyClass.class")); + assertFalse(entry.matches("org/tests/AnotherClass.class")); + } } @Test void testMatchesResourceByClassImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, "org.test.MyClass"); + Entry entry = new Entry(r, "org.test.MyClass"); - assertTrue(entry.matches("org/test/MyClass.class")); - assertTrue(entry.matches("org/test/MyClass$NestedClass.class")); - assertFalse(entry.matches("org/test/MyClass.properties")); - assertFalse(entry.matches("org/test/AnotherClass")); + assertTrue(entry.matches("org/test/MyClass.class")); + assertTrue(entry.matches("org/test/MyClass$NestedClass.class")); + assertFalse(entry.matches("org/test/MyClass.properties")); + assertFalse(entry.matches("org/test/AnotherClass")); + } } @Test void testMatchesAllImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, ""); + Entry entry = new Entry(r, ""); - assertTrue(entry.matches("org.test.MyClass")); - assertTrue(entry.matches("org.test.MyClass$NestedClass")); - assertTrue(entry.matches("org/test/MyClass.class")); - assertTrue(entry.matches("org/test/MyClass.properties")); + assertTrue(entry.matches("org.test.MyClass")); + assertTrue(entry.matches("org.test.MyClass$NestedClass")); + assertTrue(entry.matches("org/test/MyClass.class")); + assertTrue(entry.matches("org/test/MyClass.properties")); + } } @Test void testMatchesResourceByResourceImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry1 = new Entry(r, "some.properties"); + Entry entry1 = new Entry(r, "some.properties"); - assertTrue(entry1.matches("some.properties")); - assertFalse(entry1.matches("other.properties")); + assertTrue(entry1.matches("some.properties")); + assertFalse(entry1.matches("other.properties")); - Entry entry2 = new Entry(r, "org/test/some.properties"); + Entry entry2 = new Entry(r, "org/test/some.properties"); - assertTrue(entry2.matches("org/test/some.properties")); - assertFalse(entry2.matches("org/test/other.properties")); + assertTrue(entry2.matches("org/test/some.properties")); + assertFalse(entry2.matches("org/test/other.properties")); + } } @Test void testMatchesClassByExactPackageImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, "org.test.*"); + Entry entry = new Entry(r, "org.test.*"); - assertTrue(entry.matches("org.test.MyClass")); - assertTrue(entry.matches("org.test.MyClass$NestedClass")); - assertTrue(entry.matches("org.test.MyClassUtils")); - assertFalse(entry.matches("org.test.impl.MyClass")); - assertFalse(entry.matches("org.tests.AnotherClass")); + assertTrue(entry.matches("org.test.MyClass")); + assertTrue(entry.matches("org.test.MyClass$NestedClass")); + assertTrue(entry.matches("org.test.MyClassUtils")); + assertFalse(entry.matches("org.test.impl.MyClass")); + assertFalse(entry.matches("org.tests.AnotherClass")); + } } @Test void testMatchesResourceByExactPackageImport() throws Exception { - ClassWorld cw = new ClassWorld(); - ClassRealm r = cw.newRealm("test1"); + try (ClassWorld cw = new ClassWorld()) { + ClassRealm r = cw.newRealm("test1"); - Entry entry = new Entry(r, "org.test.*"); + Entry entry = new Entry(r, "org.test.*"); - assertTrue(entry.matches("org/test/MyClass.class")); - assertTrue(entry.matches("org/test/MyClass$NestedClass.class")); - assertTrue(entry.matches("org/test/MyClasses.properties")); - assertFalse(entry.matches("org/test/impl/MyClass.class")); - assertFalse(entry.matches("org/tests/AnotherClass.class")); + assertTrue(entry.matches("org/test/MyClass.class")); + assertTrue(entry.matches("org/test/MyClass$NestedClass.class")); + assertTrue(entry.matches("org/test/MyClasses.properties")); + assertFalse(entry.matches("org/test/impl/MyClass.class")); + assertFalse(entry.matches("org/tests/AnotherClass.class")); + } } } diff --git a/src/test/java/org/codehaus/plexus/classworlds/strategy/StrategyTest.java b/src/test/java/org/codehaus/plexus/classworlds/strategy/StrategyTest.java index 89fbf7f..658049d 100644 --- a/src/test/java/org/codehaus/plexus/classworlds/strategy/StrategyTest.java +++ b/src/test/java/org/codehaus/plexus/classworlds/strategy/StrategyTest.java @@ -41,6 +41,7 @@ class StrategyTest extends AbstractClassWorldsTestCase { @BeforeEach public void setUp() throws Exception { + //noinspection resource this.realm = new ClassWorld().newRealm("realm"); this.strategy = this.realm.getStrategy(); realm.addURL(getJarUrl("component0-1.0.jar"));