import java.security.SecureClassLoader
import java.lang.ClassLoader
import java.util.Map
import java.nio.charset.Charset

class MirahClassLoader < SecureClassLoader
  def initialize(parent:ClassLoader, class_map:Map)
    super(parent)
    @class_map = class_map
  end

  def findClass(name)
    if @class_map[name]
      bytes = String(@class_map[name]).getBytes "ISO-8859-1"
      defineClass(name, bytes, 0, bytes.length)
    else
      raise ClassNotFoundException.new(name)
    end
  end

  def loadClass(name, resolve)
    cls = findLoadedClass(name)
    if cls.nil?
      if @class_map[name]
        cls = findClass(name)
      else
        cls = super(name, false)
      end
    end

    resolveClass(cls) if resolve

    cls
  end
end