Add ObjectAwareUtils abstract utility class for perforing functions on Spring Aware Objects.
Spring Aware Objects currently handled by ObjectAwareUtils includes, but is not limited to: ApplicationContextAware, ApplicationEventPublisherAware, BeanClassLoaderAware, BeanFactoryAware, BeanNameAware, EnvironmentAware and ResourceLoaderAware.
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
* Copyright 2020 the original author or authors.
|
||||
*
|
||||
* Licensed 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
|
||||
*
|
||||
* https://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.springframework.geode.core.util;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.springframework.beans.factory.BeanClassLoaderAware;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.ApplicationEventPublisherAware;
|
||||
import org.springframework.context.EnvironmentAware;
|
||||
import org.springframework.context.ResourceLoaderAware;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Abstract utility class used to process {@link Object managed object} {@literal aware} {@link Object objects},
|
||||
* such as {@link ApplicationContextAware} {@link Object objects} in a Spring context.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.function.Consumer
|
||||
* @see org.springframework.beans.factory.BeanClassLoaderAware
|
||||
* @see org.springframework.beans.factory.BeanFactoryAware
|
||||
* @see org.springframework.beans.factory.BeanNameAware
|
||||
* @see org.springframework.context.ApplicationContextAware
|
||||
* @see org.springframework.context.ApplicationEventPublisherAware
|
||||
* @see org.springframework.context.EnvironmentAware
|
||||
* @see org.springframework.context.ResourceLoaderAware
|
||||
* @since 1.3.1
|
||||
*/
|
||||
public abstract class ObjectAwareUtils {
|
||||
|
||||
public static final Consumer<Object> NO_OP = target -> { };
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link ApplicationContextAware} {@link Object}
|
||||
* with the given {@link ApplicationContext}.
|
||||
*
|
||||
* The {@link ApplicationContextAware#setApplicationContext(ApplicationContext)} method is only called on
|
||||
* the {@link ApplicationContextAware} {@link Object} if the {@link ApplicationContext} is not {@literal null}.
|
||||
*
|
||||
* @param applicationContext {@link ApplicationContext} set on the {@link ApplicationContextAware} {@link Object}
|
||||
* by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link ApplicationContextAware} {@link Object}
|
||||
* with the given {@link ApplicationContext}; never {@literal null}.
|
||||
* @see org.springframework.context.ApplicationContextAware
|
||||
* @see org.springframework.context.ApplicationContext
|
||||
* @see java.util.function.Consumer
|
||||
*/
|
||||
public static @NonNull Consumer<Object> applicationContextAwareObjectInitializer(
|
||||
@Nullable ApplicationContext applicationContext) {
|
||||
|
||||
return applicationContext == null ? NO_OP : target -> {
|
||||
if (target instanceof ApplicationContextAware) {
|
||||
((ApplicationContextAware) target).setApplicationContext(applicationContext);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link ApplicationEventPublisherAware} {@link Object}
|
||||
* with the given {@link ApplicationEventPublisher}.
|
||||
*
|
||||
* The {@link ApplicationEventPublisherAware#setApplicationEventPublisher(ApplicationEventPublisher)} method is only
|
||||
* called on the {@link ApplicationEventPublisherAware} {@link Object} if the {@link ApplicationEventPublisherAware}
|
||||
* is not {@literal null}.
|
||||
*
|
||||
* @param applicationEventPublisher {@link ApplicationEventPublisher} set on
|
||||
* the {@link ApplicationEventPublisherAware} {@link Object} by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link ApplicationEventPublisherAware} {@link Object}
|
||||
* with the given {@link ApplicationEventPublisher}; never {@literal null}.
|
||||
* @see org.springframework.context.ApplicationEventPublisherAware
|
||||
* @see org.springframework.context.ApplicationEventPublisher
|
||||
* @see java.util.function.Consumer
|
||||
*/
|
||||
public static @NonNull Consumer<Object> applicationEventPublisherAwareObjectInitializer(
|
||||
@Nullable ApplicationEventPublisher applicationEventPublisher) {
|
||||
|
||||
return applicationEventPublisher == null ? NO_OP : target -> {
|
||||
if (target instanceof ApplicationEventPublisherAware) {
|
||||
((ApplicationEventPublisherAware) target).setApplicationEventPublisher(applicationEventPublisher);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link BeanClassLoaderAware} {@link Object}
|
||||
* with the given bean {@link ClassLoader}.
|
||||
*
|
||||
* The {@link BeanClassLoaderAware#setBeanClassLoader(ClassLoader)} method is only called on
|
||||
* the {@link BeanClassLoaderAware} {@link Object} if the {@link ClassLoader} is not {@literal null}.
|
||||
*
|
||||
* @param beanClassLoader {@link ClassLoader} set on the {@link BeanClassLoaderAware} {@link Object}
|
||||
* by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link BeanClassLoaderAware} {@link Object}
|
||||
* with the given bean {@link ClassLoader}; never {@literal null}.
|
||||
* @see org.springframework.beans.factory.BeanClassLoaderAware
|
||||
* @see java.util.function.Consumer
|
||||
* @see java.lang.ClassLoader
|
||||
*/
|
||||
public static @NonNull Consumer<Object> beanClassLoaderAwareObjectInitializer(@Nullable ClassLoader beanClassLoader) {
|
||||
|
||||
return beanClassLoader == null ? NO_OP : target -> {
|
||||
if (target instanceof BeanClassLoaderAware) {
|
||||
((BeanClassLoaderAware) target).setBeanClassLoader(beanClassLoader);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link BeanFactoryAware} {@link Object}
|
||||
* with the given {@link BeanFactory}.
|
||||
*
|
||||
* The {@link BeanFactoryAware#setBeanFactory(BeanFactory)} method is only called on the {@link BeanFactoryAware}
|
||||
* {@link Object} if the {@link BeanFactory} is not {@literal null}.
|
||||
*
|
||||
* @param beanFactory {@link BeanFactory} set on the {@link BeanFactoryAware} {@link Object} by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link BeanFactoryAware} {@link Object}
|
||||
* with the given {@link BeanFactory}; never {@literal null}.
|
||||
* @see org.springframework.beans.factory.BeanFactoryAware
|
||||
* @see org.springframework.beans.factory.BeanFactory
|
||||
* @see java.util.function.Consumer
|
||||
*/
|
||||
public static @NonNull Consumer<Object> beanFactoryAwareObjectInitializer(@Nullable BeanFactory beanFactory) {
|
||||
|
||||
return beanFactory == null ? NO_OP : target -> {
|
||||
if (target instanceof BeanFactoryAware) {
|
||||
((BeanFactoryAware) target).setBeanFactory(beanFactory);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link BeanNameAware} {@link Object}
|
||||
* with the given {@link String bean name}.
|
||||
*
|
||||
* The {@link BeanNameAware#setBeanName(String)} method is only called on the {@link BeanNameAware} {@link Object}
|
||||
* if the {@link String bean name} is not {@literal null}.
|
||||
*
|
||||
* @param beanName {@link String} containing the bean name to set on the {@link BeanNameAware} {@link Object}
|
||||
* by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link BeanNameAware} {@link Object}
|
||||
* with the given {@link String bean name}; never {@literal null}.
|
||||
* @see org.springframework.beans.factory.BeanNameAware
|
||||
* @see java.util.function.Consumer
|
||||
*/
|
||||
public static @NonNull Consumer<Object> beanNameAwareObjectInitializer(@Nullable String beanName) {
|
||||
|
||||
return hasNoText(beanName) ? NO_OP : target -> {
|
||||
if (target instanceof BeanNameAware) {
|
||||
((BeanNameAware) target).setBeanName(beanName);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link EnvironmentAware} {@link Object}
|
||||
* with the given {@link Environment}.
|
||||
*
|
||||
* The {@link EnvironmentAware#setEnvironment(Environment)} method is only called on the {@link EnvironmentAware}
|
||||
* {@link Object} if the {@link Environment} is not {@literal null}.
|
||||
*
|
||||
* @param environment {@link Environment} set on the {@link EnvironmentAware} {@link Object} by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link EnvironmentAware} {@link Object}
|
||||
* with the given {@link Environment}; never {@literal null}.
|
||||
* @see org.springframework.context.EnvironmentAware
|
||||
* @see org.springframework.core.env.Environment
|
||||
* @see java.util.function.Consumer
|
||||
*/
|
||||
public static @NonNull Consumer<Object> environmentAwareObjectInitializer(@Nullable Environment environment) {
|
||||
|
||||
return environment == null ? NO_OP : target -> {
|
||||
if (target instanceof EnvironmentAware) {
|
||||
((EnvironmentAware) target).setEnvironment(environment);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Consumer} capable of initializing an {@link ResourceLoaderAware} {@link Object}
|
||||
* with the given {@link ResourceLoader}.
|
||||
*
|
||||
* The {@link ResourceLoaderAware#setResourceLoader(ResourceLoader)} method is only called on
|
||||
* the {@link ResourceLoaderAware} {@link Object} if the {@link ResourceLoader} is not {@literal null}.
|
||||
*
|
||||
* @param resourceLoader {@link ResourceLoader} set on the {@link ResourceLoaderAware} {@link Object}
|
||||
* by the {@link Consumer}.
|
||||
* @return a {@link Consumer} capable of initializing an {@link ResourceLoaderAware} {@link Object}
|
||||
* with the given {@link ResourceLoader}; never {@literal null}.
|
||||
* @see org.springframework.context.ResourceLoaderAware
|
||||
* @see org.springframework.core.io.ResourceLoader
|
||||
* @see java.util.function.Consumer
|
||||
*/
|
||||
public static @NonNull Consumer<Object> resourceLoaderAwareObjectInitializer(@Nullable ResourceLoader resourceLoader) {
|
||||
|
||||
return resourceLoader == null ? NO_OP : target -> {
|
||||
if (target instanceof ResourceLoaderAware) {
|
||||
((ResourceLoaderAware) target).setResourceLoader(resourceLoader);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static boolean hasNoText(@Nullable String value) {
|
||||
return !StringUtils.hasText(value);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,432 @@
|
||||
/*
|
||||
* Copyright 2020 the original author or authors.
|
||||
*
|
||||
* Licensed 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
|
||||
*
|
||||
* https://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.springframework.geode.core.util;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoInteractions;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.factory.BeanClassLoaderAware;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.ApplicationEventPublisherAware;
|
||||
import org.springframework.context.EnvironmentAware;
|
||||
import org.springframework.context.ResourceLoaderAware;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
|
||||
/**
|
||||
* Unit Tests for {@link ObjectAwareUtils}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.function.Consumer
|
||||
* @see org.junit.Test
|
||||
* @see org.mockito.Mockito
|
||||
* @see org.springframework.beans.factory.BeanClassLoaderAware
|
||||
* @see org.springframework.beans.factory.BeanFactory
|
||||
* @see org.springframework.beans.factory.BeanFactoryAware
|
||||
* @see org.springframework.beans.factory.BeanNameAware
|
||||
* @see org.springframework.context.ApplicationContext
|
||||
* @see org.springframework.context.ApplicationContextAware
|
||||
* @see org.springframework.context.ApplicationEventPublisher
|
||||
* @see org.springframework.context.ApplicationEventPublisherAware
|
||||
* @see org.springframework.context.EnvironmentAware
|
||||
* @see org.springframework.context.ResourceLoaderAware
|
||||
* @see org.springframework.core.env.Environment
|
||||
* @see org.springframework.core.io.ResourceLoader
|
||||
* @see org.springframework.geode.core.util.ObjectAwareUtils
|
||||
* @since 1.3.1
|
||||
*/
|
||||
public class ObjectAwareUtilsUnitTests {
|
||||
|
||||
@Test
|
||||
public void initializeApplicationContextAwareObjectWithApplicationContext() {
|
||||
|
||||
ApplicationContext mockApplicationContext = mock(ApplicationContext.class);
|
||||
|
||||
ApplicationContextAware mockApplicationContextAware = mock(ApplicationContextAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.applicationContextAwareObjectInitializer(mockApplicationContext);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockApplicationContextAware);
|
||||
|
||||
verify(mockApplicationContextAware, times(1))
|
||||
.setApplicationContext(eq(mockApplicationContext));
|
||||
verifyNoMoreInteractions(mockApplicationContextAware);
|
||||
verifyNoInteractions(mockApplicationContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeApplicationContextAwareObjectWithNull() {
|
||||
|
||||
ApplicationContextAware mockApplicationContextAware = mock(ApplicationContextAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.applicationContextAwareObjectInitializer(null);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockApplicationContextAware);
|
||||
|
||||
verifyNoInteractions(mockApplicationContextAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonApplicationContextAwareObjectsWithApplicationContext() {
|
||||
|
||||
ApplicationContext mockApplicationContext = mock(ApplicationContext.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.applicationContextAwareObjectInitializer(mockApplicationContext);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("TEST");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
|
||||
verifyNoInteractions(mockApplicationContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeApplicationEventPublisherAwareObjectWithApplicationEventPublisher() {
|
||||
|
||||
ApplicationEventPublisher mockApplicationEventPublisher = mock(ApplicationEventPublisher.class);
|
||||
|
||||
ApplicationEventPublisherAware mockApplicationEventPublisherAware = mock(ApplicationEventPublisherAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.applicationEventPublisherAwareObjectInitializer(mockApplicationEventPublisher);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockApplicationEventPublisherAware);
|
||||
|
||||
verify(mockApplicationEventPublisherAware, times(1))
|
||||
.setApplicationEventPublisher(eq(mockApplicationEventPublisher));
|
||||
verifyNoMoreInteractions(mockApplicationEventPublisherAware);
|
||||
verifyNoInteractions(mockApplicationEventPublisher);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeApplicationEventPublisherAwareObjectWithNull() {
|
||||
|
||||
ApplicationEventPublisherAware mockApplicationEventPublisherAware = mock(ApplicationEventPublisherAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.applicationEventPublisherAwareObjectInitializer(null);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockApplicationEventPublisherAware);
|
||||
|
||||
verifyNoInteractions(mockApplicationEventPublisherAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonApplicationEventPublisherAwareObjectsWithApplicationEventPublisher() {
|
||||
|
||||
ApplicationEventPublisher mockApplicationEventPublisher = mock(ApplicationEventPublisher.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.applicationEventPublisherAwareObjectInitializer(mockApplicationEventPublisher);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("MOCK");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
|
||||
verifyNoInteractions(mockApplicationEventPublisher);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBeanClassLoaderAwareObjectWithBeanClassLoader() {
|
||||
|
||||
ClassLoader mockClassLoader = mock(ClassLoader.class);
|
||||
|
||||
BeanClassLoaderAware mockBeanClassLoaderAware = mock(BeanClassLoaderAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.beanClassLoaderAwareObjectInitializer(mockClassLoader);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockBeanClassLoaderAware);
|
||||
|
||||
verify(mockBeanClassLoaderAware, times(1)).setBeanClassLoader(eq(mockClassLoader));
|
||||
verifyNoMoreInteractions(mockBeanClassLoaderAware);
|
||||
verifyNoInteractions(mockClassLoader);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBeanClassLoaderAwareObjectWithNull() {
|
||||
|
||||
BeanClassLoaderAware mockBeanClassLoaderAware = mock(BeanClassLoaderAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.beanClassLoaderAwareObjectInitializer(null);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockBeanClassLoaderAware);
|
||||
|
||||
verifyNoInteractions(mockBeanClassLoaderAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonBeanClassLoaderAwareObjectsWithBeanClassLoader() {
|
||||
|
||||
ClassLoader mockClassLoader = mock(ClassLoader.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.beanClassLoaderAwareObjectInitializer(mockClassLoader);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("STUB");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
|
||||
verifyNoInteractions(mockClassLoader);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBeanFactoryAwareObjectWithBeanFactory() {
|
||||
|
||||
BeanFactory mockBeanFactory = mock(BeanFactory.class);
|
||||
|
||||
BeanFactoryAware mockBeanFactoryAware = mock(BeanFactoryAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.beanFactoryAwareObjectInitializer(mockBeanFactory);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockBeanFactoryAware);
|
||||
|
||||
verify(mockBeanFactoryAware, times(1)).setBeanFactory(eq(mockBeanFactory));
|
||||
verifyNoMoreInteractions(mockBeanFactoryAware);
|
||||
verifyNoInteractions(mockBeanFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBeanFactoryAwareObjectWithNull() {
|
||||
|
||||
BeanFactoryAware mockBeanFactoryAware = mock(BeanFactoryAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.beanFactoryAwareObjectInitializer(null);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockBeanFactoryAware);
|
||||
|
||||
verifyNoInteractions(mockBeanFactoryAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonBeanFactoryAwareObjectsWithBeanFactory() {
|
||||
|
||||
BeanFactory mockBeanFactory = mock(BeanFactory.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.beanFactoryAwareObjectInitializer(mockBeanFactory);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("MOCK");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
|
||||
verifyNoInteractions(mockBeanFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBeanNameAwareObjectWithBeanName() {
|
||||
|
||||
String beanName = "TestBeanName";
|
||||
|
||||
BeanNameAware mockBeanNameAware = mock(BeanNameAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.beanNameAwareObjectInitializer(beanName);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockBeanNameAware);
|
||||
|
||||
verify(mockBeanNameAware, times(1)).setBeanName(eq(beanName));
|
||||
verifyNoMoreInteractions(mockBeanNameAware);
|
||||
}
|
||||
|
||||
public void testInitializesBeanNameAwareObjectWithBeanName(String beanName) {
|
||||
|
||||
BeanNameAware mockBeanNameAware = mock(BeanNameAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.beanNameAwareObjectInitializer(beanName);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockBeanNameAware);
|
||||
|
||||
verifyNoMoreInteractions(mockBeanNameAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializesBeanNameAwareObjectWithBlankBeanName() {
|
||||
testInitializesBeanNameAwareObjectWithBeanName(" ");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializesBeanNameAwareObjectWithEmptyBeanName() {
|
||||
testInitializesBeanNameAwareObjectWithBeanName("");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializesBeanNameAwareObjectWithNullBeanName() {
|
||||
testInitializesBeanNameAwareObjectWithBeanName(null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonBeanNameAwareObjectsWithBeanName() {
|
||||
|
||||
String beanName = "TestBeanName";
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.beanNameAwareObjectInitializer(beanName);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("MOCK");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeEnvironmentAwareObjectWithEnvironment() {
|
||||
|
||||
Environment mockEnvironment = mock(Environment.class);
|
||||
|
||||
EnvironmentAware mockEnvironmentAware = mock(EnvironmentAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.environmentAwareObjectInitializer(mockEnvironment);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockEnvironmentAware);
|
||||
|
||||
verify(mockEnvironmentAware, times(1)).setEnvironment(eq(mockEnvironment));
|
||||
verifyNoMoreInteractions(mockEnvironmentAware);
|
||||
verifyNoInteractions(mockEnvironment);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeEnvironmentAwareObjectWithNull() {
|
||||
|
||||
EnvironmentAware mockEnvironmentAware = mock(EnvironmentAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.environmentAwareObjectInitializer(null);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockEnvironmentAware);
|
||||
|
||||
verifyNoInteractions(mockEnvironmentAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonEnvironmentAwareObjectsWithEnvironment() {
|
||||
|
||||
Environment mockEnvironment = mock(Environment.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.environmentAwareObjectInitializer(mockEnvironment);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("MOCK");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
|
||||
verifyNoInteractions(mockEnvironment);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeResourceLoaderAwareObjectWithResourceLoader() {
|
||||
|
||||
ResourceLoader mockResourceLoader = mock(ResourceLoader.class);
|
||||
|
||||
ResourceLoaderAware mockResourceLoaderAware = mock(ResourceLoaderAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.resourceLoaderAwareObjectInitializer(mockResourceLoader);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(mockResourceLoaderAware);
|
||||
|
||||
verify(mockResourceLoaderAware, times(1)).setResourceLoader(eq(mockResourceLoader));
|
||||
verifyNoMoreInteractions(mockResourceLoaderAware);
|
||||
verifyNoInteractions(mockResourceLoader);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeResourceLoaderAwareObjectWithNull() {
|
||||
|
||||
ResourceLoaderAware mockResourceLoaderAware = mock(ResourceLoaderAware.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer = ObjectAwareUtils.resourceLoaderAwareObjectInitializer(null);
|
||||
|
||||
assertThat(objectAwareInitializer).isSameAs(ObjectAwareUtils.NO_OP);
|
||||
|
||||
objectAwareInitializer.accept(mockResourceLoaderAware);
|
||||
|
||||
verifyNoInteractions(mockResourceLoaderAware);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeNonResourceLoaderAwareObjectsWithResourceLoader() {
|
||||
|
||||
ResourceLoader mockResourceLoader = mock(ResourceLoader.class);
|
||||
|
||||
Consumer<Object> objectAwareInitializer =
|
||||
ObjectAwareUtils.resourceLoaderAwareObjectInitializer(mockResourceLoader);
|
||||
|
||||
assertThat(objectAwareInitializer).isNotNull();
|
||||
|
||||
objectAwareInitializer.accept(new Object());
|
||||
objectAwareInitializer.accept("TEST");
|
||||
objectAwareInitializer.accept(1234);
|
||||
objectAwareInitializer.accept(null);
|
||||
|
||||
verifyNoInteractions(mockResourceLoader);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user