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 bt...@apache.org on 2019/01/17 06:50:25 UTC
[09/27] james-project git commit: JAMES-2641 Remove
MailboxListenerRegistry
JAMES-2641 Remove MailboxListenerRegistry
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/90f18c4b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/90f18c4b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/90f18c4b
Branch: refs/heads/master
Commit: 90f18c4b9377cbe41cf76012bd2c9d7463f619a8
Parents: 89f168d
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Jan 10 14:30:16 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Jan 17 10:23:41 2019 +0700
----------------------------------------------------------------------
.../store/event/MailboxListenerRegistry.java | 71 ----------
.../event/MailboxListenerRegistryTest.java | 142 -------------------
.../modules/mailbox/DefaultEventModule.java | 2 -
.../modules/mailbox/MailboxListenerFactory.java | 6 +-
.../modules/mailbox/MailboxListenersLoader.java | 5 +-
.../mailbox/MailboxListenersLoaderImpl.java | 19 ++-
.../modules/mailbox/NoopMailboxListener.java | 2 +-
.../mailbox/MailboxListenersLoaderImplTest.java | 15 +-
8 files changed, 22 insertions(+), 240 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxListenerRegistry.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxListenerRegistry.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxListenerRegistry.java
deleted file mode 100644
index 83461e6..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxListenerRegistry.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************
- * 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.mailbox.store.event;
-
-import java.util.List;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.model.MailboxId;
-
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
-
-public class MailboxListenerRegistry {
-
- private final Multimap<MailboxId, MailboxListener> listeners;
- private final ConcurrentLinkedQueue<MailboxListener> globalListeners;
-
- public MailboxListenerRegistry() {
- this.globalListeners = new ConcurrentLinkedQueue<>();
- this.listeners = Multimaps.synchronizedMultimap(HashMultimap.create());
- }
-
- public void addListener(MailboxId mailboxId, MailboxListener listener) {
- listeners.put(mailboxId, listener);
- }
-
- public void addGlobalListener(MailboxListener listener) {
- globalListeners.add(listener);
- }
-
- public void removeListener(MailboxId mailboxId, MailboxListener listener) {
- listeners.remove(mailboxId, listener);
- }
-
- public void removeGlobalListener(MailboxListener listener) {
- globalListeners.remove(listener);
- }
-
- public List<MailboxListener> getLocalMailboxListeners(MailboxId mailboxId) {
- return ImmutableList.copyOf(listeners.get(mailboxId));
- }
-
- public List<MailboxListener> getGlobalListeners() {
- return ImmutableList.copyOf(globalListeners);
- }
-
- public void deleteRegistryFor(MailboxId mailboxId) {
- listeners.removeAll(mailboxId);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
deleted file mode 100644
index 04d2b1a..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************
- * 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.mailbox.store.event;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.TestId;
-import org.junit.Before;
-import org.junit.Test;
-
-public class MailboxListenerRegistryTest {
- private static final MailboxId MAILBOX_ID = TestId.of(42);
- private static final MailboxId OTHER_MAILBOX_ID = TestId.of(43);
-
- private MailboxListenerRegistry testee;
- private MailboxListener mailboxListener;
- private MailboxListener otherMailboxListener;
-
- @Before
- public void setUp() {
- testee = new MailboxListenerRegistry();
- mailboxListener = mock(MailboxListener.class);
- otherMailboxListener = mock(MailboxListener.class);
- }
-
- @Test
- public void getGlobalListenersShouldBeEmpty() {
- assertThat(testee.getGlobalListeners()).isEmpty();
- }
-
- @Test
- public void getLocalMailboxListenersShouldReturnEmptyList() {
- assertThat(testee.getLocalMailboxListeners(MAILBOX_ID)).isEmpty();
- }
-
- @Test
- public void addGlobalListenerShouldAddAGlobalListener() {
- testee.addGlobalListener(mailboxListener);
-
- assertThat(testee.getGlobalListeners()).containsOnly(mailboxListener);
- }
-
- @Test
- public void addListenerShouldAddAListener() {
- testee.addListener(MAILBOX_ID, mailboxListener);
-
- assertThat(testee.getLocalMailboxListeners(MAILBOX_ID)).containsOnly(mailboxListener);
- }
-
- @Test
- public void addListenerTwiceShouldAddAListenerOnlyOnce() {
- testee.addListener(MAILBOX_ID, mailboxListener);
- testee.addListener(MAILBOX_ID, mailboxListener);
-
- assertThat(testee.getLocalMailboxListeners(MAILBOX_ID)).containsExactly(mailboxListener);
- }
-
- @Test
- public void addListenerShouldAddAListenerOnCorrectPath() {
- testee.addListener(MAILBOX_ID, mailboxListener);
-
- assertThat(testee.getLocalMailboxListeners(OTHER_MAILBOX_ID)).isEmpty();
- }
-
- @Test
- public void removeGlobalListenerShouldWork() throws Exception {
- testee.addGlobalListener(mailboxListener);
-
- testee.removeGlobalListener(mailboxListener);
-
- assertThat(testee.getGlobalListeners()).isEmpty();
- }
-
- @Test
- public void removeListenerShouldWork() {
- testee.addListener(MAILBOX_ID, mailboxListener);
-
- testee.removeListener(MAILBOX_ID, mailboxListener);
-
- assertThat(testee.getLocalMailboxListeners(MAILBOX_ID)).isEmpty();
- }
-
- @Test
- public void removeGlobalListenerShouldNotRemoveOtherListeners() {
- testee.addGlobalListener(mailboxListener);
- testee.addGlobalListener(otherMailboxListener);
-
- testee.removeGlobalListener(mailboxListener);
-
- assertThat(testee.getGlobalListeners()).containsOnly(otherMailboxListener);
- }
-
- @Test
- public void removeListenerShouldNotRemoveOtherListeners() {
- testee.addListener(MAILBOX_ID, mailboxListener);
- testee.addListener(MAILBOX_ID, otherMailboxListener);
-
- testee.removeListener(MAILBOX_ID, mailboxListener);
-
- assertThat(testee.getLocalMailboxListeners(MAILBOX_ID)).containsOnly(otherMailboxListener);
- }
-
- @Test
- public void deleteRegistryForShouldRemoveAllListeners() {
- testee.addListener(MAILBOX_ID, mailboxListener);
- testee.addListener(MAILBOX_ID, otherMailboxListener);
-
- testee.deleteRegistryFor(MAILBOX_ID);
-
- assertThat(testee.getLocalMailboxListeners(MAILBOX_ID)).isEmpty();
- }
-
- @Test
- public void removeGlobalListenerShouldNotThrowOnAbsentListener() {
- testee.removeGlobalListener(mailboxListener);
- }
-
- @Test
- public void removeListenerShouldNotThrowOnAbsentListener() {
- testee.removeListener(MAILBOX_ID, mailboxListener);
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
index 3ec0a61..79d2dab 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
@@ -31,7 +31,6 @@ import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.EventDelivery;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.store.event.MailboxAnnotationListener;
-import org.apache.james.mailbox.store.event.MailboxListenerRegistry;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.server.core.configuration.ConfigurationProvider;
import org.apache.james.utils.ConfigurationPerformer;
@@ -53,7 +52,6 @@ public class DefaultEventModule extends AbstractModule {
bind(MailboxListenerFactory.class).in(Scopes.SINGLETON);
bind(MailboxListenersLoaderImpl.class).in(Scopes.SINGLETON);
- bind(MailboxListenerRegistry.class).in(Scopes.SINGLETON);
bind(MailboxListenersLoader.class).to(MailboxListenersLoaderImpl.class);
Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenerFactory.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenerFactory.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenerFactory.java
index 4c39661..9af26be 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenerFactory.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenerFactory.java
@@ -32,7 +32,7 @@ public class MailboxListenerFactory {
public static class MailboxListenerBuilder {
private final Injector injector;
- private Optional<Class<MailboxListener>> clazz;
+ private Optional<Class<MailboxListener.GroupMailboxListener>> clazz;
private Optional<MailboxListener.ExecutionMode> executionMode;
private Optional<HierarchicalConfiguration> configuration;
@@ -63,12 +63,12 @@ public class MailboxListenerFactory {
return this;
}
- public MailboxListenerBuilder clazz(Class<MailboxListener> clazz) {
+ public MailboxListenerBuilder clazz(Class<MailboxListener.GroupMailboxListener> clazz) {
this.clazz = Optional.of(clazz);
return this;
}
- public MailboxListener build() {
+ public MailboxListener.GroupMailboxListener build() {
Preconditions.checkState(clazz.isPresent(), "'clazz' is mandatory");
return injector.createChildInjector(
binder -> binder.bind(MailboxListener.ExecutionMode.class)
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoader.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoader.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoader.java
index 46757a9..1909a3f 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoader.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoader.java
@@ -21,8 +21,7 @@ package org.apache.james.modules.mailbox;
import org.apache.james.mailbox.MailboxListener;
public interface MailboxListenersLoader {
+ MailboxListener.GroupMailboxListener createListener(ListenerConfiguration configuration);
- MailboxListener createListener(ListenerConfiguration configuration);
-
- void register(MailboxListener listener);
+ void register(MailboxListener.GroupMailboxListener listener);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImpl.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImpl.java
index 44dc178..b4bf0fa 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImpl.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImpl.java
@@ -23,7 +23,7 @@ import java.util.Set;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.store.event.MailboxListenerRegistry;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.utils.ExtendedClassLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,19 +31,18 @@ import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
public class MailboxListenersLoaderImpl implements Configurable, MailboxListenersLoader {
-
private static final Logger LOGGER = LoggerFactory.getLogger(MailboxListenersLoaderImpl.class);
private final MailboxListenerFactory mailboxListenerFactory;
- private final MailboxListenerRegistry registry;
+ private final EventBus eventBus;
private final ExtendedClassLoader classLoader;
- private final Set<MailboxListener> guiceDefinedListeners;
+ private final Set<MailboxListener.GroupMailboxListener> guiceDefinedListeners;
@Inject
- public MailboxListenersLoaderImpl(MailboxListenerFactory mailboxListenerFactory, MailboxListenerRegistry registry,
- ExtendedClassLoader classLoader, Set<MailboxListener> guiceDefinedListeners) {
+ public MailboxListenersLoaderImpl(MailboxListenerFactory mailboxListenerFactory, EventBus eventBus,
+ ExtendedClassLoader classLoader, Set<MailboxListener.GroupMailboxListener> guiceDefinedListeners) {
this.mailboxListenerFactory = mailboxListenerFactory;
- this.registry = registry;
+ this.eventBus = eventBus;
this.classLoader = classLoader;
this.guiceDefinedListeners = guiceDefinedListeners;
}
@@ -62,12 +61,12 @@ public class MailboxListenersLoaderImpl implements Configurable, MailboxListener
}
@Override
- public void register(MailboxListener listener) {
- registry.addGlobalListener(listener);
+ public void register(MailboxListener.GroupMailboxListener listener) {
+ eventBus.register(listener);
}
@Override
- public MailboxListener createListener(ListenerConfiguration configuration) {
+ public MailboxListener.GroupMailboxListener createListener(ListenerConfiguration configuration) {
String listenerClass = configuration.getClazz();
try {
LOGGER.info("Loading user registered mailbox listener {}", listenerClass);
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
index f5c10d5..1c1f555 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
@@ -25,7 +25,7 @@ import org.apache.james.mailbox.events.Group;
public class NoopMailboxListener implements MailboxListener.GroupMailboxListener {
private static class NoopMailboxListenerGroup extends Group {}
- public static final Group GROUP = new NoopMailboxListenerGroup();
+ static final Group GROUP = new NoopMailboxListenerGroup();
@Override
public ListenerType getType() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f18c4b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
index c1d6f5f..a9f454d 100644
--- a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
+++ b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
@@ -32,7 +32,9 @@ import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.store.event.MailboxListenerRegistry;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.utils.ExtendedClassLoader;
import org.junit.Before;
import org.junit.Test;
@@ -42,7 +44,7 @@ import com.google.inject.Guice;
public class MailboxListenersLoaderImplTest {
- private MailboxListenerRegistry registry;
+ private InVMEventBus eventBus;
private MailboxListenersLoaderImpl testee;
@Before
@@ -51,8 +53,8 @@ public class MailboxListenersLoaderImplTest {
when(fileSystem.getFile(anyString()))
.thenThrow(new FileNotFoundException());
- registry = new MailboxListenerRegistry();
- testee = new MailboxListenersLoaderImpl(new MailboxListenerFactory(Guice.createInjector()), registry,
+ eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ testee = new MailboxListenersLoaderImpl(new MailboxListenerFactory(Guice.createInjector()), eventBus,
new ExtendedClassLoader(fileSystem), ImmutableSet.of());
}
@@ -95,14 +97,11 @@ public class MailboxListenersLoaderImplTest {
"<listener>" +
"<class>org.apache.james.modules.mailbox.NoopMailboxListener</class>" +
"</listener>" +
- "<listener>" +
- "<class>org.apache.james.modules.mailbox.NoopMailboxListener</class>" +
- "</listener>" +
"</listeners>");
testee.configure(configuration);
- assertThat(registry.getGlobalListeners()).hasSize(2);
+ assertThat(eventBus.registeredGroups()).containsExactly(NoopMailboxListener.GROUP);
}
private DefaultConfigurationBuilder toConfigutation(String configurationString) throws ConfigurationException {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org