You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/08/23 13:03:51 UTC
svn commit: r1160623 -
/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
Author: norman
Date: Tue Aug 23 11:03:50 2011
New Revision: 1160623
URL: http://svn.apache.org/viewvc?rev=1160623&view=rev
Log:
Only create MimeDescriptorStructure if really needed. See IMAP-333
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java?rev=1160623&r1=1160622&r2=1160623&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java Tue Aug 23 11:03:50 2011
@@ -44,7 +44,6 @@ import org.apache.james.mailbox.MessageM
import org.apache.james.mailbox.MessageRange;
import org.apache.james.mailbox.MessageRangeException;
import org.apache.james.mailbox.MessageResult;
-import org.apache.james.mailbox.MimeDescriptor;
public final class FetchResponseBuilder {
@@ -150,18 +149,33 @@ public final class FetchResponseBuilder
this.envelope = buildEnvelope(result);
}
+
+ // BODY part responses.
+ Collection<BodyFetchElement> elements = fetch.getBodyElements();
+ this.elements = new ArrayList<FetchResponse.BodyElement>();
+ for (Iterator<BodyFetchElement> iterator = elements.iterator(); iterator.hasNext();) {
+ BodyFetchElement fetchElement = iterator.next();
+ final FetchResponse.BodyElement element = bodyFetch(result, fetchElement);
+ if (element != null) {
+ this.elements.add(element);
+ }
+ }
+
// Only create when needed
if (fetch.isBody() || fetch.isBodyStructure()) {
- final MimeDescriptor descriptor = result.getMimeDescriptor();
-
// BODY response
- if (fetch.isBody()) {
- body = new MimeDescriptorStructure(false, descriptor, envelopeBuilder);
+ //
+ // the STRUCTURE is only needed when no specific element is requested otherwise we don't need
+ // to access it and may be able to not parse the message
+ //
+ // See IMAP-333
+ if (fetch.isBody() && this.elements.isEmpty()) {
+ body = new MimeDescriptorStructure(false, result.getMimeDescriptor(), envelopeBuilder);
}
// BODYSTRUCTURE response
if (fetch.isBodyStructure()) {
- bodystructure = new MimeDescriptorStructure(true, descriptor, envelopeBuilder);
+ bodystructure = new MimeDescriptorStructure(true, result.getMimeDescriptor(), envelopeBuilder);
}
}
// UID response
@@ -169,16 +183,6 @@ public final class FetchResponseBuilder
setUid(resultUid);
}
- // BODY part responses.
- Collection<BodyFetchElement> elements = fetch.getBodyElements();
- this.elements = new ArrayList<FetchResponse.BodyElement>();
- for (Iterator<BodyFetchElement> iterator = elements.iterator(); iterator.hasNext();) {
- BodyFetchElement fetchElement = iterator.next();
- final FetchResponse.BodyElement element = bodyFetch(result, fetchElement);
- if (element != null) {
- this.elements.add(element);
- }
- }
if (fetch.isModSeq()) {
long changedSince = fetch.getChangedSince();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org