Author: btellier
Date: Thu Dec 17 15:11:07 2015
New Revision: 1720597
URL: http://svn.apache.org/viewvc?rev=1720597&view=rev
Log:
JAMES-1618 Adding spring wiring and configuration files for ManageSieve
capability
Added:
james/project/trunk/dockerfiles/run/guice/destination/conf/managesieveserver.xml
james/project/trunk/dockerfiles/run/spring/destination/conf/managesieveserver.xml
james/project/trunk/server/app/src/main/resources/managesieveserver-template.xml
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
james/project/trunk/server/container/cassandra-guice/src/test/resources/managesieveserver.xml
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerMBean.java
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/spring/
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/spring/managesieveserver-context.xml
Modified:
james/project/trunk/protocols/managesieve/pom.xml
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
james/project/trunk/protocols/pom.xml
james/project/trunk/server/app/pom.xml
james/project/trunk/server/container/cassandra-guice/pom.xml
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
james/project/trunk/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
james/project/trunk/server/pom.xml
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
Added:
james/project/trunk/dockerfiles/run/guice/destination/conf/managesieveserver.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/dockerfiles/run/guice/destination/conf/managesieveserver.xml?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/dockerfiles/run/guice/destination/conf/managesieveserver.xml
(added)
+++
james/project/trunk/dockerfiles/run/guice/destination/conf/managesieveserver.xml
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,65 @@
+<?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.
+ -->
+
+<!--
+ This template file can be used as example for James Server configuration
+ DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+-->
+
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+
+<managesieveservers>
+
+ <managesieveserver enabled="false">
+
+ <jmxName>managesieveserver</jmxName>
+
+ <bind>0.0.0.0:4190</bind>
+
+ <connectionBacklog>200</connectionBacklog>
+
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore
/path/to/james/conf/keystore
+ -->
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</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 - You could use IbmX509 with IBM Java
runtime. -->
+ <algorithm>SunX509</algorithm>
+ </tls>
+
+ <!-- connection timeout in secconds -->
+ <connectiontimeout>360</connectiontimeout>
+
+ <!-- Set the maximum simultaneous incoming connections for this
service -->
+ <connectionLimit>0</connectionLimit>
+
+ <!-- Set the maximum simultaneous incoming connections per IP for this
service -->
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
+ </managesieveserver>
+
+</managesieveservers>
+
+
Added:
james/project/trunk/dockerfiles/run/spring/destination/conf/managesieveserver.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/dockerfiles/run/spring/destination/conf/managesieveserver.xml?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/dockerfiles/run/spring/destination/conf/managesieveserver.xml
(added)
+++
james/project/trunk/dockerfiles/run/spring/destination/conf/managesieveserver.xml
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,65 @@
+<?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.
+ -->
+
+<!--
+ This template file can be used as example for James Server configuration
+ DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+-->
+
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+
+<managesieveservers>
+
+ <managesieveserver enabled="true">
+
+ <jmxName>managesieveserver</jmxName>
+
+ <bind>0.0.0.0:4190</bind>
+
+ <connectionBacklog>200</connectionBacklog>
+
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore
/path/to/james/conf/keystore
+ -->
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</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 - You could use IbmX509 with IBM Java
runtime. -->
+ <algorithm>SunX509</algorithm>
+ </tls>
+
+ <!-- connection timeout in secconds -->
+ <connectiontimeout>360</connectiontimeout>
+
+ <!-- Set the maximum simultaneous incoming connections for this
service -->
+ <connectionLimit>0</connectionLimit>
+
+ <!-- Set the maximum simultaneous incoming connections per IP for this
service -->
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
+ </managesieveserver>
+
+</managesieveservers>
+
+
Modified: james/project/trunk/protocols/managesieve/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/pom.xml?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
--- james/project/trunk/protocols/managesieve/pom.xml (original)
+++ james/project/trunk/protocols/managesieve/pom.xml Thu Dec 17 15:11:07 2015
@@ -49,6 +49,10 @@
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
Modified:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
(original)
+++
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
Thu Dec 17 15:11:07 2015
@@ -51,6 +51,7 @@ import org.apache.james.sieverepository.
import org.apache.james.user.api.UsersRepository;
import java.io.IOException;
+import javax.inject.Inject;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -70,6 +71,7 @@ public class CoreProcessor implements Co
private final Map<Capabilities, String> capabilitiesBase;
private final Map<SupportedMechanism, AuthenticationProcessor>
authenticationProcessorMap;
+ @Inject
public CoreProcessor(SieveRepository repository, UsersRepository
usersRepository, SieveParser parser) {
this.sieveRepository = repository;
this.parser = parser;
Modified:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
(original)
+++
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
Thu Dec 17 15:11:07 2015
@@ -36,7 +36,11 @@ public class Parser implements SievePars
private static final List<String> EMPTY_WARNINGS = new
ArrayList<String>(0);
- private SieveFactory sieveFactory = null;
+ private SieveFactory sieveFactory;
+
+ public Parser() throws Exception {
+ setConfigurationManager(new ConfigurationManager());
+ }
public Parser(ConfigurationManager manager) {
setConfigurationManager(manager);
Modified:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
(original)
+++
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
Thu Dec 17 15:11:07 2015
@@ -29,6 +29,7 @@ import org.apache.james.managesieve.api.
import org.apache.james.managesieve.api.commands.CoreCommands;
import org.apache.james.managesieve.util.ParserUtils;
+import javax.inject.Inject;
import java.util.Iterator;
/**
@@ -38,6 +39,7 @@ public class ArgumentParser {
private final CoreCommands core;
+ @Inject
public ArgumentParser(CoreCommands core) {
this.core = core;
}
Modified:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
(original)
+++
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
Thu Dec 17 15:11:07 2015
@@ -25,6 +25,8 @@ import org.apache.james.managesieve.api.
import org.apache.james.managesieve.api.SessionTerminatedException;
import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
+import javax.inject.Inject;
+
public class ManageSieveProcessor {
public static final String AUTHENTICATE = "AUTHENTICATE";
@@ -45,6 +47,7 @@ public class ManageSieveProcessor {
private final ArgumentParser argumentParser;
+ @Inject
public ManageSieveProcessor(ArgumentParser argumentParser) {
this.argumentParser = argumentParser;
}
Modified: james/project/trunk/protocols/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/pom.xml?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
--- james/project/trunk/protocols/pom.xml (original)
+++ james/project/trunk/protocols/pom.xml Thu Dec 17 15:11:07 2015
@@ -162,6 +162,11 @@
<version>${netty.version}</version>
</dependency>
<dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-james-mailbox-api</artifactId>
<version>${mailbox.version}</version>
Modified: james/project/trunk/server/app/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/app/pom.xml?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
--- james/project/trunk/server/app/pom.xml (original)
+++ james/project/trunk/server/app/pom.xml Thu Dec 17 15:11:07 2015
@@ -314,6 +314,11 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-protocols-managesieve</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-protocols-pop3</artifactId>
<scope>runtime</scope>
<exclusions>
Added:
james/project/trunk/server/app/src/main/resources/managesieveserver-template.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/app/src/main/resources/managesieveserver-template.xml?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/server/app/src/main/resources/managesieveserver-template.xml
(added)
+++
james/project/trunk/server/app/src/main/resources/managesieveserver-template.xml
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,95 @@
+<?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.
+ -->
+
+<!--
+ This template file can be used as example for James Server configuration
+ DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+-->
+
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+
+<managesieveservers>
+
+ <managesieveserver enabled="false">
+
+ <jmxName>managesieveserver</jmxName>
+
+ <!-- Configure this to bind to a specific inetaddress -->
+ <!-- Please NOTE: you should add this IP also to your
RemoteAddrNotInNetwork -->
+ <!-- in order to avoid relay check for locallly generated bounces -->
+ <!--
+ Port 4190 is the well-known/IANA registered port for ManageSieve.
+ -->
+ <bind>0.0.0.0:4190</bind>
+
+ <connectionBacklog>200</connectionBacklog>
+
+ <!-- Set to true to support STARTTLS or TLS for the Socket.
+ To use this you need to copy sunjce_provider.jar to /path/james/lib
directory.
+ -->
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore
/path/to/james/conf/keystore
+ -->
+ <keystore>file://conf/keystore</keystore>
+ <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 - You could use IbmX509 with IBM Java
runtime. -->
+ <algorithm>SunX509</algorithm>
+ </tls>
+
+ <!-- connection timeout in secconds -->
+ <connectiontimeout>360</connectiontimeout>
+
+ <!-- Set the maximum simultaneous incoming connections for this
service -->
+ <connectionLimit>0</connectionLimit>
+
+ <!-- Set the maximum simultaneous incoming connections per IP for this
service -->
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+
+ <!-- Uncomment this if you want to verify sender addresses, ensuring
that -->
+ <!-- the sender address matches the user who has authenticated. -->
+ <!-- This prevents a user of your mail server from acting as someone
else -->
+ <!-- If unspecified, default value is true -->
+ <!--
+ <verifyIdentity>true</verifyIdentity>
+ -->
+
+ <!-- This sets the maximum allowed message size (in kilobytes) for
this -->
+ <!-- ManageSieve service. If unspecified, the value defaults to 0,
which means no limit. -->
+ <maxmessagesize>0</maxmessagesize>
+
+ <!-- This sets wether to enforce the use of HELO/EHLO salutation
before a -->
+ <!-- MAIL command is accepted. If unspecified, the value defaults to
true -->
+ <!--
+ <heloEhloEnforcement>true</heloEhloEnforcement>
+ -->
+
+ <!-- WARNING: This is Non-RFC compliant (default value: true) -->
+ <!-- See: http://wiki.apache.org/james/StandardsComplianceStatement -->
+ <!-- TODO: CHANGE TO OFFICIAL URL LATER -->
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
+ </managesieveserver>
+
+</managesieveservers>
+
+
Modified: james/project/trunk/server/container/cassandra-guice/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/pom.xml?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/pom.xml (original)
+++ james/project/trunk/server/container/cassandra-guice/pom.xml Thu Dec 17
15:11:07 2015
@@ -323,6 +323,10 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>james-server-protocols-managesieve</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>james-server-protocols-pop3</artifactId>
</dependency>
<dependency>
Modified:
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
(original)
+++
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
Thu Dec 17 15:11:07 2015
@@ -29,6 +29,7 @@ import org.apache.james.modules.mailbox.
import org.apache.james.modules.protocols.IMAPServerModule;
import org.apache.james.modules.protocols.JMAPServerModule;
import org.apache.james.modules.protocols.LMTPServerModule;
+import org.apache.james.modules.protocols.ManageSieveServerModule;
import org.apache.james.modules.protocols.POP3ServerModule;
import org.apache.james.modules.protocols.ProtocolHandlerModule;
import org.apache.james.modules.protocols.SMTPServerModule;
@@ -62,6 +63,7 @@ public class CassandraJamesServerMain {
new POP3ServerModule(),
new SMTPServerModule(),
new LMTPServerModule(),
+ new ManageSieveServerModule(),
new ActiveMQQueueModule(),
new SieveModule(),
new MailStoreRepositoryModule(),
Added:
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
(added)
+++
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,62 @@
+/****************************************************************
+ * 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.modules.protocols;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import org.apache.james.managesieve.api.commands.CoreCommands;
+import org.apache.james.managesieve.core.CoreProcessor;
+import org.apache.james.managesieveserver.netty.ManageSieveServerFactory;
+import org.apache.james.utils.ConfigurationPerformer;
+import org.apache.james.utils.ConfigurationProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ManageSieveServerModule extends AbstractModule {
+
+ private static final Logger LOGGER =
LoggerFactory.getLogger(ManageSieveServerModule.class);
+
+ @Override
+ protected void configure() {
+ bind(CoreCommands.class).to(CoreProcessor.class);
+ Multibinder.newSetBinder(binder(),
ConfigurationPerformer.class).addBinding().to(ManageSieveModuleConfigurationPerformer.class);
+ }
+
+ @Singleton
+ public static class ManageSieveModuleConfigurationPerformer implements
ConfigurationPerformer {
+
+ private final ConfigurationProvider configurationProvider;
+ private final ManageSieveServerFactory manageSieveServerFactory;
+
+ @Inject
+ public ManageSieveModuleConfigurationPerformer(ConfigurationProvider
configurationProvider, ManageSieveServerFactory manageSieveServerFactory) {
+ this.configurationProvider = configurationProvider;
+ this.manageSieveServerFactory = manageSieveServerFactory;
+ }
+
+ @Override
+ public void initModule() throws Exception {
+ manageSieveServerFactory.setLog(LOGGER);
+
manageSieveServerFactory.configure(configurationProvider.getConfiguration("managesieveserver"));
+ manageSieveServerFactory.init();
+ }
+ }
+}
\ No newline at end of file
Added:
james/project/trunk/server/container/cassandra-guice/src/test/resources/managesieveserver.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/resources/managesieveserver.xml?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/server/container/cassandra-guice/src/test/resources/managesieveserver.xml
(added)
+++
james/project/trunk/server/container/cassandra-guice/src/test/resources/managesieveserver.xml
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,65 @@
+<?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.
+ -->
+
+<!--
+ This template file can be used as example for James Server configuration
+ DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+-->
+
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+
+<managesieveservers>
+
+ <managesieveserver enabled="true">
+
+ <jmxName>managesieveserver</jmxName>
+
+ <bind>0.0.0.0:4190</bind>
+
+ <connectionBacklog>200</connectionBacklog>
+
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore
/path/to/james/conf/keystore
+ -->
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</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 - You could use IbmX509 with IBM Java
runtime. -->
+ <algorithm>SunX509</algorithm>
+ </tls>
+
+ <!-- connection timeout in secconds -->
+ <connectiontimeout>360</connectiontimeout>
+
+ <!-- Set the maximum simultaneous incoming connections for this
service -->
+ <connectionLimit>0</connectionLimit>
+
+ <!-- Set the maximum simultaneous incoming connections per IP for this
service -->
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
+ </managesieveserver>
+
+</managesieveservers>
+
+
Modified:
james/project/trunk/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
(original)
+++
james/project/trunk/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
Thu Dec 17 15:11:07 2015
@@ -104,6 +104,10 @@
<!-- IMAP4 Server -->
<import resource="classpath:META-INF/spring/imapserver-context.xml"/>
+ <!-- IMAP4 Server -->
+ <import
resource="classpath:META-INF/spring/managesieveserver-context.xml"/>
+
+
<!--
===========================================================================
Indexer
Modified: james/project/trunk/server/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/pom.xml?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
--- james/project/trunk/server/pom.xml (original)
+++ james/project/trunk/server/pom.xml Thu Dec 17 15:11:07 2015
@@ -652,6 +652,11 @@
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>james-server-protocols-managesieve</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-protocols-smtp</artifactId>
<version>${project.version}</version>
Modified:
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
(original)
+++
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
Thu Dec 17 15:11:07 2015
@@ -44,7 +44,7 @@ import javax.net.ssl.SSLEngine;
import static org.jboss.netty.channel.Channels.pipeline;
-public class ManageSieveServer extends AbstractConfigurableAsyncServer {
+public class ManageSieveServer extends AbstractConfigurableAsyncServer
implements ManageSieveServerMBean {
private static final Logger LOGGER =
LoggerFactory.getLogger(ManageSieveServer.class);
Modified:
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java?rev=1720597&r1=1720596&r2=1720597&view=diff
==============================================================================
---
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
(original)
+++
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
Thu Dec 17 15:11:07 2015
@@ -21,6 +21,7 @@ package org.apache.james.managesieveserv
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.managesieve.api.SieveParser;
import org.apache.james.managesieve.core.CoreProcessor;
import org.apache.james.managesieve.jsieve.Parser;
import org.apache.james.managesieve.transcode.ArgumentParser;
@@ -31,6 +32,7 @@ import org.apache.james.sieverepository.
import org.apache.james.user.api.UsersRepository;
import org.slf4j.Logger;
+import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
@@ -39,15 +41,34 @@ public class ManageSieveServerFactory ex
private FileSystem fileSystem;
private ManageSieveProcessor manageSieveProcessor;
+ private SieveRepository sieveRepository;
+ private UsersRepository usersRepository;
+ private Parser sieveParser;
@Inject
- public void setManageSieveProcessor(ManageSieveProcessor
manageSieveProcessor) {
- this.manageSieveProcessor = manageSieveProcessor;
+ public void setFileSystem(FileSystem fileSystem) {
+ this.fileSystem = fileSystem;
}
@Inject
- public void setFileSystem(FileSystem fileSystem) {
- this.fileSystem = fileSystem;
+ public void setSieveRepository(SieveRepository sieveRepository) {
+ this.sieveRepository = sieveRepository;
+ }
+
+ @Inject
+ public void setUsersRepository(UsersRepository usersRepository) {
+ this.usersRepository = usersRepository;
+ }
+
+ @Inject
+ public void setParser(Parser sieveParser) {
+ this.sieveParser = sieveParser;
+ }
+
+ @PostConstruct
+ public void init() throws Exception {
+ manageSieveProcessor = new ManageSieveProcessor(new ArgumentParser(new
CoreProcessor(sieveRepository, usersRepository, sieveParser)));
+ super.init();
}
@Override
Added:
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerMBean.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerMBean.java?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerMBean.java
(added)
+++
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerMBean.java
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,25 @@
+/****************************************************************
+ * 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.managesieveserver.netty;
+
+import org.apache.james.protocols.lib.jmx.ServerMBean;
+
+public interface ManageSieveServerMBean extends ServerMBean {
+}
Added:
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/spring/managesieveserver-context.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/spring/managesieveserver-context.xml?rev=1720597&view=auto
==============================================================================
---
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/spring/managesieveserver-context.xml
(added)
+++
james/project/trunk/server/protocols/protocols-managesieve/src/main/resources/META-INF/spring/managesieveserver-context.xml
Thu Dec 17 15:11:07 2015
@@ -0,0 +1,29 @@
+<?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">
+
+ <bean id="managesieveserver"
class="org.apache.james.managesieveserver.netty.ManageSieveServerFactory">
+ <property name="fileSystem" ref="filesystem"/>
+ <property name="sieveRepository" ref="sieverepository"/>
+ <property name="usersRepository" ref="usersrepository"/>
+ <property name="parser" ref="sieveparser"/>
+ </bean>
+
+</beans>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]