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 ma...@apache.org on 2015/10/20 17:48:01 UTC
svn commit: r1709626 - in /james/project/trunk/server: ./
container/filesystem-api/
container/filesystem-api/src/test/java/org/apache/james/filesystem/api/
container/filesystem-api/src/test/resources/ container/spring/
container/spring/src/main/java/or...
Author: matthieu
Date: Tue Oct 20 15:48:01 2015
New Revision: 1709626
URL: http://svn.apache.org/viewvc?rev=1709626&view=rev
Log:
JAMES-1606: Integration tests for FileSystem implementation
Added:
james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
james/project/trunk/server/container/filesystem-api/src/test/resources/
james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt
james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt
james/project/trunk/server/container/spring/src/test/
james/project/trunk/server/container/spring/src/test/java/
james/project/trunk/server/container/spring/src/test/java/org/
james/project/trunk/server/container/spring/src/test/java/org/apache/
james/project/trunk/server/container/spring/src/test/java/org/apache/james/
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
Modified:
james/project/trunk/server/container/filesystem-api/pom.xml
james/project/trunk/server/container/spring/pom.xml
james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
james/project/trunk/server/pom.xml
Modified: james/project/trunk/server/container/filesystem-api/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/pom.xml?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/container/filesystem-api/pom.xml (original)
+++ james/project/trunk/server/container/filesystem-api/pom.xml Tue Oct 20 15:48:01 2015
@@ -50,6 +50,16 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>pl.pragmatists</groupId>
+ <artifactId>JUnitParams</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
Added: james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java (added)
+++ james/project/trunk/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java Tue Oct 20 15:48:01 2015
@@ -0,0 +1,299 @@
+/****************************************************************
+ * 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.filesystem.api;
+
+import static junitparams.JUnitParamsRunner.$;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
+
+@SuppressWarnings("restriction")
+@RunWith(JUnitParamsRunner.class)
+public abstract class AbstractFileSystemTest {
+ private static final String FAKE_DIRECTORY = "b7b73e3a-5234-11e5-87f2-9b171f273b49/";
+ private static final String FAKE_FILE = "d9091ae6-521f-11e5-b666-bb11fef67c2a";
+ private static final String EXISTING_CLASSPATH_FILE = "classpathTest.txt";
+ private static final String EXISTING_CLASSPATH_FILE_WITH_SPACES = "class path Test.txt";
+
+ @Rule public TemporaryFolder tmpFolder = new TemporaryFolder();
+
+ protected FileSystem fileSystem;
+
+ private HttpServer httpServer;
+ private File rootDirectory;
+
+ protected abstract FileSystem buildFileSystem(String configurationRootDirectory);
+
+ @Before
+ public void setUp() throws Exception {
+ httpServer = HttpServer.create(new InetSocketAddress("localhost", 0), 0);
+ httpServer.createContext("/", new SlashHandler());
+ httpServer.start();
+
+ rootDirectory = tmpFolder.getRoot();
+ createSubFolderWithAFileIn("conf", "conf.txt", "confcontent");
+ createSubFolderWithAFileIn("var", "var.txt", "varcontent");
+
+ fileSystem = buildFileSystem(rootDirectory.getAbsolutePath());
+ }
+
+ private void createSubFolderWithAFileIn(String folderName, String fileName, String fileContent) throws IOException {
+ File folder = tmpFolder.newFolder(folderName);
+ File file = new File(folder.getAbsolutePath() + "/" + fileName);
+ FileUtils.writeStringToFile(file, fileContent);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ httpServer.stop(0);
+ }
+
+ private static class SlashHandler implements HttpHandler {
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ if (exchange.getRequestURI().getPath().equals("/")) {
+ String response = "content";
+ exchange.sendResponseHeaders(200, response.length());
+ OutputStream responseBody = exchange.getResponseBody();
+ responseBody.write(response.getBytes());
+ responseBody.close();
+ } else {
+ exchange.sendResponseHeaders(404, 0);
+ }
+ }
+ }
+
+ @Test
+ public final void getBaseDirShouldReturnParentDir() throws Exception {
+ File basedir = fileSystem.getBasedir();
+ assertThat(basedir.getPath()).isEqualTo(rootDirectory.getAbsolutePath());
+ }
+
+ @Test(expected = NullPointerException.class)
+ public final void nullInputShouldThrowNullPointerException() throws Exception {
+ fileSystem.getFile(null);
+ }
+
+ public final void emptyInputShouldThrowReturnEmptyPathFile() throws Exception {
+ File file = fileSystem.getFile("");
+ assertThat(file.getPath()).isEmpty();;
+ }
+
+ @Test
+ public final void protocolOnlyShouldReturnEmptyPathFile() throws Exception {
+ File file = fileSystem.getFile("file:");
+ assertThat(file.getPath()).isEmpty();
+ }
+
+ @Test
+ public final void protocolWithDoubleSlashesOnlyShouldReturnDir() throws Exception {
+ File file = fileSystem.getFile("file://");
+ assertThat(file).isDirectory();
+ }
+
+ public static class UrlsAsFileThrowingFileNotFoundExceptionProvider {
+ public static Object[] provides() {
+ return $(
+ $("bad://file"),
+ $("classpath:" + FAKE_FILE),
+ $("classpath:/" + FAKE_FILE),
+ $("http://localhost:$PORT$/"),
+ $("classpath:" + new File(ClassLoader.getSystemResource(EXISTING_CLASSPATH_FILE).getFile()).getAbsolutePath()),
+ $("classpath:java/lang/String.class")
+ );
+ }
+ }
+
+ @Test(expected = FileNotFoundException.class)
+ @Parameters(source = UrlsAsFileThrowingFileNotFoundExceptionProvider.class)
+ public final void urlAsFileThrowingFileNotFoundException(String url) throws Exception {
+ url = replacePort(url);
+
+ fileSystem.getFile(url);
+ }
+
+ public static class NonExistingFilesProvider {
+ public static Object[] provides() {
+ return $(
+ $("file:///" + FAKE_FILE),
+ $("file:///" + FAKE_DIRECTORY + FAKE_FILE),
+ $("file://conf/" + FAKE_FILE),
+ $("file://var/" + FAKE_FILE)
+ );
+ }
+ }
+
+ @Test
+ @Parameters(source = NonExistingFilesProvider.class)
+ public void nonExistingFilesShouldNotExist(String url) throws Exception {
+ File f = fileSystem.getFile(url);
+ assertThat(f).doesNotExist();
+ }
+
+ public static class NonAvailableStreamsProvider {
+ public static Object[] provide() {
+ return $(
+ $("http://localhost:$PORT$/" + FAKE_FILE),
+ $("classpath:java/lang/" + FAKE_FILE + ".clas"),
+ $("classpath:" + FAKE_FILE)
+ );
+ }
+ }
+
+ @Test(expected = FileNotFoundException.class)
+ @Parameters(source = NonAvailableStreamsProvider.class)
+ public final void getFakeHttpResourceAsInputStreamShouldThrow(String url) throws Exception {
+ url = replacePort(url);
+
+ fileSystem.getResource(url);
+ }
+
+ public static class AvailableStreamsProvider {
+ public static Object[] provide() {
+ return $(
+ $("http://localhost:$PORT$/"),
+ $("classpath:java/lang/String.class"),
+ $("classpath:" + EXISTING_CLASSPATH_FILE),
+ $("classpath:" + EXISTING_CLASSPATH_FILE_WITH_SPACES),
+ $("classpath:/" + EXISTING_CLASSPATH_FILE),
+ $("classpath:/" + EXISTING_CLASSPATH_FILE_WITH_SPACES)
+ );
+ }
+ }
+
+ @Test
+ @Parameters(source = AvailableStreamsProvider.class)
+ public final void availableInputStreamShouldReturnANonEmptyStream(String url) throws Exception {
+ url = replacePort(url);
+ InputStream inputStream = fileSystem.getResource(url);
+ try {
+ assertThat(IOUtils.toString(inputStream).length()).isGreaterThan(0);
+ } finally {
+ IOUtils.closeQuietly(inputStream);
+ }
+ }
+
+ private String replacePort(String url) {
+ return url.replace("$PORT$", String.valueOf(httpServer.getAddress().getPort()));
+ }
+
+ public static class FileToCreateProvider {
+ public static Object[] provide() {
+ return $(
+ $("fileSystemTest", ".txt"),
+ $("file System Test", ".txt")
+ );
+ }
+ }
+
+ @Test
+ @Parameters(source = FileToCreateProvider.class)
+ public final void createdFilesShouldExist(String name, String extension) throws Exception {
+ File temp = createTempFile(name, extension);
+ try {
+ File expected = fileSystem.getFile("file:" + temp.getAbsolutePath());
+ assertThat(expected).exists();
+ } finally {
+ temp.delete();
+ }
+ }
+
+ @Test
+ @Parameters(source = FileToCreateProvider.class)
+ public final void createdFilesShouldExistWhenAccessedWithTwoSlashes(String name, String extension) throws Exception {
+ File temp = createTempFile(name, extension);
+ try {
+ File expected = fileSystem.getFile("file://" + temp.getAbsolutePath());
+ assertThat(expected).exists();
+ } finally {
+ temp.delete();
+ }
+ }
+
+ @Test
+ @Parameters(source = FileToCreateProvider.class)
+ public final void createdFilesAsInputStreamShouldBeAvailable(String name, String extension) throws Exception {
+ File temp = createTempFile(name, extension);
+ InputStream inputStream = null;
+ try {
+ inputStream = fileSystem.getResource("file:" + temp.getAbsolutePath());
+ assertThat(IOUtils.toString(inputStream)).isEqualTo("content");
+ } finally {
+ IOUtils.closeQuietly(inputStream);
+ temp.delete();
+ }
+ }
+
+ @Test
+ @Parameters(source = FileToCreateProvider.class)
+ public final void createdFilesAsInputStreamShouldBeAvailableWhenAccessedWithTwoSlashes(String name, String extension) throws Exception {
+ File temp = createTempFile(name, extension);
+ InputStream inputStream = null;
+ try {
+ inputStream = fileSystem.getResource("file://" + temp.getAbsolutePath());
+ assertThat(IOUtils.toString(inputStream)).isEqualTo("content");
+ } finally {
+ IOUtils.closeQuietly(inputStream);
+ temp.delete();
+ }
+ }
+
+ private File createTempFile(String name, String extension) throws IOException {
+ File temp = File.createTempFile(name, extension);
+ FileUtils.write(temp, "content");
+ return temp;
+ }
+
+ @Test
+ public void testConfProtocolSouldReturnConfFile() throws Exception {
+ File file = fileSystem.getFile("file://conf/conf.txt");
+
+ assertThat(file).hasContent("confcontent");
+ }
+
+ @Test
+ public void testVarProtocolSouldReturnVarFile() throws Exception {
+ File file = fileSystem.getFile("file://var/var.txt");
+
+ assertThat(file).hasContent("varcontent");
+ }
+
+}
Added: james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/src/test/resources/class%20path%20Test.txt?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt (added)
+++ james/project/trunk/server/container/filesystem-api/src/test/resources/class path Test.txt Tue Oct 20 15:48:01 2015
@@ -0,0 +1 @@
+Non empty
Added: james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt (added)
+++ james/project/trunk/server/container/filesystem-api/src/test/resources/classpathTest.txt Tue Oct 20 15:48:01 2015
@@ -0,0 +1 @@
+Non empty
Modified: james/project/trunk/server/container/spring/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/pom.xml?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/container/spring/pom.xml (original)
+++ james/project/trunk/server/container/spring/pom.xml Tue Oct 20 15:48:01 2015
@@ -45,6 +45,12 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-filesystem-api</artifactId>
+ <scope>test</scope>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-mailetcontainer-api</artifactId>
</dependency>
<dependency>
@@ -156,6 +162,16 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_2.0_spec</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>pl.pragmatists</groupId>
+ <artifactId>JUnitParams</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
Modified: james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java (original)
+++ james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java Tue Oct 20 15:48:01 2015
@@ -45,7 +45,7 @@ public class JamesServerApplicationConte
*/
public Resource getResource(String fileURL) {
// delegate the loading to the resourceloader
- Resource r = resourceLoader.getResource(fileURL);
+ Resource r = getResourceLoader().getResource(fileURL);
if (r == null) {
r = super.getResource(fileURL);
}
@@ -57,7 +57,7 @@ public class JamesServerApplicationConte
* org.apache.james.container.spring.resource.JamesResourceLoader#getAbsoluteDirectory()
*/
public String getAbsoluteDirectory() {
- return resourceLoader.getAbsoluteDirectory();
+ return getResourceLoader().getAbsoluteDirectory();
}
/**
@@ -65,7 +65,7 @@ public class JamesServerApplicationConte
* org.apache.james.container.spring.resource.JamesResourceLoader#getConfDirectory()
*/
public String getConfDirectory() {
- return resourceLoader.getConfDirectory();
+ return getResourceLoader().getConfDirectory();
}
/**
@@ -73,7 +73,7 @@ public class JamesServerApplicationConte
* org.apache.james.container.spring.resource.JamesResourceLoader#getVarDirectory()
*/
public String getVarDirectory() {
- return resourceLoader.getVarDirectory();
+ return getResourceLoader().getVarDirectory();
}
/**
@@ -81,17 +81,17 @@ public class JamesServerApplicationConte
* org.apache.james.container.spring.resource.JamesResourceLoader#getRootDirectory()
*/
public String getRootDirectory() {
- return resourceLoader.getRootDirectory();
+ return getResourceLoader().getRootDirectory();
}
/**
* Protected accessor for the resource loader.
*/
- protected static JamesServerResourceLoader getResourceLoader() {
+ protected JamesServerResourceLoader getResourceLoader() {
return resourceLoader;
}
- protected static final class JamesServerResourceLoader extends AbstractJamesResourceLoader {
+ protected static class JamesServerResourceLoader extends AbstractJamesResourceLoader {
/**
* @see org.apache.james.container.spring.resource.JamesResourceLoader#getAbsoluteDirectory()
Added: james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java (added)
+++ james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/context/TestApplicationContextProvider.java Tue Oct 20 15:48:01 2015
@@ -0,0 +1,47 @@
+/****************************************************************
+ * 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.context;
+
+public class TestApplicationContextProvider extends JamesServerApplicationContext {
+ private String configurationRootDirectory;
+
+ public TestApplicationContextProvider(String configurationRootDirectory, String[] configs) {
+ super(configs);
+ this.configurationRootDirectory = configurationRootDirectory;
+ }
+
+ @Override
+ public JamesServerResourceLoader getResourceLoader() {
+ return new TestDirectoryProvider(configurationRootDirectory);
+ }
+
+ private static class TestDirectoryProvider extends JamesServerResourceLoader {
+ private String configurationRootDirectory;
+
+ public TestDirectoryProvider(String configurationRootDirectory) {
+ this.configurationRootDirectory = configurationRootDirectory;
+ }
+
+ @Override
+ public String getRootDirectory() {
+ return configurationRootDirectory;
+ }
+ }
+
+}
Added: james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java?rev=1709626&view=auto
==============================================================================
--- james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java (added)
+++ james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java Tue Oct 20 15:48:01 2015
@@ -0,0 +1,34 @@
+/****************************************************************
+ * 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.filesystem;
+
+import org.apache.james.container.spring.context.TestApplicationContextProvider;
+import org.apache.james.filesystem.api.AbstractFileSystemTest;
+import org.apache.james.filesystem.api.FileSystem;
+
+public class FileSystemImplTest extends AbstractFileSystemTest {
+
+ @Override
+ protected FileSystem buildFileSystem(String configurationRootDirectory) {
+ FileSystemImpl fs = new FileSystemImpl();
+ fs.setApplicationContext(new TestApplicationContextProvider(configurationRootDirectory, null));
+ return fs;
+ }
+
+}
Modified: james/project/trunk/server/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/pom.xml?rev=1709626&r1=1709625&r2=1709626&view=diff
==============================================================================
--- james/project/trunk/server/pom.xml (original)
+++ james/project/trunk/server/pom.xml Tue Oct 20 15:48:01 2015
@@ -846,7 +846,11 @@
<version>1.7.1</version>
<scope>test</scope>
</dependency>
-
+ <dependency>
+ <groupId>pl.pragmatists</groupId>
+ <artifactId>JUnitParams</artifactId>
+ <version>1.0.4</version>
+ </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org