X-Git-Url: https://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FMutableClassLoader.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FMutableClassLoader.java;h=117cbe936478db0c4f71e8f24ab8ff4b37ad59c8;hp=0000000000000000000000000000000000000000;hb=3a7590b8862c3be691b05110f423865f6674f6f6;hpb=23668ccaa93bfbc583c1697214bae116bd9f4ef6 diff --git a/src/main/java/de/juplo/plugins/hibernate/MutableClassLoader.java b/src/main/java/de/juplo/plugins/hibernate/MutableClassLoader.java new file mode 100644 index 00000000..117cbe93 --- /dev/null +++ b/src/main/java/de/juplo/plugins/hibernate/MutableClassLoader.java @@ -0,0 +1,102 @@ +package de.juplo.plugins.hibernate; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.LinkedHashSet; +import org.apache.maven.plugin.logging.Log; + + +/** + * + * @author kai + */ +public class MutableClassLoader extends ClassLoader +{ + private URLClassLoader loader; + private Log log; + + + public MutableClassLoader(LinkedHashSet urls, Log log) + { + if (log.isDebugEnabled()) + for (URL url : urls) + log.debug(url.toString()); + loader = + new URLClassLoader( + urls.toArray(new URL[urls.size()]), + getClass().getClassLoader() + ); + this.log = log; + } + + + public MutableClassLoader add(LinkedHashSet urls) + { + LinkedHashSet old = + new LinkedHashSet(Arrays.asList(loader.getURLs())); + old.addAll(urls); + if (log.isDebugEnabled()) + for (URL url : urls) + log.debug(url.toString()); + loader = + new URLClassLoader( + old.toArray(new URL[urls.size()]), + getClass().getClassLoader() + ); + return this; + } + + + @Override + public void clearAssertionStatus() + { + loader.clearAssertionStatus(); + } + + @Override + public void setClassAssertionStatus(String className, boolean enabled) + { + loader.setClassAssertionStatus(className, enabled); + } + + @Override + public void setPackageAssertionStatus(String packageName, boolean enabled) + { + loader.setPackageAssertionStatus(packageName, enabled); + } + + @Override + public void setDefaultAssertionStatus(boolean enabled) + { + loader.setDefaultAssertionStatus(enabled); + } + + @Override + public InputStream getResourceAsStream(String name) + { + return loader.getResourceAsStream(name); + } + + @Override + public Enumeration getResources(String name) throws IOException + { + return loader.getResources(name); + } + + @Override + public URL getResource(String name) + { + return loader.getResource(name); + } + + @Override + public Class loadClass(String name) throws ClassNotFoundException + { + return loader.loadClass(name); + } + +}