log.debug("get="+obj);
log.debug("get: started runner");
    public MediaObject get (Request req)    throws ScillaException {	MediaObject obj = null;	String ofn = getCacheFilename(req);	File ifile = new File(req.getInputFile());	File ofile = new File(ofn);	// does source really exist	if (!ifile.exists()) {	    throw new ScillaNoInputException();	}	// conversion still running?	obj = (RunnerObject) runners.get(ofn);	if (obj != null) {	    log.debug("existing runner: "+obj);	    obj = new CachedObject(ofn, (RunnerObject) obj);	    log.debug("get="+obj);	    return obj;	}	// output in cache and source not newer than cache	if (ofile.exists() && ifile.lastModified() < ofile.lastModified()) {	    obj = new CachedObject(ofn);	    log.debug("get="+obj);	    return obj;	}	// create new MediaObject	obj = MediaFactory.createObject(req, ofn);	if (obj instanceof RunnerObject) {	    RunnerObject ro = (RunnerObject) obj;	    // make sure output file can be writen	    ensureCacheDirectoryFor(ofn);	    // register change listener	    runners.put(ofn, ro);	    ro.addRunnerChangeListener(this);	    // add runner to list and start converter	    ro.start();	    log.debug("get="+obj);	    return obj;	}	// not a runner probably original	return obj;    }