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/04/28 12:29:39 UTC

svn commit: r1097402 [2/3] - in /james/mailbox/trunk: jcr/src/main/java/org/apache/james/mailbox/jcr/ jcr/src/main/java/org/apache/james/mailbox/jcr/mail/ jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/ jpa/ jpa/src/main/java/org/apache/jame...

Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java Thu Apr 28 10:29:38 2011
@@ -34,23 +34,23 @@ import org.apache.james.mailbox.UpdatedF
 import org.apache.james.mailbox.inmemory.mail.model.SimpleMailboxMembership;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
-import org.apache.james.mailbox.store.mail.model.MailboxMembershipComparator;
+import org.apache.james.mailbox.store.mail.model.Message;
+import org.apache.james.mailbox.store.mail.model.MessageComparator;
 import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
 
 public class InMemoryMessageMapper extends NonTransactionalMapper implements MessageMapper<Long> {
 
-    private Map<Long, Map<Long, MailboxMembership<Long>>> mailboxByUid;
+    private Map<Long, Map<Long, Message<Long>>> mailboxByUid;
     private static final int INITIAL_SIZE = 256;
     
     public InMemoryMessageMapper() {
-        this.mailboxByUid = new ConcurrentHashMap<Long, Map<Long, MailboxMembership<Long>>>(INITIAL_SIZE);
+        this.mailboxByUid = new ConcurrentHashMap<Long, Map<Long, Message<Long>>>(INITIAL_SIZE);
     }
     
-    private Map<Long, MailboxMembership<Long>> getMembershipByUidForMailbox(Mailbox<Long> mailbox) {
-        Map<Long, MailboxMembership<Long>> membershipByUid = mailboxByUid.get(mailbox.getMailboxId());
+    private Map<Long, Message<Long>> getMembershipByUidForMailbox(Mailbox<Long> mailbox) {
+        Map<Long, Message<Long>> membershipByUid = mailboxByUid.get(mailbox.getMailboxId());
         if (membershipByUid == null) {
-            membershipByUid = new ConcurrentHashMap<Long, MailboxMembership<Long>>(INITIAL_SIZE);
+            membershipByUid = new ConcurrentHashMap<Long, Message<Long>>(INITIAL_SIZE);
             mailboxByUid.put(mailbox.getMailboxId(), membershipByUid);
         }
         return membershipByUid;
@@ -70,7 +70,7 @@ public class InMemoryMessageMapper exten
      */
     public long countUnseenMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
         long count = 0;
-        for(MailboxMembership<Long> member:getMembershipByUidForMailbox(mailbox).values()) {
+        for(Message<Long> member:getMembershipByUidForMailbox(mailbox).values()) {
             if (!member.isSeen()) {
                 count++;
             }
@@ -82,7 +82,7 @@ public class InMemoryMessageMapper exten
      * (non-Javadoc)
      * @see org.apache.james.mailbox.store.mail.MessageMapper#delete(org.apache.james.mailbox.store.mail.model.MailboxMembership)
      */
-    public void delete(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
+    public void delete(Mailbox<Long> mailbox, Message<Long> message) throws MailboxException {
         getMembershipByUidForMailbox(mailbox).remove(message.getUid());
     }
 
@@ -92,24 +92,24 @@ public class InMemoryMessageMapper exten
      */
     @SuppressWarnings("unchecked")
     public void findInMailbox(Mailbox<Long> mailbox, MessageRange set, MailboxMembershipCallback<Long> callback) throws MailboxException {
-        final List<MailboxMembership<Long>> results;
+        final List<Message<Long>> results;
         final int batchSize = set.getBatchSize();
         final MessageRange.Type type = set.getType();
         switch (type) {
             case ALL:
-                results = new ArrayList<MailboxMembership<Long>>(getMembershipByUidForMailbox(mailbox).values());
+                results = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
                 break;
             case FROM:
-                results = new ArrayList<MailboxMembership<Long>>(getMembershipByUidForMailbox(mailbox).values());
-                for (final Iterator<MailboxMembership<Long>> it=results.iterator();it.hasNext();) {
+                results = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
+                for (final Iterator<Message<Long>> it=results.iterator();it.hasNext();) {
                    if (it.next().getUid()< set.getUidFrom()) {
                        it.remove(); 
                    }
                 }
                 break;
             case RANGE:
-                results = new ArrayList<MailboxMembership<Long>>(getMembershipByUidForMailbox(mailbox).values());
-                for (final Iterator<MailboxMembership<Long>> it=results.iterator();it.hasNext();) {
+                results = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
+                for (final Iterator<Message<Long>> it=results.iterator();it.hasNext();) {
                    final long uid = it.next().getUid();
                 if (uid<set.getUidFrom() || uid>set.getUidTo()) {
                        it.remove(); 
@@ -117,17 +117,17 @@ public class InMemoryMessageMapper exten
                 }
                 break;
             case ONE:
-                results  = new ArrayList<MailboxMembership<Long>>(1);
-                final MailboxMembership member = getMembershipByUidForMailbox(mailbox).get(set.getUidFrom());
+                results  = new ArrayList<Message<Long>>(1);
+                final Message member = getMembershipByUidForMailbox(mailbox).get(set.getUidFrom());
                 if (member != null) {
                     results.add(member);
                 }
                 break;
             default:
-                results = new ArrayList<MailboxMembership<Long>>();
+                results = new ArrayList<Message<Long>>();
                 break;
         }
-        Collections.sort(results, MailboxMembershipComparator.INSTANCE);
+        Collections.sort(results, MessageComparator.INSTANCE);
         
         if(batchSize > 0) {
 	        int i = 0;
@@ -150,9 +150,9 @@ public class InMemoryMessageMapper exten
 
         findInMailbox(mailbox, set, new MailboxMembershipCallback<Long>() {
 
-            public void onMailboxMembers(List<MailboxMembership<Long>> results) throws MailboxException {
-                for (final Iterator<MailboxMembership<Long>> it = results.iterator(); it.hasNext();) {
-                    MailboxMembership<Long> member = it.next();
+            public void onMailboxMembers(List<Message<Long>> results) throws MailboxException {
+                for (final Iterator<Message<Long>> it = results.iterator(); it.hasNext();) {
+                    Message<Long> member = it.next();
                     if (member.isDeleted()) {
                         delete(mailbox, member);
                         filteredResult.add(member.getUid());
@@ -168,14 +168,14 @@ public class InMemoryMessageMapper exten
      * (non-Javadoc)
      * @see org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessagesInMailbox()
      */
-    public List<MailboxMembership<Long>> findRecentMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
-        final List<MailboxMembership<Long>> results = new ArrayList<MailboxMembership<Long>>();
-        for(MailboxMembership<Long> member:getMembershipByUidForMailbox(mailbox).values()) {
+    public List<Message<Long>> findRecentMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+        final List<Message<Long>> results = new ArrayList<Message<Long>>();
+        for(Message<Long> member:getMembershipByUidForMailbox(mailbox).values()) {
             if (member.isRecent()) {
                 results.add(member);
             }
         }
-        Collections.sort(results, MailboxMembershipComparator.INSTANCE);
+        Collections.sort(results, MessageComparator.INSTANCE);
         
         return results;
     }
@@ -185,10 +185,10 @@ public class InMemoryMessageMapper exten
      * @see org.apache.james.mailbox.store.mail.MessageMapper#findFirstUnseenMessageUid(org.apache.james.mailbox.store.mail.model.Mailbox)
      */
     public Long findFirstUnseenMessageUid(Mailbox<Long> mailbox) throws MailboxException {
-        List<MailboxMembership<Long>> memberships = new ArrayList<MailboxMembership<Long>>(getMembershipByUidForMailbox(mailbox).values());
-        Collections.sort(memberships, MailboxMembershipComparator.INSTANCE);
+        List<Message<Long>> memberships = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
+        Collections.sort(memberships, MessageComparator.INSTANCE);
         for (int i = 0;  i < memberships.size(); i++) {
-            MailboxMembership<Long> m = memberships.get(i);
+            Message<Long> m = memberships.get(i);
             if (m.isSeen() == false) {
                 return m.getUid();
             }
@@ -200,7 +200,7 @@ public class InMemoryMessageMapper exten
      * (non-Javadoc)
      * @see org.apache.james.mailbox.store.mail.MessageMapper#save(org.apache.james.mailbox.store.mail.model.MailboxMembership)
      */
-    public long add(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
+    public long add(Mailbox<Long> mailbox, Message<Long> message) throws MailboxException {
         getMembershipByUidForMailbox(mailbox).put(message.getUid(), message);
         return message.getUid();
     }
@@ -222,7 +222,7 @@ public class InMemoryMessageMapper exten
      * (non-Javadoc)
      * @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
      */
-    public long copy(Mailbox<Long> mailbox, long uid, MailboxMembership<Long> original) throws MailboxException {        
+    public long copy(Mailbox<Long> mailbox, long uid, Message<Long> original) throws MailboxException {        
         SimpleMailboxMembership membership = new SimpleMailboxMembership(mailbox.getMailboxId(), uid, (SimpleMailboxMembership) original);
         return add(mailbox, membership);
     }
@@ -232,9 +232,9 @@ public class InMemoryMessageMapper exten
 
         findInMailbox(mailbox, set, new MailboxMembershipCallback<Long>() {
 			
-			public void onMailboxMembers(List<MailboxMembership<Long>> members)
+			public void onMailboxMembers(List<Message<Long>> members)
 					throws MailboxException {
-				for (final MailboxMembership<Long> member:members) {
+				for (final Message<Long> member:members) {
 		            Flags originalFlags = member.createFlags();
 		            if (replace) {
 		                member.setFlags(flags);

Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/model/SimpleMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/model/SimpleMailboxMembership.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/model/SimpleMailboxMembership.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/model/SimpleMailboxMembership.java Thu Apr 28 10:29:38 2011
@@ -27,14 +27,12 @@ import java.util.List;
 
 import javax.mail.Flags;
 
-import org.apache.james.mailbox.store.mail.model.AbstractMailboxMembership;
+import org.apache.james.mailbox.store.mail.model.AbstractMessage;
 import org.apache.james.mailbox.store.mail.model.Header;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
-import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.mail.model.PropertyBuilder;
 
-public class SimpleMailboxMembership extends AbstractMailboxMembership<Long> implements Message, Comparable<MailboxMembership<Long>> {
+public class SimpleMailboxMembership extends AbstractMessage<Long> {
 
     private final long uid;
     private final long mailboxId;
@@ -91,10 +89,6 @@ public class SimpleMailboxMembership ext
     }
 
 
-    public Message getMessage() {
-        return this;
-    }
-
     public Date getInternalDate() {
         return internalDate;
     }
@@ -152,10 +146,6 @@ public class SimpleMailboxMembership ext
         return new ByteArrayInputStream(document,bodyStartOctet, (int) getFullContentOctets());      
     }
 
-    public long getBodyOctets() {
-        return getFullContentOctets() - bodyStartOctet;
-    }
-
     public InputStream getFullContent() throws IOException {
         return new ByteArrayInputStream(document);
     }
@@ -206,11 +196,6 @@ public class SimpleMailboxMembership ext
         return true;
     }
 
-    public int compareTo(MailboxMembership<Long> o) {
-        final long otherUid = getUid();
-        return uid < otherUid ? -1 : uid == otherUid ? 0 : 1;
-    }
-
     /**
      * Representation suitable for logging and debugging.
      *
@@ -234,6 +219,9 @@ public class SimpleMailboxMembership ext
             + "mediaType = " + this.mediaType + " "
             + " ]";
     }
-    
-    
+
+    @Override
+    protected int getBodyStartOctet() {
+        return bodyStartOctet;
+    }
 }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearchIndex.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearchIndex.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearchIndex.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearchIndex.java Thu Apr 28 10:29:38 2011
@@ -28,18 +28,17 @@ import org.apache.james.mailbox.MailboxS
 import org.apache.james.mailbox.MessageRange;
 import org.apache.james.mailbox.SearchQuery;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
-
+import org.apache.james.mailbox.store.mail.model.Message;
 public interface MessageSearchIndex<Id> {
 
     /**
      * Add the {@link MailboxMembership} to the search index
      * 
      * @param mailbox
-     * @param membership
+     * @param message
      * @throws MailboxException
      */
-    public void add(MailboxSession session, Mailbox<Id> mailbox, MailboxMembership<Id> membership) throws MailboxException;
+    public void add(MailboxSession session, Mailbox<Id> mailbox, Message<Id> message) throws MailboxException;
     
     /**
      * Update the Flags in the search index for the given {@link MessageRange} 

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java Thu Apr 28 10:29:38 2011
@@ -39,7 +39,7 @@ import org.apache.james.mailbox.SearchQu
 import org.apache.james.mailbox.UnsupportedSearchException;
 import org.apache.james.mailbox.SearchQuery.NumericRange;
 import org.apache.james.mailbox.store.mail.model.Header;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mime4j.MimeException;
 import org.apache.james.mime4j.field.datetime.DateTime;
 import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
@@ -78,7 +78,7 @@ public class MessageSearches {
      * @return true if the row matches the given criteria, false otherwise
      * @throws MailboxException 
      */
-    public boolean isMatch(final SearchQuery query, final MailboxMembership<?> message)
+    public boolean isMatch(final SearchQuery query, final Message<?> message)
             throws MailboxException {
         final List<SearchQuery.Criterion> criteria = query.getCriterias();
         final Collection<Long> recentMessageUids = query.getRecentMessageUids();
@@ -105,7 +105,7 @@ public class MessageSearches {
      * @return true if the row matches the given criterion, false otherwise
      * @throws MailboxException 
      */
-    public boolean isMatch(SearchQuery.Criterion criterion, MailboxMembership<?> message,
+    public boolean isMatch(SearchQuery.Criterion criterion, Message<?> message,
             final Collection<Long> recentMessageUids) throws MailboxException {
         final boolean result;
         if (criterion instanceof SearchQuery.InternalDateCriterion) {
@@ -132,7 +132,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.TextCriterion criterion, MailboxMembership<?> message) throws MailboxException  {
+    private boolean matches(SearchQuery.TextCriterion criterion, Message<?> message) throws MailboxException  {
         try {
             final SearchQuery.ContainsOperator operator = criterion
                     .getOperator();
@@ -152,9 +152,9 @@ public class MessageSearches {
         }
     }
 
-    private boolean bodyContains(String value, MailboxMembership<?> message)
+    private boolean bodyContains(String value, Message<?> message)
             throws IOException, MimeException {
-        final InputStream input = ResultUtils.toInput(message.getMessage());
+        final InputStream input = ResultUtils.toInput(message);
         final boolean result = isInMessage(value, input, false);
         return result;
     }
@@ -170,15 +170,15 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean messageContains(String value, MailboxMembership<?> message)
+    private boolean messageContains(String value, Message<?> message)
             throws IOException, MimeException {
-        final InputStream input = ResultUtils.toInput(message.getMessage());
+        final InputStream input = ResultUtils.toInput(message);
         final boolean result = isInMessage(value, input, true);
         return result;
     }
 
     private boolean matches(SearchQuery.ConjunctionCriterion criterion,
-            MailboxMembership<?> message, final Collection<Long> recentMessageUids) throws MailboxException {
+            Message<?> message, final Collection<Long> recentMessageUids) throws MailboxException {
         final List<SearchQuery.Criterion> criteria = criterion.getCriteria();
         switch (criterion.getType()) {
             case NOR:
@@ -192,7 +192,7 @@ public class MessageSearches {
         }
     }
 
-    private boolean and(final List<SearchQuery.Criterion> criteria, final MailboxMembership<?> message, 
+    private boolean and(final List<SearchQuery.Criterion> criteria, final Message<?> message, 
             final Collection<Long> recentMessageUids) throws MailboxException {
         boolean result = true;
         for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
@@ -206,7 +206,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean or(final List<SearchQuery.Criterion> criteria, final MailboxMembership<?> message,
+    private boolean or(final List<SearchQuery.Criterion> criteria, final Message<?> message,
             final Collection<Long> recentMessageUids) throws MailboxException {
         boolean result = false;
         for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
@@ -220,7 +220,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean nor(final List<SearchQuery.Criterion> criteria, final MailboxMembership<?> message,
+    private boolean nor(final List<SearchQuery.Criterion> criteria, final Message<?> message,
             final Collection<Long> recentMessageUids) throws MailboxException {
         boolean result = true;
         for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
@@ -235,7 +235,7 @@ public class MessageSearches {
     }
 
     private boolean matches(SearchQuery.FlagCriterion criterion,
-            MailboxMembership<?> message, final Collection<Long> recentMessageUids) {
+            Message<?> message, final Collection<Long> recentMessageUids) {
         final SearchQuery.BooleanOperator operator = criterion.getOperator();
         final boolean isSet = operator.isSet();
         final Flags.Flag flag = criterion.getFlag();
@@ -259,7 +259,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.UidCriterion criterion, MailboxMembership<?> message) {
+    private boolean matches(SearchQuery.UidCriterion criterion, Message<?> message) {
         final SearchQuery.InOperator operator = criterion.getOperator();
         final NumericRange[] ranges = operator.getRange();
         final long uid = message.getUid();
@@ -275,7 +275,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.HeaderCriterion criterion, MailboxMembership<?> message) throws UnsupportedSearchException {
+    private boolean matches(SearchQuery.HeaderCriterion criterion, Message<?> message) throws UnsupportedSearchException {
         final SearchQuery.HeaderOperator operator = criterion.getOperator();
         final String headerName = criterion.getHeaderName();
         final boolean result;
@@ -291,9 +291,9 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean exists(String headerName, MailboxMembership<?> message) {
+    private boolean exists(String headerName, Message<?> message) {
         boolean result = false;
-        final List<Header> headers = message.getMessage().getHeaders();
+        final List<Header> headers = message.getHeaders();
         for (Header header:headers) {
             final String name = header.getFieldName();
             if (headerName.equalsIgnoreCase(name)) {
@@ -305,10 +305,10 @@ public class MessageSearches {
     }
 
     private boolean matches(final SearchQuery.ContainsOperator operator,
-            final String headerName, final MailboxMembership<?> message) {
+            final String headerName, final Message<?> message) {
         final String text = operator.getValue().toUpperCase();
         boolean result = false;
-        final List<Header> headers = message.getMessage().getHeaders();
+        final List<Header> headers = message.getHeaders();
         for (Header header:headers) {
             final String name = header.getFieldName();
             if (headerName.equalsIgnoreCase(name)) {
@@ -325,7 +325,7 @@ public class MessageSearches {
     }
 
     private boolean matches(final SearchQuery.DateOperator operator,
-            final String headerName, final MailboxMembership<?> message) throws UnsupportedSearchException {
+            final String headerName, final Message<?> message) throws UnsupportedSearchException {
        
         final Date date = operator.getDate();
         final DateResolution res = operator.getDateResultion();
@@ -352,8 +352,8 @@ public class MessageSearches {
         }
     }
 
-    private String headerValue(final String headerName, final MailboxMembership<?> message) {
-        final List<Header> headers = message.getMessage().getHeaders();
+    private String headerValue(final String headerName, final Message<?> message) {
+        final List<Header> headers = message.getHeaders();
         String value = null;
         for (Header header:headers) {
             final String name = header.getFieldName();
@@ -373,10 +373,10 @@ public class MessageSearches {
         return cal.getTime();
     }
 
-    private boolean matches(SearchQuery.SizeCriterion criterion, MailboxMembership<?> message)
+    private boolean matches(SearchQuery.SizeCriterion criterion, Message<?> message)
             throws UnsupportedSearchException {
         final SearchQuery.NumericOperator operator = criterion.getOperator();
-        final long size = message.getMessage().getFullContentOctets();
+        final long size = message.getFullContentOctets();
         final long value = operator.getValue();
         switch (operator.getType()) {
             case LESS_THAN:
@@ -391,14 +391,14 @@ public class MessageSearches {
     }
 
     private boolean matches(SearchQuery.InternalDateCriterion criterion,
-            MailboxMembership<?> message) throws UnsupportedSearchException {
+            Message<?> message) throws UnsupportedSearchException {
         final SearchQuery.DateOperator operator = criterion.getOperator();
         final boolean result = matchesInternalDate(operator, message);
         return result;
     }
 
     private boolean matchesInternalDate(
-            final SearchQuery.DateOperator operator, final MailboxMembership<?> message)
+            final SearchQuery.DateOperator operator, final Message<?> message)
             throws UnsupportedSearchException {
         final Date date = operator.getDate();
         final DateResolution res = operator.getDateResultion();

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultIterator.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultIterator.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultIterator.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultIterator.java Thu Apr 28 10:29:38 2011
@@ -31,7 +31,7 @@ import org.apache.james.mailbox.MailboxE
 import org.apache.james.mailbox.MessageResult;
 import org.apache.james.mailbox.MimeDescriptor;
 import org.apache.james.mailbox.MessageResult.FetchGroup;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 
 /**
  * {@link Iterator} implementation for {@link MessageResult}
@@ -39,14 +39,14 @@ import org.apache.james.mailbox.store.ma
  */
 public class ResultIterator<Id> implements Iterator<MessageResult> {
 
-    private final Iterator<MailboxMembership<Id>> messages;
+    private final Iterator<Message<Id>> messages;
 
     private final FetchGroup fetchGroup;
 
-    public ResultIterator(final Iterator<MailboxMembership<Id>> messages, final FetchGroup fetchGroup) {
+    public ResultIterator(final Iterator<Message<Id>> messages, final FetchGroup fetchGroup) {
         super();
         if (messages == null) {
-            this.messages = new ArrayList<MailboxMembership<Id>>().iterator();
+            this.messages = new ArrayList<Message<Id>>().iterator();
         } else {
             this.messages = messages;
         }
@@ -70,7 +70,7 @@ public class ResultIterator<Id> implemen
         if (hasNext() == false) {
             throw new NoSuchElementException("No such element.");
         }
-        final MailboxMembership<Id> message = messages.next();
+        final Message<Id> message = messages.next();
         MessageResult result;
         try {
 
@@ -97,11 +97,11 @@ public class ResultIterator<Id> implemen
 
         private final long uid;
 
-        public UnloadedMessageResult(final MailboxMembership<Id> message,
+        public UnloadedMessageResult(final Message<Id> message,
                 final MailboxException exception) {
             super();
             internalDate = message.getInternalDate();
-            size = message.getMessage().getFullContentOctets();
+            size = message.getFullContentOctets();
             uid = message.getUid();
             this.exception = exception;
         }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java Thu Apr 28 10:29:38 2011
@@ -38,7 +38,7 @@ import org.apache.james.mailbox.MessageR
 import org.apache.james.mailbox.MessageResult.MimePath;
 import org.apache.james.mailbox.MimeDescriptor;
 import org.apache.james.mailbox.store.mail.model.Header;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.streaming.InputStreamContent;
 import org.apache.james.mailbox.store.streaming.InputStreamContent.Type;
 import org.apache.james.mailbox.store.streaming.PartContentBuilder;
@@ -56,12 +56,7 @@ public class ResultUtils {
 
     static final Charset US_ASCII = Charset.forName("US-ASCII");
 
-    public static List<MessageResult.Header> createHeaders(MailboxMembership<?> message) {
-        final org.apache.james.mailbox.store.mail.model.Message document = message.getMessage();
-        return createHeaders(document);
-    }
-
-    public static List<MessageResult.Header> createHeaders(final org.apache.james.mailbox.store.mail.model.Message document) {
+    public static List<MessageResult.Header> createHeaders(final Message<?> document) {
         final List<Header> headers = getSortedHeaders(document);
 
         final List<MessageResult.Header> results = new ArrayList<MessageResult.Header>(headers.size());
@@ -72,7 +67,7 @@ public class ResultUtils {
         return results;
     }
 
-    private static List<Header> getSortedHeaders(final org.apache.james.mailbox.store.mail.model.Message document) {
+    private static List<Header> getSortedHeaders(final Message<?> document) {
         final List<Header> headers = new ArrayList<Header>(document.getHeaders());
         Collections.sort(headers);
         return headers;
@@ -85,8 +80,8 @@ public class ResultUtils {
      * @return bodyContent
      * @throws IOException 
      */
-    public static Content createBodyContent(MailboxMembership<?> membership) throws IOException {
-        final InputStreamContent result = new InputStreamContent(membership.getMessage(), Type.Body);
+    public static Content createBodyContent(Message<?> membership) throws IOException {
+        final InputStreamContent result = new InputStreamContent(membership, Type.Body);
         return result;
     }
 
@@ -97,8 +92,8 @@ public class ResultUtils {
      * @return content
      * @throws IOException 
      */
-    public static Content createFullContent(final MailboxMembership<?> membership) throws IOException {
-        final InputStreamContent result = new InputStreamContent(membership.getMessage(), Type.Full);
+    public static Content createFullContent(final Message<?> membership) throws IOException {
+        final InputStreamContent result = new InputStreamContent(membership, Type.Full);
         return result;
     }
 
@@ -110,7 +105,7 @@ public class ResultUtils {
      * @return result
      * @throws MailboxException
      */
-    public static MessageResult loadMessageResult(final MailboxMembership<?> message, final FetchGroup fetchGroup) 
+    public static MessageResult loadMessageResult(final Message<?> message, final FetchGroup fetchGroup) 
                 throws MailboxException {
 
         MessageResultImpl messageResult = new MessageResultImpl();
@@ -118,7 +113,7 @@ public class ResultUtils {
         if (fetchGroup != null) {
             int content = fetchGroup.content();
             messageResult.setFlags(message.createFlags());
-            messageResult.setSize((int)message.getMessage().getFullContentOctets());
+            messageResult.setSize((int)message.getFullContentOctets());
             messageResult.setInternalDate(message.getInternalDate());
 
             try {
@@ -153,31 +148,31 @@ public class ResultUtils {
         return messageResult;
     }
 
-    private static void addMimeDescriptor(MailboxMembership<?> message, MessageResultImpl messageResult) throws IOException, MimeException {
-            MimeDescriptor descriptor = MimeDescriptorImpl.build(message.getMessage());
+    private static void addMimeDescriptor(Message<?> message, MessageResultImpl messageResult) throws IOException, MimeException {
+            MimeDescriptor descriptor = MimeDescriptorImpl.build(message);
             messageResult.setMimeDescriptor(descriptor);
     }
 
-    private static void addFullContent(final MailboxMembership<?> messageRow, MessageResultImpl messageResult) throws IOException {
+    private static void addFullContent(final Message<?> messageRow, MessageResultImpl messageResult) throws IOException {
         Content content = createFullContent(messageRow);
         messageResult.setFullContent(content);
 
     }
 
-    private static void addBody(final MailboxMembership<?> message, MessageResultImpl messageResult)throws IOException {
+    private static void addBody(final Message<?> message, MessageResultImpl messageResult)throws IOException {
         final Content content = createBodyContent(message);
         messageResult.setBody(content);
 
     }
 
-    private static void addHeaders(final MailboxMembership<?> message,
+    private static void addHeaders(final Message<?> message,
             MessageResultImpl messageResult) {
         final List<MessageResult.Header> headers = createHeaders(message);
         messageResult.setHeaders(headers);
     }
 
     private static void addPartContent(final FetchGroup fetchGroup,
-            MailboxMembership<?> message, MessageResultImpl messageResult)
+            Message<?> message, MessageResultImpl messageResult)
             throws MailboxException, IOException,
             MimeException {
         Collection<FetchGroup.PartContentDescriptor> partContent = fetchGroup.getPartContentDescriptors();
@@ -189,7 +184,7 @@ public class ResultUtils {
     }
 
     private static void addPartContent(
-            FetchGroup.PartContentDescriptor descriptor, MailboxMembership<?> message,
+            FetchGroup.PartContentDescriptor descriptor, Message<?> message,
             MessageResultImpl messageResult) throws 
             MailboxException, IOException, MimeException {
         final MimePath mimePath = descriptor.path();
@@ -211,9 +206,9 @@ public class ResultUtils {
         }
     }
 
-    private static PartContentBuilder build(int[] path, final MailboxMembership<?> message)
+    private static PartContentBuilder build(int[] path, final Message<?> message)
             throws IOException, MimeException {
-        final InputStream stream = toInput(message.getMessage());
+        final InputStream stream = toInput(message);
         PartContentBuilder result = new PartContentBuilder();
         result.parse(stream);
         try {
@@ -237,7 +232,7 @@ public class ResultUtils {
      * @return stream
      * @throws IOException 
      */
-    public static InputStream toInput(final org.apache.james.mailbox.store.mail.model.Message document) throws IOException {
+    public static InputStream toInput(final Message<?> document) throws IOException {
         final List<Header> headers = getSortedHeaders(document);
         final StringBuffer headersToString = new StringBuffer(headers.size() * 50);
         for (Header header: headers) {
@@ -320,7 +315,7 @@ public class ResultUtils {
         return result;
     }
 
-    private static void addHeaders(MailboxMembership<?> message,
+    private static void addHeaders(Message<?> message,
             MessageResultImpl messageResult, MimePath mimePath)
             throws IOException, MimeException {
         final int[] path = path(mimePath);
@@ -333,7 +328,7 @@ public class ResultUtils {
         }
     }
 
-    private static void addMimeHeaders(MailboxMembership<?> message,
+    private static void addMimeHeaders(Message<?> message,
             MessageResultImpl messageResult, MimePath mimePath)
             throws IOException, MimeException {
         final int[] path = path(mimePath);
@@ -346,7 +341,7 @@ public class ResultUtils {
         }
     }
 
-    private static void addBodyContent(MailboxMembership<?> message,
+    private static void addBodyContent(Message<?> message,
             MessageResultImpl messageResult, MimePath mimePath) throws IOException, MimeException {
         final int[] path = path(mimePath);
         if (path == null) {
@@ -358,7 +353,7 @@ public class ResultUtils {
         }
     }
 
-    private static void addMimeBodyContent(MailboxMembership<?> message,
+    private static void addMimeBodyContent(Message<?> message,
             MessageResultImpl messageResult, MimePath mimePath)
             throws IOException, MimeException {
         final int[] path = path(mimePath);
@@ -367,7 +362,7 @@ public class ResultUtils {
         messageResult.setMimeBodyContent(mimePath, content);
     }
 
-    private static void addFullContent(MailboxMembership<?> message,
+    private static void addFullContent(Message<?> message,
             MessageResultImpl messageResult, MimePath mimePath)
             throws MailboxException, IOException,
             MimeException {
@@ -387,14 +382,14 @@ public class ResultUtils {
      * 
      * @return {@link Comparator}, not null
      */
-    public static Comparator<MailboxMembership<?>> getUidComparator() {
+    public static Comparator<Message<?>> getUidComparator() {
         return UidComparator.INSTANCE;
     }
 
-    private static final class UidComparator implements Comparator<MailboxMembership<?>> {
+    private static final class UidComparator implements Comparator<Message<?>> {
         private static final UidComparator INSTANCE = new UidComparator();
 
-        public int compare(MailboxMembership<?> one, MailboxMembership<?> two) {
+        public int compare(Message<?> one, Message<?> two) {
             final int result = (int) (one.getUid() - two.getUid());
             return result;
         }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SearchQueryIterator.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SearchQueryIterator.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SearchQueryIterator.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SearchQueryIterator.java Thu Apr 28 10:29:38 2011
@@ -23,7 +23,7 @@ import java.util.NoSuchElementException;
 
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.SearchQuery;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.slf4j.Logger;
 
 /**
@@ -36,15 +36,15 @@ import org.slf4j.Logger;
 public final class SearchQueryIterator implements Iterator<Long>{
 
     private final MessageSearches searches = new MessageSearches();
-    private Iterator<MailboxMembership<?>> it;
+    private Iterator<Message<?>> it;
     private SearchQuery query;
     private Long next;
     
-    public SearchQueryIterator(Iterator<MailboxMembership<?>> it, SearchQuery query) {
+    public SearchQueryIterator(Iterator<Message<?>> it, SearchQuery query) {
         this(it, query, null);
     }
 
-    public SearchQueryIterator(Iterator<MailboxMembership<?>> it, SearchQuery query, Logger log) {
+    public SearchQueryIterator(Iterator<Message<?>> it, SearchQuery query, Logger log) {
         this.it = it;
         this.query = query;
         if (log != null) {
@@ -61,7 +61,7 @@ public final class SearchQueryIterator i
         // check if we already did the lazy loading 
         if (next == null) {
             while (it.hasNext()) {
-                MailboxMembership<?> nextMembership = it.next();
+                Message<?> nextMembership = it.next();
                 try {
                     if (searches.isMatch(query, nextMembership)) {
                         next = nextMembership.getUid();

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java Thu Apr 28 10:29:38 2011
@@ -54,8 +54,8 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.mail.model.Header;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
-import org.apache.james.mailbox.store.mail.model.MailboxMembershipComparator;
+import org.apache.james.mailbox.store.mail.model.Message;
+import org.apache.james.mailbox.store.mail.model.MessageComparator;
 import org.apache.james.mailbox.store.mail.model.PropertyBuilder;
 import org.apache.james.mailbox.store.streaming.ConfigurableMimeTokenStream;
 import org.apache.james.mailbox.store.streaming.CountingInputStream;
@@ -264,7 +264,7 @@ public abstract class StoreMessageManage
                 flags.add(Flags.Flag.RECENT);
             }
             long nextUid = uidProvider.nextUid(mailboxSession, getMailboxEntity());
-            final MailboxMembership<Id> message = createMessage(nextUid, internalDate, size, bodyStartOctet, tmpMsgIn.newStream(0, -1), flags, headers, propertyBuilder);
+            final Message<Id> message = createMessage(nextUid, internalDate, size, bodyStartOctet, tmpMsgIn.newStream(0, -1), flags, headers, propertyBuilder);
             long uid = appendMessageToStore(message, mailboxSession);
                         
             dispatcher.added(mailboxSession, Arrays.asList(uid), new StoreMailboxPath<Id>(getMailboxEntity()));
@@ -345,7 +345,7 @@ public abstract class StoreMessageManage
      * @return membership
      * @throws MailboxException 
      */
-    protected abstract MailboxMembership<Id> createMessage(long uid, Date internalDate, final int size, int bodyStartOctet, 
+    protected abstract Message<Id> createMessage(long uid, Date internalDate, final int size, int bodyStartOctet, 
             final InputStream documentIn, final Flags flags, final List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException;
     
     /**
@@ -458,7 +458,7 @@ public abstract class StoreMessageManage
         }
     }
     
-    protected long appendMessageToStore(final MailboxMembership<Id> message, MailboxSession session) throws MailboxException {
+    protected long appendMessageToStore(final Message<Id> message, MailboxSession session) throws MailboxException {
         final MessageMapper<Id> mapper = mapperFactory.getMessageMapper(session);
         return mapperFactory.getMessageMapper(session).execute(new Mapper.Transaction<Long>() {
 
@@ -519,7 +519,7 @@ public abstract class StoreMessageManage
     public void getMessages(MessageRange set, final FetchGroup fetchGroup, MailboxSession mailboxSession, final MessageCallback messageCallback) throws MailboxException {
 
         mapperFactory.getMessageMapper(mailboxSession).findInMailbox(getMailboxEntity(), set, new MailboxMembershipCallback<Id>() {
-            public void onMailboxMembers(List<MailboxMembership<Id>> rows) throws MailboxException {
+            public void onMailboxMembers(List<Message<Id>> rows) throws MailboxException {
                 messageCallback.onMessages(new ResultIterator<Id>(rows.iterator(), fetchGroup));
             }
         });
@@ -540,10 +540,10 @@ public abstract class StoreMessageManage
         return messageMapper.execute(new Mapper.Transaction<List<Long>>() {
 
             public List<Long> run() throws MailboxException {
-                final List<MailboxMembership<Id>> members = messageMapper.findRecentMessagesInMailbox(getMailboxEntity());
+                final List<Message<Id>> members = messageMapper.findRecentMessagesInMailbox(getMailboxEntity());
                 final List<Long> results = new ArrayList<Long>();
 
-                for (MailboxMembership<Id> member:members) {
+                for (Message<Id> member:members) {
                     results.add(member.getUid());
                     if (reset) {
                         
@@ -590,7 +590,7 @@ public abstract class StoreMessageManage
                 NumericRange r = ranges[i];
                 messageMapper.findInMailbox(getMailboxEntity(), MessageRange.range(r.getLowValue(), r.getHighValue()), new MailboxMembershipCallback<Id>() {
 
-                    public void onMailboxMembers(List<MailboxMembership<Id>> list) throws MailboxException {
+                    public void onMailboxMembers(List<Message<Id>> list) throws MailboxException {
                         for (int i = 0; i < list.size(); i++) {
                             long uid = list.get(i).getUid();
                             if (uids.contains(uid) == false) {
@@ -605,28 +605,28 @@ public abstract class StoreMessageManage
             
            
         } else {
-            final List<MailboxMembership<Id>> hits = new ArrayList<MailboxMembership<Id>>();
+            final List<Message<Id>> hits = new ArrayList<Message<Id>>();
 
             messageMapper.findInMailbox(getMailboxEntity(), MessageRange.all(), new MailboxMembershipCallback<Id>() {
 
-                public void onMailboxMembers(List<MailboxMembership<Id>> list) throws MailboxException {
+                public void onMailboxMembers(List<Message<Id>> list) throws MailboxException {
                     for (int i = 0; i < list.size(); i++) {
-                        MailboxMembership<Id> m = list.get(i);
+                        Message<Id> m = list.get(i);
                         if (hits.contains(m) == false) {
                             hits.add(m);
                         }
                     }
                 }
             });
-            Collections.sort(hits, MailboxMembershipComparator.INSTANCE);
+            Collections.sort(hits, MessageComparator.INSTANCE);
             
-            return new SearchQueryIterator(new Iterator<MailboxMembership<?>>() {
-                final Iterator<MailboxMembership<Id>> it = hits.iterator();
+            return new SearchQueryIterator(new Iterator<Message<?>>() {
+                final Iterator<Message<Id>> it = hits.iterator();
                 public boolean hasNext() {
                     return it.hasNext();
                 }
 
-                public MailboxMembership<?> next() {
+                public Message<?> next() {
                     return it.next();
                 }
 
@@ -640,12 +640,12 @@ public abstract class StoreMessageManage
     }
 
 
-    private Iterator<Long> copy(final List<MailboxMembership<Id>> originalRows, final MailboxSession session) throws MailboxException {
+    private Iterator<Long> copy(final List<Message<Id>> originalRows, final MailboxSession session) throws MailboxException {
         try {
             final List<Long> copiedRows = new ArrayList<Long>();
             final MessageMapper<Id> messageMapper = mapperFactory.getMessageMapper(session);
 
-            for (final MailboxMembership<Id> originalMessage:originalRows) {
+            for (final Message<Id> originalMessage:originalRows) {
                copiedRows.add(messageMapper.execute(new Mapper.Transaction<Long>() {
 
                     public Long run() throws MailboxException {
@@ -673,7 +673,7 @@ public abstract class StoreMessageManage
             final List<Long> copiedMessages = new ArrayList<Long>();
             messageMapper.findInMailbox(getMailboxEntity(), set, new MailboxMembershipCallback<Id>() {
 
-                public void onMailboxMembers(List<MailboxMembership<Id>> originalRows) throws MailboxException {
+                public void onMailboxMembers(List<Message<Id>> originalRows) throws MailboxException {
                     Iterator<Long> ids = to.copy(originalRows, session);
                     while (ids.hasNext())
                         copiedMessages.add(ids.next());

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java Thu Apr 28 10:29:38 2011
@@ -49,7 +49,7 @@ import org.apache.james.mailbox.SearchQu
 import org.apache.james.mailbox.UnsupportedSearchException;
 import org.apache.james.mailbox.store.MessageSearchIndex;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mime4j.MimeException;
 import org.apache.james.mime4j.descriptor.BodyDescriptor;
 import org.apache.james.mime4j.message.Header;
@@ -218,7 +218,7 @@ public class LuceneMessageSearchIndex<Id
      * @param membership
      * @return document
      */
-    public static Document createDocument(MailboxMembership<?> membership) throws MailboxException{
+    public static Document createDocument(Message<?> membership) throws MailboxException{
         final Document doc = new Document();
         // TODO: Better handling
         doc.add(new Field(MAILBOX_ID_FIELD, membership.getMailboxId().toString(), Store.NO, Index.NOT_ANALYZED));
@@ -240,7 +240,7 @@ public class LuceneMessageSearchIndex<Id
         doc.add(new NumericField(INTERNAL_DATE_FIELD_SECOND_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.SECOND).getTime()));
         doc.add(new NumericField(INTERNAL_DATE_FIELD_MILLISECOND_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.MILLISECOND).getTime()));
 
-        doc.add(new NumericField(SIZE_FIELD,Store.NO, true).setLongValue(membership.getMessage().getFullContentOctets()));
+        doc.add(new NumericField(SIZE_FIELD,Store.NO, true).setLongValue(membership.getFullContentOctets()));
         
         // content handler which will index the headers and the body of the message
         SimpleContentHandler handler = new SimpleContentHandler() {
@@ -287,7 +287,7 @@ public class LuceneMessageSearchIndex<Id
         parser.setContentHandler(handler);
         try {
             // parse the message to index headers and body
-            parser.parse(membership.getMessage().getFullContent());
+            parser.parse(membership.getFullContent());
         } catch (MimeException e) {
             // This should never happen as it was parsed before too without problems.            
             throw new MailboxException("Unable to index content of message", e);
@@ -556,7 +556,7 @@ public class LuceneMessageSearchIndex<Id
      * (non-Javadoc)
      * @see org.apache.james.mailbox.store.MessageSearchIndex#add(org.apache.james.mailbox.MailboxSession, org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
      */
-    public void add(MailboxSession session, Mailbox<Id> mailbox, MailboxMembership<Id> membership) throws MailboxException {
+    public void add(MailboxSession session, Mailbox<Id> mailbox, Message<Id> membership) throws MailboxException {
         Document doc = createDocument(membership);
         try {
             writer.addDocument(doc);

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java Thu Apr 28 10:29:38 2011
@@ -27,7 +27,6 @@ import org.apache.james.mailbox.MailboxE
 import org.apache.james.mailbox.MessageRange;
 import org.apache.james.mailbox.UpdatedFlags;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.transaction.Mapper;
 
@@ -89,7 +88,7 @@ public interface MessageMapper<Id> exten
      * @param message
      * @throws StorageException
      */
-    public abstract void delete(Mailbox<Id> mailbox, MailboxMembership<Id> message) throws MailboxException;
+    public abstract void delete(Mailbox<Id> mailbox, Message<Id> message) throws MailboxException;
 
     /**
      * Return the uid of the first unseen message. If non can be found null will get returned
@@ -109,7 +108,7 @@ public interface MessageMapper<Id> exten
      * @return recentList
      * @throws StorageException
      */
-    public abstract List<MailboxMembership<Id>> findRecentMessagesInMailbox(Mailbox<Id> mailbox) throws MailboxException;
+    public abstract List<Message<Id>> findRecentMessagesInMailbox(Mailbox<Id> mailbox) throws MailboxException;
 
 
     /**
@@ -122,7 +121,7 @@ public interface MessageMapper<Id> exten
      * @return uid
      * @throws StorageException
      */
-    public abstract long add(Mailbox<Id> mailbox, MailboxMembership<Id> message) throws MailboxException;
+    public abstract long add(Mailbox<Id> mailbox, Message<Id> message) throws MailboxException;
     
     /**
      * Update flags for the given {@link MessageRange}. Only the flags may be modified after a message was saved to a mailbox.
@@ -148,6 +147,6 @@ public interface MessageMapper<Id> exten
      * @return The uid of the copied instance
      * @throws StorageException
      */
-    public abstract long copy(Mailbox<Id> mailbox, long uid, MailboxMembership<Id> original) throws MailboxException;
+    public abstract long copy(Mailbox<Id> mailbox, long uid, Message<Id> original) throws MailboxException;
 
 }
\ No newline at end of file

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/AbstractMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/AbstractMessage.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/AbstractMessage.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/AbstractMessage.java Thu Apr 28 10:29:38 2011
@@ -18,14 +18,53 @@
  ****************************************************************/
 package org.apache.james.mailbox.store.mail.model;
 
+import javax.mail.Flags;
+
 
 
 /**
  * Abstract base class for {@link Message}
  *
  */
-public abstract class AbstractMessage implements Message {
+public abstract class AbstractMessage<Id> implements Message<Id>, Comparable<Message<Id>> {
+    
+
+    /*
+     * (non-Javadoc)
+     * @see java.lang.Comparable#compareTo(java.lang.Object)
+     */
+    public int compareTo(Message<Id> other) {
+        return (int) (getUid() - other.getUid());
+    }
+    
     
+
+    /**
+     * @see org.apache.james.mailbox.store.mail.model.MailboxMembership#createFlags()
+     */
+    public Flags createFlags() {
+        final Flags flags = new Flags();
+
+        if (isAnswered()) {
+            flags.add(Flags.Flag.ANSWERED);
+        }
+        if (isDeleted()) {
+            flags.add(Flags.Flag.DELETED);
+        }
+        if (isDraft()) {
+            flags.add(Flags.Flag.DRAFT);
+        }
+        if (isFlagged()) {
+            flags.add(Flags.Flag.FLAGGED);
+        }
+        if (isRecent()) {
+            flags.add(Flags.Flag.RECENT);
+        }
+        if (isSeen()) {
+            flags.add(Flags.Flag.SEEN);
+        }
+        return flags;
+    }
     
     /**
      * The number of octets contained in the body of this part.

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java Thu Apr 28 10:29:38 2011
@@ -20,15 +20,92 @@ package org.apache.james.mailbox.store.m
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Date;
 import java.util.List;
 
+import javax.mail.Flags;
+
 /**
  * A MIME message, consisting of meta-data (including MIME headers)
  * plus body content. In the case of multipart documents, this body content
  * has internal structure described by the meta-data.
  */
-public interface Message {
+public interface Message<Id> {
+
+    public abstract Date getInternalDate();
+
+    /**
+     * Return the mailbox id of the linked mailbox
+     * 
+     * @return mailboxId
+     */
+    public abstract Id getMailboxId();
+
+    /**
+     * Return the uid
+     * 
+     * @return uid
+     */
+    public abstract long getUid();
+    
 
+    /**
+     * Return if it was marked as answered
+     * 
+     * @return answered
+     */
+    public abstract boolean isAnswered();
+
+    /**
+     * Return if it was mark as deleted
+     * 
+     * @return deleted
+     */
+    public abstract boolean isDeleted();
+
+    /**
+     * Return if it was mark as draft
+     * 
+     * @return draft
+     */
+    public abstract boolean isDraft();
+
+    /**
+     * Return if it was flagged
+     * 
+     * @return flagged
+     */
+    public abstract boolean isFlagged();
+
+    /**
+     * Return if it was marked as recent
+     * 
+     * @return recent
+     */
+    public abstract boolean isRecent();
+
+    /**
+     * Return if it was marked as seen
+     * 
+     * @return seen
+     */
+    public abstract boolean isSeen();
+
+
+    /**
+     * Set the Flags 
+     * 
+     * @param flags
+     */
+    public abstract void setFlags(Flags flags);
+
+    /**
+     * Creates a new flags instance populated
+     * with the current flag data.
+     * 
+     * @return new instance, not null
+     */
+    public abstract Flags createFlags();
 
     /**
      * Gets the full content (including headers) of the document. 

Copied: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageComparator.java (from r1090983, james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembershipComparator.java)
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageComparator.java?p2=james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageComparator.java&p1=james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembershipComparator.java&r1=1090983&r2=1097402&rev=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembershipComparator.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageComparator.java Thu Apr 28 10:29:38 2011
@@ -23,19 +23,19 @@ import java.util.Comparator;
 
 
 /**
- * UID comparator for mailbox membership.
+ * UID comparator for {@link Message}.
  */
-public final class MailboxMembershipComparator implements Comparator<MailboxMembership<?>> {
+public final class MessageComparator implements Comparator<Message<?>> {
     
-    public static final MailboxMembershipComparator INSTANCE = new MailboxMembershipComparator();
+    public static final MessageComparator INSTANCE = new MessageComparator();
     
-    private MailboxMembershipComparator() {}
+    private MessageComparator() {}
     
     /*
      * (non-Javadoc)
      * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
      */
-    public int compare(MailboxMembership<?> o1, MailboxMembership<?> o2) {
+    public int compare(Message<?> o1, Message<?> o2) {
         final long uid = o1.getUid();
         final long otherUid = o2.getUid();
         return uid < otherUid ? -1 : uid == otherUid ? 0 : 1;

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java Thu Apr 28 10:29:38 2011
@@ -22,7 +22,7 @@ package org.apache.james.mailbox.store.t
 import java.util.List;
 
 import org.apache.james.mailbox.MailboxException;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 
 /**
  * Mapper which execute units of work in a {@link Transaction}
@@ -58,7 +58,7 @@ public interface Mapper {
     }
     
     public interface MailboxMembershipCallback<Id> {
-    	void onMailboxMembers(List<MailboxMembership<Id>> list) throws MailboxException;
+    	void onMailboxMembers(List<Message<Id>> list) throws MailboxException;
     }
     
     public abstract class VoidTransaction implements Transaction<Void> {

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java Thu Apr 28 10:29:38 2011
@@ -25,7 +25,7 @@ import java.util.List;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.store.mail.model.Header;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 
 public class MessageBuilder {
     
@@ -38,8 +38,8 @@ public class MessageBuilder {
     public final List<SimpleHeader> headers = new ArrayList<SimpleHeader>();
     public int lineNumber = 0;
     
-    public MailboxMembership<Long> build() throws Exception {
-        MailboxMembership<Long> result = new SimpleMailboxMembership(mailboxId, uid, internalDate, size, flags, body, headers);
+    public Message<Long> build() throws Exception {
+        Message<Long> result = new SimpleMailboxMembership(mailboxId, uid, internalDate, size, flags, body, headers);
         return result;
     }
     

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageRowUtilsTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageRowUtilsTest.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageRowUtilsTest.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageRowUtilsTest.java Thu Apr 28 10:29:38 2011
@@ -22,7 +22,7 @@ package org.apache.james.mailbox.store;
 import static org.junit.Assert.*;
 
 import org.apache.james.mailbox.store.ResultUtils;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.junit.Test;
 
 public class MessageRowUtilsTest {    
@@ -30,12 +30,12 @@ public class MessageRowUtilsTest {    
     @Test
     public void testShouldReturnPositiveWhenFirstGreaterThanSecond()
             throws Exception {
-        MailboxMembership<Long> one = buildMessage(100);
-        MailboxMembership<Long> two = buildMessage(99);
+        Message<Long> one = buildMessage(100);
+        Message<Long> two = buildMessage(99);
         assertTrue(ResultUtils.getUidComparator().compare(one, two) > 0);
     }
 
-    private MailboxMembership<Long> buildMessage(int uid) throws Exception {
+    private Message<Long> buildMessage(int uid) throws Exception {
         MessageBuilder builder = new MessageBuilder();
         builder.uid = uid;
         return builder.build();
@@ -44,15 +44,15 @@ public class MessageRowUtilsTest {    
     @Test
     public void testShouldReturnNegativeWhenFirstLessThanSecond()
             throws Exception {
-        MailboxMembership<Long> one = buildMessage(98);
-        MailboxMembership<Long> two = buildMessage(99);
+        Message<Long> one = buildMessage(98);
+        Message<Long> two = buildMessage(99);
         assertTrue(ResultUtils.getUidComparator().compare(one, two) < 0);
     }
 
     @Test
     public void testShouldReturnZeroWhenFirstEqualsSecond() throws Exception {
-        MailboxMembership<Long> one = buildMessage(90);
-        MailboxMembership<Long> two = buildMessage(90);
+        Message<Long> one = buildMessage(90);
+        Message<Long> two = buildMessage(90);
         assertEquals(0, ResultUtils.getUidComparator().compare(one, two));
     }
 }

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java Thu Apr 28 10:29:38 2011
@@ -27,7 +27,7 @@ import java.util.Collection;
 
 import org.apache.james.mailbox.SearchQuery;
 import org.apache.james.mailbox.store.MessageSearches;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -105,7 +105,7 @@ public class SearchUtilsMultipartMixedTe
             + "  Than both your poets can in praise devise.\r\n"
             + "\r\n--2.50290787509--\r\n" + "\r\n--1729--\r\n";
 
-    MailboxMembership<Long> row;
+    Message<Long> row;
 
     MessageSearches searches;
 

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java?rev=1097402&r1=1097401&r2=1097402&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java Thu Apr 28 10:29:38 2011
@@ -27,7 +27,7 @@ import java.util.Collection;
 
 import org.apache.james.mailbox.SearchQuery;
 import org.apache.james.mailbox.store.MessageSearches;
-import org.apache.james.mailbox.store.mail.model.MailboxMembership;
+import org.apache.james.mailbox.store.mail.model.Message;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -45,7 +45,7 @@ public class SearchUtilsRFC822Test {
             + "It has " + RHUBARD + ".\r\n" + "It has " + CUSTARD + ".\r\n"
             + "It needs naught else.\r\n";
 
-    MailboxMembership<Long> row;
+    Message<Long> row;
 
     MessageSearches searches;
 



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