Package com.caucho.loader

Examples of com.caucho.loader.DynamicClassLoader


        _hasCompiler = true;
      } catch (Exception e) {
      }

      try {
  DynamicClassLoader env;
  env = new NonScanDynamicClassLoader(ClassLoader.getSystemClassLoader());

  Path javaHome = Vfs.lookup(System.getProperty("java.home"));
  Path jar = javaHome.lookup("./lib/tools.jar");
  env.addJar(jar);
  jar = javaHome.lookup("../lib/tools.jar");
  env.addJar(jar);
   
  Class.forName("com.sun.tools.javac.Main", false, env);

  _hasCompiler = true;
      } catch (ClassNotFoundException e) {
View Full Code Here


      int status = -1;
     
      Thread thread = Thread.currentThread();
      ClassLoader oldLoader = thread.getContextClassLoader();
     
      DynamicClassLoader env;

      env = new NonScanDynamicClassLoader(ClassLoader.getSystemClassLoader());
     
      Path javaHome = Vfs.lookup(System.getProperty("java.home"));
      Path jar = javaHome.lookup("./lib/tools.jar");
      env.addJar(jar);
      jar = javaHome.lookup("../lib/tools.jar");
      env.addJar(jar);

      // env = _internalLoader;

   
      try {
View Full Code Here

      }

      if (_classLoader != null)
        _classLoader.getNewTempClassLoader();
      else
        new DynamicClassLoader(null);
    } finally {
      thread.setContextClassLoader(oldLoader);
    }
  }
View Full Code Here

                                        boolean isLocal)
  {
    ArrayList<T> services = new ArrayList<T>();

    try {
      DynamicClassLoader loader = _classLoader;

      if (loader == null)
        return services;
     
      String serviceName = "META-INF/services/" + serviceApiClass.getName();
     
      Enumeration<URL> e;
     
      if (isLocal)
        e = loader.findResources(serviceName);
      else
        e = loader.getResources(serviceName);

      while (e.hasMoreElements()) {
        URL url = e.nextElement();

        if (serviceSet.contains(url))
View Full Code Here

    if (_loader == null)
      loader = _systemClassLoader;

    ArrayList<String> pkgList = loadPackageList(pkg);
   
    DynamicClassLoader dynLoader = null;
   
    if (loader instanceof DynamicClassLoader)
      dynLoader = (DynamicClassLoader) loader;

    for (String pkgName : pkgList) {
      try {
        Class<?> cl;
       
        if (dynLoader != null)
          cl = dynLoader.loadClassImpl(pkgName + '.' + name, false);
        else
          cl = Class.forName(pkgName + '.' + name, false, loader);

        if (cl != null)
          return cl;
View Full Code Here

   
    if (! (parentLoader instanceof DynamicClassLoader)) {
      throw new IllegalStateException(parentClass + " must belong to a Resin class loader " + parentLoader);
    }
   
    DynamicClassLoader dynParentLoader
      = (DynamicClassLoader) parentLoader;

    SimpleLoader simpleLoader
      = new SimpleLoader(dynParentLoader, getWorkDir(), fullClassName);
    simpleLoader.init();
View Full Code Here

     
      String cleanName = thisClassName.replace('/', '.');
     
      boolean isPackagePrivate = false;
     
      DynamicClassLoader loader;
     
      if (! Modifier.isPublic(cl.getModifiers())
          && ! Modifier.isProtected(cl.getModifiers())) {
        isPackagePrivate = true;
      }

      if (isPackagePrivate)
        loader = (DynamicClassLoader) cl.getClassLoader();
      else
        loader = (DynamicClassLoader) Thread.currentThread().getContextClassLoader();
     
      try {
        _proxyClass = Class.forName(cleanName, false, loader);
      } catch (ClassNotFoundException e) {
        log.log(Level.FINEST, e.toString(), e);
      }
     
      if (_proxyClass == null) {
        JavaClassLoader jLoader = new JavaClassLoader(cl.getClassLoader());

        JavaClass jClass = new JavaClass(jLoader);
        jClass.setAccessFlags(Modifier.PUBLIC);

        jClass.setWrite(true);

        jClass.setMajor(49);
        jClass.setMinor(0);

        String superClassName;

        if (! cl.isInterface())
          superClassName = typeClassName;
        else
          superClassName = "java/lang/Object";

        jClass.setSuperClass(superClassName);
        jClass.setThisClass(thisClassName);

        for (Class<?> iface : types) {
          if (iface.isInterface())
            jClass.addInterface(iface.getName().replace('.', '/'));
        }
       
        jClass.addInterface(ScopeProxy.class.getName().replace('.', '/'));

        JavaField factoryField =
          jClass.createField("_factory",
                             "Lcom/caucho/config/inject/InjectManager$ReferenceFactory;");
        factoryField.setAccessFlags(Modifier.PRIVATE);

        JavaMethod ctor =
          jClass.createMethod("<init>",
                              "(Lcom/caucho/config/inject/InjectManager$ReferenceFactory;)V");
        ctor.setAccessFlags(Modifier.PUBLIC);

        CodeWriterAttribute code = ctor.createCodeWriter();
        code.setMaxLocals(3);
        code.setMaxStack(4);

        code.pushObjectVar(0);
        code.pushObjectVar(1);
        code.putField(thisClassName, factoryField.getName(),
                      factoryField.getDescriptor());
       
        code.pushObjectVar(0);
        code.invokespecial(superClassName, "<init>", "()V", 1, 0);
        code.addReturn();
        code.close();

        createGetDelegateMethod(jClass);
        createSerialize(jClass);

        for (Method method : getMethods(_types)) {
          if (Modifier.isStatic(method.getModifiers()))
            continue;
          if (Modifier.isFinal(method.getModifiers()))
            continue;

          if (isRemoveMethod(_beanClass, method))
            createRemoveProxyMethod(jClass, method, method.getDeclaringClass().isInterface());
          else
            createProxyMethod(jClass, method, method.getDeclaringClass().isInterface());
        }

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        WriteStream out = Vfs.openWrite(bos);

        jClass.write(out);

        out.close();

        byte[] buffer = bos.toByteArray();

        /*
         * try { out = Vfs.lookup("file:/tmp/caucho/qa/temp.class").openWrite();
         * out.write(buffer, 0, buffer.length); out.close(); } catch
         * (IOException e) { }
         */

        if (isPackagePrivate) {
          // ioc/0517
          _proxyClass = loader.loadClass(cleanName, buffer);
        }
        else {
          ProxyClassLoader proxyLoader = new ProxyClassLoader(loader);
         
          _proxyClass = proxyLoader.loadClass(cleanName, buffer);
View Full Code Here

        _hasCompiler = true;
      } catch (Exception e) {
      }

      try {
        DynamicClassLoader env;
        env = new NonScanDynamicClassLoader(ClassLoader.getSystemClassLoader());

        javaHome = Vfs.lookup(System.getProperty("java.home"));
        Path jar = javaHome.lookup("./lib/tools.jar");
        if (jar.canRead())
          env.addJar(jar);
        jar = javaHome.lookup("../lib/tools.jar");
        if (jar.canRead())
          env.addJar(jar);

        Class.forName("com.sun.tools.javac.Main", false, env);

        _hasCompiler = true;
      } catch (ClassNotFoundException e) {
View Full Code Here

      int status = -1;
     
      Thread thread = Thread.currentThread();
      ClassLoader oldLoader = thread.getContextClassLoader();
     
      DynamicClassLoader env;

      env = new NonScanDynamicClassLoader(ClassLoader.getSystemClassLoader());
     
      Path javaHome = Vfs.lookup(System.getProperty("java.home"));
      Path jar = javaHome.lookup("./lib/tools.jar");
      if (jar.canRead())
        env.addJar(jar);
      jar = javaHome.lookup("../lib/tools.jar");
      if (jar.canRead())
        env.addJar(jar);

      // env = _internalLoader;


      try {
View Full Code Here

     
      String cleanName = thisClassName.replace('/', '.');
     
      boolean isPackagePrivate = false;
     
      DynamicClassLoader loader;
     
      if (! Modifier.isPublic(cl.getModifiers())
          && ! Modifier.isProtected(cl.getModifiers())) {
        isPackagePrivate = true;
      }

      if (isPackagePrivate)
        loader = (DynamicClassLoader) cl.getClassLoader();
      else
        loader = (DynamicClassLoader) Thread.currentThread().getContextClassLoader();
     
      try {
        _proxyClass = (Class<T>) Class.forName(cleanName, false, loader);
      } catch (ClassNotFoundException e) {
        log.log(Level.FINEST, e.toString(), e);
      }
     
      if (_proxyClass != null)
        return;
     
      JavaClassLoader jLoader = new JavaClassLoader(cl.getClassLoader());

      JavaClass jClass = new JavaClass(jLoader);
      jClass.setAccessFlags(Modifier.PUBLIC);

      jClass.setWrite(true);

      jClass.setMajor(49);
      jClass.setMinor(0);

      String superClassName;

      if (! cl.isInterface())
        superClassName = typeClassName;
      else
        superClassName = "java/lang/Object";

      jClass.setSuperClass(superClassName);
      jClass.setThisClass(thisClassName);

      JavaMethod ctor =
        jClass.createMethod("<init>", "()V");
      ctor.setAccessFlags(Modifier.PUBLIC);

      CodeWriterAttribute code = ctor.createCodeWriter();
      code.setMaxLocals(3);
      code.setMaxStack(4);

      code.pushObjectVar(0);
      code.invokespecial(superClassName, "<init>", "()V", 1, 0);
      code.addReturn();
      code.close();

      for (Method method : _cl.getMethods()) {
        if (Modifier.isStatic(method.getModifiers()))
          continue;
        if (Modifier.isFinal(method.getModifiers()))
          continue;
        if (! Modifier.isAbstract(method.getModifiers()))
          continue;

        createStubMethod(jClass, method);
      }

      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      WriteStream out = Vfs.openWrite(bos);

      jClass.write(out);

      out.close();

      byte[] buffer = bos.toByteArray();

      /*
       * try { out = Vfs.lookup("file:/tmp/caucho/qa/temp.class").openWrite();
       * out.write(buffer, 0, buffer.length); out.close(); } catch
       * (IOException e) { }
       */

      if (isPackagePrivate) {
        // ioc/0517
        _proxyClass = (Class<T>) loader.loadClass(cleanName, buffer);
      }
      else {
        ProxyClassLoader proxyLoader = new ProxyClassLoader(loader);

        _proxyClass = (Class<T>) proxyLoader.loadClass(cleanName, buffer);
View Full Code Here

TOP

Related Classes of com.caucho.loader.DynamicClassLoader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.