blob: 034c142019bf3df84d167dad5d77e9be6e6e6603 [file]
<?xml version="1.0"?>
<!--
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.
-->
<document>
<properties>
<title>Mailbox API</title>
</properties>
<body>
<section name="Mailbox API Responsibility">
<p>This module contains the interfaces and exceptions to be used by the
mailbox clients. It represents the "external view" of the mailbox
library client.</p>
<p>The services the mailbox library provides can be summarized as "store/retrieve/search/delete mails"
and update the mails metadata (via uid and flags)</p>
<p>The main entrance interfaces are represented by 3 managers, each responsible
for a specific area: the mailbox manager, the message manager and the
subscription manager.</p>
<p>For example, Apache James Server injects the managers in the POP3, SMTP, IMAP4 servers
and in the Mailet container.</p>
<p>Each implementation <a href="mailbox-memory.html">Memory</a>,
<a href="mailbox-jpa.html">JPA</a>) is responsible
to implement the management interfaces. All "common/util" implementations
reside in the <a href="mailbox-store.html">Mailbox Store</a> module.</p>
</section>
<section name="Manager Interfaces">
<subsection name="Mailbox Manager">
<p>The Mailbox Manager is responsible for session creation, operations on mailbox (create, delete, search)
and to return a Message Manager. It also allows to copy and list messages.
</p>
<ul>
Mailbox manager capabilities represents which operations a mailbox manager is able to support. For now the list is :
<li>Basic: supports all basic operations</li>
<li>Move: implements the move capability</li>
</ul>
<!--
Image is no more in line with trunk
<p><img src="images/uml/org-apache-james-mailbox-api-mailboxmanager.png"/></p>
-->
</subsection>
<subsection name="Message Manager">
<p>The Message Manager is responsible to create, delete message and its associated metadata (the uid and the flags).</p>
<!--
Image is no more in line with trunk
<p><img src="images/uml/org-apache-james-mailbox-api-messagemanager.png"/></p>
-->
</subsection>
<subsection name="Subscription Manager">
<p>The Subscription Manager is responsible for the (un)subscription between a user and a mailbox.</p>
<!--
Image is no more in line with trunk
<p><img src="images/uml/org-apache-james-mailbox-api-subscriptionmanager.png"/></p>
-->
</subsection>
</section>
<!--
<section name="Other Interfaces and Classes">
Image is no more in line with trunk
<p><img src="images/uml/org-apache-james-mailbox-api-msc.png"/></p>
</section>
-->
</body>
</document>