Package railo.runtime.functions.other

Source Code of railo.runtime.functions.other.CreateDynamicProxy

package railo.runtime.functions.other;

import java.io.IOException;

import railo.commons.lang.ClassUtil;
import railo.runtime.Component;
import railo.runtime.PageContext;
import railo.runtime.PageContextImpl;
import railo.runtime.exp.FunctionException;
import railo.runtime.exp.PageException;
import railo.runtime.ext.function.Function;
import railo.runtime.op.Caster;
import railo.runtime.op.Decision;
import railo.runtime.type.util.ListUtil;
import railo.transformer.bytecode.util.JavaProxyFactory;

public class CreateDynamicProxy implements Function {
 
  private static final long serialVersionUID = -1787490871697335220L;

  public static Object call(PageContext pc , Object oCFC,Object oInterfaces) throws PageException {
    try {
      return _call(pc, oCFC, oInterfaces);
    } catch (IOException e) {
      throw Caster.toPageException(e);
    }
  }
 
  public static Object _call(PageContext pc , Object oCFC,Object oInterfaces) throws PageException, IOException {
   
    // Component
    Component cfc;
    if(oCFC instanceof Component)
      cfc= (Component)oCFC;
    else
      cfc=pc.loadComponent(Caster.toString(oCFC));
   
    // interfaces
    String[] strInterfaces;
    if(Decision.isArray(oInterfaces)) {
      strInterfaces=ListUtil.toStringArray(Caster.toArray(oInterfaces));
    }
    else {
      String list = Caster.toString(oInterfaces);
      strInterfaces=ListUtil.listToStringArray(list, ',');
    }
    strInterfaces=ListUtil.trimItems(strInterfaces);
   
   
    ClassLoader cl = ((PageContextImpl)pc).getClassLoader();
    Class[] interfaces=new Class[strInterfaces.length];
    for(int i=0;i<strInterfaces.length;i++){
      interfaces[i]=ClassUtil.loadClass(cl, strInterfaces[i]);
      if(!interfaces[i].isInterface()) throw new FunctionException(pc, "CreateDynamicProxy", 2, "interfaces", "definition ["+strInterfaces[i]+"] is a class and not a interface");
    }
   
    return JavaProxyFactory.createProxy(pc,cfc, null,interfaces);
  }
     
}
TOP

Related Classes of railo.runtime.functions.other.CreateDynamicProxy

TOP
Copyright © 2018 www.massapi.com. 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.