001 /*****************************************************************************
002 * Copyright (C) NanoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 *****************************************************************************/
009 package org.nanocontainer.script.xml;
010
011 import junit.framework.TestCase;
012 import org.w3c.dom.Document;
013 import org.xml.sax.InputSource;
014 import org.xml.sax.SAXException;
015
016 import javax.xml.parsers.DocumentBuilder;
017 import javax.xml.parsers.DocumentBuilderFactory;
018 import javax.xml.parsers.ParserConfigurationException;
019 import java.io.IOException;
020 import java.io.StringReader;
021
022 /**
023 * @author Paul Hammant
024 * @author Marcos Tarruella
025 */
026 public class BeanComponentInstanceFactoryTestCase extends TestCase {
027
028 public void testDeserialization() throws ParserConfigurationException, IOException, SAXException, ClassNotFoundException {
029 BeanComponentInstanceFactory factory = new BeanComponentInstanceFactory();
030
031 StringReader sr = new StringReader("" +
032 "<org.nanocontainer.script.xml.TestBean>" +
033 "<foo>10</foo>" +
034 "<bar>hello</bar>" +
035 "</org.nanocontainer.script.xml.TestBean>");
036 InputSource is = new InputSource(sr);
037 DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
038 Document doc = db.parse(is);
039
040 Object o = factory.makeInstance(null, doc.getDocumentElement(), Thread.currentThread().getContextClassLoader());
041 TestBean bean = (TestBean) o;
042 assertEquals("hello", bean.getBar());
043 assertEquals(10, bean.getFoo());
044 }
045
046 public void testDeserializationWithMappedName() throws ParserConfigurationException, IOException, SAXException, ClassNotFoundException {
047 BeanComponentInstanceFactory factory = new BeanComponentInstanceFactory();
048
049 StringReader sr = new StringReader("" +
050 "<org.nanocontainer.script.xml.TestBean>" +
051 "<any name='foo'>10</any>" +
052 "<bar>hello</bar>" +
053 "</org.nanocontainer.script.xml.TestBean>");
054 InputSource is = new InputSource(sr);
055 DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
056 Document doc = db.parse(is);
057
058 Object o = factory.makeInstance(null, doc.getDocumentElement(), Thread.currentThread().getContextClassLoader());
059 TestBean bean = (TestBean) o;
060 assertEquals("hello", bean.getBar());
061 assertEquals(10, bean.getFoo());
062 }
063 }