Author: matthieu Date: Tue Nov 3 16:49:19 2015 New Revision: 1712335 URL: http://svn.apache.org/viewvc?rev=1712335&view=rev Log: JAMES-1626 Implement a guice MailboxManagerResolver
Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceMailboxManagerResolver.java james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/MailboxManagerDefinition.java - copied, changed from r1712334, james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java Modified: james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceMailboxManagerResolver.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceMailboxManagerResolver.java?rev=1712335&view=auto ============================================================================== --- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceMailboxManagerResolver.java (added) +++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceMailboxManagerResolver.java Tue Nov 3 16:49:19 2015 @@ -0,0 +1,59 @@ +/**************************************************************** + * 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.utils; + +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +import org.apache.james.adapter.mailbox.MailboxManagerResolver; +import org.apache.james.adapter.mailbox.MailboxManagerResolverException; +import org.apache.james.mailbox.MailboxManager; + +import com.google.common.collect.ImmutableMap; +import com.google.inject.Inject; + +public class GuiceMailboxManagerResolver implements MailboxManagerResolver { + + private ImmutableMap<String, MailboxManager> managers; + + @Inject + private GuiceMailboxManagerResolver(Set<MailboxManagerDefinition> managers) { + this.managers = indexManagersByName(managers); + } + + private static ImmutableMap<String, MailboxManager> indexManagersByName(Set<MailboxManagerDefinition> managers) { + return ImmutableMap.copyOf(managers.stream().collect( + Collectors.toMap(MailboxManagerDefinition::getName, MailboxManagerDefinition::getManager))); + } + + @Override + public Map<String, MailboxManager> getMailboxManagerBeans() { + return managers; + } + + @Override + public MailboxManager resolveMailboxManager(String mailboxManagerClassName) { + return Optional.ofNullable(managers.get(mailboxManagerClassName)).orElseThrow( + () -> new MailboxManagerResolverException("Unable to find a mailbox manager with name " + mailboxManagerClassName)); + } + +} Copied: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/MailboxManagerDefinition.java (from r1712334, james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java) URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/MailboxManagerDefinition.java?p2=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/MailboxManagerDefinition.java&p1=james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java&r1=1712334&r2=1712335&rev=1712335&view=diff ============================================================================== --- james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java (original) +++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/MailboxManagerDefinition.java Tue Nov 3 16:49:19 2015 @@ -16,12 +16,42 @@ * specific language governing permissions and limitations * * under the License. * ****************************************************************/ -package org.apache.james.adapter.mailbox; -public class MailboxManagerResolverException extends RuntimeException { +package org.apache.james.utils; - public MailboxManagerResolverException(Throwable cause) { - super(cause); - } +import org.apache.james.mailbox.MailboxManager; + +import com.google.common.base.Objects; +public class MailboxManagerDefinition { + + private final String name; + private final MailboxManager manager; + + public MailboxManagerDefinition(String name, MailboxManager manager) { + this.name = name; + this.manager = manager; + } + + public MailboxManager getManager() { + return manager; + } + + public String getName() { + return name; + } + + @Override + public int hashCode() { + return Objects.hashCode(name, manager); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof MailboxManagerDefinition) { + MailboxManagerDefinition other = (MailboxManagerDefinition) obj; + return Objects.equal(name, other.name) && Objects.equal(manager, other.manager); + } + return false; + } } \ No newline at end of file Modified: james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java?rev=1712335&r1=1712334&r2=1712335&view=diff ============================================================================== --- james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java (original) +++ james/project/trunk/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerResolverException.java Tue Nov 3 16:49:19 2015 @@ -20,8 +20,16 @@ package org.apache.james.adapter.mailbox public class MailboxManagerResolverException extends RuntimeException { + public MailboxManagerResolverException() { + super(); + } + public MailboxManagerResolverException(Throwable cause) { super(cause); } + public MailboxManagerResolverException(String message) { + super(message); + } + } \ 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