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 er...@apache.org on 2015/05/29 11:51:58 UTC
svn commit: r1682408 - in /james/server/trunk/container: filesystem-api/
filesystem-api/src/main/java/org/apache/james/filesystem/api/
filesystem-api/src/test/java/org/apache/james/filesystem/api/ spring/
spring/src/main/resources/META-INF/spring/
Author: eric
Date: Fri May 29 09:51:57 2015
New Revision: 1682408
URL: http://svn.apache.org/r1682408
Log:
Enable JSIEVE manager mailet, contributed by Benoit Tellier (JAMES-1579)
Modified:
james/server/trunk/container/filesystem-api/pom.xml
james/server/trunk/container/filesystem-api/src/main/java/org/apache/james/filesystem/api/SieveFileRepository.java
james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java
james/server/trunk/container/spring/pom.xml
james/server/trunk/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
Modified: james/server/trunk/container/filesystem-api/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/container/filesystem-api/pom.xml?rev=1682408&r1=1682407&r2=1682408&view=diff
==============================================================================
--- james/server/trunk/container/filesystem-api/pom.xml (original)
+++ james/server/trunk/container/filesystem-api/pom.xml Fri May 29 09:51:57 2015
@@ -73,23 +73,4 @@
</plugins>
</build>
- <profiles>
- <profile>
- <id>noTest</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skipTests>true</skipTests>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
</project>
Modified: james/server/trunk/container/filesystem-api/src/main/java/org/apache/james/filesystem/api/SieveFileRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container/filesystem-api/src/main/java/org/apache/james/filesystem/api/SieveFileRepository.java?rev=1682408&r1=1682407&r2=1682408&view=diff
==============================================================================
--- james/server/trunk/container/filesystem-api/src/main/java/org/apache/james/filesystem/api/SieveFileRepository.java (original)
+++ james/server/trunk/container/filesystem-api/src/main/java/org/apache/james/filesystem/api/SieveFileRepository.java Fri May 29 09:51:57 2015
@@ -64,6 +64,7 @@ public class SieveFileRepository impleme
private static final String FILE_NAME_ACTIVE = ".active";
private static final List<String> SYSTEM_FILES = Arrays.asList(FILE_NAME_QUOTA, FILE_NAME_ACTIVE);
private static final int MAX_BUFF_SIZE = 32768;
+ public static final String SIEVE_EXTENSION = ".sieve";
private FileSystem _fileSystem = null;
private final Object lock = new Object();
@@ -242,28 +243,19 @@ public class SieveFileRepository impleme
} catch (ScriptNotFoundException ex) {
// no op
}
- final File activeFile1 = activeFile;
for (final File file : files) {
if (!SYSTEM_FILES.contains(file.getName())) {
- summaries.add(new ScriptSummary() {
-
- public String getName() {
- return file.getName();
- }
-
- public boolean isActive() {
- boolean isActive = false;
- if (null != activeFile1) {
- isActive = 0 == activeFile1.compareTo(file);
- }
- return isActive;
- }
- });
+ summaries.add(new ScriptSummary(file.getName(), isActive(file, activeFile)));
}
}
return summaries;
}
+ private boolean isActive(File file, File activeFile) {
+ return null != activeFile
+ && activeFile.equals(file);
+ }
+
@Override
public void putScript(final String user, final String name, final String content)
throws UserNotFoundException, StorageException, QuotaExceededException {
@@ -284,11 +276,10 @@ public class SieveFileRepository impleme
if (newFile.exists()) {
throw new DuplicateException("User: " + user + "Script: " + newName);
}
- boolean isActive = isActiveFile(user, oldFile);
try {
FileUtils.copyFile(oldFile, newFile);
- if (isActive) {
- setActiveFile(newFile, true);
+ if (isActiveFile(user, oldFile)) {
+ setActiveFile(newFile, user, true);
}
FileUtils.forceDelete(oldFile);
} catch (IOException ex) {
@@ -317,17 +308,17 @@ public class SieveFileRepository impleme
File oldActive = null;
try {
oldActive = getActiveFile(user);
- setActiveFile(oldActive, false);
+ setActiveFile(oldActive, user, false);
} catch (ScriptNotFoundException ex) {
// This is permissible
}
// Turn on the new active script if not an empty name
if ((null != name) && (!name.trim().isEmpty())) {
try {
- setActiveFile(getScriptFile(user, name), true);
+ setActiveFile(getScriptFile(user, name), user, true);
} catch (ScriptNotFoundException ex) {
if (null != oldActive) {
- setActiveFile(oldActive, true);
+ setActiveFile(oldActive, user, true);
}
throw ex;
}
@@ -368,23 +359,29 @@ public class SieveFileRepository impleme
}
protected boolean isActiveFile(String user, File file) throws UserNotFoundException {
- boolean isActive = false;
try {
- isActive = 0 == getActiveFile(user).compareTo(file);
+ return 0 == getActiveFile(user).compareTo(file);
} catch (ScriptNotFoundException ex) {
- // no op;
+ return false;
}
- return isActive;
}
- protected void setActiveFile(File activeFile, boolean isActive) throws StorageException {
- File file = new File(activeFile.getParentFile(), FILE_NAME_ACTIVE);
+ protected void setActiveFile(File scriptToBeActivated, String userName, boolean isActive) throws StorageException {
+ File personalScriptDirectory = scriptToBeActivated.getParentFile();
+ File sieveBaseDirectory = personalScriptDirectory.getParentFile();
+ File activeScriptPersistenceFile = new File(personalScriptDirectory, FILE_NAME_ACTIVE);
+ File activeScriptCopy = new File(sieveBaseDirectory, userName + SIEVE_EXTENSION);
if (isActive) {
- String content = activeFile.getName();
- toFile(file, content);
+ toFile(activeScriptPersistenceFile, scriptToBeActivated.getName());
+ try {
+ FileUtils.copyFile(scriptToBeActivated, activeScriptCopy);
+ } catch (IOException exception) {
+ throw new StorageException("Can not copy active script to make it accessible for sieve utils", exception);
+ }
} else {
try {
- FileUtils.forceDelete(file);
+ FileUtils.forceDelete(activeScriptPersistenceFile);
+ FileUtils.forceDelete(activeScriptCopy);
} catch (IOException ex) {
throw new StorageException(ex);
}
@@ -392,7 +389,7 @@ public class SieveFileRepository impleme
}
protected File getScriptFile(String user, String name) throws UserNotFoundException,
- ScriptNotFoundException {
+ ScriptNotFoundException {
File file = new File(getUserDirectory(user), name);
if (!file.exists()) {
throw new ScriptNotFoundException("User: " + user + "Script: " + name);
Modified: james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java?rev=1682408&r1=1682407&r2=1682408&view=diff
==============================================================================
--- james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java (original)
+++ james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java Fri May 29 09:51:57 2015
@@ -262,10 +262,8 @@ public class SieveFileRepositoryTestCase
repo.putScript(user, scriptName1, content1);
summaries = repo.listScripts(user);
assertEquals(2, summaries.size());
- assertEquals(scriptName, summaries.get(0).getName());
- assertTrue(summaries.get(0).isActive());
- assertEquals(scriptName1, summaries.get(1).getName());
- assertTrue(!summaries.get(1).isActive());
+ assertTrue(summaries.contains(new ScriptSummary(scriptName, true)));
+ assertTrue(summaries.contains(new ScriptSummary(scriptName1, false)));
}
/**
Modified: james/server/trunk/container/spring/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/container/spring/pom.xml?rev=1682408&r1=1682407&r2=1682408&view=diff
==============================================================================
--- james/server/trunk/container/spring/pom.xml (original)
+++ james/server/trunk/container/spring/pom.xml Fri May 29 09:51:57 2015
@@ -73,6 +73,16 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-jsieve-manager-mailet</artifactId>
+ <version>0.6-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-jsieve-manager-jsieve</artifactId>
+ <version>0.6-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-mailet-api</artifactId>
</dependency>
<dependency>
Modified: james/server/trunk/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/container/spring/src/main/resources/META-INF/spring/loaders-context.xml?rev=1682408&r1=1682407&r2=1682408&view=diff
==============================================================================
--- james/server/trunk/container/spring/src/main/resources/META-INF/spring/loaders-context.xml (original)
+++ james/server/trunk/container/spring/src/main/resources/META-INF/spring/loaders-context.xml Fri May 29 09:51:57 2015
@@ -123,4 +123,14 @@
<!--<bean id="filesystem" class="org.apache.james.container.spring.filesystem.FileSystemImpl" autowire="byName"/>-->
<bean id="filesystem" class="org.apache.james.container.spring.filesystem.ResourceLoaderFileSystem"/>
+ <bean id="sieverepository" class="org.apache.james.filesystem.api.SieveFileRepository">
+ <constructor-arg index="0" ref="filesystem"/>
+ </bean>
+
+ <bean id="sieveparser" class="org.apache.james.managesieve.jsieve.Parser">
+ <property name="configurationManager" ref="configurationmanager"/>
+ </bean>
+
+ <bean id="configurationmanager" class="org.apache.jsieve.ConfigurationManager"/>
+
</beans>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org