1. /*
  2. * @(#)ObjectInputStreamWithLoader.java 4.20 04/02/06
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.jmx.mbeanserver;
  8. // Java import
  9. import java.io.ObjectInputStream;
  10. import java.io.InputStream;
  11. import java.io.IOException;
  12. import java.io.StreamCorruptedException;
  13. import java.io.ObjectStreamClass;
  14. import javax.management.* ;
  15. /**
  16. * This class deserializes an object in the context of a specific class loader.
  17. *
  18. * @since 1.5
  19. */
  20. class ObjectInputStreamWithLoader extends ObjectInputStream {
  21. private ClassLoader loader;
  22. /**
  23. * @exception IOException Signals that an I/O exception of some
  24. * sort has occurred.
  25. * @exception StreamCorruptedException The object stream is corrupt.
  26. */
  27. public ObjectInputStreamWithLoader(InputStream in, ClassLoader theLoader)
  28. throws IOException {
  29. super(in);
  30. this.loader = theLoader;
  31. }
  32. protected Class resolveClass(ObjectStreamClass aClass)
  33. throws IOException, ClassNotFoundException {
  34. if (loader == null) {
  35. return super.resolveClass(aClass);
  36. } else {
  37. String name = aClass.getName();
  38. // Query the class loader ...
  39. return Class.forName(name, false, loader);
  40. }
  41. }
  42. }