/******************************************************************************
* 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.blueprint.config;
import java.net.URL;
import java.util.Date;
import java.util.Locale;
import junit.framework.TestCase;
import org.eclipse.gemini.blueprint.blueprint.TestComponent;
import org.eclipse.gemini.blueprint.blueprint.container.SpringBlueprintContainer;
import org.eclipse.gemini.blueprint.blueprint.container.SpringBlueprintConverterService;
import org.eclipse.gemini.blueprint.context.support.PublicBlueprintDocumentLoader;
import org.osgi.service.blueprint.container.BlueprintContainer;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.ClassPathResource;
/**
*
* @author Costin Leau
*/
public class ConstructorInjectionTest extends TestCase {
private static final String CONFIG = "blueprint-construct-inject.xml";
private GenericApplicationContext context;
private XmlBeanDefinitionReader reader;
private BlueprintContainer container;
protected void setUp() throws Exception {
context = new GenericApplicationContext();
context.setClassLoader(getClass().getClassLoader());
reader = new XmlBeanDefinitionReader(context);
reader.setDocumentLoader(new PublicBlueprintDocumentLoader());
reader.loadBeanDefinitions(new ClassPathResource(CONFIG, getClass()));
context.getBeanFactory().setConversionService(new SpringBlueprintConverterService(null, context.getBeanFactory()));
context.refresh();
container = new SpringBlueprintContainer(context);
}
protected void tearDown() throws Exception {
context.close();
context = null;
}
private TestComponent getComponent(String name) {
return context.getBean(name, TestComponent.class);
}
private <T> T getPropA(String name) {
TestComponent tc = getComponent(name);
return (T) tc.getPropA();
}
public void tstCtrAssign() throws Exception {
Object propA = getPropA("constructorAssign");
}
public void testCharArray() throws Exception {
Object propA = getPropA("compWrappedCharArray");
assertTrue(propA instanceof Character[]);
}
public void testPrimitiveShortArray() throws Exception {
Object propA = getPropA("compPrimShortArray");
assertTrue(propA instanceof short[]);
}
public void testDateArray() throws Exception {
Date[] array = getPropA("compDateArray");
Date date = new Date("19 Feb 2009");
assertEquals(array[0], date);
}
public void testURLArray() throws Exception {
URL[] array = getPropA("compURLArray");
assertEquals(2, array.length);
}
public void testClassArray() throws Exception {
Class<?>[] propA = getPropA("compClassArray");
assertEquals(String.class, propA[0]);
}
public void testLocaleArray() throws Exception {
Locale[] propA = getPropA("compLocaleArray");
assertEquals(Locale.US, propA[0]);
}
public void testPrimitiveConstructor() throws Exception {
try {
Object component = context.getBean("primToWrapperArg");
fail("Expected an ambuigity exception");
} catch (Exception ex) {
// expected
}
}
public void testPrimitiveFactoryMethod() throws Exception {
try {
Object component = context.getBean("primToWrapperFactory");
fail("Expected an ambuigity exception");
} catch (Exception ex) {
// expected
}
}
public void testNestedValue() throws Exception {
Object component = context.getBean("nestedURLValue");
}
public void testNestedValueFactory() throws Exception {
Object component = context.getBean("nestedURLValueFactory");
}
public void testEmptyArray() throws Exception {
Object component = context.getBean("emptyArrayConstruct");
}
public void testCollectionConversion() throws Exception {
try {
Object component = context.getBean("collectionConflict");
fail("Expected an ambuigity exception");
} catch (Exception ex) {
// expected
}
}
public void testCompProperties() throws Exception {
Object component = context.getBean("compProperties");
}
}