Anonymous avatar Anonymous committed 25f6135

add support to limit the classes that can be loaded by the reloading class loader

git-svn-id: e221344d-f017-0410-9bd5-d282ab1896d7

Comments (0)

Files changed (1)


+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.Set;
+import java.util.Collections;
+import java.util.Collection;
+import java.util.HashSet;
  * The ReloadingClassLoader uses a delegation mechanism to allow
     private ResourceStore[] stores;
     private ClassLoader delegate;
+    private Set<Pattern> acceptClasses = Collections.emptySet();
     public ReloadingClassLoader(final ClassLoader pParent) {
         parent = pParent;
     public Class loadClass(String name) throws ClassNotFoundException {
-        return delegate.loadClass(name);
+        return isAccepted(name) ? delegate.loadClass(name) : parent.loadClass(name);
     public void setClassAssertionStatus(String className, boolean enabled) {
     public void setPackageAssertionStatus(String packageName, boolean enabled) {
         delegate.setPackageAssertionStatus(packageName, enabled);
+    public void setAccepClasses(Set<Pattern> acceptClasses) {
+        this.acceptClasses = acceptClasses;
+    }
+    protected boolean isAccepted(String className) {
+        if (!this.acceptClasses.isEmpty()) {
+            for (Pattern pattern : acceptClasses) {
+                Matcher matcher = pattern.matcher(className);
+                if (matcher.matches()) {
+                    return true;
+                }
+            }
+            return false;
+        } else
+            return true;
+    }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.