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 no...@apache.org on 2010/03/21 18:25:14 UTC

svn commit: r925833 - in /james/server/trunk: ./ jcr-store/ jcr-store/src/main/java/org/apache/james/jcr/ jcr-store/src/test/java/org/apache/james/jcr/ jcr-store/src/test/resources/ spring-deployment/

Author: norman
Date: Sun Mar 21 17:25:14 2010
New Revision: 925833

URL: http://svn.apache.org/viewvc?rev=925833&view=rev
Log:
Upgrade to jackrabbit 2.0.0 and add imap jcr implementation

Added:
    james/server/trunk/jcr-store/src/test/resources/log4j.properties
    james/server/trunk/jcr-store/src/test/resources/test-repository.xml
Modified:
    james/server/trunk/jcr-store/pom.xml
    james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/AbstractJCRRepository.java
    james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRMailRepository.java
    james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRUsersRepository.java
    james/server/trunk/jcr-store/src/test/java/org/apache/james/jcr/JcrUserRepositoryTest.java
    james/server/trunk/pom.xml
    james/server/trunk/spring-deployment/pom.xml

Modified: james/server/trunk/jcr-store/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/pom.xml?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/jcr-store/pom.xml (original)
+++ james/server/trunk/jcr-store/pom.xml Sun Mar 21 17:25:14 2010
@@ -63,12 +63,6 @@
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-jcr-rmi</artifactId>
-      <exclusions>
-      	<exclusion>
-      		<groupId>xerces</groupId>
-      		<artifactId>xercesImpl</artifactId>
-      	</exclusion>
-      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
@@ -83,6 +77,11 @@
       <artifactId>jackrabbit-core</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>test</scope>
+    </dependency>
     
     <dependency>
       <groupId>org.apache.james</groupId>
@@ -105,7 +104,11 @@
       <artifactId>slf4j-log4j12</artifactId>
       <scope>test</scope>
     </dependency>
-    
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>

Modified: james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/AbstractJCRRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/AbstractJCRRepository.java?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/AbstractJCRRepository.java (original)
+++ james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/AbstractJCRRepository.java Sun Mar 21 17:25:14 2010
@@ -34,11 +34,12 @@ import javax.jcr.query.QueryManager;
 import org.apache.commons.logging.Log;
 import org.apache.jackrabbit.util.ISO9075;
 import org.apache.jackrabbit.util.Text;
+import org.apache.james.lifecycle.LogEnabled;
 
 /**
  * Framework for JCR repositories used by James.
  */
-class AbstractJCRRepository {
+public abstract class AbstractJCRRepository implements LogEnabled{
     
     protected Log logger;
 
@@ -65,23 +66,18 @@ class AbstractJCRRepository {
      */
     protected String path = "james";
 
-    /**
-     * For setter injection.
-     */
-    public AbstractJCRRepository(Log logger) {
-        super();
-        this.logger = logger;
+    public AbstractJCRRepository(String path) {
+    	this.path = path;
     }
     
     /**
      * Minimal constructor for injection.
      * @param repository not null
      */
-    public AbstractJCRRepository(Repository repository, Log logger) {
+    public AbstractJCRRepository(Repository repository) {
         super();
         this.repository = repository;
         credentials = new SimpleCredentials("userid", "".toCharArray());
-        this.logger = logger;
     }
 
     /**
@@ -94,14 +90,12 @@ class AbstractJCRRepository {
      * @param path path (relative to root) of the user node within the workspace,
      * or null to use default.
      */
-    public AbstractJCRRepository(Repository repository, Credentials credentials, String workspace, String path, 
-            Log logger) {
+    public AbstractJCRRepository(Repository repository, Credentials credentials, String workspace, String path) {
         super();
         this.repository = repository;
         this.credentials = credentials;
         this.workspace = workspace;
         this.path = path;
-        this.logger = logger;
     }
 
     
@@ -112,15 +106,7 @@ class AbstractJCRRepository {
     public final Log getLogger() {
         return logger;
     }
-
-    /**
-     * Sets the current logger.
-     * @param logger the logger to set, not null
-     */
-    public final void setLogger(Log logger) {
-        this.logger = logger;
-    }
-
+    
     /**
      * Retuns the JCR content repository used as the mail repository.
      *
@@ -221,4 +207,11 @@ class AbstractJCRRepository {
         return iterator;
     }
 
+    /*
+     * 
+     */
+	public void setLog(Log logger) {
+		this.logger = logger;
+	}
+
 }
\ No newline at end of file

Modified: james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRMailRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRMailRepository.java?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRMailRepository.java (original)
+++ james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRMailRepository.java Sun Mar 21 17:25:14 2010
@@ -49,8 +49,6 @@ import javax.jcr.query.QueryManager;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.jackrabbit.util.ISO9075;
 import org.apache.jackrabbit.util.Text;
 import org.apache.james.core.MailImpl;
@@ -64,16 +62,10 @@ import org.apache.mailet.MailAddress;
 public class JCRMailRepository extends AbstractJCRRepository implements MailRepository {
 
     /**
-     * Logger instance.
-     */
-    private static final Log LOGGER = LogFactory.getLog(JCRMailRepository.class.getName());
-
-    /**
      * For setter injection.
      */
     public JCRMailRepository() {
-        super(LOGGER);
-        this.path = "james/mail";
+        super("james/mail");
     }
     
     /**
@@ -86,16 +78,16 @@ public class JCRMailRepository extends A
      * @param path path (relative to root) of the user node within the workspace,
      * or null to use default.
      */
-    public JCRMailRepository(Repository repository, Credentials credentials, String workspace, String path, Log logger) {
-        super(repository, credentials, workspace, path, logger);
+    public JCRMailRepository(Repository repository, Credentials credentials, String workspace, String path) {
+        super(repository, credentials, workspace, path);
     }
 
     /**
      * Minimal constructor for injection.
      * @param repository not null
      */
-    public JCRMailRepository(Repository repository, Log logger) {
-        super(repository, logger);
+    public JCRMailRepository(Repository repository) {
+        super(repository);
     }
 
 

Modified: james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRUsersRepository.java?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRUsersRepository.java (original)
+++ james/server/trunk/jcr-store/src/main/java/org/apache/james/jcr/JCRUsersRepository.java Sun Mar 21 17:25:14 2010
@@ -31,8 +31,6 @@ import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.james.api.user.User;
 import org.apache.james.api.user.UsersRepository;
 
@@ -43,15 +41,12 @@ public class JCRUsersRepository extends 
     private static final String PASSWD_PROPERTY = "passwd";
 
     private static final String USERNAME_PROPERTY = "username";
-
-    private static final Log LOGGER = LogFactory.getLog(JCRMailRepository.class);
     
     /**
      * For setter injection.
      */    
     public JCRUsersRepository() {
-        super(LOGGER);
-        this.path = "users";
+        super("users");
     }
 
     /**
@@ -64,8 +59,8 @@ public class JCRUsersRepository extends 
      * @param path path (relative to root) of the user node within the workspace,
      * or null to use default.
      */
-    public JCRUsersRepository(Repository repository, Credentials credentials, String workspace, String path, Log logger) {
-        super(repository, credentials, workspace, path, logger);
+    public JCRUsersRepository(Repository repository, Credentials credentials, String workspace, String path) {
+        super(repository, credentials, workspace, path);
     }
     
     /**
@@ -73,7 +68,7 @@ public class JCRUsersRepository extends 
      * @param repository not null
      */
     public JCRUsersRepository(Repository repository) {
-        super(repository, LOGGER);
+        super(repository);
         this.path = "users";
     }
 
@@ -427,8 +422,8 @@ public class JCRUsersRepository extends 
      *
      * @return Iterator over a collection of Strings, each being one user in the repository.
      */
-    public Iterator list() {
-        final Collection userNames = new ArrayList();
+    public Iterator<String> list() {
+        final Collection<String> userNames = new ArrayList<String>();
         try {
             final Session session = login();
             try {

Modified: james/server/trunk/jcr-store/src/test/java/org/apache/james/jcr/JcrUserRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/src/test/java/org/apache/james/jcr/JcrUserRepositoryTest.java?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/jcr-store/src/test/java/org/apache/james/jcr/JcrUserRepositoryTest.java (original)
+++ james/server/trunk/jcr-store/src/test/java/org/apache/james/jcr/JcrUserRepositoryTest.java Sun Mar 21 17:25:14 2010
@@ -20,8 +20,8 @@
 package org.apache.james.jcr;
 
 import java.io.File;
-import java.io.StringReader;
 
+import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.apache.james.api.user.UsersRepository;
@@ -31,62 +31,12 @@ import org.xml.sax.InputSource;
 public class JcrUserRepositoryTest extends MockUsersRepositoryTest {
 
     private static final String JACKRABBIT_HOME = "target/jackrabbit";
-    
-    private static final String CONFIG = 
-            "<Repository>" +
-            "<FileSystem class='org.apache.jackrabbit.core.fs.mem.MemoryFileSystem'>" +
-            "    <param name='path' value='${rep.home}/repository'/>" +
-            "</FileSystem>" +
-            "<Security appName='Jackrabbit'>" +
-            " <AccessManager class='org.apache.jackrabbit.core.security.SimpleAccessManager'>" +
-            " </AccessManager>" +
-            " <LoginModule class='org.apache.jackrabbit.core.security.SimpleLoginModule'>" +
-            " </LoginModule>" +
-            "</Security>" +
-            "<Workspaces rootPath='${rep.home}/workspaces' defaultWorkspace='default'/>" +
-            "  <Workspace name='${wsp.name}'>" +
-            "    <FileSystem class='org.apache.jackrabbit.core.fs.mem.MemoryFileSystem'>" +
-            "       <param name='path' value='${wsp.home}'/>" +
-            "    </FileSystem>" +
-            "    <PersistenceManager" +
-            "             class='org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager'>" +
-            "            <param name='url' value='jdbc:h2:${wsp.home}/db'/>" +
-            "            <param name='driver' value='org.h2.Driver'/>" +
-            "            <param name='schema' value='h2'/>" +
-            "            <param name='schemaObjectPrefix' value='${wsp.name}_'/>" +
-            "    </PersistenceManager>" +
-            "    <SearchIndex class='org.apache.jackrabbit.core.query.lucene.SearchIndex'>" +
-            "     <param name='path' value='${wsp.home}/index'/>" +
-            "     <param name='textFilterClasses' value='org.apache.jackrabbit.extractor.HTMLTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor'/>" +
-            "     <param name='extractorPoolSize' value='2'/>" +
-            "     <param name='supportHighlighting' value='true'/>" +
-            "   </SearchIndex>" +
-            "</Workspace>" +
-            "<Versioning rootPath='${rep.home}/version'>" +
-            "  <FileSystem class='org.apache.jackrabbit.core.fs.mem.MemoryFileSystem'>" +
-            "    <param name='path' value='${rep.home}/version' />" +
-            "  </FileSystem>" +
-            "    <PersistenceManager" +
-            "             class='org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager'>" +
-            "            <param name='url' value='jdbc:h2:${rep.home}/version/db'/>" +
-            "            <param name='driver' value='org.h2.Driver'/>" +
-            "            <param name='schema' value='h2'/>" +
-            "            <param name='schemaObjectPrefix' value='version_'/>" +
-            "    </PersistenceManager>" +
-            " </Versioning>" +
-            " <SearchIndex class='org.apache.jackrabbit.core.query.lucene.SearchIndex'>" +
-            "   <param name='path' value='${rep.home}/repository/index'/>" +
-            "   <param name='textFilterClasses' value='org.apache.jackrabbit.extractor.HTMLTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor'/>" +
-            "   <param name='extractorPoolSize' value='2'/>" +
-            "   <param name='supportHighlighting' value='true'/>" +
-            " </SearchIndex>" +
-            "</Repository>";
-    
-    RepositoryImpl repository;
+    private RepositoryImpl repository;
         
-    protected UsersRepository getUsersRepository() throws Exception 
-    {
-        return new JCRUsersRepository(repository);
+    protected UsersRepository getUsersRepository() throws Exception {
+        JCRUsersRepository repos = new JCRUsersRepository(repository);
+        repos.setLog(new SimpleLog("MockLog"));
+        return repos;
     }
 
     protected void setUp() throws Exception {
@@ -94,7 +44,7 @@ public class JcrUserRepositoryTest exten
         if (home.exists()) {
             delete(home);
         }
-        RepositoryConfig config = RepositoryConfig.create(new InputSource(new StringReader(CONFIG)), JACKRABBIT_HOME);
+        RepositoryConfig config = RepositoryConfig.create(new InputSource(this.getClass().getClassLoader().getResourceAsStream("test-repository.xml")), JACKRABBIT_HOME);
         repository = RepositoryImpl.create(config);
         super.setUp();
     }

Added: james/server/trunk/jcr-store/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/src/test/resources/log4j.properties?rev=925833&view=auto
==============================================================================
--- james/server/trunk/jcr-store/src/test/resources/log4j.properties (added)
+++ james/server/trunk/jcr-store/src/test/resources/log4j.properties Sun Mar 21 17:25:14 2010
@@ -0,0 +1,6 @@
+log4j.rootLogger=WARN, A1
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+
+# Print the date in ISO 8601 format
+log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

Added: james/server/trunk/jcr-store/src/test/resources/test-repository.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/jcr-store/src/test/resources/test-repository.xml?rev=925833&view=auto
==============================================================================
--- james/server/trunk/jcr-store/src/test/resources/test-repository.xml (added)
+++ james/server/trunk/jcr-store/src/test/resources/test-repository.xml Sun Mar 21 17:25:14 2010
@@ -0,0 +1,92 @@
+<?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.
+-->
+<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
+                            "http://jackrabbit.apache.org/dtd/repository-1.6.dtd">
+<!-- Example Repository Configuration File
+     Used by
+     - org.apache.jackrabbit.core.config.RepositoryConfigTest.java
+     -
+-->
+<Repository>
+    <!--
+        virtual file system where the repository stores global state
+        (e.g. registered namespaces, custom node types, etc.)
+    -->
+    <FileSystem class='org.apache.jackrabbit.core.fs.mem.MemoryFileSystem'>
+    </FileSystem>
+    <!--
+        security configuration
+    -->
+    <Security appName="Jackrabbit">
+        <SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="default">
+        </SecurityManager>
+
+        <AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
+        </AccessManager>
+
+        <LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">
+           <param name="adminId" value="admin"/>
+        </LoginModule>
+    </Security>
+
+    <Workspaces rootPath='${rep.home}/workspaces' defaultWorkspace='default'/>
+    
+    <Workspace name='${wsp.name}'>
+        <FileSystem class='org.apache.jackrabbit.core.fs.mem.MemoryFileSystem'>
+        </FileSystem>
+        <!--
+            persistence manager of the workspace:
+            class: FQN of class implementing the PersistenceManager interface
+        -->
+		<PersistenceManager class="org.apache.jackrabbit.core.persistence.mem.InMemPersistenceManager">
+			<param name="persistent" value="false"/>
+		</PersistenceManager>
+        
+        <SearchIndex class='org.apache.jackrabbit.core.query.lucene.SearchIndex'>
+            <param name='path' value='${wsp.home}/index'/>
+            <param name='textFilterClasses' value='org.apache.jackrabbit.extractor.HTMLTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor'/>
+            <param name='extractorPoolSize' value='2'/>
+            <param name='supportHighlighting' value='true'/>
+        </SearchIndex>
+        
+    </Workspace>
+
+    <!--
+        Configures the versioning
+    -->
+    <Versioning rootPath='${rep.home}/version'>
+        <FileSystem class='org.apache.jackrabbit.core.fs.mem.MemoryFileSystem'>
+        </FileSystem>
+
+		<PersistenceManager class="org.apache.jackrabbit.core.persistence.mem.InMemPersistenceManager">
+			<param name="persistent" value="false"/>
+		</PersistenceManager>
+        
+    </Versioning>
+    <!--
+        Search index for content that is shared repository wide
+        (/jcr:system tree, contains mainly versions)
+    -->
+    <SearchIndex class='org.apache.jackrabbit.core.query.lucene.SearchIndex'>
+        <param name='path' value='${rep.home}/repository/index'/>
+        <param name='textFilterClasses' value='org.apache.jackrabbit.extractor.HTMLTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor'/>
+        <param name='extractorPoolSize' value='2'/>
+        <param name='supportHighlighting' value='true'/>
+    </SearchIndex>
+
+</Repository>

Modified: james/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Sun Mar 21 17:25:14 2010
@@ -480,6 +480,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
+      <artifactId>apache-james-imap-jcr</artifactId>
+      <version>0.1-M2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.james</groupId>
       <artifactId>apache-james-imap-store</artifactId>
       <version>0.1-M2-SNAPSHOT</version>
       <exclusions>
@@ -867,7 +872,7 @@
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
-      <version>1.2</version>
+      <version>1.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.activemq</groupId>
@@ -876,12 +881,6 @@
     </dependency>
    
     <dependency>
-      <groupId>javax.jcr</groupId>
-      <artifactId>jcr</artifactId>
-      <version>1.0</version>
-    </dependency>
-   
-    <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.14</version>
@@ -960,28 +959,24 @@
     <dependency>
       <groupId>javax.jcr</groupId>
       <artifactId>jcr</artifactId>
-      <version>1.0</version>
+      <version>2.0</version>
     </dependency>
+
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-jcr-rmi</artifactId>
-      <version>1.4.1</version>
-      <exclusions>
-      	<exclusion>
-      		<groupId>xerces</groupId>
-      		<artifactId>xercesImpl</artifactId>
-      	</exclusion>
-      </exclusions>
+      <version>2.0.0</version>
     </dependency>
+
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-jcr-commons</artifactId>
-      <version>1.4.2</version>
+      <version>2.0.0</version>
     </dependency>
 	<dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-core</artifactId>
-      <version>1.4.6</version>
+      <version>2.0.0</version>
       <scope>test</scope>
     </dependency>
    

Modified: james/server/trunk/spring-deployment/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/pom.xml?rev=925833&r1=925832&r2=925833&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/pom.xml (original)
+++ james/server/trunk/spring-deployment/pom.xml Sun Mar 21 17:25:14 2010
@@ -361,6 +361,12 @@
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
+      <artifactId>apache-james-imap-jcr</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.apache.james</groupId>
       <artifactId>apache-james-imap-processor</artifactId>
       <scope>runtime</scope>
     </dependency>



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