/** * Find the file for a given name using any supported extension. * @param name The filename or logical name (resolved via imports and extensions). * @param imports The imports, if any. * @return The resource info identifying the file. * @throws Exception when the file could not be found. */ protected ResourceInfo getResourceInfo(String name, String[] imports, ClassLoader classloader) throws Exception { ResourceInfo ret; if(registered.containsKey(name)) { // Hack!!! ignore file handling for registered models. ICacheableModel model = (ICacheableModel)registered.get(name); ret = new ResourceInfo(name, null, model.getLastModified()); } else { ret = getResourceInfo0(name, imports, classloader); if(ret==null || ret.getInputStream()==null) throw new IOException("File "+name+" not found in imports.");//: "+SUtil.arrayToString(imports)); } return ret; }