This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 2eef538bd30cd9f2a07ad5a44829e6b569fb898c Author: Benoit Tellier <[email protected]> AuthorDate: Thu Sep 19 15:23:36 2019 +0700 JAMES-2886 All extension mechanisms should rely on GuiceGenericLoader --- .../james/utils/GuiceProtocolHandlerLoader.java | 18 ++--- server/container/guice/guice-utils/pom.xml | 4 + .../org/apache/james/utils/GuiceGenericLoader.java | 91 ++++++++++++++++++++++ .../modules/mailbox/MailboxListenerFactory.java | 33 ++++---- .../mailbox/MailboxListenersLoaderImpl.java | 10 +-- .../modules/mailbox/PreDeletionHookLoaderImpl.java | 19 ++--- .../mailbox/MailboxListenersLoaderImplTest.java | 6 +- .../mailbox/PreDeletionHookLoaderImplTest.java | 6 +- .../org/apache/james/utils/GuiceGenericLoader.java | 57 -------------- .../org/apache/james/utils/GuiceMailetLoader.java | 10 +-- .../org/apache/james/utils/GuiceMatcherLoader.java | 10 +-- .../apache/james/utils/GuiceMailetLoaderTest.java | 35 ++++----- .../apache/james/utils/GuiceMatcherLoaderTest.java | 28 +++---- 13 files changed, 180 insertions(+), 147 deletions(-) diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java index 23fbd20..b9a4b5c 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java @@ -25,17 +25,13 @@ import org.apache.james.protocols.api.handler.ProtocolHandler; import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader; import com.google.inject.Inject; -import com.google.inject.Injector; public class GuiceProtocolHandlerLoader implements ProtocolHandlerLoader { - - private final Injector injector; - private final ExtendedClassLoader extendedClassLoader; + private final GuiceGenericLoader genericLoader; @Inject - public GuiceProtocolHandlerLoader(Injector injector, ExtendedClassLoader extendedClassLoader) { - this.injector = injector; - this.extendedClassLoader = extendedClassLoader; + public GuiceProtocolHandlerLoader(GuiceGenericLoader genericLoader) { + this.genericLoader = genericLoader; } @Override @@ -51,10 +47,10 @@ public class GuiceProtocolHandlerLoader implements ProtocolHandlerLoader { private ProtocolHandler createProtocolHandler(String name) throws LoadingException { try { - Class<ProtocolHandler> clazz = extendedClassLoader.locateClass(name); - return injector.getInstance(clazz); - } catch (ClassNotFoundException e) { - throw new LoadingException("Can not load " + name); + ClassName className = new ClassName(name); + return genericLoader.instanciate(className); + } catch (Exception e) { + throw new LoadingException("Can not load " + name, e); } } diff --git a/server/container/guice/guice-utils/pom.xml b/server/container/guice/guice-utils/pom.xml index 4b8b922..74d3657 100644 --- a/server/container/guice/guice-utils/pom.xml +++ b/server/container/guice/guice-utils/pom.xml @@ -43,6 +43,10 @@ <scope>test</scope> </dependency> <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + </dependency> + <dependency> <groupId>com.github.fge</groupId> <artifactId>throwing-lambdas</artifactId> </dependency> diff --git a/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/GuiceGenericLoader.java b/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/GuiceGenericLoader.java new file mode 100644 index 0000000..d9c6943 --- /dev/null +++ b/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/GuiceGenericLoader.java @@ -0,0 +1,91 @@ +/**************************************************************** + * 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.Optional; +import java.util.stream.Stream; + +import com.google.inject.Inject; +import com.google.inject.Injector; +import com.google.inject.Module; + +public class GuiceGenericLoader { + private static final Optional<Module> NO_CHILD_MODULE = Optional.empty(); + + public static class InvocationPerformer<T> { + private final Injector injector; + private final ExtendedClassLoader extendedClassLoader; + private final NamingScheme namingSheme; + private final Optional<Module> childModule; + + private InvocationPerformer(Injector injector, ExtendedClassLoader extendedClassLoader, NamingScheme namingSheme, Optional<Module> childModule) { + this.injector = injector; + this.extendedClassLoader = extendedClassLoader; + this.namingSheme = namingSheme; + this.childModule = childModule; + } + + public T instanciate(ClassName className) throws ClassNotFoundException { + Class<T> clazz = locateClass(className, namingSheme); + + Injector resolvedInjector = childModule.map(this.injector::createChildInjector) + .orElse(this.injector); + + return resolvedInjector.getInstance(clazz); + } + + private Class<T> locateClass(ClassName className, NamingScheme namingScheme) throws ClassNotFoundException { + return namingScheme.toFullyQualifiedClassNames(className) + .flatMap(this::tryLocateClass) + .findFirst() + .orElseThrow(() -> new ClassNotFoundException(className.getName())); + } + + private Stream<Class<T>> tryLocateClass(FullyQualifiedClassName className) { + try { + return Stream.of(extendedClassLoader.locateClass(className)); + } catch (ClassNotFoundException e) { + return Stream.empty(); + } + } + } + + private final Injector injector; + private final ExtendedClassLoader extendedClassLoader; + + @Inject + public GuiceGenericLoader(Injector injector, ExtendedClassLoader extendedClassLoader) { + this.injector = injector; + this.extendedClassLoader = extendedClassLoader; + } + + public <T> T instanciate(ClassName className) throws ClassNotFoundException { + return new InvocationPerformer<T>(injector, extendedClassLoader, NamingScheme.IDENTITY, NO_CHILD_MODULE) + .instanciate(className); + } + + public <T> InvocationPerformer<T> withNamingSheme(NamingScheme namingSheme) { + return new InvocationPerformer<T>(injector, extendedClassLoader, namingSheme, NO_CHILD_MODULE); + } + + public <T> InvocationPerformer<T> withChildModule(Module childModule) { + return new InvocationPerformer<T>(injector, extendedClassLoader, NamingScheme.IDENTITY, Optional.of(childModule)); + } +} 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 270659e..d85d4f1 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 @@ -26,21 +26,24 @@ import org.apache.commons.configuration2.BaseHierarchicalConfiguration; import org.apache.commons.configuration2.HierarchicalConfiguration; import org.apache.commons.configuration2.tree.ImmutableNode; import org.apache.james.mailbox.events.MailboxListener; +import org.apache.james.utils.ClassName; +import org.apache.james.utils.GuiceGenericLoader; import com.google.common.base.Preconditions; -import com.google.inject.Injector; +import com.google.inject.Module; import com.google.inject.TypeLiteral; +import com.google.inject.util.Modules; public class MailboxListenerFactory { public static class MailboxListenerBuilder { - private final Injector injector; - private Optional<Class<MailboxListener>> clazz; + private final GuiceGenericLoader genericLoader; + private Optional<ClassName> clazz; private Optional<MailboxListener.ExecutionMode> executionMode; private Optional<HierarchicalConfiguration<ImmutableNode>> configuration; - public MailboxListenerBuilder(Injector injector) { - this.injector = injector; + public MailboxListenerBuilder(GuiceGenericLoader genericLoader) { + this.genericLoader = genericLoader; this.clazz = Optional.empty(); this.executionMode = Optional.empty(); this.configuration = Optional.empty(); @@ -66,30 +69,32 @@ public class MailboxListenerFactory { return this; } - public MailboxListenerBuilder clazz(Class<MailboxListener> clazz) { + public MailboxListenerBuilder clazz(ClassName clazz) { this.clazz = Optional.of(clazz); return this; } - public MailboxListener build() { + public MailboxListener build() throws ClassNotFoundException { Preconditions.checkState(clazz.isPresent(), "'clazz' is mandatory"); - return injector.createChildInjector( + Module childModule = Modules.combine( binder -> binder.bind(MailboxListener.ExecutionMode.class) .toInstance(executionMode.orElse(MailboxListener.ExecutionMode.SYNCHRONOUS)), binder -> binder.bind(new TypeLiteral<HierarchicalConfiguration<ImmutableNode>>() {}) - .toInstance(configuration.orElse(new BaseHierarchicalConfiguration()))) - .getInstance(clazz.get()); + .toInstance(configuration.orElse(new BaseHierarchicalConfiguration()))); + + return genericLoader.<MailboxListener>withChildModule(childModule) + .instanciate(clazz.get()); } } - private final Injector injector; + private final GuiceGenericLoader genericLoader; @Inject - public MailboxListenerFactory(Injector injector) { - this.injector = injector; + public MailboxListenerFactory(GuiceGenericLoader genericLoader) { + this.genericLoader = genericLoader; } public MailboxListenerBuilder newInstance() { - return new MailboxListenerBuilder(injector); + return new MailboxListenerBuilder(genericLoader); } } 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 cadb111..883acc8 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 @@ -28,7 +28,7 @@ import org.apache.james.mailbox.events.EventBus; import org.apache.james.mailbox.events.GenericGroup; import org.apache.james.mailbox.events.Group; import org.apache.james.mailbox.events.MailboxListener; -import org.apache.james.utils.ExtendedClassLoader; +import org.apache.james.utils.ClassName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,15 +40,13 @@ public class MailboxListenersLoaderImpl implements Configurable, MailboxListener private final MailboxListenerFactory mailboxListenerFactory; private final EventBus eventBus; - private final ExtendedClassLoader classLoader; private final Set<MailboxListener.GroupMailboxListener> guiceDefinedListeners; @Inject MailboxListenersLoaderImpl(MailboxListenerFactory mailboxListenerFactory, EventBus eventBus, - ExtendedClassLoader classLoader, Set<MailboxListener.GroupMailboxListener> guiceDefinedListeners) { + Set<MailboxListener.GroupMailboxListener> guiceDefinedListeners) { this.mailboxListenerFactory = mailboxListenerFactory; this.eventBus = eventBus; - this.classLoader = classLoader; this.guiceDefinedListeners = guiceDefinedListeners; } @@ -74,13 +72,13 @@ public class MailboxListenersLoaderImpl implements Configurable, MailboxListener @Override public Pair<Group, MailboxListener> createListener(ListenerConfiguration configuration) { - String listenerClass = configuration.getClazz(); + ClassName listenerClass = new ClassName(configuration.getClazz()); try { LOGGER.info("Loading user registered mailbox listener {}", listenerClass); MailboxListener mailboxListener = mailboxListenerFactory.newInstance() .withConfiguration(configuration.getConfiguration()) .withExecutionMode(configuration.isAsync().map(this::getExecutionMode)) - .clazz(classLoader.locateClass(listenerClass)) + .clazz(listenerClass) .build(); diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImpl.java index 87b293d..5b67a1b 100644 --- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImpl.java +++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImpl.java @@ -19,30 +19,27 @@ package org.apache.james.modules.mailbox; import org.apache.james.mailbox.extension.PreDeletionHook; -import org.apache.james.utils.ExtendedClassLoader; +import org.apache.james.utils.ClassName; +import org.apache.james.utils.GuiceGenericLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; -import com.google.inject.Injector; public class PreDeletionHookLoaderImpl implements PreDeletionHookLoader { private static final Logger LOGGER = LoggerFactory.getLogger(PreDeletionHookLoaderImpl.class); - private final Injector injector; - private final ExtendedClassLoader classLoader; + private final GuiceGenericLoader genericLoader; @Inject - PreDeletionHookLoaderImpl(Injector injector, ExtendedClassLoader classLoader) { - this.injector = injector; - this.classLoader = classLoader; + PreDeletionHookLoaderImpl(GuiceGenericLoader guiceGenericLoader) { + this.genericLoader = guiceGenericLoader; } @Override public PreDeletionHook createHook(PreDeletionHookConfiguration configuration) throws ClassNotFoundException { - String hookClass = configuration.getClazz(); - LOGGER.info("Loading user registered mailbox listener {}", hookClass); - Class<PreDeletionHook> clazz = classLoader.locateClass(hookClass); - return injector.getInstance(clazz); + ClassName hookClass = new ClassName(configuration.getClazz()); + LOGGER.info("Loading user registered mailbox message deletionHook {}", hookClass); + return genericLoader.instanciate(hookClass); } } 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 d3d33eb..a538053 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 @@ -41,6 +41,7 @@ import org.apache.james.mailbox.events.delivery.InVmEventDelivery; import org.apache.james.metrics.api.NoopMetricFactory; import org.apache.james.server.core.configuration.FileConfigurationProvider; import org.apache.james.utils.ExtendedClassLoader; +import org.apache.james.utils.GuiceGenericLoader; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -59,8 +60,9 @@ class MailboxListenersLoaderImplTest { .thenThrow(new FileNotFoundException()); eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory())); - testee = new MailboxListenersLoaderImpl(new MailboxListenerFactory(Guice.createInjector()), eventBus, - new ExtendedClassLoader(fileSystem), ImmutableSet.of()); + + GuiceGenericLoader genericLoader = new GuiceGenericLoader(Guice.createInjector(), new ExtendedClassLoader(fileSystem)); + testee = new MailboxListenersLoaderImpl(new MailboxListenerFactory(genericLoader), eventBus, ImmutableSet.of()); } @Test diff --git a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java index 6c398f5..0a898e5 100644 --- a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java +++ b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java @@ -29,6 +29,7 @@ import java.io.FileNotFoundException; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.utils.ExtendedClassLoader; +import org.apache.james.utils.GuiceGenericLoader; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -43,7 +44,10 @@ class PreDeletionHookLoaderImplTest { when(fileSystem.getFile(anyString())) .thenThrow(new FileNotFoundException()); - testee = new PreDeletionHookLoaderImpl(Guice.createInjector(), new ExtendedClassLoader(fileSystem)); + testee = new PreDeletionHookLoaderImpl( + new GuiceGenericLoader( + Guice.createInjector(), + new ExtendedClassLoader(fileSystem))); } @Test diff --git a/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceGenericLoader.java b/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceGenericLoader.java deleted file mode 100644 index d8c6188..0000000 --- a/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceGenericLoader.java +++ /dev/null @@ -1,57 +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.utils; - -import java.util.stream.Stream; - -import com.google.inject.Injector; - -public class GuiceGenericLoader<T> { - private final Injector injector; - private final NamingScheme namingScheme; - private final ExtendedClassLoader extendedClassLoader; - - public GuiceGenericLoader(Injector injector, ExtendedClassLoader extendedClassLoader, NamingScheme namingScheme) { - this.injector = injector; - this.namingScheme = namingScheme; - this.extendedClassLoader = extendedClassLoader; - } - - public T instanciate(ClassName className) throws Exception { - Class<T> clazz = locateClass(className); - return injector.getInstance(clazz); - } - - private Class<T> locateClass(ClassName className) throws ClassNotFoundException { - return namingScheme.toFullyQualifiedClassNames(className) - .flatMap(this::tryLocateClass) - .findFirst() - .orElseThrow(() -> new ClassNotFoundException(className.getName())); - } - - private Stream<Class<T>> tryLocateClass(FullyQualifiedClassName className) { - try { - return Stream.of(extendedClassLoader.locateClass(className)); - } catch (ClassNotFoundException e) { - return Stream.empty(); - } - } - -} diff --git a/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMailetLoader.java b/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMailetLoader.java index ac6296d..3bcfd4a 100644 --- a/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMailetLoader.java +++ b/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMailetLoader.java @@ -31,18 +31,17 @@ import org.apache.mailet.MailetConfig; import com.github.steveash.guavate.Guavate; import com.google.inject.Inject; -import com.google.inject.Injector; public class GuiceMailetLoader implements MailetLoader { private static final PackageName STANDARD_PACKAGE = PackageName.of("org.apache.james.transport.mailets."); private static final NamingScheme MAILET_NAMING_SCHEME = new NamingScheme.OptionalPackagePrefix(STANDARD_PACKAGE); - private final GuiceGenericLoader<Mailet> genericLoader; + private final GuiceGenericLoader genericLoader; private final Map<Class<? extends Mailet>, MailetConfig> configurationOverrides; @Inject - public GuiceMailetLoader(Injector injector, ExtendedClassLoader extendedClassLoader, Set<MailetConfigurationOverride> mailetConfigurationOverrides) { - this.genericLoader = new GuiceGenericLoader<>(injector, extendedClassLoader, MAILET_NAMING_SCHEME); + public GuiceMailetLoader(GuiceGenericLoader genericLoader, Set<MailetConfigurationOverride> mailetConfigurationOverrides) { + this.genericLoader = genericLoader; this.configurationOverrides = mailetConfigurationOverrides.stream() .collect(Guavate.toImmutableMap( MailetConfigurationOverride::getClazz, @@ -53,7 +52,8 @@ public class GuiceMailetLoader implements MailetLoader { public Mailet getMailet(MailetConfig config) throws MessagingException { try { ClassName className = new ClassName(config.getMailetName()); - Mailet result = genericLoader.instanciate(className); + Mailet result = genericLoader.<Mailet>withNamingSheme(MAILET_NAMING_SCHEME) + .instanciate(className); result.init(resolveConfiguration(result, config)); return result; } catch (Exception e) { diff --git a/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMatcherLoader.java b/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMatcherLoader.java index 6d2f874..5e55622 100644 --- a/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMatcherLoader.java +++ b/server/container/guice/mailet/src/main/java/org/apache/james/utils/GuiceMatcherLoader.java @@ -26,24 +26,24 @@ import org.apache.mailet.Matcher; import org.apache.mailet.MatcherConfig; import com.google.inject.Inject; -import com.google.inject.Injector; public class GuiceMatcherLoader implements MatcherLoader { private static final PackageName STANDARD_PACKAGE = PackageName.of("org.apache.james.transport.matchers."); private static final NamingScheme MATCHER_NAMING_SCHEME = new NamingScheme.OptionalPackagePrefix(STANDARD_PACKAGE); - private final GuiceGenericLoader<Matcher> genericLoader; + private final GuiceGenericLoader genericLoader; @Inject - public GuiceMatcherLoader(Injector injector, ExtendedClassLoader extendedClassLoader) { - this.genericLoader = new GuiceGenericLoader<>(injector, extendedClassLoader, MATCHER_NAMING_SCHEME); + public GuiceMatcherLoader(GuiceGenericLoader genericLoader) { + this.genericLoader = genericLoader; } @Override public Matcher getMatcher(MatcherConfig config) throws MessagingException { try { ClassName className = new ClassName(config.getMatcherName()); - Matcher result = genericLoader.instanciate(className); + Matcher result = genericLoader.<Matcher>withNamingSheme(MATCHER_NAMING_SCHEME) + .instanciate(className); result.init(config); return result; } catch (Exception e) { diff --git a/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMailetLoaderTest.java b/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMailetLoaderTest.java index cdce656..635685b 100644 --- a/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMailetLoaderTest.java +++ b/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMailetLoaderTest.java @@ -50,9 +50,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailetShouldLoadClass() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(THROWING_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); Mailet mailet = guiceMailetLoader.getMailet(FakeMailetConfig.builder() .mailetName("AddFooter") @@ -64,9 +63,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailetShouldLoadClassWhenInSubPackageFromDefaultPackage() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(THROWING_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); Mailet mailet = guiceMailetLoader.getMailet(FakeMailetConfig.builder() .mailetName("sub.TestMailet") @@ -78,9 +76,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailetShouldThrowOnBadType() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(THROWING_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); expectedException.expect(MessagingException.class); @@ -92,9 +89,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailetShouldLoadClassWhenInExtensionsJars() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); Mailet mailet = guiceMailetLoader.getMailet(FakeMailetConfig.builder() .mailetName("CustomMailet") @@ -107,9 +103,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailetShouldBrowseRecursivelyExtensionsJars() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(RECURSIVE_CLASSPATH_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(RECURSIVE_CLASSPATH_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); Mailet mailet = guiceMailetLoader.getMailet(FakeMailetConfig.builder() .mailetName("CustomMailet") @@ -122,9 +117,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailedShouldAllowCustomPackages() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); Mailet mailet = guiceMailetLoader.getMailet(FakeMailetConfig.builder() .mailetName("com.custom.mailets.AnotherMailet") @@ -137,9 +131,8 @@ public class GuiceMailetLoaderTest { @Test public void getMailetShouldThrowOnUnknownMailet() throws Exception { - GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(injector, - new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM), - NO_MAILET_CONFIG_OVERRIDES); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceMailetLoader guiceMailetLoader = new GuiceMailetLoader(genericLoader, NO_MAILET_CONFIG_OVERRIDES); expectedException.expect(MessagingException.class); diff --git a/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMatcherLoaderTest.java b/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMatcherLoaderTest.java index 319fb7a..7f77af8 100644 --- a/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMatcherLoaderTest.java +++ b/server/container/guice/mailet/src/test/java/org/apache/james/utils/GuiceMatcherLoaderTest.java @@ -45,8 +45,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldLoadClass() throws Exception { - GuiceMatcherLoader guiceMailetLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceMatcherLoader guiceMailetLoader = new GuiceMatcherLoader(genericLoader); Matcher matcher = guiceMailetLoader.getMatcher(FakeMatcherConfig.builder() .matcherName("All") @@ -58,8 +58,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldLoadClassWhenInSubPackageFromDefaultPackage() throws Exception { - GuiceMatcherLoader guiceMailetLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceMatcherLoader guiceMailetLoader = new GuiceMatcherLoader(genericLoader); Matcher matcher = guiceMailetLoader.getMatcher(FakeMatcherConfig.builder() .matcherName("sub.TestMatcher") @@ -71,8 +71,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldThrowOnBadType() throws Exception { - GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(THROWING_FILE_SYSTEM)); + GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(genericLoader); expectedException.expect(MessagingException.class); @@ -84,8 +84,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldLoadClassWhenInExtensionsJars() throws Exception { - GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(genericLoader); Matcher matcher = guiceMatcherLoader.getMatcher(FakeMatcherConfig.builder() .matcherName("CustomMatcher") @@ -98,8 +98,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldBrowseRecursivelyExtensionJars() throws Exception { - GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(RECURSIVE_CLASSPATH_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(RECURSIVE_CLASSPATH_FILE_SYSTEM)); + GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(genericLoader); Matcher matcher = guiceMatcherLoader.getMatcher(FakeMatcherConfig.builder() .matcherName("CustomMatcher") @@ -112,8 +112,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldAllowCustomPackages() throws Exception { - GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(RECURSIVE_CLASSPATH_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(RECURSIVE_CLASSPATH_FILE_SYSTEM)); + GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(genericLoader); Matcher matcher = guiceMatcherLoader.getMatcher(FakeMatcherConfig.builder() .matcherName("com.custom.matchers.AnotherMatcher") @@ -126,8 +126,8 @@ public class GuiceMatcherLoaderTest { @Test public void getMatcherShouldThrowOnUnknownMailet() throws Exception { - GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(injector, - new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceGenericLoader genericLoader = new GuiceGenericLoader(injector, new ExtendedClassLoader(CLASSPATH_FILE_SYSTEM)); + GuiceMatcherLoader guiceMatcherLoader = new GuiceMatcherLoader(genericLoader); expectedException.expect(MessagingException.class); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
