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 ba...@apache.org on 2008/08/10 16:59:58 UTC

svn commit: r684514 [2/2] - in /james/server/trunk: avalon-socket-library/src/main/java/org/apache/james/core/ avalon-user-function/src/main/java/org/apache/james/vut/ avalon-user-function/src/main/resources/org/apache/james/core/ avalon-user-function/...

Modified: james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidRcptMXTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidRcptMXTest.java?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidRcptMXTest.java (original)
+++ james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidRcptMXTest.java Sun Aug 10 07:59:55 2008
@@ -29,8 +29,8 @@
 import javax.mail.internet.ParseException;
 
 import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.james.api.dnsserver.DNSServer;
 import org.apache.james.services.AbstractDNSServer;
-import org.apache.james.services.DNSServer;
 import org.apache.james.smtpserver.core.filter.fastfail.ValidRcptMX;
 import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.util.junkscore.JunkScore;

Modified: james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java (original)
+++ james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java Sun Aug 10 07:59:55 2008
@@ -27,8 +27,8 @@
 import javax.mail.internet.ParseException;
 
 import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.james.api.dnsserver.DNSServer;
 import org.apache.james.services.AbstractDNSServer;
-import org.apache.james.services.DNSServer;
 import org.apache.james.smtpserver.core.filter.fastfail.ValidSenderDomainHandler;
 import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.util.junkscore.JunkScore;

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.java?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.java Sun Aug 10 07:59:55 2008
@@ -36,15 +36,15 @@
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.commons.collections.map.ReferenceMap;
 
+import org.apache.james.api.dnsserver.DNSServer;
+import org.apache.james.api.dnsserver.TemporaryResolutionException;
+import org.apache.james.api.domainlist.DomainList;
 import org.apache.james.api.user.UsersRepository;
 import org.apache.james.api.user.UsersStore;
 import org.apache.james.core.MailHeaders;
 import org.apache.james.core.MailImpl;
 import org.apache.james.core.MailetConfigImpl;
-import org.apache.james.dnsserver.TemporaryResolutionException;
 import org.apache.james.impl.jamesuser.JamesUsersRepository;
-import org.apache.james.services.DNSServer;
-import org.apache.james.services.DomainList;
 import org.apache.james.services.FileSystem;
 import org.apache.james.services.MailRepository;
 import org.apache.james.services.MailServer;
@@ -915,7 +915,7 @@
      * found for domainName, the Iterator returned will be empty and the
      * first call to hasNext() will return false.
      *
-     * @see org.apache.james.services.DNSServer#getSMTPHostAddresses(String)
+     * @see org.apache.james.api.dnsserver.DNSServer#getSMTPHostAddresses(String)
      * @since Mailet API v2.2.0a16-unstable
      * @param domainName - the domain for which to find mail servers
      * @return an Iterator over HostAddress instances, sorted by priority

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.xinfo
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.xinfo?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.xinfo (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/James.xinfo Sun Aug 10 07:59:55 2008
@@ -33,7 +33,7 @@
   <dependencies>
 
     <dependency>
-      <service name="org.apache.james.services.DNSServer" version="1.0"/>
+      <service name="org.apache.james.api.dnsserver.DNSServer" version="1.0"/>
     </dependency>
     <dependency>
       <service name="org.apache.avalon.cornerstone.services.store.Store" version="1.0"/>
@@ -60,7 +60,7 @@
       <service name="org.apache.james.services.FileSystem" version="1.0"/>
     </dependency>
     <dependency>
-      <service name="org.apache.james.services.DomainList" version="1.0"/>
+      <service name="org.apache.james.api.domainlist.DomainList" version="1.0"/>
     </dependency>
     <dependency>
       <service name="org.apache.james.mailboxmanager.manager.MailboxManagerProvider" version="1.0"/>

Modified: james/server/trunk/spring-deployment/src/main/config/james/james-assembly.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/james-assembly.xml?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/james-assembly.xml (original)
+++ james/server/trunk/spring-deployment/src/main/config/james/james-assembly.xml Sun Aug 10 07:59:55 2008
@@ -41,13 +41,13 @@
     <!-- Specify which components will provide the services required by this
     block. The roles are specified in the code and the .xinfo file. The names
     here must match the names specified for a Block in this xml file.   -->
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/>
     <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
     <provide name="spoolrepository" role="org.apache.james.services.SpoolRepository"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
-    <provide name="domainlist" role="org.apache.james.services.DomainList" />
+    <provide name="domainlist" role="org.apache.james.api.domainlist.DomainList" />
     <provide name="sockets"
              role="org.apache.avalon.cornerstone.services.sockets.SocketManager"/>
     <provide name="scheduler"
@@ -112,7 +112,7 @@
              role="org.apache.james.services.SpoolManagementService"/>
     <provide name="bayesiananalyzermanagement"
              role="org.apache.james.services.BayesianAnalyzerManagementService"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="processormanagement" role="org.apache.james.services.ProcessorManagementService"/>
     <provide name="virtualusertablemanagement" role="org.apache.james.api.vut.management.VirtualUserTableManagementService"/>
     <provide name="domainlistmanagement" role="org.apache.james.services.DomainListManagementService"/>
@@ -142,7 +142,7 @@
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
     <provide name="mailboxmanager"
              role="org.apache.james.mailboxmanager.manager.MailboxManagerProvider" />    
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>    
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>    
   </block>      
     
   <!-- POP3 Server -->
@@ -155,14 +155,14 @@
     <provide name="James" role="org.apache.james.services.MailServer"/>
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
 
   <!-- SMTP Server -->
   <block name="smtpserver" class="org.apache.james.smtpserver.SMTPServer" >
     <provide name="James" role="org.apache.mailet.MailetContext"/>
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="sockets"
              role="org.apache.avalon.cornerstone.services.sockets.SocketManager"/>
     <provide name="connections"
@@ -188,7 +188,7 @@
              role="org.apache.james.nntpserver.repository.NNTPRepository"/>
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="James" role="org.apache.james.services.MailServer"/>
   </block>
 
@@ -203,7 +203,7 @@
              role="org.apache.avalon.cornerstone.services.scheduler.TimeScheduler"/> 
     <provide name="James" role="org.apache.james.services.MailServer"/>      
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   
   <!-- JMS Service 
@@ -262,7 +262,7 @@
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   
   <block name="defaultvirtualusertable" class="org.apache.james.impl.vut.DefaultVirtualUserTable">
@@ -274,7 +274,7 @@
   <!-- ######################################################################## -->
   <!-- The context domainlist implementation -->
   <block name="domainlist" class="org.apache.james.domain.XMLDomainList">
-      <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+      <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   
   <!--  JDBC implementation of the domainlist service-->
@@ -283,7 +283,7 @@
       <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
       <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
-      <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+      <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   -->
   
@@ -293,21 +293,21 @@
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   -->
   
   <!-- XML VirtualUserTable implementation of the domainlist service -->
   <!--
   <block name="domainlist" class="org.apache.james.vut.XMLVirtualUserTable">
-      <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+      <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   -->
   <!-- #################################################################### -->
   
   <block name="domainlistmanagement" class="org.apache.james.management.DomainListManagement">
     <provide name="domainlist"
-             role="org.apache.james.services.DomainList"/>
+             role="org.apache.james.api.domainlist.DomainList"/>
   </block>
   
   <!-- Configuration for Cornerstone Blocks only after here

Modified: james/server/trunk/spring-deployment/src/main/test/org/apache/james/container/spring/beanfactory/testing-james-assembly.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/test/org/apache/james/container/spring/beanfactory/testing-james-assembly.xml?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/test/org/apache/james/container/spring/beanfactory/testing-james-assembly.xml (original)
+++ james/server/trunk/spring-deployment/src/main/test/org/apache/james/container/spring/beanfactory/testing-james-assembly.xml Sun Aug 10 07:59:55 2008
@@ -50,13 +50,13 @@
     <!-- Specify which components will provide the services required by this
     block. The roles are specified in the code and the .xinfo file. The names
     here must match the names specified for a Block in this xml file.   -->
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/>
     <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
     <provide name="spoolrepository" role="org.apache.james.services.SpoolRepository"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
-    <provide name="domainlist" role="org.apache.james.services.DomainList" />
+    <provide name="domainlist" role="org.apache.james.api.domainlist.DomainList" />
     <provide name="sockets"
              role="org.apache.avalon.cornerstone.services.sockets.SocketManager"/>
     <provide name="scheduler"
@@ -127,7 +127,7 @@
              role="org.apache.james.services.SpoolManagementService"/>
     <provide name="bayesiananalyzermanagement"
              role="org.apache.james.services.BayesianAnalyzerManagementService"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="processormanagement" role="org.apache.james.services.ProcessorManagementService"/>
     <provide name="virtualusertablemanagement" role="org.apache.james.api.vut.management.VirtualUserTableManagementService"/>
     <provide name="domainlistmanagement" role="org.apache.james.services.DomainListManagementService"/>
@@ -157,7 +157,7 @@
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
     <provide name="mailboxmanager"
              role="org.apache.james.mailboxmanager.manager.MailboxManagerProvider" />    
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>    
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>    
   </block>      
     
   <!-- POP3 Server -->
@@ -170,14 +170,14 @@
     <provide name="James" role="org.apache.james.services.MailServer"/>
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
 
   <!-- SMTP Server -->
   <block name="smtpserver" class="org.apache.james.smtpserver.SMTPServer" >
     <provide name="James" role="org.apache.mailet.MailetContext"/>
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="sockets"
              role="org.apache.avalon.cornerstone.services.sockets.SocketManager"/>
     <provide name="connections"
@@ -203,7 +203,7 @@
              role="org.apache.james.nntpserver.repository.NNTPRepository"/>
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
     <provide name="James" role="org.apache.james.services.MailServer"/>
   </block>
 
@@ -218,7 +218,7 @@
              role="org.apache.avalon.cornerstone.services.scheduler.TimeScheduler"/> 
     <provide name="James" role="org.apache.james.services.MailServer"/>      
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
 
   <!-- The High Level Storage block -->
@@ -272,7 +272,7 @@
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   
   <block name="defaultvirtualusertable" class="org.apache.james.impl.vut.DefaultVirtualUserTable">
@@ -284,7 +284,7 @@
   <!-- ######################################################################## -->
   <!-- The context domainlist implementation -->
   <block name="domainlist" class="org.apache.james.domain.XMLDomainList">
-      <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+      <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   
   <!--  JDBC implementation of the domainlist service-->
@@ -293,7 +293,7 @@
       <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
       <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
-      <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+      <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   -->
   
@@ -303,21 +303,21 @@
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
-    <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+    <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   -->
   
   <!-- XML VirtualUserTable implementation of the domainlist service -->
   <!--
   <block name="domainlist" class="org.apache.james.vut.XMLVirtualUserTable">
-      <provide name="dnsserver" role="org.apache.james.services.DNSServer"/>
+      <provide name="dnsserver" role="org.apache.james.api.dnsserver.DNSServer"/>
   </block>
   -->
   <!-- #################################################################### -->
   
   <block name="domainlistmanagement" class="org.apache.james.management.DomainListManagement">
     <provide name="domainlist"
-             role="org.apache.james.services.DomainList"/>
+             role="org.apache.james.api.domainlist.DomainList"/>
   </block>
   
   <!-- Configuration for Cornerstone Blocks only after here

Modified: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java Sun Aug 10 07:59:55 2008
@@ -38,13 +38,13 @@
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
+import org.apache.james.api.dnsserver.DNSServer;
+import org.apache.james.api.domainlist.DomainList;
+import org.apache.james.api.domainlist.DomainListUtil;
 import org.apache.james.api.vut.ErrorMappingException;
 import org.apache.james.api.vut.VirtualUserTable;
 import org.apache.james.api.vut.management.InvalidMappingException;
 import org.apache.james.api.vut.management.VirtualUserTableManagement;
-import org.apache.james.services.DNSServer;
-import org.apache.james.services.DomainList;
-import org.apache.james.util.DomainListUtil;
 import org.apache.mailet.MailAddress;
 import org.apache.oro.text.regex.MalformedPatternException;
 import org.apache.oro.text.regex.Perl5Compiler;
@@ -338,7 +338,7 @@
 
  
     /**
-     * @see org.apache.james.services.DomainList#getDomains()
+     * @see org.apache.james.api.domainlist.DomainList#getDomains()
      */
     public List getDomains() {
         List domains = getDomainsInternal();
@@ -387,7 +387,7 @@
     }
     
     /**
-     * @see org.apache.james.services.DomainList#setAutoDetect(boolean)
+     * @see org.apache.james.api.domainlist.DomainList#setAutoDetect(boolean)
      */
     public synchronized void setAutoDetect(boolean autoDetect) {
         getLogger().info("Set autodetect to: " + autoDetect);
@@ -395,7 +395,7 @@
     }
     
     /**
-     * @see org.apache.james.services.DomainList#setAutoDetectIP(boolean)
+     * @see org.apache.james.api.domainlist.DomainList#setAutoDetectIP(boolean)
      */
     public synchronized void setAutoDetectIP(boolean autoDetectIP) {
         getLogger().info("Set autodetectIP to: " + autoDetectIP);

Modified: james/server/trunk/user-library/src/test/java/org/apache/james/vut/AbstractVirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/test/java/org/apache/james/vut/AbstractVirtualUserTableTest.java?rev=684514&r1=684513&r2=684514&view=diff
==============================================================================
--- james/server/trunk/user-library/src/test/java/org/apache/james/vut/AbstractVirtualUserTableTest.java (original)
+++ james/server/trunk/user-library/src/test/java/org/apache/james/vut/AbstractVirtualUserTableTest.java Sun Aug 10 07:59:55 2008
@@ -28,12 +28,12 @@
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.avalon.framework.service.ServiceException;
+import org.apache.james.api.dnsserver.DNSServer;
+import org.apache.james.api.dnsserver.TemporaryResolutionException;
 import org.apache.james.api.vut.ErrorMappingException;
 import org.apache.james.api.vut.VirtualUserTable;
 import org.apache.james.api.vut.management.InvalidMappingException;
-import org.apache.james.dnsserver.TemporaryResolutionException;
 import org.apache.james.impl.vut.AbstractVirtualUserTable;
-import org.apache.james.services.DNSServer;
 
 import junit.framework.TestCase;
 



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