Package railo.runtime.gateway

Source Code of railo.runtime.gateway.CFCGateway

package railo.runtime.gateway;

import java.util.Map;

import railo.commons.lang.StringUtil;
import railo.runtime.exp.PageException;
import railo.runtime.gateway.proxy.GatewayProFactory;
import railo.runtime.op.Caster;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;

public class CFCGateway implements GatewayPro {
 
  //private static final Object OBJ = new Object();
  //private Component _cfc;
  private String id;
  private int state=GatewayPro.STOPPED;
  private String cfcPath;
  //private Config config;
  //private String requestURI;
  //private Resource cfcDirectory;
  private GatewayEngineImpl engine;

  public CFCGateway(String cfcPath) {
    this.cfcPath=cfcPath;
  }

  @Override
  public void init(GatewayEnginePro engine,String id, String cfcPath, Map config) throws GatewayException {
    this.engine=GatewayProFactory.toGatewayEngineImpl(engine);
    this.id=id;
   
    //requestURI=engine.toRequestURI(cfcPath);
    Struct args=new StructImpl(StructImpl.TYPE_LINKED);
    args.setEL("id", id);
    args.setEL("config", Caster.toStruct(config,null,false));
    if(!StringUtil.isEmpty(cfcPath)){
      try {
        args.setEL("listener", this.engine.getComponent(cfcPath,id));
      } catch (PageException e) {
        engine.log(this,GatewayEnginePro.LOGLEVEL_ERROR, e.getMessage());
      }
    }
   
    try {
      callOneWay("init",args);
    } catch (PageException pe) {
     
      engine.log(this,GatewayEnginePro.LOGLEVEL_ERROR, pe.getMessage());
      //throw new PageGatewayException(pe);
    }
   
  }

  @Override
  public void doRestart() throws GatewayException {

    engine.log(this,GatewayEnginePro.LOGLEVEL_INFO,"restart");
    Struct args=new StructImpl();
    try{
      boolean has=callOneWay("restart",args);
      if(!has){
        if(callOneWay("stop",args)){
          //engine.clear(cfcPath,id);
          callOneWay("start",args);
        }
      }
    }
    catch(PageException pe){
      throw new PageGatewayException(pe);
    }
   
  }

  @Override
  public void doStart() throws GatewayException {
    engine.log(this,GatewayEnginePro.LOGLEVEL_INFO,"start");
    Struct args=new StructImpl();
    state=STARTING;
    try{
      callOneWay("start",args);
      engine.log(this,GatewayEnginePro.LOGLEVEL_INFO,"running");
      state=RUNNING;
    }
    catch(PageException pe){
      state=FAILED;
      throw new PageGatewayException(pe);
    }
  }

  @Override
  public void doStop() throws GatewayException {

    engine.log(this,GatewayEnginePro.LOGLEVEL_INFO,"stop");
    Struct args=new StructImpl();
    state=STOPPING;
    try{
      callOneWay("stop",args);
      //engine.clear(cfcPath,id);
      state=STOPPED;
    }
    catch(PageException pe){
      state=FAILED;
      //engine.clear(cfcPath,id);
      throw new PageGatewayException(pe);
    }
  }

  @Override
  public Object getHelper() {
    Struct args=new StructImpl(StructImpl.TYPE_LINKED);
    return callEL("getHelper",args,null);
  }

  @Override
  public String getId() {
    return id;
  }

  @Override
  public int getState() {
    Struct args=new StructImpl();
    Integer state=Integer.valueOf(this.state);
    try {
      return GatewayEngineImpl.toIntState(Caster.toString(call("getState",args,state)),this.state);
    }
    catch (PageException pe) {
      engine.log(this, GatewayEnginePro.LOGLEVEL_ERROR, pe.getMessage());
    }
    return this.state;
  }



  @Override
  public String sendMessage(Map data) throws GatewayException {
    Struct args=new StructImpl(StructImpl.TYPE_LINKED);
    args.setEL("data", Caster.toStruct(data, null, false));
    try {
      return Caster.toString(call("sendMessage",args,""));
    } catch (PageException pe) {
      throw new PageGatewayException(pe);
    }
  }
 
  private Object callEL(String methodName,Struct arguments, Object defaultValue)  {
    return engine.callEL(cfcPath,id, methodName, arguments, true, defaultValue);
  }

  private boolean callOneWay(String methodName,Struct arguments) throws PageException {
    return engine.callOneWay(cfcPath,id, methodName, arguments, true);
  }
 
  private Object call(String methodName,Struct arguments, Object defaultValue) throws PageException  {
    return engine.call(cfcPath,id, methodName, arguments, true, defaultValue);
  }
}
TOP

Related Classes of railo.runtime.gateway.CFCGateway

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.