Re: (JAMES-561) User aliasing does not work
Mornin Noel, you are right. I was wrong.. I used 2 rcpts to test at the same time. One was the alias and one was user. So i maybe looked at the wrong log :-( Anyway just tested your fix and it works fine.. bye Norman Am Sonntag, den 09.07.2006, 23:42 -0400 schrieb Noel J. Bergman: I just found and fixed it. Unfortunately, I'm 30,000 feet in the air, but as soon as I land in LA this evening (about 4 hours from now), I'll commit the fix, unless someone has beaten me to it. Norman observed on IM that The problem is that ((JamesUser) user).getAliasing() return false. Actually, no. I tested for that, and it was working just fine. The problem was elsewhere in the UserRepositoryAliasForwarding mailet. One character. Just one missing character in the condition of an if statement. --- Noel - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] !EXCUBATOR:1,44b1ccca48531106319826! signature.asc Description: Dies ist ein digital signierter Nachrichtenteil
[jira] Created: (JAMES-562) Aliasmanagment should not depend on a user
Aliasmanagment should not depend on a user --- Key: JAMES-562 URL: http://issues.apache.org/jira/browse/JAMES-562 Project: James Type: Improvement Reporter: Norman Maurer If someone want to set a alias he must create a user fist and then use this user as alias. IMHO that makes no sense.. We don't need a password etc for an alias.. So we should change it to not need a created user first . -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Created: (JAMES-563) Add Mailet to convert attributes to headers
Add Mailet to convert attributes to headers --- Key: JAMES-563 URL: http://issues.apache.org/jira/browse/JAMES-563 Project: James Type: New Feature Components: Matchers/Mailets (bundled) Reporter: Norman Maurer Assigned to: Norman Maurer Fix For: 3.0 We should add an mailet which convert (map) attributes to headers. So we just set attributes in teh mailets and do all the header adding at one place. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (JAMES-559) Message body get lost after call saveChanges() and move to other processor
[ http://issues.apache.org/jira/browse/JAMES-559?page=comments#action_12420040 ] Stefano Bagnara commented on JAMES-559: --- Status update: I wrote a unittest for this and the unittest fail. A good first step. The problem only happens in file repositories because with db repositories we don't stream from and to db, while with files we use streaming more aggressively. The problem probably arise from optimizations I added in january about loading only headers if only headers are changed and then write headers from memory and stream body from source if no body changes were done. When updating the same file there was a check that avoided to update the file when the whole message was not changed, but there is no solution for only headers changed. I'm currently investigating these 2 solutions: 1) remove the load only the headers optimization and always load/parse the full message in memory 2) change the file repository to write to a temporary file and rename it when the stream is closed. I already have found problems with both solutions, and that's why I don't have committed a patch yet Message body get lost after call saveChanges() and move to other processor -- Key: JAMES-559 URL: http://issues.apache.org/jira/browse/JAMES-559 Project: James Type: Bug Versions: 2.3.0b2, 3.0 Reporter: Norman Maurer Assignee: Stefano Bagnara Priority: Blocker Fix For: 3.0, 2.3.0b2 After call saveChanges() in a mailet and move the mail to a other processor with ToProcessor the whole messageBody getting lost. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (JAMES-562) Aliasmanagment should not depend on a user
[ http://issues.apache.org/jira/browse/JAMES-562?page=comments#action_12420075 ] Noel J. Bergman commented on JAMES-562: --- I consider this issue resolved, since the virtual user table capability provides flexible alias and forwarding capabilities. Current virtual user tables can be configured either in config.xml (see examples) or JDBC. The only use for the current scheme, as I see it, is to provide a means for an existing user (having an account for SMTP AUTH or POP3 purposes) to set their own forwarding address, which is a feature not yet suppored by the console. Aliasmanagment should not depend on a user -- Key: JAMES-562 URL: http://issues.apache.org/jira/browse/JAMES-562 Project: James Type: Improvement Reporter: Norman Maurer If someone want to set a alias he must create a user fist and then use this user as alias. IMHO that makes no sense.. We don't need a password etc for an alias.. So we should change it to not need a created user first . -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420520 - in /james/server/trunk/src: java/org/apache/james/mailrepository/ java/org/apache/james/mailrepository/filepair/ test/org/apache/james/mailrepository/ test/org/apache/james/test/
Author: bago Date: Mon Jul 10 06:34:26 2006 New Revision: 420520 URL: http://svn.apache.org/viewvc?rev=420520view=rev Log: Remove AbstractFileRepository optimisation that caused body message corruption when using file repositories (JAMES-559) Added: james/server/trunk/src/test/org/apache/james/mailrepository/ james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java (with props) Modified: james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java james/server/trunk/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java james/server/trunk/src/test/org/apache/james/test/mock/avalon/MockStore.java Modified: james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java?rev=420520r1=420519r2=420520view=diff == --- james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java (original) +++ james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java Mon Jul 10 06:34:26 2006 @@ -75,7 +75,7 @@ private boolean fifo; private boolean cacheKeys; // experimental: for use with write mostly repositories such as spam and error -private void setStore(Store store) { +void setStore(Store store) { this.store = store; } Modified: james/server/trunk/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java?rev=420520r1=420519r2=420520view=diff == --- james/server/trunk/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java (original) +++ james/server/trunk/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java Mon Jul 10 06:34:26 2006 @@ -17,29 +17,29 @@ package org.apache.james.mailrepository.filepair; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FilenameFilter; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Iterator; import org.apache.avalon.cornerstone.services.store.Repository; -import org.apache.james.util.io.ExtensionFileFilter; import org.apache.avalon.framework.activity.Initializable; 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.Contextualizable; 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.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; +import org.apache.james.util.io.ExtensionFileFilter; -import javax.mail.util.SharedFileInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Iterator; /** * This an abstract class implementing functionality for creating a file-store. @@ -258,7 +258,12 @@ protected InputStream getInputStream( final String key ) throws IOException { -return new SharedFileInputStream( encode( key ) ); +// This was changed to SharedFileInputStream but reverted to +// fix JAMES-559. Usign SharedFileInputStream should be a good +// performance improvement, but more checks have to be done +// on the repository side to avoid concurrency in reading and +// writing the same file. +return new FileInputStream( encode( key ) ); } protected OutputStream getOutputStream( final String key ) @@ -266,7 +271,7 @@ { return new FileOutputStream( getFile( key ) ); } - + /** * Remove the object associated to the given key. */ Added: james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java?rev=420520view=auto == --- james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java (added) +++
Re: IMAP Draft: Quota
Am Samstag, den 08.07.2006, 13:41 +0200 schrieb Bernd Fondermann: are you really making that good progress you are already discussing advanced features, or are quotas required by IMAP? Well, the progress is near to alpha for basic commands. What really is needed now is starting an Imap capable storage back-end. It is great how hard you are working on the IMAP topic. I hope to get a chance to review it soon! That would be great! At the moment I make only sporadic changes to the draft API interfaces on SVN. Things would get more dynamic with external input. :-) It's really difficult to fit every need and to keep things simple. Also, we have to keep in mind how to integrate your code with the James codebase. But that's for another thread... I think a lot about that. I also have some ideas. One question is for example how could James benefit from a logical namespace for message repositories / mailboxes? But IMO the first solution will be to allow optionally plugging in the namespace/hierarchy aware repository and using wrappers for legacy code. (a NamespaceMailRepository implementation). So the codebase keeps stable. BTW, are your propositions based on RFC 2087 or is this another beast? I did it according to RFC 2087 and JavaMail. The procedure I described as a proposal for JDBC is just a possibility not a requirement. What I don't want to do is just hacking in a JDBC implementation and throw everything away when the time has come for the next feature. If we are aware of what we'll need in the future we could now try to make the right decisions. well, this sounds like the waterfall model to me. let's make decisions when decisions are due, it's impossible to take everything into account beforehand. And I don't think you'd have to throw everything away, if you'd skip thinking about quota now. instead I think one can yield much better results by concentrating on current tasks. Waterfall model is really getting a swear-word in today's agile development world, isn't it? ;-) No waterfall model, just an overview. No complete elaborated plan, just a few thoughts and drafts. And I promise just to skip thinking about quota right now, because it should be enough as an overview. :-) Joachim - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420526 - /james/server/branches/v2.3/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java
Author: bago Date: Mon Jul 10 07:02:10 2006 New Revision: 420526 URL: http://svn.apache.org/viewvc?rev=420526view=rev Log: Remove AbstractFileRepository optimisation that caused body message corruption when using file repositories (JAMES-559) Modified: james/server/branches/v2.3/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java Modified: james/server/branches/v2.3/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java URL: http://svn.apache.org/viewvc/james/server/branches/v2.3/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java?rev=420526r1=420525r2=420526view=diff == --- james/server/branches/v2.3/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java (original) +++ james/server/branches/v2.3/src/java/org/apache/james/mailrepository/filepair/AbstractFileRepository.java Mon Jul 10 07:02:10 2006 @@ -18,6 +18,7 @@ package org.apache.james.mailrepository.filepair; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; @@ -39,8 +40,6 @@ import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; -import javax.mail.util.SharedFileInputStream; - /** * This an abstract class implementing functionality for creating a file-store. * @@ -258,7 +257,7 @@ protected InputStream getInputStream( final String key ) throws IOException { -return new SharedFileInputStream( encode( key ) ); +return new FileInputStream( encode( key ) ); } protected OutputStream getOutputStream( final String key ) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Updated: (JAMES-559) Message body get lost after call saveChanges() and move to other processor
[ http://issues.apache.org/jira/browse/JAMES-559?page=all ] Stefano Bagnara updated JAMES-559: -- Fix Version: 2.3.0b3 (was: 2.3.0b2) Message body get lost after call saveChanges() and move to other processor -- Key: JAMES-559 URL: http://issues.apache.org/jira/browse/JAMES-559 Project: James Type: Bug Versions: 3.0, 2.3.0b2 Reporter: Norman Maurer Assignee: Stefano Bagnara Priority: Blocker Fix For: 3.0, 2.3.0b3 After call saveChanges() in a mailet and move the mail to a other processor with ToProcessor the whole messageBody getting lost. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: (JAMES-561) User aliasing does not work
Norman Maurer wrote: you are right. I was wrong. shrug No worries. Anyway just tested your fix and it works fine. :-) Thanks. Close the JIRA issue if you're confident. --- Noel - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Updated: (JAMES-554) Set the right svn property for excutable files
[ http://issues.apache.org/jira/browse/JAMES-554?page=all ] Stefano Bagnara updated JAMES-554: -- Fix Version: 2.3.0b3 (was: 2.3.0) Version: 2.3.0b2 Set the right svn property for excutable files -- Key: JAMES-554 URL: http://issues.apache.org/jira/browse/JAMES-554 Project: James Type: Bug Components: Build System Versions: 2.3.0b2 Reporter: Norman Maurer Assignee: Norman Maurer Priority: Minor Fix For: 3.0, 2.3.0b3 Set the right properties for files which should be excutable in linux systems -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Updated: (JAMES-560) SetMimeHeader not throw an MessagingException if needed config values missed
[ http://issues.apache.org/jira/browse/JAMES-560?page=all ] Stefano Bagnara updated JAMES-560: -- Fix Version: 2.3.0b3 (was: 2.3.0) Version: 2.3.0b2 SetMimeHeader not throw an MessagingException if needed config values missed Key: JAMES-560 URL: http://issues.apache.org/jira/browse/JAMES-560 Project: James Type: Bug Components: Matchers/Mailets (bundled) Versions: 2.3.0b2 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0, 2.3.0b3 SetMimeHeader not throw an Exception if needed config values missed -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Updated: (JAMES-561) User aliasing does not work
[ http://issues.apache.org/jira/browse/JAMES-561?page=all ] Stefano Bagnara updated JAMES-561: -- Fix Version: 2.3.0b3 (was: 2.3.0) User aliasing does not work --- Key: JAMES-561 URL: http://issues.apache.org/jira/browse/JAMES-561 Project: James Type: Bug Components: Matchers/Mailets (bundled) Versions: 3.0, 2.3.0b2 Reporter: Vincenzo Gianferrari Pini Assignee: Norman Maurer Priority: Blocker Fix For: 3.0, 2.3.0b3 If user A is an alias of user B ( or viceversa - remote manager help is misleading) messages sent to A have to go (and were going) to B's inbox. Now it ends in A's inbox, that should not even exist. The problem has been found by me using both file and db repositories under 2.3.0b2, but I expect it to occur also under 3.0. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420534 - /james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java
Author: norman Date: Mon Jul 10 07:15:31 2006 New Revision: 420534 URL: http://svn.apache.org/viewvc?rev=420534view=rev Log: Add mailet to convert attributes to headers. See JAMES-563 Added: james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java Added: james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java?rev=420534view=auto == --- james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java (added) +++ james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java Mon Jul 10 07:15:31 2006 @@ -0,0 +1,105 @@ +/*** + * Copyright (c) 2006 The Apache Software Foundation. * + * All rights reserved.* + * --- * + * Licensed under the Apache License, Version 2.0 (the License); you * + * may not use this file except in compliance with the License. You* + * may obtain a copy of the License at:* + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an AS IS BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * + * implied. See the License for the specific language governing * + * permissions and limitations under the License. * + ***/ + +package org.apache.james.transport.mailets; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.StringTokenizer; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; + +import org.apache.mailet.GenericMailet; +import org.apache.mailet.Mail; + +/** + * Convert attributes to headers + * + * Sample configuration: + * + * lt;mailet match=All class=MailAttributesToMimeHeadersgt; + * lt;simplemappinggt;org.apache.james.attribute1; + * headerName1lt;/simplemappinggt; + * lt;simplemappinggt;org.apache.james.attribute2; + * headerName2lt;/simplemappinggt; lt;/mailetgt; + * + */ +public class MailAttributesToMimeHeaders extends GenericMailet { + +/** + * HashMap which holds the attributeName and headerName + */ +private HashMap map = new HashMap(); + +/** + * @see org.apache.mailet.GenericMailet#init() + */ +public void init() throws MessagingException { +String simplemappings = getInitParameter(simplemapping); +if (simplemappings != null) { + +StringTokenizer st = new StringTokenizer(simplemappings, ,); +while (st.hasMoreTokens()) { + +String parameters[] = st.nextToken().split(;); + +// Check if we have a valid config +if (parameters.length 2 || parameters.length 2) { +throw new MessagingException( +Invalid config. Please use \attributeName; headerName\); +} else { +System.out.println(in here: + parameters[0].trim() ++ , + parameters[1].trim()); +// Add it to the map +map.put(parameters[0].trim(), parameters[1].trim()); +} +} +} else { +throw new MessagingException( +Invalid config. Please use \attributeName; headerName\); +} +} + +/** + * @see org.apache.mailet.GenericMailet#service(Mail) + */ +public void service(Mail mail) { +MimeMessage message; +try { +message = mail.getMessage(); + +Iterator keys = map.keySet().iterator(); + +while (keys.hasNext()) { +String key = keys.next().toString(); +String value = (String) mail.getAttribute(key); +String headerName = map.get(key).toString(); + +// Check if we have all needed values +if (headerName != null value != null) { +// Add the header +message.setHeader(headerName, value); +} +} +message.saveChanges(); +} catch (MessagingException e) { +log(e.getMessage()); +} +} + +} - To unsubscribe, e-mail: [EMAIL
svn commit: r420536 - /james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java
Author: norman Date: Mon Jul 10 07:17:36 2006 New Revision: 420536 URL: http://svn.apache.org/viewvc?rev=420536view=rev Log: Remove old debugs Modified: james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java Modified: james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java?rev=420536r1=420535r2=420536view=diff == --- james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java (original) +++ james/server/trunk/src/java/org/apache/james/transport/mailets/MailAttributesToMimeHeaders.java Mon Jul 10 07:17:36 2006 @@ -63,8 +63,6 @@ throw new MessagingException( Invalid config. Please use \attributeName; headerName\); } else { -System.out.println(in here: + parameters[0].trim() -+ , + parameters[1].trim()); // Add it to the map map.put(parameters[0].trim(), parameters[1].trim()); } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: IMAP Draft: Quota
Joachim Draeger wrote: Am Samstag, den 08.07.2006, 13:41 +0200 schrieb Bernd Fondermann: are you really making that good progress you are already discussing advanced features, or are quotas required by IMAP? Well, the progress is near to alpha for basic commands. What really is needed now is starting an Imap capable storage back-end. It is great how hard you are working on the IMAP topic. I hope to get a chance to review it soon! That would be great! At the moment I make only sporadic changes to the draft API interfaces on SVN. I'd more or less stick to your JIRA postings/attachements (as JIRA is one of our 'official' project resources). Things would get more dynamic with external input. :-) It's really difficult to fit every need and to keep things simple. can't promise anything, but at least it's on my agenda. Also, we have to keep in mind how to integrate your code with the James codebase. But that's for another thread... I think a lot about that. I also have some ideas. One question is for example how could James benefit from a logical namespace for message repositories / mailboxes? But IMO the first solution will be to allow optionally plugging in the namespace/hierarchy aware repository and using wrappers for legacy code. (a NamespaceMailRepository implementation). So the codebase keeps stable. namespaces for repos is something which is also going around in my mind for some time. maybe we should have a separate discussion about it in near future! BTW, are your propositions based on RFC 2087 or is this another beast? I did it according to RFC 2087 and JavaMail. The procedure I described as a proposal for JDBC is just a possibility not a requirement. What I don't want to do is just hacking in a JDBC implementation and throw everything away when the time has come for the next feature. If we are aware of what we'll need in the future we could now try to make the right decisions. well, this sounds like the waterfall model to me. let's make decisions when decisions are due, it's impossible to take everything into account beforehand. And I don't think you'd have to throw everything away, if you'd skip thinking about quota now. instead I think one can yield much better results by concentrating on current tasks. Waterfall model is really getting a swear-word in today's agile development world, isn't it? ;-) ;-) it is - I apologize, didn't want to swear at you... ;-) No waterfall model, just an overview. No complete elaborated plan, just a few thoughts and drafts. And I promise just to skip thinking about quota right now, because it should be enough as an overview. :-) we could go on. but we must keep in mind the whole discussion is repeated in the future when quotas eventually are reconsidered. ;-) Bernd - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Resolved: (JAMES-559) Message body get lost after call saveChanges() and move to other processor
[ http://issues.apache.org/jira/browse/JAMES-559?page=all ] Stefano Bagnara resolved JAMES-559: --- Resolution: Fixed Reverted the SharedFileInputStream to FileInputStream for file based repositories. This is a workaround that disable previous optimisation. There is a lot to do in 3.0 about this (both in file and db repositories). Message body get lost after call saveChanges() and move to other processor -- Key: JAMES-559 URL: http://issues.apache.org/jira/browse/JAMES-559 Project: James Type: Bug Versions: 2.3.0b2, 3.0 Reporter: Norman Maurer Assignee: Stefano Bagnara Priority: Blocker Fix For: 3.0, 2.3.0b3 After call saveChanges() in a mailet and move the mail to a other processor with ToProcessor the whole messageBody getting lost. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420564 - in /james/server/trunk/src: java/org/apache/james/core/MimeMessageWrapper.java test/org/apache/james/core/MimeMessageWrapperTest.java test/org/apache/james/mailrepository/AvalonM
Author: bago Date: Mon Jul 10 08:24:48 2006 New Revision: 420564 URL: http://svn.apache.org/viewvc?rev=420564view=rev Log: Further mimemessage handling optimisation conservative changes (not a code revert, but a logical revert) (JAMES-559) It seems to work even without this change because of a weird behaviour of MimeMessage.saveChanges in Sun Javamail. Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java?rev=420564r1=420563r2=420564view=diff == --- james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java (original) +++ james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java Mon Jul 10 08:24:48 2006 @@ -410,10 +410,16 @@ private synchronized void checkModifyHeaders() throws MessagingException { +// Disable only-header loading optimizations for JAMES-559 +if (!messageParsed) { +loadMessage(); +} +// End JAMES-559 if (headers == null) { loadHeaders(); } modified = true; +saved = false; headersModified = true; } @@ -446,6 +452,7 @@ */ public synchronized void setDataHandler(DataHandler arg0) throws MessagingException { modified = true; +saved = false; bodyModified = true; super.setDataHandler(arg0); } Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java?rev=420564r1=420563r2=420564view=diff == --- james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java (original) +++ james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java Mon Jul 10 08:24:48 2006 @@ -125,6 +125,7 @@ assertFalse(mw.isModified()); } +/** this is commented out due optimisation reverts (JAMES-559) public void testDeferredMessageLoadingWhileWriting() throws MessagingException, IOException { mw.setMessageLoadable(false); assertEquals(foo,mw.getSubject()); @@ -136,6 +137,7 @@ mw.setMessageLoadable(true); } +*/ public void testDeferredHeaderLoading() throws MessagingException, IOException { mw.setHeadersLoadable(false); Modified: james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java?rev=420564r1=420563r2=420564view=diff == --- james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java (original) +++ james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java Mon Jul 10 08:24:48 2006 @@ -108,5 +108,69 @@ mr.remove(mail1); } + + +/** + * This test has been written as a proof to: + * http://issues.apache.org/jira/browse/JAMES-559 + */ +public void testJames559WithoutSaveChanges() throws Exception { +AvalonMailRepository mr = new AvalonMailRepository(); +MockStore mockStore = new MockStore(); +File_Persistent_Stream_Repository file_Persistent_Stream_Repository = new File_Persistent_Stream_Repository(); +MockContext mockContext = new MockContext(new File(.)); +file_Persistent_Stream_Repository.contextualize(mockContext); +file_Persistent_Stream_Repository.enableLogging(new MockLogger()); +DefaultConfiguration defaultConfiguration2 = new DefaultConfiguration(conf); +defaultConfiguration2.setAttribute(destinationURL, file://var/mr); +file_Persistent_Stream_Repository.configure(defaultConfiguration2); +file_Persistent_Stream_Repository.initialize(); +mockStore.add(STREAM.mr, file_Persistent_Stream_Repository); +File_Persistent_Object_Repository file_Persistent_Object_Repository = new File_Persistent_Object_Repository(); +file_Persistent_Object_Repository.contextualize(mockContext); +file_Persistent_Object_Repository.enableLogging(new MockLogger()); +DefaultConfiguration defaultConfiguration22 = new DefaultConfiguration(conf); +defaultConfiguration22.setAttribute(destinationURL, file://var/mr); +
svn commit: r420566 - in /james/server/branches/v2.3/src: java/org/apache/james/core/MimeMessageWrapper.java test/org/apache/james/core/MimeMessageWrapperTest.java
Author: bago Date: Mon Jul 10 08:34:20 2006 New Revision: 420566 URL: http://svn.apache.org/viewvc?rev=420566view=rev Log: Further mimemessage handling optimisation conservative changes (not a code revert, but a logical revert) (JAMES-559) It seems to work even without this change because of a weird behaviour of MimeMessage.saveChanges in Sun Javamail. Modified: james/server/branches/v2.3/src/java/org/apache/james/core/MimeMessageWrapper.java james/server/branches/v2.3/src/test/org/apache/james/core/MimeMessageWrapperTest.java Modified: james/server/branches/v2.3/src/java/org/apache/james/core/MimeMessageWrapper.java URL: http://svn.apache.org/viewvc/james/server/branches/v2.3/src/java/org/apache/james/core/MimeMessageWrapper.java?rev=420566r1=420565r2=420566view=diff == --- james/server/branches/v2.3/src/java/org/apache/james/core/MimeMessageWrapper.java (original) +++ james/server/branches/v2.3/src/java/org/apache/james/core/MimeMessageWrapper.java Mon Jul 10 08:34:20 2006 @@ -410,10 +410,16 @@ private synchronized void checkModifyHeaders() throws MessagingException { +// Disable only-header loading optimizations for JAMES-559 +if (!messageParsed) { +loadMessage(); +} +// End JAMES-559 if (headers == null) { loadHeaders(); } modified = true; +saved = false; headersModified = true; } @@ -446,6 +452,7 @@ */ public synchronized void setDataHandler(DataHandler arg0) throws MessagingException { modified = true; +saved = false; bodyModified = true; super.setDataHandler(arg0); } Modified: james/server/branches/v2.3/src/test/org/apache/james/core/MimeMessageWrapperTest.java URL: http://svn.apache.org/viewvc/james/server/branches/v2.3/src/test/org/apache/james/core/MimeMessageWrapperTest.java?rev=420566r1=420565r2=420566view=diff == --- james/server/branches/v2.3/src/test/org/apache/james/core/MimeMessageWrapperTest.java (original) +++ james/server/branches/v2.3/src/test/org/apache/james/core/MimeMessageWrapperTest.java Mon Jul 10 08:34:20 2006 @@ -125,6 +125,7 @@ assertFalse(mw.isModified()); } +/** this is commented out due optimisation reverts (JAMES-559) public void testDeferredMessageLoadingWhileWriting() throws MessagingException, IOException { mw.setMessageLoadable(false); assertEquals(foo,mw.getSubject()); @@ -134,8 +135,8 @@ assertFalse(mw.messageParsed()); assertTrue(mw.isModified()); mw.setMessageLoadable(true); - } +*/ public void testDeferredHeaderLoading() throws MessagingException, IOException { mw.setHeadersLoadable(false); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Thing to keep in mind for future mail/message repositories
Working on http://issues.apache.org/jira/browse/JAMES-559 I had to remove most of the optimisation added to MimeMessageWrapper (the ones more performance oriented). The main problem is that we cannot use streaming if we want to write a message to the same record/file we're reading from. I'm just writing this because when we'll refactor Mail repositories (or better introduce Message repositories) there are 2 things that would help performace and allow us to reactivate this optimisations: 1) Keep headers and body in 2 different resources (this allow us to easily read and write only one of them) 2) The repository should support updating the content of a message while reading the previous version of that message. As a sidenote, Noel pointed out http://jakarta.apache.org/commons/transaction/file/index.html to introduce transations in file based repositories. And now a question. I haven't looked at Javamail Folder to understand how Javamail handle the update of a message: does anyone know how update is handled and if streaming can be used between the previous message content and the new message content ? Stefano - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (JAMES-559) Message body get lost after call saveChanges() and move to other processor
[ http://issues.apache.org/jira/browse/JAMES-559?page=comments#action_12420116 ] Vincenzo Gianferrari Pini commented on JAMES-559: - It works now for me. Thanks to all of the team for the work. I'll test 2.3.0b2 again in production on the weekend of July 22-23. Message body get lost after call saveChanges() and move to other processor -- Key: JAMES-559 URL: http://issues.apache.org/jira/browse/JAMES-559 Project: James Type: Bug Versions: 3.0, 2.3.0b2 Reporter: Norman Maurer Assignee: Stefano Bagnara Priority: Blocker Fix For: 3.0, 2.3.0b3 After call saveChanges() in a mailet and move the mail to a other processor with ToProcessor the whole messageBody getting lost. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420589 - /james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java
Author: norman Date: Mon Jul 10 10:34:46 2006 New Revision: 420589 URL: http://svn.apache.org/viewvc?rev=420589view=rev Log: Override setProperty(String,String) to work like aspected in the mocked object. Modified: james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java Modified: james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java?rev=420589r1=420588r2=420589view=diff == --- james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java (original) +++ james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java Mon Jul 10 10:34:46 2006 @@ -30,6 +30,7 @@ private String mailetName; private MailetContext mc; + public MockMailetConfig(String mailetName, MailetContext mc) { super(); this.mailetName = mailetName; @@ -58,4 +59,14 @@ return mailetName; } +// Override setProperty to work like it should in this MockMailetConfig +public Object setProperty(String key, String value) { +String oldValue = getProperty(key); +String newValue = value; + +if (oldValue != null) { +newValue = oldValue + , + value; +} +return super.setProperty(key, newValue); +} } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420591 - /james/server/trunk/src/test/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
Author: norman Date: Mon Jul 10 10:36:11 2006 New Revision: 420591 URL: http://svn.apache.org/viewvc?rev=420591view=rev Log: Add junit test for MailAttrbutesToMimeHeaders mailet. See JAMES-563 Added: james/server/trunk/src/test/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java Added: james/server/trunk/src/test/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java?rev=420591view=auto == --- james/server/trunk/src/test/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java (added) +++ james/server/trunk/src/test/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java Mon Jul 10 10:36:11 2006 @@ -0,0 +1,113 @@ +/*** + * Copyright (c) 2006 The Apache Software Foundation. * + * All rights reserved.* + * --- * + * Licensed under the Apache License, Version 2.0 (the License); you * + * may not use this file except in compliance with the License. You* + * may obtain a copy of the License at:* + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an AS IS BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * + * implied. See the License for the specific language governing * + * permissions and limitations under the License. * + ***/ + +package org.apache.james.transport.mailets; + +import junit.framework.TestCase; +import org.apache.james.test.mock.mailet.MockMail; +import org.apache.james.test.mock.mailet.MockMailContext; +import org.apache.james.test.mock.mailet.MockMailetConfig; +import org.apache.james.test.util.Util; +import org.apache.mailet.Mailet; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.ParseException; + +import java.io.UnsupportedEncodingException; + +public class MailAttributesToMimeHeadersTest extends TestCase { + +private Mailet mailet; + +private final String HEADER_NAME1 = JUNIT; + +private final String HEADER_NAME2 = JUNIT2; + +private final String MAIL_ATTRIBUTE_VALUE1 = test1; + +private final String MAIL_ATTRIBUTE_VALUE2 = test2; + +private final String MAIL_ATTRIBUTE_NAME1 = org.apache.james.test; + +private final String MAIL_ATTRIBUTE_NAME2 = org.apache.james.test2; + +private String config1 = MAIL_ATTRIBUTE_NAME1 + ; + HEADER_NAME1; + +private String config2 = MAIL_ATTRIBUTE_NAME2 + ; + HEADER_NAME2; + +public MailAttributesToMimeHeadersTest(String arg0) +throws UnsupportedEncodingException { +super(arg0); +} + +private void setConfig1(String config1) { +this.config1 = config1; +} + +private String getConfig1() { +return config1; +} + +private void setupMailet() throws MessagingException { +mailet = new MailAttributesToMimeHeaders(); +MockMailetConfig mci = new MockMailetConfig(Test, +new MockMailContext()); +mci.setProperty(simplemapping, getConfig1()); +mci.setProperty(simplemapping, config2); +mailet.init(mci); +} + +private MockMail setupMail(MimeMessage m) throws ParseException { +MockMail mockedMail = Util.createMockMail2Recipients(m); +mockedMail.setAttribute(MAIL_ATTRIBUTE_NAME1, MAIL_ATTRIBUTE_VALUE1); +mockedMail.setAttribute(MAIL_ATTRIBUTE_NAME2, MAIL_ATTRIBUTE_VALUE2); +return mockedMail; +} + +// test if the Headers were added +public void testHeadersArePresent() throws MessagingException { +MockMail mockedMail = setupMail(Util.createMimeMessage()); +setupMailet(); + +mailet.service(mockedMail); + +assertEquals(MAIL_ATTRIBUTE_VALUE1, mockedMail.getMessage().getHeader( +HEADER_NAME1)[0]); + +assertEquals(MAIL_ATTRIBUTE_VALUE2, mockedMail.getMessage().getHeader( +HEADER_NAME2)[0]); + +} + +// test if exception was thrown +public void testInvalidConfig() throws MessagingException { +boolean exception = false; +MockMail mockedMail = setupMail(Util.createMimeMessage()); +setConfig1(test); + +try { +setupMailet(); +
svn commit: r420593 - /james/server/branches/v2.3/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java
Author: norman Date: Mon Jul 10 10:46:45 2006 New Revision: 420593 URL: http://svn.apache.org/viewvc?rev=420593view=rev Log: Override setProperty(String,String) to work like aspected in the mocked object. Modified: james/server/branches/v2.3/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java Modified: james/server/branches/v2.3/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java URL: http://svn.apache.org/viewvc/james/server/branches/v2.3/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java?rev=420593r1=420592r2=420593view=diff == --- james/server/branches/v2.3/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java (original) +++ james/server/branches/v2.3/src/test/org/apache/james/test/mock/mailet/MockMailetConfig.java Mon Jul 10 10:46:45 2006 @@ -57,5 +57,16 @@ public String getMailetName() { return mailetName; } + +// Override setProperty to work like it should in this MockMailetConfig +public Object setProperty(String key, String value) { +String oldValue = getProperty(key); +String newValue = value; + +if (oldValue != null) { +newValue = oldValue + , + value; +} +return super.setProperty(key, newValue); +} } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Resolved: (JAMES-563) Add Mailet to convert attributes to headers
[ http://issues.apache.org/jira/browse/JAMES-563?page=all ] Norman Maurer resolved JAMES-563: - Resolution: Fixed Add Mailet to convert attributes to headers --- Key: JAMES-563 URL: http://issues.apache.org/jira/browse/JAMES-563 Project: James Type: New Feature Components: Matchers/Mailets (bundled) Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0 We should add an mailet which convert (map) attributes to headers. So we just set attributes in teh mailets and do all the header adding at one place. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r420596 - /james/server/trunk/src/test/org/apache/james/transport/mailets/NullTest.java
Author: norman Date: Mon Jul 10 11:03:39 2006 New Revision: 420596 URL: http://svn.apache.org/viewvc?rev=420596view=rev Log: Add junit test for Null Mailet Added: james/server/trunk/src/test/org/apache/james/transport/mailets/NullTest.java Added: james/server/trunk/src/test/org/apache/james/transport/mailets/NullTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/transport/mailets/NullTest.java?rev=420596view=auto == --- james/server/trunk/src/test/org/apache/james/transport/mailets/NullTest.java (added) +++ james/server/trunk/src/test/org/apache/james/transport/mailets/NullTest.java Mon Jul 10 11:03:39 2006 @@ -0,0 +1,71 @@ +/*** + * Copyright (c) 2006 The Apache Software Foundation. * + * All rights reserved.* + * --- * + * Licensed under the Apache License, Version 2.0 (the License); you * + * may not use this file except in compliance with the License. You* + * may obtain a copy of the License at:* + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an AS IS BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * + * implied. See the License for the specific language governing * + * permissions and limitations under the License. * + ***/ + +package org.apache.james.transport.mailets; + +import java.io.UnsupportedEncodingException; +import java.util.Arrays; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.ParseException; + +import junit.framework.TestCase; + +import org.apache.james.test.mock.mailet.MockMail; +import org.apache.mailet.Mail; +import org.apache.mailet.MailAddress; +import org.apache.mailet.Mailet; + +public class NullTest extends TestCase { + +private MimeMessage mockedMimeMessage; + +private Mail mockedMail; + +private Mailet mailet; + +private final String PROCESSOR = ghost; + +public NullTest(String arg0) throws UnsupportedEncodingException { +super(arg0); +} + +private void setupMockedMail(MimeMessage m) throws ParseException { +mockedMail = new MockMail(); +mockedMail.setMessage(m); +mockedMail.setRecipients(Arrays.asList(new MailAddress[] { +new MailAddress([EMAIL PROTECTED]), +new MailAddress([EMAIL PROTECTED]) })); + +} + +private void setupMailet() throws MessagingException { +mailet = new Null(); +} + +// test if ToProcessor works +public void testValidToProcessor() throws MessagingException { +setupMockedMail(mockedMimeMessage); +setupMailet(); + +mailet.service(mockedMail); + +assertEquals(PROCESSOR, mockedMail.getState()); +} + +} - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: IMAP Draft: Cluster
On Mon, 2006-07-10 at 14:57 +0200, Joachim Draeger wrote: Maybe such idle connections could be handled by a special thread and if any real work is starting on a connection, this one is handed over to a worker thread? To allow many idle connections but limit the maximal possible server load, I have the idea of a central scheduler in mind. The scheduler keeps track of all running threads. If a session thread wants to run an expensive command it has to ask the scheduler first. The thread per connection model simply doesn't scale to the level that would be needed for a decent IMAP server. Fortunately, this is a problem that has already been solved by SEDA [1]. The Apache MINA project [2] implements the good ideas of SEDA plus adds a number of other good ideas providing a framework that is very easy to learn and use. MINA also performs and scales very well. MINA is also an Apache project which means that any need support is just around the corner. At ApacheCon there was talk about using MINA to implement the protocols used by JAMES [3]. Since I wrote a MINA based SMTP handler [4], I would be very interested in seeing JAMES move to MINA based protocol handlers. I think this would be a good move for the 3.0 release of JAMES. -Mike [1] http://www.eecs.harvard.edu/~mdw/proj/seda/ [2] http://directory.apache.org/subprojects/mina/index.html [3] http://mail-archives.apache.org/mod_mbox/directory-mina-dev/200607.mbox/browser [4] http://hausmail.safehaus.org/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: IMAP Draft: Cluster
Am Montag, den 10.07.2006, 21:05 -0600 schrieb Mike Heath: On Mon, 2006-07-10 at 14:57 +0200, Joachim Draeger wrote: Maybe such idle connections could be handled by a special thread and if any real work is starting on a connection, this one is handed over to a worker thread? To allow many idle connections but limit the maximal possible server load, I have the idea of a central scheduler in mind. The scheduler keeps track of all running threads. If a session thread wants to run an expensive command it has to ask the scheduler first. The thread per connection model simply doesn't scale to the level that would be needed for a decent IMAP server. Fortunately, this is a problem that has already been solved by SEDA [1]. The Apache MINA project [2] implements the good ideas of SEDA plus adds a number of other good ideas providing a framework that is very easy to learn and use. MINA also performs and scales very well. MINA is also an Apache project which means that any need support is just around the corner. At ApacheCon there was talk about using MINA to implement the protocols used by JAMES [3]. Since I wrote a MINA based SMTP handler [4], I would be very interested in seeing JAMES move to MINA based protocol handlers. I think this would be a good move for the 3.0 release of JAMES. -Mike [1] http://www.eecs.harvard.edu/~mdw/proj/seda/ [2] http://directory.apache.org/subprojects/mina/index.html [3] http://mail-archives.apache.org/mod_mbox/directory-mina-dev/200607.mbox/browser [4] http://hausmail.safehaus.org/ Hi Mike, i allready move this to 3.0 Roadmap ;-) http://issues.apache.org/jira/browse/JAMES-551 I had a look at your work in the last week. It seems to be very intressting. Im not sure yet if we should move to MINA before or after the new SMTP Handler api is finish.. What the others think ? BTW, i never used MINA but the speak on ApacheCon was very intressting. bye Norman signature.asc Description: Dies ist ein digital signierter Nachrichtenteil