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

eu.stamp_project.testrunner.runner.coverage.MemoryClassLoader Maven / Gradle / Ivy

package eu.stamp_project.testrunner.runner.coverage;

import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashMap;
import java.util.Map;

public class MemoryClassLoader extends URLClassLoader {

    private Map definitions = new HashMap<>();

    public MemoryClassLoader(URL[] urls) {
        super(urls, ClassLoader.getSystemClassLoader());
    }

    public MemoryClassLoader(URL[] urls, ClassLoader parent) {
		super(urls, parent);
	}
    
    /**
     * Add a in-memory representation of a class.
     *
     * @param name  name of the class
     * @param bytes class definition
     */
    public void addDefinition(final String name, final byte[] bytes) {
        definitions.put(name, bytes);
    }

    @Override
    public Class loadClass(final String name)
            throws ClassNotFoundException {
        final byte[] bytes = definitions.get(name);
        try {
            if (bytes != null) {
                return defineClass(name, bytes, 0, bytes.length);
            }
        } catch (java.lang.LinkageError error) {
            return super.loadClass(name, false);
        }
        return super.loadClass(name, false);
    }

	public Map getDefinitions() {
		return definitions;
	}

	public void setDefinitions(Map definitions) {
		this.definitions = definitions;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy