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 * Original code by Aslak Hellesoy and Paul Hammant * 009 *****************************************************************************/ 010 011 package org.nanocontainer.script.xml; 012 013 import org.nanocontainer.integrationkit.PicoCompositionException; 014 import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase; 015 import org.nanocontainer.testmodel.DefaultWebServerConfig; 016 import org.picocontainer.ComponentAdapter; 017 import org.picocontainer.PicoContainer; 018 import org.picocontainer.PicoException; 019 import org.picocontainer.PicoVerificationException; 020 import org.picocontainer.PicoVisitor; 021 import org.picocontainer.defaults.DefaultPicoContainer; 022 import org.xml.sax.SAXException; 023 024 import javax.xml.parsers.ParserConfigurationException; 025 import java.io.IOException; 026 import java.io.Reader; 027 import java.io.StringReader; 028 import java.util.Collection; 029 import java.util.List; 030 031 /** 032 * @author Maarten Grootendorst 033 * @version $Revision: 1731 $ 034 */ 035 036 // TODO to rename? 037 public class NonMutablePicoContainerContainerTestCase extends AbstractScriptedContainerBuilderTestCase { 038 039 private class TestPicoContainer implements PicoContainer { 040 public Object getComponentInstance(Object componentKey) { 041 return null; 042 } 043 044 public Object getComponentInstanceOfType(Class componentType) { 045 return null; 046 } 047 048 public List getComponentInstances() { 049 return null; 050 } 051 052 public PicoContainer getParent() { 053 return null; 054 } 055 056 public ComponentAdapter getComponentAdapter(Object componentKey) { 057 return null; 058 } 059 060 public ComponentAdapter getComponentAdapterOfType(Class componentType) { 061 return null; 062 } 063 064 public Collection getComponentAdapters() { 065 return null; 066 } 067 068 /** 069 * @deprecated since 1.1 - Use new VerifyingVisitor().traverse(this) 070 */ 071 public void verify() throws PicoVerificationException { 072 } 073 074 public void addOrderedComponentAdapter(ComponentAdapter componentAdapter) { 075 } 076 077 public List getComponentInstancesOfType(Class type) throws PicoException { 078 return null; 079 } 080 081 public void accept(PicoVisitor containerVisitor) { 082 } 083 084 public List getComponentAdaptersOfType(Class componentType) { 085 return null; 086 } 087 088 public void start() { 089 } 090 091 public void stop() { 092 } 093 094 public void dispose() { 095 } 096 097 } 098 099 public void testCreateSimpleContainerWithPicoContainer() throws ParserConfigurationException, SAXException, IOException, ClassNotFoundException, PicoCompositionException { 100 Reader script = new StringReader("" + 101 "<container>" + 102 " <component-implementation class='org.nanocontainer.testmodel.DefaultWebServerConfig'/>" + 103 " <component-implementation key='org.nanocontainer.testmodel.WebServer' class='org.nanocontainer.testmodel.WebServerImpl'/>" + 104 "</container>"); 105 106 PicoContainer pico = buildContainer(new XMLContainerBuilder(script, getClass().getClassLoader()), new TestPicoContainer(), "SOME_SCOPE"); 107 assertEquals(2, pico.getComponentInstances().size()); 108 assertNotNull(pico.getComponentInstance(DefaultWebServerConfig.class)); 109 } 110 111 public void testCreateSimpleContainerWithMutablePicoContainer() throws ParserConfigurationException, SAXException, IOException, ClassNotFoundException, PicoCompositionException { 112 Reader script = new StringReader("" + 113 "<container>" + 114 " <component-implementation class='org.nanocontainer.testmodel.DefaultWebServerConfig'/>" + 115 " <component-implementation key='org.nanocontainer.testmodel.WebServer' class='org.nanocontainer.testmodel.WebServerImpl'/>" + 116 "</container>"); 117 118 PicoContainer pico = buildContainer(new XMLContainerBuilder(script, getClass().getClassLoader()), new DefaultPicoContainer(), "SOME_SCOPE"); 119 assertEquals(2, pico.getComponentInstances().size()); 120 assertNotNull(pico.getComponentInstance(DefaultWebServerConfig.class)); 121 assertNotNull(pico.getParent()); 122 123 } 124 }