1 17 18 package org.apache.james.context; 19 20 import org.apache.avalon.framework.context.Context; 21 import org.apache.avalon.framework.context.ContextException; 22 23 import java.io.File ; 24 import java.io.IOException ; 25 26 32 public class AvalonContextUtilities { 33 34 37 private static String filePrefix = "file://"; 38 39 42 private static int filePrefixLength = filePrefix.length(); 43 44 62 public static File getFile(Context context, String fileURL) 63 throws Exception { 64 if ((context == null) || (fileURL == null)) { 65 throw new IllegalArgumentException ("The getFile method doesn't allow null arguments."); 66 } 67 String internalFileURL = fileURL.trim(); 68 if (!(internalFileURL.startsWith(filePrefix))) { 69 throw new IllegalArgumentException ("The fileURL argument to getFile doesn't start with the required file prefix - " + filePrefix); 70 } 71 72 String fileName = fileURL.substring(filePrefixLength); 73 if (!(fileName.startsWith("/"))) { 74 String baseDirectory = ""; 75 try { 76 File applicationHome = 77 (File )context.get(AvalonContextConstants.APPLICATION_HOME); 78 baseDirectory = applicationHome.toString(); 79 } catch (ContextException ce) { 80 throw new ContextException("Encountered exception when resolving application home in Avalon context.", ce); 81 } catch (ClassCastException cce) { 82 throw new ContextException("Application home object stored in Avalon context was not of type java.io.File.", cce); 83 } 84 StringBuffer fileNameBuffer = 85 new StringBuffer (128) 86 .append(baseDirectory) 87 .append(File.separator) 88 .append(fileName); 89 fileName = fileNameBuffer.toString(); 90 } 91 try { 92 File returnValue = (new File (fileName)).getCanonicalFile(); 93 return returnValue; 94 } catch (IOException ioe) { 95 throw new ContextException("Encountered an unexpected exception while retrieving file.", ioe); 96 } 97 } 98 99 103 private AvalonContextUtilities() {} 104 } 105 | Popular Tags |