Package info.caiiiycuk.stail.impl

Source Code of info.caiiiycuk.stail.impl.Configuration

package info.caiiiycuk.stail.impl;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import sun.org.mozilla.javascript.internal.NativeArray;
import sun.org.mozilla.javascript.internal.NativeObject;

@SuppressWarnings("restriction")
public class Configuration {

  private Tail[] tails;
  private ServerConfig serverConfig;
 
  public Configuration(InputStream resourceStream) throws ScriptException {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");
   
    engine.eval(new InputStreamReader(resourceStream));
    Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
   
    { // read tails config
      NativeArray jsTails = (NativeArray) bindings.get("tails");
     
      this.tails = new Tail[(int) jsTails.getLength()];
     
      Map<String, Object> argumentMap = new HashMap<String, Object>();
     
      for (int i=0; i<jsTails.getLength(); ++i) {
        NativeObject object = (NativeObject) jsTails.get(i, null);
       
     
        argumentMap.clear();
        for (Object id: object.getIds()) {
          argumentMap.put(id.toString(), object.get(id.toString(), null));
        }
       
        this.tails[i] = Tail.makeTail(argumentMap);
      }
    }
   
    { // read server config
      NativeObject jsServer = (NativeObject) bindings.get("server");
      int port = ((Number) jsServer.get("port", null)).intValue();
     
      Object jsFrontend = jsServer.get("frontend", null);
     
      if (jsFrontend != null) {
        serverConfig = new ServerConfig(port, jsFrontend.toString());
      } else {
        serverConfig = new ServerConfig(port, null);
      }
    }
  }

  public Tail[] getTails() {
    return tails;
  }

  public ServerConfig getServerConfig() {
    return serverConfig;
  }

}
TOP

Related Classes of info.caiiiycuk.stail.impl.Configuration

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.