Package railo.runtime.config

Source Code of railo.runtime.config.ConfigServerFactory

package railo.runtime.config;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import com.jacob.com.LibraryLoader;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

import railo.commons.io.IOUtil;
import railo.commons.io.SystemUtil;
import railo.commons.io.res.Resource;
import railo.commons.io.res.type.file.FileResource;
import railo.commons.io.res.util.ResourceUtil;
import railo.commons.lang.ClassException;
import railo.commons.lang.SystemOut;
import railo.runtime.CFMLFactory;
import railo.runtime.engine.CFMLEngineImpl;
import railo.runtime.exp.PageException;
import railo.transformer.library.function.FunctionLibException;
import railo.transformer.library.tag.TagLibException;


/**
*
*/
public final class ConfigServerFactory extends ConfigFactory{
   
    /**
     * creates a new ServletConfig Impl Object
     * @param engine
     * @param initContextes
     * @param contextes
     * @param configDir
     * @return new Instance
     * @throws SAXException
     * @throws ClassNotFoundException
     * @throws PageException
     * @throws IOException
     * @throws TagLibException
     * @throws FunctionLibException
     */
    public static ConfigServerImpl newInstance(CFMLEngineImpl engine,Map<String,CFMLFactory> initContextes, Map<String,CFMLFactory> contextes, Resource configDir)
        throws SAXException, ClassException, PageException, IOException, TagLibException, FunctionLibException {
     
      boolean isCLI=SystemUtil.isCLICall();
      if(isCLI){
        Resource logs = configDir.getRealResource("logs");
        logs.mkdirs();
        Resource out = logs.getRealResource("out");
        Resource err = logs.getRealResource("err");
        ResourceUtil.touch(out);
        ResourceUtil.touch(err);
        if(logs instanceof FileResource) {
          SystemUtil.setPrintWriter(SystemUtil.OUT, new PrintWriter((FileResource)out));
          SystemUtil.setPrintWriter(SystemUtil.ERR, new PrintWriter((FileResource)err));
        }
        else{
          SystemUtil.setPrintWriter(SystemUtil.OUT, new PrintWriter(IOUtil.getWriter(out,"UTF-8")));
          SystemUtil.setPrintWriter(SystemUtil.ERR, new PrintWriter(IOUtil.getWriter(err,"UTF-8")))
        }
      }
      SystemOut.print(SystemUtil.getPrintWriter(SystemUtil.OUT),
          "===================================================================\n"+
          "SERVER CONTEXT\n" +
          "-------------------------------------------------------------------\n"+
          "- config:"+configDir+"\n"+
          "- loader-version:"+SystemUtil.getLoaderVersion()+"\n"+
          "===================================================================\n"
         
          );
             
      boolean doNew=doNew(configDir);
     
      Resource configFile=configDir.getRealResource("railo-server.xml");
        if(!configFile.exists()) {
        configFile.createFile(true);
      //InputStream in = new TextFile("").getClass().getResourceAsStream("/resource/config/server.xml");
      createFileFromResource(
           "/resource/config/server.xml",
           configFile.getAbsoluteResource(),
           "tpiasfap"
      );
    }
    //print.out(configFile);
        Document doc=loadDocument(configFile);
      
        ConfigServerImpl config=new ConfigServerImpl(engine,initContextes,contextes,configDir,configFile);
    load(config,doc,false,doNew);
     
    createContextFiles(configDir,config,doNew);
      return config;
    }
    /**
     * reloads the Config Object
     * @param configServer
     * @throws SAXException
     * @throws ClassNotFoundException
     * @throws PageException
     * @throws IOException
     * @throws TagLibException
     * @throws FunctionLibException
     */
    public static void reloadInstance(ConfigServerImpl configServer)
      throws SAXException, ClassException, PageException, IOException, TagLibException, FunctionLibException {
        Resource configFile=configServer.getConfigFile();
       
        if(configFile==null) return ;
        if(second(configServer.getLoadTime())>second(configFile.lastModified())) return ;
        boolean doNew=doNew(configServer.getConfigDir());
        load(configServer,loadDocument(configFile),true,doNew);
    }
   
    private static long second(long ms) {
    return ms/1000;
  }
   
    /**
     * @param configServer
     * @param doc
     * @throws ClassNotFoundException
     * @throws IOException
     * @throws FunctionLibException
     * @throws TagLibException
     * @throws PageException
     */
    static void load(ConfigServerImpl configServer, Document doc, boolean isReload, boolean doNew) throws ClassException, PageException, IOException, TagLibException, FunctionLibException {
        ConfigWebFactory.load(null,configServer,doc, isReload,doNew);
        loadLabel(configServer,doc);
    }
   

  private static void loadLabel(ConfigServerImpl configServer, Document doc) {
    Element el= getChildByName(doc.getDocumentElement(),"labels");
        Element[] children=getChildren(el,"label");
       
        Map<String, String> labels=new HashMap<String, String>();
        if(children!=null)for(int i=0;i<children.length;i++) {
           el=children[i];
          
           String id=el.getAttribute("id");
           String name=el.getAttribute("name");
           if(id!=null && name!=null) {
               labels.put(id, name);
           }
        }
        configServer.setLabels(labels);
  }
 
  public static void createContextFiles(Resource configDir, ConfigServer config, boolean doNew) {
   
    Resource contextDir = configDir.getRealResource("context");
    Resource adminDir = contextDir.getRealResource("admin");
   
   

    // Debug
    Resource debug = adminDir.getRealResource("debug");
    create("/resource/context/admin/debug/",new String[]{
        "Debug.cfc","Field.cfc","Group.cfc","Classic.cfc","Modern.cfc","Comment.cfc"
        },debug,doNew);
   
   
    // DB Drivers types
    Resource dbDir = adminDir.getRealResource("dbdriver");
    Resource typesDir = dbDir.getRealResource("types");
    create("/resource/context/admin/dbdriver/types/",new String[]{
    "IDriver.cfc","Driver.cfc","IDatasource.cfc","IDriverSelector.cfc","Field.cfc"
    },typesDir,doNew);

    // DB Drivers
    create("/resource/context/admin/dbdriver/",new String[]{
    "H2.cfc","H2Selector.cfc","H2Server.cfc","HSQLDB.cfc","MSSQL.cfc","MSSQL2.cfc","MSSQLSelector.cfc","DB2.cfc","Oracle.cfc"
    ,"MySQL.cfc","ODBC.cfc","Sybase.cfc","PostgreSql.cfc","Other.cfc","Firebird.cfc"}
    ,dbDir,doNew);
   
    // Cache Drivers
    Resource cDir = adminDir.getRealResource("cdriver");
    create("/resource/context/admin/cdriver/",new String[]{
    "Cache.cfc","RamCache.cfc","EHCacheLite.cfc","Field.cfc","Group.cfc"}
    ,cDir,doNew);
   
    // Gateway Drivers
    Resource gDir = adminDir.getRealResource("gdriver");
    create("/resource/context/admin/gdriver/",new String[]{
    "TaskGatewayDriver.cfc","DirectoryWatcher.cfc","MailWatcher.cfc","Gateway.cfc","Field.cfc","Group.cfc"}
    ,gDir,doNew);
   
    // Security
    Resource secDir = configDir.getRealResource("security");
        if(!secDir.exists())secDir.mkdirs();
        Resource res = create("/resource/security/","cacerts",secDir,false);
    System.setProperty("javax.net.ssl.trustStore",res.toString());
   
        // ESAPI
        Resource propDir = configDir.getRealResource("properties");
        if(!propDir.exists())propDir.mkdirs();
        create("/resource/properties/","ESAPI.properties",propDir,doNew);
    System.setProperty("org.owasp.esapi.resources", propDir.toString());


    // Jacob
    if (SystemUtil.isWindows()) {

      Resource binDir = configDir.getRealResource("bin");
      if (binDir != null) {

        if (!binDir.exists())
          binDir.mkdirs();

        String name = (SystemUtil.getJREArch() == SystemUtil.ARCH_64) ? "jacob-x64.dll" : "jacob-x86.dll";

        Resource jacob = binDir.getRealResource(name);
        if (!jacob.exists()) {
          createFileFromResourceEL("/resource/bin/" + name, jacob);
        }
        // SystemOut.printDate(SystemUtil.PRINTWRITER_OUT,"set-property -> "+LibraryLoader.JACOB_DLL_PATH+":"+jacob.getAbsolutePath());
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, jacob.getAbsolutePath());
        // SystemOut.printDate(SystemUtil.PRINTWRITER_OUT,"set-property -> "+LibraryLoader.JACOB_DLL_NAME+":"+name);
        System.setProperty(LibraryLoader.JACOB_DLL_NAME, name);
      }
    }
  }
 
}
TOP

Related Classes of railo.runtime.config.ConfigServerFactory

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.