You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2015/11/03 17:49:19 UTC
svn commit: r1712335 - in /james/project/trunk/server/container:
cassandra-guice/src/main/java/org/apache/james/utils/
mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/
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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org