Author: eric
Date: Mon Dec 13 16:08:45 2010
New Revision: 1045211

URL: http://svn.apache.org/viewvc?rev=1045211&view=rev
Log:
Introduce separate files and beans per mailbox impl (JAMES-1054) (MAILBOX-19)

Added:
    
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
    
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
    
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
    
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
Modified:
    james/server/trunk/container-spring/pom.xml
    james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml
    
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml

Modified: james/server/trunk/container-spring/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/pom.xml?rev=1045211&r1=1045210&r2=1045211&view=diff
==============================================================================
--- james/server/trunk/container-spring/pom.xml (original)
+++ james/server/trunk/container-spring/pom.xml Mon Dec 13 16:08:45 2010
@@ -665,11 +665,22 @@
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
+      <artifactId>apache-james-mailbox-memory</artifactId>
+      <version>0.2-M2-SNAPSHOT</version>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.james</groupId>
       <artifactId>james-server-mail-api</artifactId>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
+      <artifactId>apache-james-mailbox-copier</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.james</groupId>
       <artifactId>james-server-mail-library</artifactId>
       <scope>runtime</scope>
     </dependency>

Modified: 
james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml?rev=1045211&r1=1045210&r2=1045211&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml 
(original)
+++ james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml 
Mon Dec 13 16:08:45 2010
@@ -47,7 +47,7 @@
         <secret>yoursecret</secret>
         <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
         <!-- The algorithm is optional and only needs to be specified when 
using something other
-        than the Sun JCE provider. -->
+        than the Sun JCE provider - You could use IbmX509 with IBM Java 
runtime. -->
         <algorithm>SunX509</algorithm>
       </tls>
       

Added: 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml?rev=1045211&view=auto
==============================================================================
--- 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
 (added)
+++ 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
 Mon Dec 13 16:08:45 2010
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.    
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"; 
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+          http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd";>
+
+    <!-- 
+      Mailbox JCR
+     -->
+
+    <bean id="jcr-mailboxmanager" 
class="org.apache.james.mailbox.jcr.JCRMailboxManager">
+        <constructor-arg index="0" ref="jcr-sessionMapperFactory"/>
+        <constructor-arg index="1" ref="authenticator"/>
+        <constructor-arg index="2" ref="jcr-uidProvider"/>
+        <constructor-arg index="3" ref="locker"/>
+    </bean>
+    <bean id ="jcr-subscriptionManager" 
class="org.apache.james.mailbox.jcr.JCRSubscriptionManager">
+        <constructor-arg index="0" ref="jcr-sessionMapperFactory"/>
+    </bean>
+    <bean id="jcr-sessionMapperFactory" 
class="org.apache.james.mailbox.jcr.JCRMailboxSessionMapperFactory">
+        <constructor-arg index="0" ref="jcr-sessionJcrRepository"/>
+    </bean>
+    <bean id="jcr-uidProvider" 
class="org.apache.james.mailbox.jcr.mail.JCRCachingUidProvider">
+        <constructor-arg index="0" ref="jcr-sessionJcrRepository"/>
+    </bean>
+    <bean id ="jcr-sessionJcrRepository" 
class="org.apache.james.mailbox.jcr.GlobalMailboxSessionJCRRepository" 
depends-on="imapCndLoader">
+        <constructor-arg index="0" ref="jcrRepository"/>
+        <constructor-arg index="1" value="james"/>
+        <constructor-arg index="2" value="james"/>
+        <constructor-arg index="3" value="james"/>
+    </bean>
+    <bean id="jcrRepository" class="org.apache.jackrabbit.core.RepositoryImpl" 
destroy-method="shutdown">
+        <constructor-arg index="0" ref="config" />
+    </bean>
+    <bean id="imapCndLoader" 
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+        <property name="targetObject"><ref local="jcrUtils"/></property>
+        <property name="targetMethod"><value>registerCnd</value></property>
+        <property name="arguments">
+            <list>
+                <ref local="jcrRepository"/>
+                <value>james</value>
+                <value>james</value>
+                <value>james</value>
+            </list>
+        </property>
+    </bean>
+    <bean id="jcrUtils" class="org.apache.james.mailbox.jcr.JCRUtils"/>    
+    <bean id="config" 
class="org.apache.jackrabbit.core.config.RepositoryConfig" 
factory-method="create">
+        <constructor-arg index="0" 
value="filesystem=file://conf/jcr-repository.xml"/>
+        <constructor-arg index="1" 
value="filesystem=file://var/store/jackrabbit" />
+    </bean>
+
+</beans>

Added: 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml?rev=1045211&view=auto
==============================================================================
--- 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
 (added)
+++ 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
 Mon Dec 13 16:08:45 2010
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.    
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"; 
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+          http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd";>
+
+    <!-- 
+      Mailbox JPA
+     -->
+          
+    <bean 
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
+    <bean id="jpa-mailboxmanager" 
class="org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager">
+        <constructor-arg index="0" ref="jpa-sessionMapperFactory"/>
+        <constructor-arg index="1" ref="authenticator"/>
+        <constructor-arg index="2" ref="jpa-uidProvider"/>
+        <constructor-arg index="3" ref="locker"/>
+        <constructor-arg index="4" value="${openjpa.streaming}"/>
+    </bean>
+    <bean id ="jpa-subscriptionManager" 
class="org.apache.james.mailbox.jpa.JPASubscriptionManager">
+        <constructor-arg index="0" ref="jpa-sessionMapperFactory"/>
+    </bean>
+    <bean id="jpa-sessionMapperFactory" 
class="org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory">
+        <constructor-arg index="0" ref="entityManagerFactory"/>
+    </bean>
+    <bean id="jpa-uidProvider" 
class="org.apache.james.mailbox.jpa.mail.JPACachingUidProvider">
+        <constructor-arg index="0" ref="entityManagerFactory"/>
+    </bean>
+
+</beans>

Added: 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml?rev=1045211&view=auto
==============================================================================
--- 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
 (added)
+++ 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
 Mon Dec 13 16:08:45 2010
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.    
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"; 
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+          http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd";>
+
+    <!-- 
+      Mailbox Maildir
+     -->
+    <!-- WARNING: Maildir does only work on UNIX like operation systems -->
+
+    <bean id="maildir-mailboxmanager" 
class="org.apache.james.mailbox.maildir.MaildirMailboxManager">
+        <constructor-arg index="0" ref="maildir-sessionMapperFactory"/>
+        <constructor-arg index="1" ref="authenticator"/>
+        <constructor-arg index="2" ref="maildir-uidProvider"/>
+    </bean>
+    <bean id ="maildir-subscriptionManager" 
class="org.apache.james.mailbox.maildir.MaildirSubscriptionManager">
+        <constructor-arg index="0" ref="maildir-sessionMapperFactory"/>
+    </bean>
+    <bean id="maildir-sessionMapperFactory" 
class="org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory">
+        <constructor-arg index="0" ref="maildirStore"/>
+    </bean>
+    <bean id="maildirStore" name="maildir-uidProvider" 
class="org.apache.james.adapter.mailbox.maildir.MaildirStoreUtil" 
factory-method="create">
+        <constructor-arg index="0" ref="filesystem"/>
+        <constructor-arg index="1" ref="mailserver"/>
+        <constructor-arg index="2" value="file://var/store/maildir/"/>
+    </bean>
+
+</beans>

Added: 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml?rev=1045211&view=auto
==============================================================================
--- 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
 (added)
+++ 
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
 Mon Dec 13 16:08:45 2010
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.    
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"; 
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+          http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd";>
+
+    <!-- 
+      Mailbox Memory
+     -->
+    <!-- WARNING: Memory does not persist the mailbox. -->
+    <!--          Information will be lost after server restart. -->
+
+    <bean id="memory-mailboxmanager" 
class="org.apache.james.mailbox.inmemory.InMemoryMailboxManager">
+        <constructor-arg index="0" ref="memory-sessionMapperFactory"/>
+        <constructor-arg index="1" ref="authenticator"/>
+        <constructor-arg index="2" ref="memory-uidProvider"/>
+    </bean>
+    <bean id ="memory-subscriptionManager" 
class="org.apache.james.mailbox.inmemory.InMemorySubscriptionManager">
+        <constructor-arg index="0" ref="memory-sessionMapperFactory"/>
+    </bean>
+    <bean id="memory-sessionMapperFactory" 
class="org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory" />
+    <bean id="memory-uidProvider" 
class="org.apache.james.mailbox.inmemory.mail.InMemoryCachingUidProvider" />
+
+</beans>

Modified: 
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml?rev=1045211&r1=1045210&r2=1045211&view=diff
==============================================================================
--- 
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
 (original)
+++ 
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
 Mon Dec 13 16:08:45 2010
@@ -26,73 +26,29 @@
           http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring-2.5.0.xsd
           http://activemq.apache.org/schema/core 
http://activemq.apache.org/schema/core/activemq-core-5.4.1.xsd";>
-
-    <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-        <property name="ignoreUnresolvablePlaceholders" value="true"/>
-        <property name="location" value="file://conf/jmx.properties"/>
-    </bean>
-
-    <bean id="restrictedRmiSocketFactory" 
class="org.apache.james.container.spring.RestrictingRMISocketFactory">
-        <constructor-arg value="${jmx.address}"/>
-    </bean>   
-
-    <bean id="registry" 
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
-        <property name="port" value="${jmx.port}" />
-        <property name="serverSocketFactory" ref="restrictedRmiSocketFactory"/>
-        <property name="clientSocketFactory" ref="restrictedRmiSocketFactory"/>
-    </bean> 
-
-    <bean id="mbeanserver" 
class="org.springframework.jmx.support.MBeanServerFactoryBean" >
-        <property name="locateExistingServerIfPossible" value="true"/>
-        <property name="registerWithFactory" value="true"/>
+          
+    <!-- 
+      File System
+     -->
+    <bean class="org.apache.james.container.spring.FileSystemResolver">
+        <property name="fileSystem" ref="filesystem" />
     </bean>
+    <bean id="filesystem" 
class="org.apache.james.container.spring.SpringFileSystem" />
 
-    <bean id="serverConnector" 
class="org.springframework.jmx.support.ConnectorServerFactoryBean" 
depends-on="registry">
-        <property name="objectName" value="connector:name=rmi" />
-        <property name="serviceUrl" 
value="service:jmx:rmi://${jmx.address}/jndi/rmi://${jmx.address}:${jmx.port}/jmxrmi"
 />
-    </bean> 
-
-    <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" 
lazy-init="false">
-      <property name="beans">
-        <map>
-          <entry key="org.apache.james:type=server,name=smtpserver" 
value-ref="smtpserver"/>
-          <entry key="org.apache.james:type=server,name=lmtpserver" 
value-ref="lmtpserver"/>
-          <entry key="org.apache.james:type=server,name=pop3server" 
value-ref="pop3server"/>
-          <entry key="org.apache.james:type=server,name=imapserver" 
value-ref="imapserver"/>
-          <entry key="org.apache.james:type=server,name=remotemanager" 
value-ref="remotemanager"/>
-          <entry key="org.apache.james:type=component,name=domainlist" 
value-ref="domainlistmanagement"/>
-          <entry key="org.apache.james:type=component,name=dnsservice" 
value-ref="dnsservice"/>
-          <entry key="org.apache.james:type=component,name=processor" 
value-ref="processormanagement"/>
-          <entry key="org.apache.james:type=component,name=virtualusertable" 
value-ref="virtualusertablemanagement"/>
-          <entry key="org.apache.james:type=component,name=usermanagement" 
value-ref="usermanagement"/>
-          <entry key="org.apache.james:type=component,name=fetchmail" 
value-ref="fetchmail"/>
-          <entry key="org.apache.james:type=component,name=mailboxmanagement" 
value-ref="mailboxmanagermanagement"/>
-        </map>
-      </property>
-      
-      <property name="assembler">
-          <bean 
class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
-            <property name="managedInterfaces" 
value="org.apache.james.smtpserver.netty.SMTPServerMBean,org.apache.james.remotemanager.netty.RemoteManagerMBean,org.apache.james.pop3server.netty.POP3ServerMBean,org.apache.james.imapserver.netty.IMAPServerMBean,org.apache.james.fetchmail.FetchSchedulerMBean,org.apache.james.domainlist.api.DomainListManagementMBean,org.apache.james.dnsservice.api.DNSServiceMBean,org.apache.james.mailetcontainer.api.ProcessorManagementMBean,org.apache.james.vut.api.VirtualUserTableManagementMBean,org.apache.james.user.api.UserManagementMBean,org.apache.james.adapter.mailbox.MailboxManagerManagementMBean"/>
-          </bean>
-      </property>
-      
+    <!-- 
+      Scheduler
+     -->
+    <bean id="scheduler" class="java.util.concurrent.Executors" 
factory-method="newScheduledThreadPool">
+        <constructor-arg value="20"/>
     </bean>
-    
-    <bean id="processormanagement" 
class="org.apache.james.mailetcontainer.lib.ProcessorManagement"/>
-    
-    <bean id="usermanagement" class="org.apache.james.user.lib.UserManagement" 
/>
-    
-    <bean id="virtualusertablemanagement" 
class="org.apache.james.vut.lib.VirtualUserTableManagement" />
-
-    <bean id="domainlistmanagement" 
class="org.apache.james.domainlist.lib.DomainListManagement" />
-
-    <bean id="mailboxmanagermanagement" 
class="org.apache.james.adapter.mailbox.MailboxManagerManagement" />
 
+    <!-- 
+      Configuration Provider
+     -->
     <bean 
class="org.apache.james.container.spring.lifecycle.CommonsConfigurableBeanPostProcessor">
         <property name="configurationProvider" ref="configurationProvider" />
         <property name="order" value="1" />
     </bean>
-
     <bean id="configurationProvider" 
class="org.apache.james.container.spring.lifecycle.SpringConfigurationProvider">
         <property name="configurationMappings">
             <map>
@@ -109,20 +65,13 @@
         </property>
     </bean>
 
-    <bean class="org.apache.james.container.spring.FileSystemResolver">
-        <property name="fileSystem" ref="filesystem" />
-    </bean>
-    
-    <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-        <property name="ignoreUnresolvablePlaceholders" value="true"/>
-        <property name = "location" value="file://conf/database.properties"/>
-    </bean>
-
+    <!-- 
+      Log Provider
+     -->
     <bean 
class="org.apache.james.container.spring.lifecycle.LogEnabledBeanPostProcessor">
         <property name="logProvider" ref="logProvider" />
         <property name="order" value="0" />
     </bean>
-
     <bean id="logProvider" 
class="org.apache.james.container.spring.lifecycle.SpringLogProvider">
         <property name="logMappings">
             <map>
@@ -139,19 +88,17 @@
         </property>
     </bean>
 
+    <!-- 
+      Injection
+     -->
+    <bean id="instanceFactory" 
class="org.apache.james.container.spring.SpringInstanceFactory"/>
     <bean class= 
"org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
         <property name="order" value="3" />
     </bean>
 
-    <bean id="instanceFactory" 
class="org.apache.james.container.spring.SpringInstanceFactory"/>
-
-    <bean 
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
-
-    <camel:camelContext id="jamesCamelContext" trace="false" >
-        <camel:jmxAgent id="agent" disabled="false" createConnector="false" 
serviceUrlPath="/jmxrmi/jamescamel"/>
-        <camel:template id="producerTemplate"/>   
-    </camel:camelContext>
-
+    <!-- 
+      Active MQ
+     -->
     <amq:broker useJmx="true" persistent="true" brokerName="james" 
dataDirectory="filesystem=file://var/store/activemq/brokers" 
useShutdownHook="false" schedulerSupport="false" id="broker">
         <amq:destinationPolicy>
             <amq:policyMap>
@@ -175,152 +122,230 @@
             <amq:transportConnector uri="tcp://localhost:0" />
         </amq:transportConnectors>
     </amq:broker>
-    
     <amq:connectionFactory id="amqConnectionFactory" 
brokerURL="vm://james?create=false">
         <property name="blobTransferPolicy" ref="blobTransferPolicy"/>
     </amq:connectionFactory>
-
     <bean id="blobTransferPolicy" 
class="org.apache.james.queue.activemq.FileSystemBlobTransferPolicy">
         <property name="defaultUploadUrl" 
value="file://var/store/activemq/blob-transfer"/>
     </bean>
-
     <bean id="jmsConnectionFactory" 
class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="amqConnectionFactory"/>
        <property name="sessionCacheSize" value="10"/>
        <property name="cacheConsumers" value="false"/>
        <property name="cacheProducers" value="true"/>
     </bean>
-
     <bean id="jmsTransactionManager" 
class="org.springframework.jms.connection.JmsTransactionManager">
         <property name="connectionFactory" ref="jmsConnectionFactory"/>
     </bean>
 
+    <!-- 
+      Camel
+     -->
+    <camel:camelContext id="jamesCamelContext" trace="false" >
+        <camel:jmxAgent id="agent" disabled="false" createConnector="false" 
serviceUrlPath="/jmxrmi/jamescamel"/>
+        <camel:template id="producerTemplate"/>   
+    </camel:camelContext>
+
+    <!-- 
+      Mail Server / Queue / Spool / Mailet / Matcher
+     -->
+    <bean id="mailserver" class="org.apache.james.JamesMailServer"/>
     <bean id="mailQueueFactory" 
class="org.apache.james.queue.activemq.ActiveMQMailQueueFactory" 
depends-on="broker"/>
-        
     <bean id="mailProcessor" name="processorRoute" 
class="org.apache.james.mailetcontainer.camel.CamelMailProcessorList"/>
-
     <bean id="spoolmanager" 
class="org.apache.james.transport.JamesSpoolManager"/>
-    
-    <bean id="mailserver" class="org.apache.james.JamesMailServer"/>
-
     <bean id="mailetcontext" 
class="org.apache.james.mailetcontainer.lib.JamesMailetContext"/>
-
-    <bean id="matcherloader" 
class="org.apache.james.mailetcontainer.lib.JamesMatcherLoader" />
-
     <bean id="mailetloader" 
class="org.apache.james.mailetcontainer.lib.JamesMailetLoader" />
+    <bean id="matcherloader" 
class="org.apache.james.mailetcontainer.lib.JamesMatcherLoader" />
 
+    <!-- 
+      DNS Service
+     -->
     <bean id="dnsservice" 
class="org.apache.james.dnsservice.dnsjava.DNSJavaService" />
 
+    <!-- 
+      Remote Manager
+     -->
     <bean id="remotemanager" 
class="org.apache.james.remotemanager.netty.RemoteManager" >
         <property name="protocolHandlerChain" 
ref="remoteProtocolHandlerChain"/>
     </bean>
-
     <bean id="remoteProtocolHandlerChain" 
class="org.apache.james.socket.JamesProtocolHandlerChain">
         <property name="coreHandlersPackage" 
value="org.apache.james.remotemanager.core.CoreCmdHandlerLoader"/>
     </bean>
 
-    <bean id="pop3server"  
class="org.apache.james.pop3server.netty.POP3Server" >
-        <property name="protocolHandlerChain" ref="pop3ProtocolHandlerChain"/>
-    </bean>
-
-    <bean id="pop3ProtocolHandlerChain" 
class="org.apache.james.socket.JamesProtocolHandlerChain">
-        <property name="coreHandlersPackage" 
value="org.apache.james.pop3server.core.CoreCmdHandlerLoader"/>
-    </bean>
-
+    <!-- 
+      SMTP Server
+     -->
     <bean id="smtpserver" class="org.apache.james.smtpserver.netty.SMTPServer">
         <property name="protocolHandlerChain" ref="smtpProtocolHandlerChain"/>
     </bean>
-
     <bean id="smtpProtocolHandlerChain" 
class="org.apache.james.socket.JamesProtocolHandlerChain">
         <property name="coreHandlersPackage" 
value="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
     </bean>
 
+    <!-- 
+      LMTP Server
+     -->
     <bean id="lmtpserver" class="org.apache.james.lmtpserver.netty.LMTPServer">
         <property name="protocolHandlerChain" ref="lmtpProtocolHandlerChain"/>
     </bean>
-
     <bean id="lmtpProtocolHandlerChain" 
class="org.apache.james.socket.JamesProtocolHandlerChain">
         <property name="coreHandlersPackage" 
value="org.apache.james.lmtpserver.CoreCmdHandlerLoader"/>
     </bean>
     
+    <!-- 
+      Fetchmail
+     -->
     <bean id="fetchmail" class="org.apache.james.fetchmail.FetchScheduler" />
 
-    <bean id="mailstore" class="org.apache.james.mailstore.lib.JamesMailStore" 
/>
-
-    <bean id="usersstore" class="org.apache.james.user.lib.JamesUsersStore" >
-        <property name="defaultRepository" value="LocalUsers"/>
+    <!-- 
+      POP3 Server
+     -->
+    <bean id="pop3server"  
class="org.apache.james.pop3server.netty.POP3Server" >
+        <property name="protocolHandlerChain" ref="pop3ProtocolHandlerChain"/>
+    </bean>
+    <bean id="pop3ProtocolHandlerChain" 
class="org.apache.james.socket.JamesProtocolHandlerChain">
+        <property name="coreHandlersPackage" 
value="org.apache.james.pop3server.core.CoreCmdHandlerLoader"/>
     </bean>
 
-    <bean id="localusersrepository" 
class="org.apache.james.user.lib.LocalUsersRepository" />
-
-    <bean id="filesystem" 
class="org.apache.james.container.spring.SpringFileSystem" />
-
-    <bean id="virtualusertable" 
class="org.apache.james.vut.lib.JamesVirtualUserTable" />
-
-    <bean id="domainlist" 
class="org.apache.james.domainlist.lib.JamesDomainList" />
-
+    <!-- 
+      IMAP Server
+     -->
     <bean id="imapserver" class="org.apache.james.imapserver.netty.IMAPServer">
         <property name="imapDecoder" ref="imapDecoder"/>
         <property name="imapEncoder" ref="imapEncoder"/>    
     </bean>
-
     <bean id="imapProcessor" 
class="org.apache.james.imap.processor.main.DefaultImapProcessorFactory" 
factory-method="createDefaultProcessor">
         <constructor-arg index="0" ref="mailboxmanager"/>
         <constructor-arg index="1" ref="subscriptionManager"/>
     </bean>
-
-    <bean id="imapDecoderFactory" 
class="org.apache.james.imap.main.DefaultImapDecoderFactory"/>
-
     <bean id="imapDecoder" factory-bean="imapDecoderFactory"  
factory-method="buildImapDecoder"/>
-
-    <bean id="imapEncoderFactory" 
class="org.apache.james.imap.encode.main.DefaultImapEncoderFactory"/>
-
+    <bean id="imapDecoderFactory" 
class="org.apache.james.imap.main.DefaultImapDecoderFactory"/>
     <bean id="imapEncoder" factory-bean="imapEncoderFactory"  
factory-method="buildImapEncoder"/>
+    <bean id="imapEncoderFactory" 
class="org.apache.james.imap.encode.main.DefaultImapEncoderFactory"/>
 
-    <bean id="authenticator" 
class="org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator"/>
-
-    <bean id="sessionMapperFactory" 
class="org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory">
-        <constructor-arg index="0" ref="entityManagerFactory"/>
-    </bean>
-    
-    <bean id ="subscriptionManager" 
class="org.apache.james.mailbox.jpa.JPASubscriptionManager">
-        <constructor-arg index="0" ref="sessionMapperFactory"/>
+    <!-- 
+      Users
+     -->
+    <bean id="usersstore" class="org.apache.james.user.lib.JamesUsersStore" >
+        <property name="defaultRepository" value="LocalUsers"/>
     </bean>
+    <bean id="localusersrepository" 
class="org.apache.james.user.lib.LocalUsersRepository" />
+    <bean id="virtualusertable" 
class="org.apache.james.vut.lib.JamesVirtualUserTable" />
 
-    <bean id="mailboxmanager" 
class="org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager">
-        <constructor-arg index="0" ref="sessionMapperFactory"/>
-        <constructor-arg index="1" ref="authenticator"/>
-        <constructor-arg index="2" ref="uidProvider"/>
-        <constructor-arg index="3" ref="locker"/>
-        <constructor-arg index="4" value="${openjpa.streaming}"/>
-    </bean>
+    <!-- 
+      Domain List
+     -->
+    <bean id="domainlist" 
class="org.apache.james.domainlist.lib.JamesDomainList" />
 
-    <bean id="locker" 
class="org.apache.james.mailbox.store.JVMMailboxPathLocker"/>
-    
-    <bean id="uidProvider" 
class="org.apache.james.mailbox.jpa.mail.JPACachingUidProvider">
-        <constructor-arg index="0" ref="entityManagerFactory"/>
-    </bean>
+    <!-- 
+      MailStore
+     -->
+    <bean id="mailstore" class="org.apache.james.mailstore.lib.JamesMailStore" 
/>
 
-    <bean id="scheduler" class="java.util.concurrent.Executors" 
factory-method="newScheduledThreadPool">
-        <constructor-arg value="20"/>
+    <!-- 
+      Mailstore Import 2.3
+      INFO: This sections still needs to be completed with beans responsible 
to import James 2.3 mailstore.
+     -->
+          
+    <!-- 
+      Mailbox
+     -->
+    <bean id="mailboxmanager" parent="jcr-mailboxmanager" />
+    <bean id="subscriptionManager" parent="jpa-subscriptionManager" />
+    <bean id="locker" 
class="org.apache.james.mailbox.store.JVMMailboxPathLocker"/>
+    <bean id="authenticator" 
class="org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator"/>
+    <import resource="classpath:context/james-mailbox-jpa-context.xml" />
+    <import resource="classpath:context/james-mailbox-jcr-context.xml" />
+    <import resource="classpath:context/james-mailbox-maildir-context.xml" />
+    <import resource="classpath:context/james-mailbox-memory-context.xml" />
+
+    <!-- 
+      Mailbox Tools
+     -->
+    <bean id="mailboxCopier" 
class="org.apache.james.mailbox.copier.MailboxCopierImpl">
+        <property name="srcMailboxManager" ref="jpa-mailboxmanager"/>
+        <property name="dstMailboxManager" ref="jcr-mailboxmanager"/>
+    </bean>
+          
+    <!-- 
+      Database DataSource
+     -->
+    <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+        <property name="ignoreUnresolvablePlaceholders" value="true"/>
+        <property name = "location" value="file://conf/database.properties"/>
     </bean>
-    
     <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" 
destroy-method="close">
         <property name="driverClassName" value="${database.driverClassName}" />
         <property name="url" value="${database.url}" />
         <property name="username" value="${database.username}" />
         <property name="password" value="${database.password}" />
     </bean>
-    
     <bean id="entityManagerFactory" 
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
         <property name="dataSource" ref="datasource"/>
         <property name="jpaVendorAdapter" ref="vendorAdapter"/>
     </bean>
-
     <bean id="vendorAdapter" 
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
         <property name="database" value="${vendorAdapter.database}"/>
         <!-- set this to true for debugging purposes -->
         <property name="showSql" value="false"/>
     </bean>
 
+    <!-- 
+      JMX Server
+     -->
+    <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+        <property name="ignoreUnresolvablePlaceholders" value="true"/>
+        <property name="location" value="file://conf/jmx.properties"/>
+    </bean>
+    <bean id="mbeanserver" 
class="org.springframework.jmx.support.MBeanServerFactoryBean" >
+        <property name="locateExistingServerIfPossible" value="true"/>
+        <property name="registerWithFactory" value="true"/>
+    </bean>
+    <bean id="serverConnector" 
class="org.springframework.jmx.support.ConnectorServerFactoryBean" 
depends-on="registry">
+        <property name="objectName" value="connector:name=rmi" />
+        <property name="serviceUrl" 
value="service:jmx:rmi://${jmx.address}/jndi/rmi://${jmx.address}:${jmx.port}/jmxrmi"
 />
+    </bean> 
+    <bean id="registry" 
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
+        <property name="port" value="${jmx.port}" />
+        <property name="serverSocketFactory" ref="restrictedRmiSocketFactory"/>
+        <property name="clientSocketFactory" ref="restrictedRmiSocketFactory"/>
+    </bean> 
+    <bean id="restrictedRmiSocketFactory" 
class="org.apache.james.container.spring.RestrictingRMISocketFactory">
+        <constructor-arg value="${jmx.address}"/>
+    </bean>   
+
+    <!-- 
+      JMX Export
+     -->
+    <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" 
lazy-init="false">
+      <property name="beans">
+        <map>
+          <entry key="org.apache.james:type=server,name=smtpserver" 
value-ref="smtpserver"/>
+          <entry key="org.apache.james:type=server,name=lmtpserver" 
value-ref="lmtpserver"/>
+          <entry key="org.apache.james:type=server,name=pop3server" 
value-ref="pop3server"/>
+          <entry key="org.apache.james:type=server,name=imapserver" 
value-ref="imapserver"/>
+          <entry key="org.apache.james:type=server,name=remotemanager" 
value-ref="remotemanager"/>
+          <entry key="org.apache.james:type=component,name=domainlist" 
value-ref="domainlistmanagement"/>
+          <entry key="org.apache.james:type=component,name=dnsservice" 
value-ref="dnsservice"/>
+          <entry key="org.apache.james:type=component,name=processor" 
value-ref="processormanagement"/>
+          <entry key="org.apache.james:type=component,name=virtualusertable" 
value-ref="virtualusertablemanagement"/>
+          <entry key="org.apache.james:type=component,name=usermanagement" 
value-ref="usermanagement"/>
+          <entry key="org.apache.james:type=component,name=fetchmail" 
value-ref="fetchmail"/>
+          <entry key="org.apache.james:type=component,name=mailboxmanagement" 
value-ref="mailboxmanagermanagement"/>
+          <entry key="org.apache.james:type=mailbox,name=mailboxcopier" 
value-ref="mailboxcopiermanagement"/>
+        </map>
+      </property>
+      <property name="assembler">
+          <bean 
class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
+            <property name="managedInterfaces" 
value="org.apache.james.smtpserver.netty.SMTPServerMBean,org.apache.james.remotemanager.netty.RemoteManagerMBean,org.apache.james.pop3server.netty.POP3ServerMBean,org.apache.james.imapserver.netty.IMAPServerMBean,org.apache.james.fetchmail.FetchSchedulerMBean,org.apache.james.domainlist.api.DomainListManagementMBean,org.apache.james.dnsservice.api.DNSServiceMBean,org.apache.james.mailetcontainer.api.ProcessorManagementMBean,org.apache.james.vut.api.VirtualUserTableManagementMBean,org.apache.james.user.api.UserManagementMBean,org.apache.james.adapter.mailbox.MailboxManagerManagementMBean,org.apache.james.mailbox.copier.MailboxCopierManagementMBean"/>
+          </bean>
+      </property>
+    </bean>
+    <bean id="processormanagement" 
class="org.apache.james.mailetcontainer.lib.ProcessorManagement"/>
+    <bean id="usermanagement" class="org.apache.james.user.lib.UserManagement" 
/>
+    <bean id="virtualusertablemanagement" 
class="org.apache.james.vut.lib.VirtualUserTableManagement" />
+    <bean id="domainlistmanagement" 
class="org.apache.james.domainlist.lib.DomainListManagement" />
+    <bean id="mailboxmanagermanagement" 
class="org.apache.james.adapter.mailbox.MailboxManagerManagement" />
+    <bean id="mailboxcopiermanagement" 
class="org.apache.james.mailbox.copier.MailboxCopierManagement" />
+
 </beans>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to