blob: 6dcb7f9b7d6c5fd570a055a3779d119460f0cbd8 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2006, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0
* is available at http://www.opensource.org/licenses/apache2.0.php.
* You may elect to redistribute this code under either of these licenses.
*
* Contributors:
* VMware Inc.
*****************************************************************************/
package org.eclipse.gemini.blueprint.util;
import junit.framework.TestCase;
import org.eclipse.gemini.blueprint.context.ConfigurableOsgiBundleApplicationContext;
import org.eclipse.gemini.blueprint.context.DelegatedExecutionOsgiBundleApplicationContext;
import org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext;
import org.eclipse.gemini.blueprint.context.support.AbstractOsgiBundleApplicationContext;
import org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext;
import org.eclipse.gemini.blueprint.util.internal.ClassUtils;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.HierarchicalBeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.Lifecycle;
import org.springframework.context.MessageSource;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.AbstractRefreshableApplicationContext;
import org.springframework.core.env.EnvironmentCapable;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.Closeable;
import java.io.Serializable;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
import static org.eclipse.gemini.blueprint.util.internal.ClassUtils.ClassSet.ALL_CLASSES;
import static org.eclipse.gemini.blueprint.util.internal.ClassUtils.ClassSet.CLASS_HIERARCHY;
import static org.eclipse.gemini.blueprint.util.internal.ClassUtils.ClassSet.INTERFACES;
import static org.eclipse.gemini.blueprint.util.internal.ClassUtils.getClassHierarchy;
/**
* @author Costin Leau
* @author Olaf Otto
*/
public class ClassUtilsTest extends TestCase {
public void testAutoDetectClassesForPublishingDisabled() {
Class<?>[] resolved = getClassHierarchy(Integer.class, INTERFACES);
assertThat(resolved).hasSize(2);
}
public void testAutoDetectClassesForPublishingInterfaces() {
Class<?>[] resolved = getClassHierarchy(HashMap.class, INTERFACES);
assertThat(resolved).containsExactly(Map.class, Cloneable.class, Serializable.class);
}
public void testAutoDetectClassesForPublishingClassHierarchy() {
Class<?>[] resolved = getClassHierarchy(HashMap.class, CLASS_HIERARCHY);
assertThat(resolved).containsExactly(HashMap.class, AbstractMap.class);
}
public void testAutoDetectClassesForPublishingAll() {
Class<?>[] resolved = getClassHierarchy(HashMap.class, ALL_CLASSES);
assertThat(resolved).containsExactly(HashMap.class, Map.class, Cloneable.class, Serializable.class, AbstractMap.class);
}
public void testInterfacesHierarchy() {
Class<?>[] resolved = ClassUtils.getAllInterfaces(DelegatedExecutionOsgiBundleApplicationContext.class);
assertThat(resolved).containsExactly(ConfigurableOsgiBundleApplicationContext.class, ConfigurableApplicationContext.class,
ApplicationContext.class, Lifecycle.class, Closeable.class, EnvironmentCapable.class, ListableBeanFactory.class,
HierarchicalBeanFactory.class, MessageSource.class, ApplicationEventPublisher.class,
ResourcePatternResolver.class, BeanFactory.class, ResourceLoader.class, AutoCloseable.class);
}
public void testAppContextClassHierarchy() {
Class<?>[] resolved = getClassHierarchy(OsgiBundleXmlApplicationContext.class, ALL_CLASSES);
assertThat(resolved).containsExactly(
OsgiBundleXmlApplicationContext.class,
AbstractDelegatedExecutionApplicationContext.class,
DelegatedExecutionOsgiBundleApplicationContext.class,
ConfigurableOsgiBundleApplicationContext.class,
ConfigurableApplicationContext.class,
ApplicationContext.class,
Lifecycle.class,
Closeable.class,
EnvironmentCapable.class,
ListableBeanFactory.class,
HierarchicalBeanFactory.class,
MessageSource.class,
ApplicationEventPublisher.class,
ResourcePatternResolver.class,
BeanFactory.class,
ResourceLoader.class,
AutoCloseable.class,
AbstractOsgiBundleApplicationContext.class,
AbstractRefreshableApplicationContext.class,
AbstractApplicationContext.class,
DefaultResourceLoader.class
);
}
}