james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefano Bagnara <apa...@bago.org>
Subject Re: svn commit: r682219 - in /james/server/trunk: core-library/src/main/java/org/apache/james/core/ experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ experimental-seda-imap-function/src/test/java/org/apache/james/test/...
Date Sun, 03 Aug 2008 21:28:55 GMT
rdonkin@apache.org ha scritto:
> Author: rdonkin
> Date: Sun Aug  3 14:21:45 2008
> New Revision: 682219
> 
> URL: http://svn.apache.org/viewvc?rev=682219&view=rev
> Log:
> Concurrency tests for IMAP
 > [...]
> Modified:
>     james/server/trunk/core-library/src/main/java/org/apache/james/core/MailImpl.java
> [...]

This commit included the changes you did to MailImpl working on 
JAMES-850. I don't know if this is by purpose or by mistake, but I'm not 
sure they are good in the long term unless there is a need (unless they 
fix the issue, because the "full clone" on MailImpl was introduced for 
performance issues).

Stefano

> Modified: james/server/trunk/core-library/src/main/java/org/apache/james/core/MailImpl.java
> URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/core/MailImpl.java?rev=682219&r1=682218&r2=682219&view=diff
> ==============================================================================
> --- james/server/trunk/core-library/src/main/java/org/apache/james/core/MailImpl.java
(original)
> +++ james/server/trunk/core-library/src/main/java/org/apache/james/core/MailImpl.java
Sun Aug  3 14:21:45 2008
> @@ -28,6 +28,7 @@
>  import org.apache.mailet.RFC2822Headers;
>  
>  import javax.mail.MessagingException;
> +import javax.mail.SendFailedException;
>  import javax.mail.internet.InternetAddress;
>  import javax.mail.internet.MimeMessage;
>  import javax.mail.internet.ParseException;
> @@ -158,16 +159,19 @@
>          setRemoteAddr(mail.getRemoteAddr());
>          setLastUpdated(mail.getLastUpdated());
>          try {
> -            if (mail instanceof MailImpl) {
> -                setAttributesRaw((HashMap) cloneSerializableObject(((MailImpl) mail).getAttributesRaw()));
> -            } else {
> -                HashMap attribs = new HashMap();
> -                for (Iterator i = mail.getAttributeNames(); i.hasNext(); ) {
> -                    String hashKey = (String) i.next();
> -                    attribs.put(hashKey,cloneSerializableObject(mail.getAttribute(hashKey)));
> +            HashMap attribs = new HashMap();
> +            for (Iterator i = mail.getAttributeNames(); i.hasNext(); ) {
> +                String hashKey = (String) i.next();
> +                final Serializable attribute = mail.getAttribute(hashKey);
> +                if (attribute instanceof SendFailedException) {
> +                    SendFailedException ex = (SendFailedException) attribute;
> +                    Throwable t = ex.getNextException();
> +                    debug(t); 
>                  }
> -                setAttributesRaw(attribs);
> +                final Object cloneSerializableObject = cloneSerializableObject(attribute);
> +                attribs.put(hashKey,cloneSerializableObject);
>              }
> +            setAttributesRaw(attribs);
>          } catch (IOException e) {
>              // should never happen for in memory streams
>              setAttributesRaw(new HashMap());
> @@ -176,6 +180,28 @@
>              setAttributesRaw(new HashMap());
>          }
>      }
> +    private void debug(Throwable t) {
> +        if (t == null) {
> +            System.err.println("[END]");
> +        } else {
> +            System.err.println("NEXT@" + System.identityHashCode(t)  + t );
> +            if (t instanceof MessagingException) {
> +                MessagingException e = (MessagingException) t;
> +                System.err.println("NEXT@" + System.identityHashCode(e)  + e );
> +                t = e.getNextException();
> +                if (t == null) {
> +                    t = e.getCause();
> +                }
> +                debug(t);
> +            } else {
> +                System.err.println("NEXT@" + System.identityHashCode(t)  + t );
> +                Throwable next = t.getCause();
> +                if (next != t) {
> +                    debug(next);
> +                }
> +            }
> +        }
> +    }
>  
>      /**
>       * A constructor that creates a MailImpl with the specified name,
> @@ -608,7 +634,7 @@
>       * @throws IOException
>       * @throws ClassNotFoundException
>       */
> -    private static Object cloneSerializableObject(Object o) throws IOException, ClassNotFoundException
{
> +    public static Object cloneSerializableObject(Object o) throws IOException, ClassNotFoundException
{
>          ByteArrayOutputStream b = new ByteArrayOutputStream();
>          ObjectOutputStream out = new ObjectOutputStream(b);
>          out.writeObject(o);
> [...]


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message