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: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org