001: /****************************************************************
002: * Licensed to the Apache Software Foundation (ASF) under one *
003: * or more contributor license agreements. See the NOTICE file *
004: * distributed with this work for additional information *
005: * regarding copyright ownership. The ASF licenses this file *
006: * to you under the Apache License, Version 2.0 (the *
007: * "License"); you may not use this file except in compliance *
008: * with the License. You may obtain a copy of the License at *
009: * *
010: * http://www.apache.org/licenses/LICENSE-2.0 *
011: * *
012: * Unless required by applicable law or agreed to in writing, *
013: * software distributed under the License is distributed on an *
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
015: * KIND, either express or implied. See the License for the *
016: * specific language governing permissions and limitations *
017: * under the License. *
018: ****************************************************************/package org.apache.james.services;
019:
020: import org.apache.mailet.Mail;
021:
022: import javax.mail.MessagingException;
023:
024: import java.util.Collection;
025: import java.util.Iterator;
026:
027: /**
028: * Interface for a Repository to store Mails.
029: * @version 1.0.0, 24/04/1999
030: */
031: public interface MailRepository {
032:
033: /**
034: * The component role used by components implementing this service
035: */
036: String ROLE = "org.apache.james.services.MailRepository";
037:
038: /**
039: * Define a MAIL repository. MAILS are stored in the specified
040: * destination.
041: */
042: String MAIL = "MAIL";
043:
044: /**
045: * Stores a message in this repository. Shouldn't this return the key
046: * under which it is stored?
047: *
048: * @param mc the mail message to store
049: */
050: void store(Mail mc) throws MessagingException;
051:
052: /**
053: * List string keys of messages in repository.
054: *
055: * @return an <code>Iterator</code> over the list of keys in the repository
056: *
057: */
058: Iterator list() throws MessagingException;
059:
060: /**
061: * Retrieves a message given a key. At the moment, keys can be obtained
062: * from list() in superinterface Store.Repository
063: *
064: * @param key the key of the message to retrieve
065: * @return the mail corresponding to this key, null if none exists
066: */
067: Mail retrieve(String key) throws MessagingException;
068:
069: /**
070: * Removes a specified message
071: *
072: * @param mail the message to be removed from the repository
073: */
074: void remove(Mail mail) throws MessagingException;
075:
076: /**
077: * Remove an Collection of mails from the repository
078: *
079: * @param mails The Collection of <code>MailImpl</code>'s to delete
080: * @since 2.2.0
081: */
082: void remove(Collection mails) throws MessagingException;
083:
084: /**
085: * Removes a message identified by key.
086: *
087: * @param key the key of the message to be removed from the repository
088: */
089: void remove(String key) throws MessagingException;
090:
091: /**
092: * Obtains a lock on a message identified by key
093: *
094: * @param key the key of the message to be locked
095: *
096: * @return true if successfully obtained the lock, false otherwise
097: */
098: boolean lock(String key) throws MessagingException;
099:
100: /**
101: * Releases a lock on a message identified the key
102: *
103: * @param key the key of the message to be unlocked
104: *
105: * @return true if successfully released the lock, false otherwise
106: */
107: boolean unlock(String key) throws MessagingException;
108: }
|