Added: james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/Message.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/Message.java?rev=730371&view=auto ============================================================================== --- james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/Message.java (added) +++ james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/Message.java Wed Dec 31 02:44:55 2008 @@ -0,0 +1,324 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you 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.imap.jpa.om; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import javax.mail.Flags; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; + +...@entity +...@idclass(Message.MessageId.class) +...@namedqueries({ + @NamedQuery(name="resetRecentMessages", + query="UPDATE Message message SET message.recent = FALSE WHERE message.mailboxId = :idParam AND message.recent = FALSE"), + @NamedQuery(name="findRecentMessagesInMailbox", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.recent = TRUE"), + @NamedQuery(name="findUnseenMessagesInMailboxOrderByUid", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.seen = FALSE ORDER BY message.uid ASC"), + @NamedQuery(name="findMessagesInMailbox", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam"), + @NamedQuery(name="findMessagesInMailboxBetweenUIDs", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.uid BETWEEN :fromParam AND :toParam"), + @NamedQuery(name="findMessagesInMailboxWithUID", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.uid=:uidParam"), + @NamedQuery(name="findMessagesInMailboxAfterUID", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.uid>=:uidParam"), + @NamedQuery(name="findDeletedMessagesInMailbox", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.deleted=TRUE"), + @NamedQuery(name="findDeletedMessagesInMailboxBetweenUIDs", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.uid BETWEEN :fromParam AND :toParam AND message.deleted=TRUE"), + @NamedQuery(name="findDeletedMessagesInMailboxWithUID", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.uid=:uidParam AND message.deleted=TRUE"), + @NamedQuery(name="findDeletedMessagesInMailboxAfterUID", + query="SELECT message FROM Message message WHERE message.mailboxId = :idParam AND message.uid>=:uidParam AND message.deleted=TRUE"), + @NamedQuery(name="countUnseenMessagesInMailbox", + query="SELECT COUNT(message) FROM Message message WHERE message.mailboxId = :idParam AND message.seen=FALSE"), + @NamedQuery(name="countMessagesInMailbox", + query="SELECT COUNT(message) FROM Message message WHERE message.mailboxId = :idParam") +}) +public class Message { + + private static final String TOSTRING_SEPARATOR = " "; + + /** Identifies composite key */ + public static class MessageId implements Serializable { + private static final long serialVersionUID = 7847632032426660997L; + /** The value for the mailboxId field */ + public long mailboxId; + /** The value for the uid field */ + public long uid; + + public MessageId() {} + + @Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = PRIME * result + (int) (mailboxId ^ (mailboxId >>> 32)); + result = PRIME * result + (int) (uid ^ (uid >>> 32)); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final MessageId other = (MessageId) obj; + if (mailboxId != other.mailboxId) + return false; + if (uid != other.uid) + return false; + return true; + } + } + + /** The value for the mailboxId field */ + @Id private long mailboxId; + + /** The value for the uid field */ + @Id private long uid; + + /** The value for the internalDate field */ + @Basic(optional=false) private Date internalDate; + + /** The value for the size field */ + @Basic(optional=false) private int size = 0; + + /** The value for the answered field */ + @Basic(optional=false) private boolean answered = false; + + /** The value for the deleted field */ + @Basic(optional=false) private boolean deleted = false; + + /** The value for the draft field */ + @Basic(optional=false) private boolean draft = false; + + /** The value for the flagged field */ + @Basic(optional=false) private boolean flagged = false; + + /** The value for the recent field */ + @Basic(optional=false) private boolean recent = false; + + /** The value for the seen field */ + @Basic(optional=false) private boolean seen = false; + + /** The value for the body field. Lazy loaded */ + @Basic(optional=false, fetch=FetchType.LAZY) private byte[] body; + /** Headers for this message */ + @OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY) private List<Header> headers; + + /** + * For enhancement only. + */ + @Deprecated + public Message() {} + + public Message(long mailboxId, long uid, Date internalDate, int size, Flags flags, byte[] body, final List<Header> headers) { + super(); + this.mailboxId = mailboxId; + this.uid = uid; + this.internalDate = internalDate; + this.size = size; + this.body = body; + setFlags(flags); + this.headers = new ArrayList<Header>(headers); + } + + /** + * Constructs a copy of the given message. + * All properties are cloned except mailbox and UID. + * @param mailboxId new mailbox ID + * @param uid new UID + * @param original message to be copied, not null + */ + public Message(long mailboxId, long uid, Message original) { + super(); + this.mailboxId = mailboxId; + this.uid = uid; + this.internalDate = original.getInternalDate(); + this.size = original.getSize(); + this.answered = original.isAnswered(); + this.deleted = original.isDeleted(); + this.draft = original.isDraft(); + this.flagged = original.isFlagged(); + this.recent = original.isRecent(); + this.seen = original.isSeen(); + this.body = original.getBody(); + final List<Header> originalHeaders = original.getHeaders(); + if (originalHeaders == null) { + this.headers = new ArrayList<Header>(); + } else { + this.headers = new ArrayList<Header>(originalHeaders.size()); + for (Header header:originalHeaders) { + this.headers.add(new Header(header)); + } + } + } + + public Date getInternalDate() { + return internalDate; + } + + public long getMailboxId() { + return mailboxId; + } + + public int getSize() { + return size; + } + + public long getUid() { + return uid; + } + + public byte[] getBody() { + return body; + } + + public boolean isAnswered() { + return answered; + } + + public boolean isDeleted() { + return deleted; + } + + public boolean isDraft() { + return draft; + } + + public boolean isFlagged() { + return flagged; + } + + public boolean isRecent() { + return recent; + } + + public boolean isSeen() { + return seen; + } + + /** + * Gets a read-only list of headers. + * @return unmodifiable list of headers, not null + */ + public List<Header> getHeaders() { + return Collections.unmodifiableList(headers); + } + + public void setFlags(Flags flags) { + answered = flags.contains(Flags.Flag.ANSWERED); + deleted = flags.contains(Flags.Flag.DELETED); + draft = flags.contains(Flags.Flag.DRAFT); + flagged = flags.contains(Flags.Flag.FLAGGED); + recent = flags.contains(Flags.Flag.RECENT); + seen = flags.contains(Flags.Flag.SEEN); + } + + /** + * Creates a new flags instance populated + * with the current flag data. + * @return new instance, not null + */ + 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; + } + + @Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = PRIME * result + (int) (mailboxId ^ (mailboxId >>> 32)); + result = PRIME * result + (int) (uid ^ (uid >>> 32)); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Message other = (Message) obj; + if (mailboxId != other.mailboxId) + return false; + if (uid != other.uid) + return false; + return true; + } + + public String toString() + { + final String retValue = + "mailbox(" + + "mailboxId = " + this.mailboxId + TOSTRING_SEPARATOR + + "uid = " + this.uid + TOSTRING_SEPARATOR + + "internalDate = " + this.internalDate + TOSTRING_SEPARATOR + + "size = " + this.size + TOSTRING_SEPARATOR + + "answered = " + this.answered + TOSTRING_SEPARATOR + + "deleted = " + this.deleted + TOSTRING_SEPARATOR + + "draft = " + this.draft + TOSTRING_SEPARATOR + + "flagged = " + this.flagged + TOSTRING_SEPARATOR + + "recent = " + this.recent + TOSTRING_SEPARATOR + + "seen = " + this.seen + TOSTRING_SEPARATOR + + " )"; + + return retValue; + } +}
Copied: james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/openjpa/OpenJPAMailboxMapper.java (from r730067, james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/MailboxMapper.java) URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/openjpa/OpenJPAMailboxMapper.java?p2=james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/openjpa/OpenJPAMailboxMapper.java&p1=james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/MailboxMapper.java&r1=730067&r2=730371&rev=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/MailboxMapper.java (original) +++ james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/openjpa/OpenJPAMailboxMapper.java Wed Dec 31 02:44:55 2008 @@ -17,116 +17,37 @@ * under the License. * ****************************************************************/ -package org.apache.james.imap.jpa.om; +package org.apache.james.imap.jpa.om.openjpa; -import java.util.List; +import javax.persistence.EntityManager; -import org.apache.james.mailboxmanager.MailboxManagerException; -import org.apache.james.mailboxmanager.MessageRange; -import org.apache.torque.TorqueException; -import org.apache.torque.util.CountHelper; -import org.apache.torque.util.Criteria; +import org.apache.james.imap.jpa.map.MailboxMapper; +import org.apache.james.imap.jpa.om.Mailbox; +import org.apache.openjpa.persistence.OpenJPAEntityManager; +import org.apache.openjpa.persistence.OpenJPAPersistence; /** * Data access management for mailbox. */ -public class MailboxMapper { - - public void save(MailboxRow mailbox) throws TorqueException { - mailbox.save(); - } - - /** - * Finds a mailbox by name. - * @param name not null - * @return not null - * @throws TorqueException - */ - public MailboxRow findByName(String name) throws TorqueException { - return MailboxRowPeer.retrieveByName(name); - } - - /** - * Deletes the given mailbox. - * @param mailbox not null - * @throws TorqueException - */ - public static void delete(MailboxRow mailbox) throws TorqueException { - MailboxRowPeer.doDelete(mailbox); - } - - public List findNameLike(String name) throws TorqueException { - Criteria c = new Criteria(); - c.add(MailboxRowPeer.NAME, - (Object) name, - Criteria.LIKE); - List l = MailboxRowPeer.doSelect(c); - return l; - } - - public void deleteAll() throws TorqueException { - MailboxRowPeer.doDelete(new Criteria().and( - MailboxRowPeer.MAILBOX_ID, new Integer(-1), - Criteria.GREATER_THAN)); - } - - public int countOnName(String mailboxName) throws TorqueException { - int count; - Criteria c = new Criteria(); - c.add(MailboxRowPeer.NAME, mailboxName); - CountHelper countHelper = new CountHelper(); - count = countHelper.count(c); - return count; - } - - - public List findInMailbox(MessageRange set, long mailboxId) throws MailboxManagerException, TorqueException { - Criteria c = criteriaForMessageSet(set); - c.add(MessageFlagsPeer.MAILBOX_ID, mailboxId); - List rows = MessageMapper.doSelectJoinMessageFlags(c); - return rows; - } - - public List findMarkedForDeletionInMailbox(final MessageRange set, final long mailboxId) throws TorqueException, MailboxManagerException { - final Criteria criteria = criteriaForMessageSet(set); - criteria.addJoin(MessageRowPeer.MAILBOX_ID, MessageFlagsPeer.MAILBOX_ID); - criteria.addJoin(MessageRowPeer.UID, MessageFlagsPeer.UID); - criteria.add(MessageFlagsPeer.DELETED, true); - criteria.add(MessageRowPeer.MAILBOX_ID, mailboxId); - final List messageRows = MessageRowPeer.doSelect(criteria); - return messageRows; - } - - private Criteria criteriaForMessageSet(MessageRange set) throws MailboxManagerException { - Criteria criteria = new Criteria(); - criteria.addAscendingOrderByColumn(MessageRowPeer.UID); - if (set.getType() == MessageRange.TYPE_ALL) { - // empty Criteria = everything - } else if (set.getType() == MessageRange.TYPE_UID) { - - if (set.getUidFrom() == set.getUidTo()) { - criteria.add(MessageRowPeer.UID, set.getUidFrom()); - } else { - Criteria.Criterion criterion1 = criteria.getNewCriterion( - MessageRowPeer.UID, new Long(set.getUidFrom()), - Criteria.GREATER_EQUAL); - if (set.getUidTo() > 0) { - Criteria.Criterion criterion2 = criteria.getNewCriterion( - MessageRowPeer.UID, new Long(set.getUidTo()), - Criteria.LESS_EQUAL); - criterion1.and(criterion2); - } - criteria.add(criterion1); - } - } else { - throw new MailboxManagerException("Unsupported MessageSet: " - + set.getType()); +public class OpenJPAMailboxMapper extends MailboxMapper { + + public OpenJPAMailboxMapper(EntityManager entityManager) { + super(entityManager); + } + + public Mailbox consumeNextUid(long mailboxId) { + OpenJPAEntityManager oem = OpenJPAPersistence.cast(entityManager); + final boolean originalLocking = oem.getOptimistic(); + oem.setOptimistic(false); + oem.getTransaction().begin(); + try { + Mailbox mailbox = (Mailbox) entityManager.createNamedQuery("findMailboxById").setParameter("idParam", mailboxId).getSingleResult(); + mailbox.consumeUid(); + oem.persist(mailbox); + oem.getTransaction().commit(); + return mailbox; + } finally { + oem.setOptimistic(originalLocking); } - return criteria; } - - public MailboxRow findById(long mailboxId) throws TorqueException { - return MailboxRowPeer.retrieveByPK(mailboxId); - } - } Propchange: james/protocols/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/om/openjpa/OpenJPAMailboxMapper.java ------------------------------------------------------------------------------ svn:mergeinfo = Added: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageBuilder.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageBuilder.java?rev=730371&view=auto ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageBuilder.java (added) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageBuilder.java Wed Dec 31 02:44:55 2008 @@ -0,0 +1,66 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you 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.imap.jpa; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.mail.Flags; + +import org.apache.james.imap.jpa.om.Header; +import org.apache.james.imap.jpa.om.Message; + +public class MessageBuilder { + + public long mailboxId = 113; + public long uid = 776; + public Date internalDate = new Date(); + public int size = 8867; + public Flags flags = new Flags(); + public byte[] body = {}; + public final List<Header> headers = new ArrayList<Header>(); + public int lineNumber = 0; + + public Message build() { + Message result = new Message(mailboxId, uid, internalDate, size, flags, body, headers); + return result; + } + + public Header header(String field, String value) { + Header header = new Header(++lineNumber, field, value); + headers.add(header); + return header; + } + + public void setKey(int mailboxId, int uid) { + this.uid = uid; + this.mailboxId = mailboxId; + } + + public void setFlags(boolean seen, boolean flagged, boolean answered, + boolean draft, boolean deleted, boolean recent) { + if (seen) flags.add(Flags.Flag.SEEN); + if (flagged) flags.add(Flags.Flag.FLAGGED); + if (answered) flags.add(Flags.Flag.ANSWERED); + if (draft) flags.add(Flags.Flag.DRAFT); + if (deleted) flags.add(Flags.Flag.DELETED); + if (recent) flags.add(Flags.Flag.RECENT); + } +} Modified: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageRowUtilsTest.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageRowUtilsTest.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageRowUtilsTest.java (original) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/MessageRowUtilsTest.java Wed Dec 31 02:44:55 2008 @@ -21,10 +21,10 @@ import junit.framework.TestCase; -import org.apache.james.imap.jpa.om.MessageRow; - -public class MessageRowUtilsTest extends TestCase { +import org.apache.james.imap.jpa.om.Message; +public class MessageRowUtilsTest extends TestCase { + protected void setUp() throws Exception { super.setUp(); } @@ -35,27 +35,27 @@ public void testShouldReturnPositiveWhenFirstGreaterThanSecond() throws Exception { - MessageRow one = new MessageRow(); - one.setUid(100); - MessageRow two = new MessageRow(); - two.setUid(99); + Message one = buildMessage(100); + Message two = buildMessage(99); assertTrue(MessageRowUtils.getUidComparator().compare(one, two) > 0); } + private Message buildMessage(int uid) { + MessageBuilder builder = new MessageBuilder(); + builder.uid = uid; + return builder.build(); + } + public void testShouldReturnNegativeWhenFirstLessThanSecond() throws Exception { - MessageRow one = new MessageRow(); - one.setUid(98); - MessageRow two = new MessageRow(); - two.setUid(99); + Message one = buildMessage(98); + Message two = buildMessage(99); assertTrue(MessageRowUtils.getUidComparator().compare(one, two) < 0); } public void testShouldReturnZeroWhenFirstEqualsSecond() throws Exception { - MessageRow one = new MessageRow(); - one.setUid(90); - MessageRow two = new MessageRow(); - two.setUid(90); + Message one = buildMessage(90); + Message two = buildMessage(90); assertEquals(0, MessageRowUtils.getUidComparator().compare(one, two)); } } Modified: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderComplexMultipartTest.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderComplexMultipartTest.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderComplexMultipartTest.java (original) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderComplexMultipartTest.java Wed Dec 31 02:44:55 2008 @@ -197,7 +197,7 @@ throws Exception { List headers = headers(position); assertEquals(1, headers.size()); - Header header = (Header) headers.get(0); + ResultHeader header = (ResultHeader) headers.get(0); assertEquals(CONTENT_TYPE, header.getName()); assertEquals(contentType, header.getValue()); } Modified: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderMultipartAlternativeTest.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderMultipartAlternativeTest.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderMultipartAlternativeTest.java (original) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/PartContentBuilderMultipartAlternativeTest.java Wed Dec 31 02:44:55 2008 @@ -118,7 +118,7 @@ throws Exception { List headers = headers(mail, position); assertEquals(1, headers.size()); - Header header = (Header) headers.get(0); + ResultHeader header = (ResultHeader) headers.get(0); assertEquals(CONTENT_TYPE, header.getName()); assertEquals(contentType, header.getValue()); } Modified: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsMultipartMixedTest.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsMultipartMixedTest.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsMultipartMixedTest.java (original) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsMultipartMixedTest.java Wed Dec 31 02:44:55 2008 @@ -26,9 +26,7 @@ import junit.framework.TestCase; import org.apache.james.api.imap.ImapConstants; -import org.apache.james.imap.jpa.om.MessageBody; -import org.apache.james.imap.jpa.om.MessageHeader; -import org.apache.james.imap.jpa.om.MessageRow; +import org.apache.james.imap.jpa.om.Message; import org.apache.james.mailboxmanager.SearchQuery; public class SearchUtilsMultipartMixedTest extends TestCase { @@ -105,7 +103,7 @@ + " Than both your poets can in praise devise.\r\n" + "\r\n--2.50290787509--\r\n" + "\r\n--1729--\r\n"; - MessageRow row; + Message row; MessageSearches searches; @@ -113,19 +111,15 @@ protected void setUp() throws Exception { super.setUp(); - row = new MessageRow(); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_FROM, - "Alex <[email protected]")); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_TO, - "Harry <[email protected]")); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_SUBJECT, - "A Mixed Multipart Mail")); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_DATE, - "Thu, 14 Feb 2008 12:00:00 +0000 (GMT)")); - row.addMessageHeader(new MessageHeader("Content-Type", - "multipart/mixed;boundary=1729")); - row.addMessageBody(new MessageBody(Charset.forName("us-ascii").encode( - BODY).array())); + final MessageBuilder builder = new MessageBuilder(); + + builder.header(ImapConstants.RFC822_FROM, "Alex <[email protected]"); + builder.header(ImapConstants.RFC822_TO, "Harry <[email protected]"); + builder.header(ImapConstants.RFC822_SUBJECT, "A Mixed Multipart Mail"); + builder.header(ImapConstants.RFC822_DATE, "Thu, 14 Feb 2008 12:00:00 +0000 (GMT)"); + builder.header("Content-Type", "multipart/mixed;boundary=1729"); + builder.body = Charset.forName("us-ascii").encode(BODY).array(); + row = builder.build(); searches = new MessageSearches(); recent = new ArrayList(); } Modified: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsRFC822Test.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsRFC822Test.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsRFC822Test.java (original) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsRFC822Test.java Wed Dec 31 02:44:55 2008 @@ -26,9 +26,7 @@ import junit.framework.TestCase; import org.apache.james.api.imap.ImapConstants; -import org.apache.james.imap.jpa.om.MessageBody; -import org.apache.james.imap.jpa.om.MessageHeader; -import org.apache.james.imap.jpa.om.MessageRow; +import org.apache.james.imap.jpa.om.Message; import org.apache.james.mailboxmanager.SearchQuery; public class SearchUtilsRFC822Test extends TestCase { @@ -45,7 +43,7 @@ + "It has " + RHUBARD + ".\r\n" + "It has " + CUSTARD + ".\r\n" + "It needs naught else.\r\n"; - MessageRow row; + Message row; MessageSearches searches; @@ -54,17 +52,13 @@ protected void setUp() throws Exception { super.setUp(); recent = new ArrayList(); - row = new MessageRow(); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_FROM, - "Alex <[email protected]")); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_TO, - FROM_ADDRESS)); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_SUBJECT, - "A " + SUBJECT_PART + " Multipart Mail")); - row.addMessageHeader(new MessageHeader(ImapConstants.RFC822_DATE, - "Thu, 14 Feb 2008 12:00:00 +0000 (GMT)")); - row.addMessageBody(new MessageBody(Charset.forName("us-ascii").encode( - BODY).array())); + MessageBuilder builder = new MessageBuilder(); + builder.header(ImapConstants.RFC822_FROM, "Alex <[email protected]"); + builder.header(ImapConstants.RFC822_TO, FROM_ADDRESS); + builder.header(ImapConstants.RFC822_SUBJECT, "A " + SUBJECT_PART + " Multipart Mail"); + builder.header(ImapConstants.RFC822_DATE, "Thu, 14 Feb 2008 12:00:00 +0000 (GMT)"); + builder.body = Charset.forName("us-ascii").encode(BODY).array(); + row = builder.build(); searches = new MessageSearches(); } Modified: james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsTest.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsTest.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsTest.java (original) +++ james/protocols/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/SearchUtilsTest.java Wed Dec 31 02:44:55 2008 @@ -28,11 +28,8 @@ import junit.framework.TestCase; import org.apache.james.api.imap.ImapConstants; -import org.apache.james.imap.jpa.om.MessageFlags; -import org.apache.james.imap.jpa.om.MessageHeader; -import org.apache.james.imap.jpa.om.MessageRow; +import org.apache.james.imap.jpa.om.Message; import org.apache.james.mailboxmanager.SearchQuery; -import org.apache.torque.TorqueException; public class SearchUtilsTest extends TestCase { @@ -52,17 +49,17 @@ private static final String TEXT = RHUBARD + RHUBARD + RHUBARD; - MessageRow row; + MessageBuilder builder; MessageSearches searches; - Collection recent; + Collection<Long> recent; protected void setUp() throws Exception { super.setUp(); - recent = new ArrayList(); - row = new MessageRow(); - row.setUid(1009); + recent = new ArrayList<Long>(); + builder = new MessageBuilder(); + builder.uid = 1009; searches = new MessageSearches(); } @@ -71,7 +68,8 @@ } public void testMatchSizeLessThan() throws Exception { - row.setSize(SIZE); + builder.size = SIZE; + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.sizeLessThan(SIZE - 1), row, recent)); assertFalse(searches.isMatch(SearchQuery.sizeLessThan(SIZE), row, @@ -83,7 +81,8 @@ } public void testMatchSizeMoreThan() throws Exception { - row.setSize(SIZE); + builder.size = SIZE; + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.sizeGreaterThan(SIZE - 1), row, recent)); assertFalse(searches.isMatch(SearchQuery.sizeGreaterThan(SIZE), row, @@ -95,7 +94,8 @@ } public void testMatchSizeEquals() throws Exception { - row.setSize(SIZE); + builder.size = SIZE; + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.sizeEquals(SIZE - 1), row, recent)); assertTrue(searches.isMatch(SearchQuery.sizeEquals(SIZE), row, recent)); @@ -106,7 +106,8 @@ } public void testMatchInternalDateEquals() throws Exception { - row.setInternalDate(SUN_SEP_9TH_2001); + builder.internalDate = SUN_SEP_9TH_2001; + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.internalDateOn(9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.internalDateOn(8, 9, 2001), @@ -120,7 +121,8 @@ } public void testMatchInternalDateBefore() throws Exception { - row.setInternalDate(SUN_SEP_9TH_2001); + builder.internalDate = SUN_SEP_9TH_2001; + Message row = builder.build(); assertFalse(searches.isMatch( SearchQuery.internalDateBefore(9, 9, 2000), row, recent)); assertFalse(searches.isMatch( @@ -134,7 +136,8 @@ } public void testMatchInternalDateAfter() throws Exception { - row.setInternalDate(SUN_SEP_9TH_2001); + builder.internalDate = SUN_SEP_9TH_2001; + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.internalDateAfter(9, 9, 2000), row, recent)); assertTrue(searches.isMatch(SearchQuery.internalDateAfter(8, 9, 2001), @@ -148,7 +151,8 @@ } public void testMatchHeaderDateAfter() throws Exception { - addHeader(DATE_FIELD, RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD, RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9, 9, 2000), row, recent)); assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 8, @@ -164,7 +168,8 @@ } public void testShouldMatchCapsHeaderDateAfter() throws Exception { - addHeader(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9, 9, 2000), row, recent)); assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 8, @@ -180,7 +185,8 @@ } public void testShouldMatchLowersHeaderDateAfter() throws Exception { - addHeader(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9, 9, 2000), row, recent)); assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 8, @@ -196,7 +202,8 @@ } public void testMatchHeaderDateOn() throws Exception { - addHeader(DATE_FIELD, RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD, RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 8, 9, @@ -212,7 +219,8 @@ } public void testShouldMatchCapsHeaderDateOn() throws Exception { - addHeader(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 8, 9, @@ -228,7 +236,8 @@ } public void testShouldMatchLowersHeaderDateOn() throws Exception { - addHeader(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 8, 9, @@ -244,7 +253,8 @@ } public void testMatchHeaderDateBefore() throws Exception { - addHeader(DATE_FIELD, RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, 9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, @@ -260,7 +270,8 @@ } public void testShouldMatchCapsHeaderDateBefore() throws Exception { - addHeader(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, 9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, @@ -276,7 +287,8 @@ } public void testShouldMatchLowersHeaderDateBefore() throws Exception { - addHeader(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, 9, 9, 2000), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, @@ -292,7 +304,8 @@ } public void testMatchHeaderContainsCaps() throws Exception { - addHeader(SUBJECT_FIELD, TEXT.toUpperCase()); + builder.header(SUBJECT_FIELD, TEXT.toUpperCase()); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, CUSTARD), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, @@ -306,7 +319,8 @@ } public void testMatchHeaderContainsLowers() throws Exception { - addHeader(SUBJECT_FIELD, TEXT.toLowerCase()); + builder.header(SUBJECT_FIELD, TEXT.toUpperCase()); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, CUSTARD), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, @@ -320,7 +334,8 @@ } public void testMatchHeaderContains() throws Exception { - addHeader(SUBJECT_FIELD, TEXT); + builder.header(SUBJECT_FIELD, TEXT.toUpperCase()); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, CUSTARD), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, @@ -334,7 +349,8 @@ } public void testShouldMatchLowerHeaderContains() throws Exception { - addHeader(SUBJECT_FIELD.toLowerCase(), TEXT); + builder.header(SUBJECT_FIELD.toLowerCase(), TEXT); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, CUSTARD), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, @@ -348,7 +364,8 @@ } public void testShouldMatchCapsHeaderContains() throws Exception { - addHeader(SUBJECT_FIELD.toUpperCase(), TEXT); + builder.header(SUBJECT_FIELD.toUpperCase(), TEXT); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, CUSTARD), row, recent)); assertFalse(searches.isMatch(SearchQuery.headerContains(DATE_FIELD, @@ -362,7 +379,8 @@ } public void testMatchHeaderExists() throws Exception { - addHeader(SUBJECT_FIELD, TEXT); + builder.header(SUBJECT_FIELD, TEXT); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerExists(DATE_FIELD), row, recent)); assertTrue(searches.isMatch(SearchQuery.headerExists(SUBJECT_FIELD), @@ -370,7 +388,8 @@ } public void testShouldMatchLowersHeaderExists() throws Exception { - addHeader(SUBJECT_FIELD.toLowerCase(), TEXT); + builder.header(SUBJECT_FIELD.toLowerCase(), TEXT); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerExists(DATE_FIELD), row, recent)); assertTrue(searches.isMatch(SearchQuery.headerExists(SUBJECT_FIELD), @@ -378,7 +397,8 @@ } public void testShouldMatchUppersHeaderExists() throws Exception { - addHeader(SUBJECT_FIELD.toUpperCase(), TEXT); + builder.header(SUBJECT_FIELD.toLowerCase(), TEXT); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.headerExists(DATE_FIELD), row, recent)); assertTrue(searches.isMatch(SearchQuery.headerExists(SUBJECT_FIELD), @@ -386,7 +406,8 @@ } public void testShouldMatchUidRange() throws Exception { - row.setPrimaryKey(1, 1729); + builder.setKey(1, 1729); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.uid(range(1, 1)), row, recent)); assertFalse(searches.isMatch(SearchQuery.uid(range(1728, 1728)), row, recent)); @@ -415,7 +436,8 @@ } public void testShouldMatchSeenFlagSet() throws Exception { - setFlags(true, false, false, false, false, false); + builder.setFlags(true, false, false, false, false, false); + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.SEEN), row, recent)); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.FLAGGED), @@ -431,7 +453,8 @@ } public void testShouldMatchAnsweredFlagSet() throws Exception { - setFlags(false, false, true, false, false, false); + builder.setFlags(false, false, true, false, false, false); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.SEEN), row, recent)); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.FLAGGED), @@ -447,7 +470,8 @@ } public void testShouldMatchFlaggedFlagSet() throws Exception { - setFlags(false, true, false, false, false, false); + builder.setFlags(false, true, false, false, false, false); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.SEEN), row, recent)); assertTrue(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.FLAGGED), @@ -463,7 +487,8 @@ } public void testShouldMatchDraftFlagSet() throws Exception { - setFlags(false, false, false, true, false, false); + builder.setFlags(false, false, false, true, false, false); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.SEEN), row, recent)); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.FLAGGED), @@ -479,7 +504,8 @@ } public void testShouldMatchDeletedFlagSet() throws Exception { - setFlags(false, false, false, false, true, false); + builder.setFlags(false, false, false, false, true, false); + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.SEEN), row, recent)); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.FLAGGED), @@ -495,7 +521,8 @@ } public void testShouldMatchSeenRecentSet() throws Exception { - setFlags(false, false, false, false, false, false); + builder.setFlags(false, false, false, false, false, false); + Message row = builder.build(); recent.add(new Long(row.getUid())); assertFalse(searches.isMatch(SearchQuery.flagIsSet(Flags.Flag.SEEN), row, recent)); @@ -512,7 +539,8 @@ } public void testShouldMatchSeenFlagUnSet() throws Exception { - setFlags(false, true, true, true, true, true); + builder.setFlags(false, true, true, true, true, true); + Message row = builder.build(); recent.add(new Long(row.getUid())); assertTrue(searches.isMatch(SearchQuery.flagIsUnSet(Flags.Flag.SEEN), row, recent)); @@ -529,7 +557,8 @@ } public void testShouldMatchAnsweredFlagUnSet() throws Exception { - setFlags(true, true, false, true, true, true); + builder.setFlags(true, true, false, true, true, true); + Message row = builder.build(); recent.add(new Long(row.getUid())); assertFalse(searches.isMatch(SearchQuery.flagIsUnSet(Flags.Flag.SEEN), row, recent)); @@ -546,7 +575,8 @@ } public void testShouldMatchFlaggedFlagUnSet() throws Exception { - setFlags(true, false, true, true, true, true); + builder.setFlags(true, false, true, true, true, true); + Message row = builder.build(); recent.add(new Long(row.getUid())); assertFalse(searches.isMatch(SearchQuery.flagIsUnSet(Flags.Flag.SEEN), row, recent)); @@ -563,7 +593,8 @@ } public void testShouldMatchDraftFlagUnSet() throws Exception { - setFlags(true, true, true, false, true, true); + builder.setFlags(true, true, true, false, true, true); + Message row = builder.build(); recent.add(new Long(row.getUid())); assertFalse(searches.isMatch(SearchQuery.flagIsUnSet(Flags.Flag.SEEN), row, recent)); @@ -580,7 +611,8 @@ } public void testShouldMatchDeletedFlagUnSet() throws Exception { - setFlags(true, true, true, true, false, true); + builder.setFlags(true, true, true, true, false, true); + Message row = builder.build(); recent.add(new Long(row.getUid())); assertFalse(searches.isMatch(SearchQuery.flagIsUnSet(Flags.Flag.SEEN), row, recent)); @@ -597,7 +629,8 @@ } public void testShouldMatchSeenRecentUnSet() throws Exception { - setFlags(true, true, true, true, true, true); + builder.setFlags(true, true, true, true, true, true); + Message row = builder.build(); recent.add(new Long(row.getUid() + 1)); assertFalse(searches.isMatch(SearchQuery.flagIsUnSet(Flags.Flag.SEEN), row, recent)); @@ -614,10 +647,12 @@ } public void testShouldMatchAll() throws Exception { + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.all(), row, recent)); } public void testShouldMatchNot() throws Exception { + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.not(SearchQuery.all()), row, recent)); assertTrue(searches.isMatch(SearchQuery.not(SearchQuery @@ -625,6 +660,7 @@ } public void testShouldMatchOr() throws Exception { + Message row = builder.build(); assertTrue(searches.isMatch(SearchQuery.or(SearchQuery.all(), SearchQuery.headerExists(DATE_FIELD)), row, recent)); assertTrue(searches.isMatch(SearchQuery.or(SearchQuery @@ -637,6 +673,7 @@ } public void testShouldMatchAnd() throws Exception { + Message row = builder.build(); assertFalse(searches.isMatch(SearchQuery.and(SearchQuery.all(), SearchQuery.headerExists(DATE_FIELD)), row, recent)); assertFalse(searches.isMatch(SearchQuery.and(SearchQuery @@ -647,20 +684,7 @@ assertTrue(searches.isMatch(SearchQuery.and(SearchQuery.all(), SearchQuery.all()), row, recent)); } - - private void setFlags(boolean seen, boolean flagged, boolean answered, - boolean draft, boolean deleted, boolean recent) - throws TorqueException { - final MessageFlags messageFlags = new MessageFlags(); - messageFlags.setSeen(seen); - messageFlags.setFlagged(flagged); - messageFlags.setAnswered(answered); - messageFlags.setDraft(draft); - messageFlags.setDeleted(deleted); - messageFlags.setRecent(recent); - row.addMessageFlags(messageFlags); - } - + private SearchQuery.NumericRange[] range(long low, long high) { SearchQuery.NumericRange[] results = { new SearchQuery.NumericRange( low, high) }; @@ -674,12 +698,4 @@ new SearchQuery.NumericRange(lowTwo, highTwo) }; return results; } - - private void addHeader(String fieldName, String value) - throws TorqueException { - final MessageHeader messageHeader = new MessageHeader(); - messageHeader.setField(fieldName); - messageHeader.setValue(value); - row.addMessageHeader(messageHeader); - } } Modified: james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/mailboxmanager/SearchQuery.java URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/mailboxmanager/SearchQuery.java?rev=730371&r1=730370&r2=730371&view=diff ============================================================================== --- james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/mailboxmanager/SearchQuery.java (original) +++ james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/mailboxmanager/SearchQuery.java Wed Dec 31 02:44:55 2008 @@ -416,13 +416,13 @@ private final Set recentMessageUids = new HashSet(); - private final List criterias = new ArrayList(); + private final List<Criterion> criterias = new ArrayList<Criterion>(); public void andCriteria(Criterion crit) { criterias.add(crit); } - public List getCriterias() { + public List<Criterion> getCriterias() { return criterias; } @@ -437,7 +437,7 @@ return recentMessageUids; } - // @Override + @Override public String toString() { return "Search:" + criterias.toString(); } @@ -445,7 +445,7 @@ /** * @see java.lang.Object#hashCode() */ - // @Override + @Override public int hashCode() { final int PRIME = 31; int result = 1; @@ -457,7 +457,7 @@ /** * @see java.lang.Object#equals(java.lang.Object) */ - // @Override + @Override public boolean equals(Object obj) { if (this == obj) return true; Propchange: james/protocols/imap/trunk/stage/org.apache.geronimo.specs/jars/geronimo-jta_1.1_spec-1.1.LICENSE ------------------------------------------------------------------------------ svn:mergeinfo = Propchange: james/protocols/imap/trunk/stage/org.apache.geronimo.specs/jars/geronimo-jta_1.1_spec-1.1.NOTICE ------------------------------------------------------------------------------ svn:mergeinfo = Propchange: james/protocols/imap/trunk/stage/org.apache.geronimo.specs/jars/geronimo-jta_1.1_spec-1.1.jar ------------------------------------------------------------------------------ svn:mergeinfo = Propchange: james/protocols/imap/trunk/stage/org.apache.geronimo.specs/jars/geronimo-jta_1.1_spec-1.1.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
