Package railo.runtime.functions.rest

Source Code of railo.runtime.functions.rest.RestInitApplication

package railo.runtime.functions.rest;


import railo.commons.io.res.Resource;
import railo.commons.lang.StringUtil;
import railo.runtime.PageContext;
import railo.runtime.config.ConfigWebAdmin;
import railo.runtime.config.ConfigWebImpl;
import railo.runtime.exp.PageException;
import railo.runtime.op.Caster;
import railo.runtime.rest.Mapping;
import railo.runtime.rest.RestUtil;

public class RestInitApplication {

  public static String call(PageContext pc , String dirPath) throws PageException {
    return _call(pc, dirPath, null,null,null);
  }
 
  public static String call(PageContext pc , String dirPath, String serviceMapping) throws PageException {
    return _call(pc, dirPath, serviceMapping, null,null);
  }

  public static String call(PageContext pc , String dirPath, String serviceMapping, boolean defaultMapping) throws PageException {
    return _call(pc, dirPath, serviceMapping, defaultMapping, null);
  }

  public static String call(PageContext pc , String dirPath, String serviceMapping, boolean defaultMapping, String webAdminPassword) throws PageException {
    return _call(pc, dirPath, serviceMapping, defaultMapping, webAdminPassword);
  }
 
  public static String _call(PageContext pc , String dirPath, String serviceMapping, Boolean defaultMapping, String webAdminPassword) throws PageException {
    if(StringUtil.isEmpty(serviceMapping,true)){
      serviceMapping=pc.getApplicationContext().getName();
    }
    Resource dir=RestDeleteApplication.toResource(pc,dirPath);
   
    ConfigWebImpl config=(ConfigWebImpl) pc.getConfig();
    Mapping[] mappings = config.getRestMappings();
    Mapping mapping;
   
    // id is mapping name
   
    String virtual=serviceMapping.trim();
    if(!virtual.startsWith("/")) virtual="/"+virtual;
    if(!virtual.endsWith("/")) virtual+="/";
    boolean hasResetted=false;
    for(int i=0;i<mappings.length;i++){
      mapping=mappings[i];
      if(mapping.getVirtualWithSlash().equals(virtual)){
        // directory has changed
        if(!RestUtil.isMatch(pc, mapping, dir) || (defaultMapping!=null && mapping.isDefault()!=defaultMapping.booleanValue())) {
          update(pc,dir,virtual,RestDeleteApplication.getPassword(pc,webAdminPassword),defaultMapping==null?mapping.isDefault():defaultMapping.booleanValue());
        }
        mapping.reset(pc);
        hasResetted=true;
      }
    }
    if(!hasResetted) {
      update(pc,dir,virtual,RestDeleteApplication.getPassword(pc,webAdminPassword),defaultMapping==null?false:defaultMapping.booleanValue());
    }
 
    return null;
  }

  private static void update(PageContext pc,Resource dir, String virtual, String webAdminPassword, boolean defaultMapping) throws PageException {
    try {
      ConfigWebAdmin admin = ConfigWebAdmin.newInstance((ConfigWebImpl)pc.getConfig(),webAdminPassword);
      admin.updateRestMapping(virtual, dir.getAbsolutePath(), defaultMapping);
      admin.store();
    }
    catch (Exception e) {
      throw Caster.toPageException(e);
    }
  }
 
}
TOP

Related Classes of railo.runtime.functions.rest.RestInitApplication

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.