Hi Norman,
We need:
fromUsersRepository -> toUsersRepository
fromMailRepository -> toMailboxManager
The to* are the ones defined by existing config. no worry about that.
The fromMailRepository can be passed as parameter to the method (from
jmx client for example), and it will be used to select from
MailRepositoryStore.
The fromUsersRepository is for example a FileUsersRepository copied from
James 2.3 that needs to be injected (with some logic around the
defaultDomain) in a JPAUsersRepository for example (the James 3.0 one).
This is why I thought to have an additional config file. If we use the
existing usersrepository.xml one, we only have a toUsersRepository and
not a fromUsersRepository.
Wdyt?
Tks,
Eric
On 29/12/2010 14:54, Norman Maurer wrote:
Hi there,
I think this makes sense. Anyway I think we could just use the
"usersrepository" as source and not the
"importjames23-usersrepository". There is not need for the
importjames-23-* stuff as the user can just use his old
UsersRepository config for users while importing. I think we also
could just use param for the method for the url....
+ public void importFromJames23() throws MailRepostoryStoreException,
MessagingException {
Should be :
+ public void importFromJames23(String url) throws
MailRepostoryStoreException, MessagingException {
So no need for inject a config..
Bye,
Norman
2010/12/28<[email protected]>:
Author: eric
Date: Tue Dec 28 14:41:50 2010
New Revision: 1053359
URL: http://svn.apache.org/viewvc?rev=1053359&view=rev
Log:
Skeleton for james 2.3 import - to be further discussed/developed for conf,
packaging,... (JAMES-1052)
Added:
james/server/trunk/container-spring/src/main/config/james/importjames23-usersrepository.xml
james/server/trunk/container-spring/src/main/config/james/importjames23.xml
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/tool/
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
Modified:
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
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=1053359&r1=1053358&r2=1053359&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
Tue Dec 28 14:41:50 2010
@@ -87,6 +87,13 @@
<!-- no alias needed -->
<value></value>
</entry>
+<entry>
+<key>
+<value>importjames23-usersrepository</value>
+</key>
+<!-- no alias needed -->
+<value></value>
+</entry>
</map>
</property>
</bean>
@@ -318,6 +325,11 @@
<bean id="mailboxcopier"
class="org.apache.james.mailbox.copier.MailboxCopierImpl"/>
<!--
+ Mailbox Import
+ -->
+<bean id="importjames23"
class="org.apache.james.container.spring.tool.James23Importer"/>
+
+<!--
===========================================================================
Database DataSource
===========================================================================
Added:
james/server/trunk/container-spring/src/main/config/james/importjames23-usersrepository.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/importjames23-usersrepository.xml?rev=1053359&view=auto
==============================================================================
---
james/server/trunk/container-spring/src/main/config/james/importjames23-usersrepository.xml
(added)
+++
james/server/trunk/container-spring/src/main/config/james/importjames23-usersrepository.xml
Tue Dec 28 14:41:50 2010
@@ -0,0 +1,26 @@
+<?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.
+ -->
+<importjames23-usersrepository
class="org.apache.james.user.file.UsersFileRepository">
+<destination URL="file://var/users/" />
+<ignoreCase>true</ignoreCase>
+<enableAliases>true</enableAliases>
+<enableForwarding>true</enableForwarding>
+<enableVirtualHosting>false</enableVirtualHosting>
+</importjames23-usersrepository>
Added:
james/server/trunk/container-spring/src/main/config/james/importjames23.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/importjames23.xml?rev=1053359&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/importjames23.xml
(added)
+++ james/server/trunk/container-spring/src/main/config/james/importjames23.xml
Tue Dec 28 14:41:50 2010
@@ -0,0 +1,22 @@
+<?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.
+ -->
+<importjames23>
+<repositoryPath>file://var/mail/inboxes</repositoryPath>
+</importjames23>
Added:
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java?rev=1053359&view=auto
==============================================================================
---
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
(added)
+++
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
Tue Dec 28 14:41:50 2010
@@ -0,0 +1,118 @@
+/****************************************************************
+ * 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. *
+ ****************************************************************/
+package org.apache.james.container.spring.tool;
+
+import java.util.Iterator;
+
+import javax.annotation.Resource;
+import javax.mail.MessagingException;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.james.lifecycle.api.Configurable;
+import org.apache.james.lifecycle.api.LogEnabled;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailrepository.api.MailRepository;
+import org.apache.james.mailrepository.api.MailRepositoryStore;
+import
org.apache.james.mailrepository.api.MailRepositoryStore.MailRepostoryStoreException;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.mailet.Mail;
+
+public class James23Importer implements Configurable, LogEnabled {
+
+ /**
+ * The logger.
+ */
+ private Log log;
+
+ /**
+ * The configuration.
+ */
+ private HierarchicalConfiguration config;
+
+ /**
+ * James 2.3 user repository defined by configuration.
+ */
+ @Resource(name = "importjames23-usersrepository")
+ private UsersRepository james23UsersRepository;
+
+ /**
+ * James 3.0 users repository.
+ */
+ @Resource(name="usersrepository")
+ private UsersRepository usersRepository;
+
+ /**
+ * The mail repository store needed to select the james 2.3 mail
repository.
+ */
+ @Resource(name="mailrepositorystore")
+ private MailRepositoryStore mailRepositoryStore;
+
+ /**
+ * The mailbox manager needed to copy the mails to.
+ */
+ @Resource(name="mailboxmanager")
+ private MailboxManager mailboxManager;
+
+ /**
+ * Copy 2.3 users to 3.0 users (taking virtualDomains into account)
+ * Copy 2.3 mails to 3.0 mails.
+ *
+ * TODO: This is just a skeleton to talk about the architecture (conf,...)
+ *
+ * @throws MailRepostoryStoreException
+ * @throws MessagingException
+ */
+ public void importFromJames23() throws MailRepostoryStoreException,
MessagingException {
+
+ String james23MailRepositoryPath = config.getString("repositoryPath");
+
+ Iterator<String> j23uIt = james23UsersRepository.list();
+
+ while (j23uIt.hasNext()) {
+ String user = j23uIt.next();
+ System.out.println("James 2.3 user:" + user);
+ MailRepository mailRepository =
mailRepositoryStore.select(james23MailRepositoryPath + "/" + user);
+ Iterator<String> sr = mailRepository.list();
+ while (sr.hasNext()) {
+ Mail mail = mailRepository.retrieve(sr.next());
+ System.out.println(mail.getMessage().getSubject()
+ + ": " + mail.getMessage().getSize()
+ + " - " + mail.getMessage().getLineCount());
+ }
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see
org.apache.james.lifecycle.api.LogEnabled#setLog(org.apache.commons.logging.Log)
+ */
+ public void setLog(Log log) {
+ this.log = log;
+ }
+
+ /* (non-Javadoc)
+ * @see
org.apache.james.lifecycle.api.Configurable#configure(org.apache.commons.configuration.HierarchicalConfiguration)
+ */
+ public void configure(HierarchicalConfiguration config) throws
ConfigurationException {
+ this.config = config;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]