<?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>Source Code</title>
  </properties>

<body>

  <section name="Get Source Code">
    <subsection name="Anonymous Access">
      <p>The source can be checked out anonymously from GIT with the following command.</p>
      <p><code>$ git clone http://git-wip-us.apache.org/repos/asf/james-project.git</code></p>
      <p><code>$ cd protocols</code></p>
    </subsection>

    <subsection name="Developer Access">
      <p>Everyone can access the GIT repository via HTTP, but Committers must checkout the GIT repository via HTTPS.</p>
      <p><code>$ git clone https://git-wip-us.apache.org/repos/asf/james-project.git</code></p>
      <p><code>$ cd protocols</code></p>
    </subsection>
  </section>

  <section name="Build Source Code">
    <p>You can read a tutorial on how to build Apache James Server on <a href="http://james.apache.org/server/dev-build.html">http://james.apache.org/server/dev-build.html</a>.</p>
    <p>The GIT URLs and the project names must be adapted, but the requirements and process are the same and you can inspire
       from the build the Apache James IMAP libraries.</p>
  </section>

  <section name="Source Organization">
    <subsection name="Modules">
      <div style="float:left; margin=4px;">
        <img src="images/uml/org.apache.james.protocols-package.png"/>
      </div>
    </subsection>
    <div style="clear:both; float:none;"/>
    <subsection name="James Protocols API">
      <p><code>apache-james-protocols-api</code> contains the interfaces, exceptions and Constants needed by the other projects.</p>
    </subsection>
    <subsection name="James Protocols Implementation">
      <p><code>apache-james-protocols-impl</code> provides common services that can be used by any mail protocol.</p>
    </subsection>
    <subsection name="James Protocols SMTP">
      <p><code>apache-james-protocols-smtp</code> implements the SMTP protocols with <a href="http://james.apache.org/server/dev-extend-smtp-hook.html">hooks</a> for extensions.</p>
    </subsection>
  </section>

  <section name="IMAP4 Source Code">
    <subsection name="Modules">
      <div style="float:left; margin:4px;">
        <img src="images/uml/org.apache.james.imap-withtest-package.png"/>
      </div>
    </subsection>
    <div style="clear:both; float:none;"/>
    <subsection name="Apache James IMAP API">
      <p><code>apache-james-imap-api</code> contains the interfaces, exceptions and Constants needed by the other projects.</p>
      <p>The following diagram represents some key (not all) interfaces of the IMAP API project.</p>
<!--      Add an updated image... -->
<!--      <img src="images/uml/org.apache.james.imap.api.png"/>-->
    </subsection>
    <subsection name="Apache James IMAP Message">
      <p><code>apache-james-imap-message</code> allows to encode, decode and structure the IMAP requests and responses.</p>
      <p>It will provide among other the ImapRequestMessage and ImapResponseMessage implementation to be processed
         by the apache-james-imap-processor project.</p>
    </subsection>
    <subsection name="Apache James IMAP Processor">
      <p><code>apache-james-imap-processor</code> implements the Chain Of Responsibility design pattern.</p>
      <p>ImapRequestMessage and ImapResponder will be passed to the list of Processors that 
         will execute doProcess if applicable.</p>
    </subsection>
    <subsection name="Apache James Integration Test">
      <p>A <a href="https://github.com/apache/james-project/tree/master/mpt">specific integration project</a> is 
      responsible to test the IMAP protocol in conjunction with the <a href="http://james.apache.org/mailbox">Apache James mailbox</a> components.</p>
    </subsection>
    
  </section>
    
</body>

</document>
