com.sun.grizzly.jruby.rack.GenericApplicationFactory Maven / Gradle / Ivy
package com.sun.grizzly.jruby.rack;
import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.Ruby;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.sun.grizzly.jruby.RackGrizzlyAdapter;
/**
* @author Jacob Kessler
* Rack Application Factory that will run a user-created script to generate its output
* The user script MUST return an initialized rack application object
*/
public class GenericApplicationFactory extends DefaultRackApplicationFactory {
String creationString = "";
public GenericApplicationFactory(String config, RackGrizzlyAdapter adapter) {
super(adapter);
try {
File configScript = new File(config);
if (configScript.exists()) {
BufferedReader in = new BufferedReader(new FileReader(configScript));
String s;
while ((s = in.readLine()) != null) {
// read the file
creationString = creationString + System.getProperty("line.separator") + s;
}
} else {
logger.severe("Specified Rack configuration script could not be found, aborting");
}
} catch (IOException e) {
logger.severe("IO error reading the configuration script!");
e.printStackTrace();
}
}
public IRubyObject createApplicationObject(Ruby runtime) {
IRubyObject app = runtime.evalScriptlet(creationString);
runtime.defineReadonlyVariable("$glassfish_app", app);
return runtime.evalScriptlet(
"Rack::Handler::Grizzly.new($glassfish_app)");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy