Author: btellier
Date: Thu Dec 17 15:08:38 2015
New Revision: 1720591
URL: http://svn.apache.org/viewvc?rev=1720591&view=rev
Log:
JAMES-1618 Capabilities should be advertised upon TCP connection
Added:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/CapabilityAdvertiser.java
Modified:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
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/transcode/ArgumentParser.java
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveChannelUpstreamHandler.java
Added:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/CapabilityAdvertiser.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/CapabilityAdvertiser.java?rev=1720591&view=auto
==============================================================================
---
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/CapabilityAdvertiser.java
(added)
+++
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/CapabilityAdvertiser.java
Thu Dec 17 15:08:38 2015
@@ -0,0 +1,27 @@
+/*
+ * 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.managesieve.api;
+
+public interface CapabilityAdvertiser {
+
+ String getAdvertisedCapabilities();
+
+}
Modified:
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java?rev=1720591&r1=1720590&r2=1720591&view=diff
==============================================================================
---
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
(original)
+++
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
Thu Dec 17 15:08:38 2015
@@ -20,12 +20,15 @@
package org.apache.james.managesieve.api.commands;
+import org.apache.james.managesieve.api.CapabilityAdvertiser;
+
/**
* Core RFC 5804 Commands common to all transports
*
* @see <a href=http://tools.ietf.org/html/rfc5804#section-2>RFC 5804
Commands</a>
*/
public interface CoreCommands extends Capability, CheckScript, DeleteScript,
GetScript, HaveSpace,
- ListScripts, PutScript, RenameScript, SetActive, GetActive, Noop,
Unauthenticate, Logout, Authenticate, StartTLS {
+ ListScripts, PutScript, RenameScript, SetActive, GetActive, Noop,
Unauthenticate, Logout, Authenticate, StartTLS,
+ CapabilityAdvertiser {
}
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=1720591&r1=1720590&r2=1720591&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:08:38 2015
@@ -76,13 +76,22 @@ public class CoreProcessor implements Co
}
@Override
+ public String getAdvertisedCapabilities() {
+ return convertCapabilityMapToString(capabilitiesBase) + "\r\n";
+ }
+
+ @Override
public String capability(Session session) {
+ return convertCapabilityMapToString(computeCapabilityMap(session)) +
"\r\nOK";
+ }
+
+ private String convertCapabilityMapToString(Map<Capabilities, String>
capabilitiesStringMap) {
return Joiner.on("\r\n").join(
- Iterables.transform(computeCapabilityMap(session).entrySet(), new
Function<Map.Entry<Capabilities,String>, String>() {
+ Iterables.transform(capabilitiesStringMap.entrySet(), new
Function<Map.Entry<Capabilities,String>, String>() {
public String apply(Map.Entry<Capabilities, String>
capabilitiesStringEntry) {
return
computeCapabilityEntryString(capabilitiesStringEntry);
}
- })) + "\r\nOK";
+ }));
}
private Map<Capabilities, String> computeCapabilityMap(Session session) {
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=1720591&r1=1720590&r2=1720591&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:08:38 2015
@@ -44,7 +44,11 @@ public class ArgumentParser {
public ArgumentParser(CoreCommands core) {
this.core = core;
}
-
+
+ public String getAdvertisedCapabilities() {
+ return core.getAdvertisedCapabilities();
+ }
+
public String capability(Session session, String args) {
if (!args.trim().isEmpty()) {
return "NO \"Too many arguments: " + args + "\"";
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=1720591&r1=1720590&r2=1720591&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:08:38 2015
@@ -118,4 +118,8 @@ public class ManageSieveProcessor {
return "NO unknown " + command + " command";
}
+ public String getAdvertisedCapabilities() {
+ return argumentParser.getAdvertisedCapabilities();
+ }
+
}
Modified:
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveChannelUpstreamHandler.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveChannelUpstreamHandler.java?rev=1720591&r1=1720590&r2=1720591&view=diff
==============================================================================
---
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveChannelUpstreamHandler.java
(original)
+++
james/project/trunk/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveChannelUpstreamHandler.java
Thu Dec 17 15:08:38 2015
@@ -113,6 +113,7 @@ public class ManageSieveChannelUpstreamH
attributes.set(ctx.getChannel(), session);
ctx.setAttachment(new
ChannelManageSieveResponseWriter(ctx.getChannel()));
super.channelBound(ctx, e);
+
((ChannelManageSieveResponseWriter)ctx.getAttachment()).write(manageSieveProcessor.getAdvertisedCapabilities());
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]