Author: btellier Date: Thu Dec 17 14:53:14 2015 New Revision: 1720567 URL: http://svn.apache.org/viewvc?rev=1720567&view=rev Log: JAMES-1618 Capabilities should not be recalculated per requests
Modified: james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java 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=1720567&r1=1720566&r2=1720567&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 14:53:14 2015 @@ -21,6 +21,7 @@ package org.apache.james.managesieve.core; import com.google.common.base.Throwables; +import com.google.common.collect.Maps; import org.apache.commons.io.IOUtils; import org.apache.james.managesieve.api.AuthenticationRequiredException; import org.apache.james.managesieve.api.ManageSieveRuntimeException; @@ -53,29 +54,20 @@ public class CoreProcessor implements Co private final SieveRepository sieveRepository; private final UsersRepository usersRepository; private final SieveParser parser; + private final Map<Capabilities, String> capabilitiesBase; public CoreProcessor(SieveRepository repository, UsersRepository usersRepository, SieveParser parser) { this.sieveRepository = repository; this.usersRepository = usersRepository; this.parser = parser; + this.capabilitiesBase = precomputeCapabilitiesBase(parser); } public Map<Capabilities, String> capability(Session session) { - Map<Capabilities, String> capabilities = new HashMap<Capabilities, String>(); - capabilities.put(Capabilities.IMPLEMENTATION, IMPLEMENTATION_DESCRIPTION); - capabilities.put(Capabilities.VERSION, MANAGE_SIEVE_VERSION); - StringBuilder builder = new StringBuilder(); - for (String extension : parser.getExtensions()) { - builder.append(extension).append(' '); - } - String extensions = builder.toString().trim(); - if (!extensions.isEmpty()) { - capabilities.put(Capabilities.SIEVE, extensions); - } + Map<Capabilities, String> capabilities = Maps.newHashMap(capabilitiesBase); if (session.isAuthenticated()) { capabilities.put(Capabilities.OWNER, session.getUser()); } - capabilities.put(Capabilities.GETACTIVE, null); return capabilities; } @@ -188,4 +180,24 @@ public class CoreProcessor implements Co } } + + private String buildExtensions(SieveParser parser) { + StringBuilder builder = new StringBuilder(); + for (String extension : parser.getExtensions()) { + builder.append(extension).append(' '); + } + return builder.toString().trim(); + } + + private Map<Capabilities, String> precomputeCapabilitiesBase(SieveParser parser) { + String extensions = buildExtensions(parser); + Map<Capabilities, String> capabilitiesBase = new HashMap<Capabilities, String>(); + capabilitiesBase.put(Capabilities.IMPLEMENTATION, IMPLEMENTATION_DESCRIPTION); + capabilitiesBase.put(Capabilities.VERSION, MANAGE_SIEVE_VERSION); + if (!extensions.isEmpty()) { + capabilitiesBase.put(Capabilities.SIEVE, extensions); + } + capabilitiesBase.put(Capabilities.GETACTIVE, null); + return capabilitiesBase; + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org