+++ /dev/null
-package dolda.jsvc.util;
-
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import dolda.jsvc.*;
-
-public class JarContext implements ServerContext {
- private final long ctime;
- private final String name;
- public final ClassLoader loader;
- protected final Properties sysconfig, libconfig;
-
- private static String mangle(File f) {
- String ret = f.getName();
- int p = ret.lastIndexOf('.');
- if(p > 0)
- ret = ret.substring(0, p);
- for(f = f.getParentFile(); f != null; f = f.getParentFile())
- ret = f.getName() + "/" + ret;
- return(ret);
- }
-
- private void loadconfig() {
- try {
- InputStream pi = loader.getResourceAsStream("jsvc.properties");
- if(pi != null) {
- try {
- libconfig.load(pi);
- } finally {
- pi.close();
- }
- }
- } catch(IOException e) {
- throw(new Error(e));
- }
- }
-
- public Class<?> findboot() {
- String clnm = libconfig("jsvc.bootstrap", null);
- if(clnm == null)
- return(null);
- Class<?> bc;
- try {
- bc = loader.loadClass(clnm);
- } catch(ClassNotFoundException e) {
- return(null);
- }
- return(bc);
- }
-
- public JarContext(ClassLoader cl, String name) {
- this.ctime = System.currentTimeMillis();
- this.name = name;
- this.loader = cl;
- sysconfig = new Properties();
- libconfig = new Properties();
-
- loadconfig();
- }
-
- private static URL makingmewanttokilljavac(File jar) {
- try {
- return(jar.toURI().toURL());
- } catch(MalformedURLException e) {
- throw(new RuntimeException(e));
- }
- }
-
- public JarContext(File jar) {
- this(new URLClassLoader(new URL[] {makingmewanttokilljavac(jar)}, JarContext.class.getClassLoader()), mangle(jar));
- }
-
- public long starttime() {
- return(ctime);
- }
-
- public String name() {
- return(name);
- }
-
- public String sysconfig(String key, String def) {
- return(sysconfig.getProperty(key, def));
- }
-
- public String libconfig(String key, String def) {
- return(libconfig.getProperty(key, def));
- }
-
- public RequestThread worker(Responder root, Request req, ThreadGroup tg, String name) {
- return(new RequestThread(root, req, tg, name));
- }
-}