Lars Heinemann пишет:
Ivan,

please raise a JIRA for the issues. I will have a look at this then.

  Hi Lars!

I created SM-1568 and SM-1569.

 Truly your,
 Ivan Pryvalov.


Regards
Lars


Am Mittwoch 10 September 2008 11:50:32 schrieb ivan:
ivan пишет:
  Hi team!

Some month ago I was interesting in servicemix-mail component and I
began to use servicemix 3.3-snapshot in SM 3.2.1 version.

For now I have 2 notes regarding implementation of component:

1. class MailSenderEndpoint :
   method processInOut and method processInOnly:


  snippet from code:

 ...
 Transport.send(msg);
 ...


Found issue:
  it is not possible to use SMTPS (for example, gmail)

connection:
smtps://[EMAIL PROTECTED]


Steps to resolve:

 replace snippet from code with

 ...
Transport transport = session.getTransport();

                transport.connect(
                        MailSenderEndpoint.this.config.getHost(),
                        MailSenderEndpoint.this.config.getPort(),
                        MailSenderEndpoint.this.config.getUsername(),
                        MailSenderEndpoint.this.config.getPassword()
                        );
                transport.sendMessage(msg, msg.getAllRecipients());
                transport.close();
...



2. class AbstractMailMarchaller is not thread-safe:
It means if I will send 2 excganges to some SU based on servicemix-mail
component, after first exchange is processed, it is executed cleanUp
method of AbstractMarshaller, and while executing second exchange we get
"FileNotFoundException".

Schema:


1 Exchange:  -> AR   SA   S   C



2 Exchange:   ---->  AR   SA     S    C


AR - AcceptionRequest
SA - SavingAttachments
S - Sending e-mail
C - CleanUp.

Troubles is in point 2Exchange.S  (after 1.Exchange.C)

private List<File> temporaryFiles = new ArrayList<File>();


I would to replace it with:

private Map< String, List<File> > temporaryFilesMap =
Collections.synchronizedMap(new HashMap<String, List<File> >());


and:

protected final void addTemporaryResource(String id, File tmpFile) {
        if (!this.temporaryFilesMap.containsKey(id))
            this.temporaryFilesMap.put(id, new ArrayList<File>());
        this.temporaryFilesMap.get(id).add(tmpFile);
    }

and:

    public final void cleanUpResources(String id) {
        List<File> list = this.temporaryFilesMap.get(id);
        if (list!=null){
            for (File f : list) {
                f.delete();
            }
            list.clear();
            this.temporaryFilesMap.remove(id);
        }
    }


And do necessary changes in code from other classes (also it is needed
For id we can use exchange.getExchangeId().

to update tests to avoid NullPointerException, I mean following:
 replace InOnly exchange = new InOnlyImpl() with  InOnly exchange = new
InOnlyImpl("id"))


Can I create JIRA-tasks for this 2 issues?

  Ivan Pryvalov.



Reply via email to