/*
* Copyright (C) 2005 Joe Walnes.
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 07. March 2005 by Joe Walnes
*/
package com.thoughtworks.xstream.core.util;
/**
* ClassLoader that refers to another ClassLoader, allowing a single instance to be passed around the codebase that
* can later have its destination changed.
*
* @author Joe Walnes
* @author Jörg Schaible
* @since 1.1.1
*/
public class ClassLoaderReference extends ClassLoader {
private transient ClassLoader reference;
public ClassLoaderReference(ClassLoader reference) {
this.reference = reference;
}
public Class loadClass(String name) throws ClassNotFoundException {
return reference.loadClass(name);
}
public ClassLoader getReference() {
return reference;
}
public void setReference(ClassLoader reference) {
this.reference = reference;
}
private Object writeReplace() {
return new Replacement();
}
static class Replacement {
private Object readResolve() {
return new ClassLoaderReference(new CompositeClassLoader());
}
};
}