Author: norman
Date: Sat Sep 16 15:54:58 2006
New Revision: 446967

URL: http://svn.apache.org/viewvc?view=rev&rev=446967
Log:
Fix problems with getting the right path.

Modified:
    
james/server/trunk/src/java/org/apache/james/mailrepository/javamail/AbstractJavamailStoreMailRepository.java

Modified: 
james/server/trunk/src/java/org/apache/james/mailrepository/javamail/AbstractJavamailStoreMailRepository.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/mailrepository/javamail/AbstractJavamailStoreMailRepository.java?view=diff&rev=446967&r1=446966&r2=446967
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/mailrepository/javamail/AbstractJavamailStoreMailRepository.java
 (original)
+++ 
james/server/trunk/src/java/org/apache/james/mailrepository/javamail/AbstractJavamailStoreMailRepository.java
 Sat Sep 16 15:54:58 2006
@@ -18,6 +18,9 @@
  ****************************************************************/
 package org.apache.james.mailrepository.javamail;
 
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Properties;
@@ -34,8 +37,12 @@
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.logger.Logger;
+import org.apache.james.context.AvalonContextConstants;
 import org.apache.james.services.MailRepository;
 import org.apache.mailet.Mail;
 
@@ -49,7 +56,7 @@
 
 public abstract class AbstractJavamailStoreMailRepository extends
         AbstractLogEnabled implements MailRepository, StoreAware, Configurable,
-        Initializable {
+        Initializable,Contextualizable {
 
     /**
      * Whether 'deep debugging' is turned on.
@@ -95,6 +102,16 @@
     private FolderGateKeeper folderGateKeeper;
 
     /**
+     * The Context
+     */
+    private Context context;
+    
+    /**
+     * The directory james is running in
+     */
+    private File home;
+
+    /**
      * builds destination from attributes destinationURL and postfix.
      * at the moment james does not hand over additional parameters like 
postfix.
      */
@@ -128,10 +145,16 @@
         }
         String withoutProtocol = destination.substring(pi);
         final String protocol = destination.substring(0, pi);
-        if (!withoutProtocol.startsWith(":///")) {
-            withoutProtocol = ":///../apps/james/" + 
withoutProtocol.substring(3);
-
+        try {
+            if (!withoutProtocol.startsWith(":///")) {         
+                withoutProtocol = "://"+  getDirAsUrl(home + "/" 
+withoutProtocol.substring(3));
+            } else {
+                withoutProtocol = "://" + getDirAsUrl("/" + 
withoutProtocol.substring(3));
+            }
+        } catch (MalformedURLException e) {
+            throw new ConfigurationException("Invalid url: " + destination);
         }
+    
         destination = protocol + withoutProtocol;
         log.debug("destination: " + destination);
         Properties mailSessionProps  = new Properties();
@@ -155,14 +178,24 @@
         }
         log.debug("JavaMailStoreMailRepository configured");
     }
-
+    
     /**
      * connect the mailStore
      * @see Initializable#initialize()
      */
     public void initialize() throws Exception {
-    mailStore.connect();
+        mailStore.connect();              
         log.debug("JavaMailStoreMailRepository initialized");
+    }
+    
+    public void contextualize(Context context) throws ContextException {
+        this.context = context;
+        home = (File)context.get(AvalonContextConstants.APPLICATION_HOME);
+    }
+    
+    private String getDirAsUrl(String dir) throws MalformedURLException {
+        File f = new File(dir); 
+        return f.toURL().toString();
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to