org.apache.avalon.framework.context.ContextException org.apache.avalon.framework.component.ComponentException org.apache.cocoon.ProcessingException java.net.URL java.net.MalformedURLException org.apache.cocoon.components.language.markup.xsp.XSPUtil org.apache.avalon.framework.context.ContextException org.apache.cocoon.components.search.* org.apache.lucene.store.Directory org.apache.lucene.analysis.Analyzer java.util.* String base = "docs/xdocs" ; String baseContext = "context://" + base; File []allFiles(File base) { List allFiles = new ArrayList(); try { if (base == null) { base = theBaseDir(); } File []allTheFiles = base.listFiles(); for (int i = 0; i < allTheFiles.length; i++ ) { File f = allTheFiles[i]; if (f.isDirectory()) { File[] allFilesOfDirectory = allFiles( f ); allFiles.addAll( Arrays.asList( allFilesOfDirectory ) ); } else if (f.isFile()) { if (f.canRead() && f.getName().endsWith( ".xml" )) { allFiles.add( f ); } } } } catch (Exception e) { e.printStackTrace(); } return (File[])allFiles.toArray(new File[0]); } File theBaseDir() { File f = null; try { org.apache.excalibur.source.Source source = resolver.resolveURI( baseContext ); String s = source.getURI(); f = new File( new URL(s).getFile() ); } catch (Exception e) { e.printStackTrace(); } return f; } String strippedFileName( File f ) { String sf = f.toString(); int index = sf.indexOf("xdocs"); if (index >= 0) { sf = sf.substring( index + 5 + 1); } sf = sf.replace( '\\', '/' ); return sf; } theBaseDir() File []allFiles = allFiles(null); for (int i = 0; allFiles != null && i < allFiles.length; i++) { File f = allFiles[i]; if (f.isFile()) { strippedFileName(f) f.getAbsolutePath() } }