JRubyObjectInputStream.java

  1. package org.jruby.util;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectStreamClass;
  6. import org.jruby.Ruby;

  7. public class JRubyObjectInputStream extends ObjectInputStream {
  8.     private final Ruby runtime;

  9.     public JRubyObjectInputStream(Ruby runtime, InputStream input) throws IOException {
  10.         super(input);
  11.         this.runtime = runtime;
  12.     }

  13.     protected Class<?> resolveClass(ObjectStreamClass desc)
  14.         throws IOException, ClassNotFoundException
  15.     {
  16.         String name = desc.getName();
  17.         try {
  18.             return Class.forName(name, false, runtime.getJRubyClassLoader());
  19.         } catch (ClassNotFoundException ex) {
  20.             return super.resolveClass(desc);
  21.         }
  22.     }
  23. }