@@ -0,0 +1,1815 @@
+package imcode.util ;%0A%0Aimport java.io.* ;%0Aimport org.apache.oro.util.* ;%0Aimport imcode.util.log.* ;%0A%0Apublic class FileCache %7B%0A%0A    private final int m_FileCacheSize = 50 ;%0A    private CacheLRU fileCache = new CacheLRU(m_FileCacheSize) ;%0A%0A    Log log = Log.getLog(%22server%22) ;%0A%0A    /**%0A       Fetch a file from the cache, if it hasn't changed on disc.%0A    */%0A    /*%0A    synchronized private String getCachedFileString(String filename) throws IOException %7B%0A%09return getCachedFileString(new File(filename)) ;%0A    %7D%0A    */%0A%0A    protected StringBuffer loadFile(File file) %7B%0A%09StringBuffer tempbuffer = new StringBuffer() ;%0A%09try %7B%0A%09    char%5B%5D charbuffer = new char%5B16384%5D ;%0A%09    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),%228859_1%22));%0A%09    // Load the file%0A%09    int chars_read = 0 ;%0A%09    while (-1 %3C (chars_read = br.read(charbuffer))) %7B%0A%09%09tempbuffer.append(charbuffer,0,chars_read) ;%0A%09    %7D%0A%09    br.close();%0A%09%7D catch (IOException ex) %7B%0A%09    log.log(Log.ERROR, %22File not found during parsing.%22, ex) ;%0A%09    tempbuffer.append(ex.getMessage()) ;%0A%09%7D%0A%09return tempbuffer ;%0A    %7D%0A%0A%0A    /**%0A       Fetch a file from the cache, if it hasn't changed on disc.%0A    */%0A    public synchronized String getCachedFileString(File file) throws IOException %7B%0A%09    %0A%09if (m_FileCacheSize %3E 0) %7B%0A%09    Object%5B%5D file_and_date = (Object%5B%5D)(fileCache.getElement(file)) ; // Get the cached file, if any.%0A%09    if (file_and_date == null %7C%7C file.lastModified() %3E ((Long)file_and_date%5B1%5D).longValue() ) %7B%0A%09%09// No (new) file found?%0A%09%09String temp = loadFile(file).toString() ; // Load it.%0A%09%09fileCache.addElement(file, new Object%5B%5D %7Btemp,new Long(System.currentTimeMillis())%7D) ;  // Cache it.%0A%09%09return temp ;%0A%09    %7D%0A%09    return (String)file_and_date%5B0%5D ;%0A%09%7D else %7B%0A%09    return loadFile(file).toString() ;%0A%09%7D%0A    %7D%0A%7D%0A

Removed the parser from IMCService.