All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.juplo.plugins.hibernate.MutableClassLoader Maven / Gradle / Ivy

The newest version!
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);
  }
  
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy