[CVS nano] Commented out and/or removed a whole lot of things that aren't needed anymore:

Aslak Hellesoy <rinkrank-yCVjj/[email protected]> Mon, 19 Jan 2004 14:40:25 -0600
Newsgroups gmane.comp.java.nanocontainer.cvs
Message-ID <[email protected]>
Commit in nano/src on MAIN

test/org/nanocontainer/BespokeNanoRhinoScriptable.java +18 -18 1.6 -> 1.7

/BespokeXmlFrontEnd.java -39 1.8 removed

/JavaScriptCompositionNanoContainerTestCase.java -162 1.4 removed

/JythonCompositionNanoContainerTestCase.java -113 1.6 removed

/XmlCompositionNanoContainerTestCase.java -248 1.7 removed

java/org/nanocontainer/JavaScriptCompositionNanoContainer.java +46 -42 1.5 -> 1.6

/JythonCompositionNanoContainer.java +45 -41 1.3 -> 1.4

/Main.java +62 -19 1.5 -> 1.6

/NanoContainer.java +77 -85 1.13 -> 1.14

/NanoContainerMonitor.java +5 -1 1.2 -> 1.3

/XmlCompositionNanoContainer.java +74 -85 1.4 -> 1.5

+327 -853

4 removed + 7 modified, total 11 files

- TODO can we deprecate this in favour of some sort of InvocationInterceptor

Commented out and/or removed a whole lot of things that aren't needed anymore:

-lifecycle support for children is in picoconainer
-all the scripting stuff is in picoextras

----------

nano /src /test /org /nanocontainer

BespokeNanoRhinoScriptable.java 1.6 -> 1.7

diff -u -r1.6 -r1.7
--- BespokeNanoRhinoScriptable.java 24 Dec 2003 00:34:25 -0000 1.6
+++ BespokeNanoRhinoScriptable.java 19 Jan 2004 20:40:24 -0000 1.7
@@ -16,23 +16,23 @@

public class BespokeNanoRhinoScriptable extends PicoScriptable {

- public static boolean used;
-
- public BespokeNanoRhinoScriptable() {
- used = true;
- }
-
- public static Object jsConstructor(Context cx, Object[] args, Function ctorObj, boolean inNewExpr) {
- return PicoScriptable.jsConstructor(cx, args, ctorObj, inNewExpr);
- }
-
- public static void jsFunction_registerComponentImplementation(Context cx, Scriptable thisObj, Object[] args, Function funObj)
- throws ClassNotFoundException {
- PicoScriptable.jsFunction_registerComponentImplementation(cx, thisObj, args, funObj);
- }
-
- public static void jsFunction_addParent(Context cx, Scriptable thisObj, Object[] args, Function funObj) {
- PicoScriptable.jsFunction_addParent(cx, thisObj, args, funObj);
- }

+// public static boolean used;
+//
+// public BespokeNanoRhinoScriptable() {
+// used = true;
+// }
+//
+// public static Object jsConstructor(Context cx, Object[] args, Function ctorObj, boolean inNewExpr) {
+// return PicoScriptable.jsConstructor(cx, args, ctorObj, inNewExpr);
+// }
+//
+// public static void jsFunction_registerComponentImplementation(Context cx, Scriptable thisObj, Object[] args, Function funObj)
+// throws ClassNotFoundException {
+// PicoScriptable.jsFunction_registerComponentImplementation(cx, thisObj, args, funObj);
+// }
+//
+// public static void jsFunction_addParent(Context cx, Scriptable thisObj, Object[] args, Function funObj) {
+// PicoScriptable.jsFunction_addParent(cx, thisObj, args, funObj);
+// }

}

----------

nano /src /test /org /nanocontainer

BespokeXmlFrontEnd.java removed after 1.8

diff -N BespokeXmlFrontEnd.java
--- BespokeXmlFrontEnd.java 22 Nov 2003 17:44:08 -0000 1.8
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,39 +0,0 @@

-/*****************************************************************************
- * Copyright (C) NanoContainer Organization. All rights reserved. *
- * ------------------------------------------------------------------------- *
- * The software in this package is published under the terms of the BSD *
- * style license a copy of which has been included with this distribution in *
- * the LICENSE.txt file. *
- * *
- *****************************************************************************/
-package org.nanocontainer;
-
-import org.picoextras.script.xml.DefaultXmlFrontEnd;
-import org.picoextras.script.xml.XmlFrontEnd;
-import org.picocontainer.MutablePicoContainer;
-import org.picoextras.script.PicoCompositionException;
-import org.picocontainer.PicoContainer;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import java.io.IOException;
-
-public class BespokeXmlFrontEnd implements XmlFrontEnd {
-
- private DefaultXmlFrontEnd xmlFrontEnd;
- public static boolean used;
-
- public BespokeXmlFrontEnd() {
- xmlFrontEnd = new DefaultXmlFrontEnd();
- }
-
- public PicoContainer createPicoContainer(Element rootElement, MutablePicoContainer mutablePicoContainer) throws IOException, SAXException, ClassNotFoundException, PicoCompositionException {
- used = true;
- return xmlFrontEnd.createPicoContainer(rootElement, mutablePicoContainer);
- }
-
- public PicoContainer createPicoContainer(Element rootElement) throws IOException, SAXException, ClassNotFoundException, PicoCompositionException {
- used = true;
- return xmlFrontEnd.createPicoContainer(rootElement);
- }
-}

----------

nano /src /test /org /nanocontainer

JavaScriptCompositionNanoContainerTestCase.java removed after 1.4

diff -N JavaScriptCompositionNanoContainerTestCase.java
--- JavaScriptCompositionNanoContainerTestCase.java 24 Dec 2003 00:34:25 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,162 +0,0 @@

-/*****************************************************************************
- * Copyright (C) NanoContainer Organization. All rights reserved. *
- * ------------------------------------------------------------------------- *
- * The software in this package is published under the terms of the BSD *
- * style license a copy of which has been included with this distribution in *
- * the LICENSE.txt file. *
- * *
- *****************************************************************************/
-package org.nanocontainer;
-
-import junit.framework.ComparisonFailure;
-import junit.framework.TestCase;
-import org.mozilla.javascript.EcmaError;
-import org.picoextras.testmodel.WebServerConfig;
-import org.picoextras.script.PicoCompositionException;
-import org.picocontainer.defaults.NoSatisfiableConstructorsException;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-
-/**
- * @author Aslak Helles&oslash;y
- * @author Paul Hammant
- * @author Ward Cunningham
- * @version $Revision: 1.4 $
- */
-public class JavaScriptCompositionNanoContainerTestCase extends TestCase {
-
- protected void setUp() throws Exception {
- MockMonitor.monitorRecorder = "";
- MockMonitor.allComps = new ArrayList();
- Xxx.componentRecorder = "";
- }
-
- public void testInstantiateBasicRhinoScriptable() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new StringReader("" +
- "var parentContainer = new PicoScriptable();\n" +
- "with (parentContainer) {\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$A');\n" +
- "}\n" +
- "pico.setPicoScriptable(parentContainer)\n"
- ), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- assertEquals("Should match the expression", "<AA>!A", Xxx.componentRecorder);
- }
-
- public void testInstantiateBespokeRhinoScriptable() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new StringReader("" +
- "var parentContainer = new PicoScriptable();\n" +
- "with (parentContainer) {\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$A');\n" +
- "}\n" +
- "pico.setPicoScriptable(parentContainer)\n"
- ), new MockMonitor(), BespokeNanoRhinoScriptable.class);
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- assertEquals("Should match the expression", "<AA>!A", Xxx.componentRecorder);
- }
-
- public void testInstantiateBogusRhinoScriptable() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- try {
- new JavaScriptCompositionNanoContainer(new StringReader("" +
- "var parentContainer = new PicoScriptable();\n" +
- "with (parentContainer) {\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$A');\n" +
- "}\n" +
- "pico.setPicoScriptable(parentContainer)\n"
- ), new MockMonitor(), BogusNanoRhinoScriptable.class);
- fail("Should have barfed with EcmaError");
- } catch (EcmaError e) {
- // expected
- }
- }
-
-
- public void testInstantiateWithChildContainer() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- // A and C have no no dependancies. B Depends on A.
-
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new StringReader("" +
- "var parentContainer = new PicoScriptable();\n" +
- "with (parentContainer) {\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$A');\n" +
- " var childContainer = new PicoScriptable();\n" +
- " with (childContainer) {\n" +
- " addParent(parentContainer);\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$B');\n" +
- " }\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$C');\n" +
- "}\n" +
- "pico.setPicoScriptable(parentContainer)\n"
- ), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- //TODO - this works differently under Maven to IDEA
- // needs attention!
-
- try {
- assertEquals("Should match the expression", "<A<C<BB>C>A>!B!C!A", Xxx.componentRecorder);
- } catch (ComparisonFailure e) {
- assertEquals("Should match the expression", "<C<A<BB>A>C>!B!A!C", Xxx.componentRecorder);
- }
-
- try {
- assertEquals("Should match the expression", "*A*B+A_started+B_started+B_stopped+A_stopped+B_disposed+A_disposed", MockMonitor.monitorRecorder);
- } catch (ComparisonFailure e) {
- assertEquals("Should match the expression", "*C*B+C_started+B_started+B_stopped+C_stopped+B_disposed+C_disposed", MockMonitor.monitorRecorder);
- }
- }
-
- public void testInstantiateWithImpossibleComponentDependanciesConsideringTheHierarchy() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- // A and C have no no dependancies. B Depends on A.
-
- try {
- new JavaScriptCompositionNanoContainer(new StringReader("" +
- "var parentContainer = new PicoScriptable();\n" +
- "with (parentContainer) {\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$B');\n" +
- " var childContainer = new PicoScriptable();\n" +
- " with (childContainer) {\n" +
- " addParent(parentContainer);\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$A');\n" +
- " }\n" +
- " registerComponentImplementation('org.nanocontainer.Xxx$C');\n" +
- "}\n" +
- "pico.setPicoScriptable(parentContainer)\n"
- ), new MockMonitor());
- fail("Should not have been able to instansiate component tree due to visibility/parent reasons.");
- } catch (NoSatisfiableConstructorsException e) {
- }
- }
-
- public void testInstantiateWithInlineConfiguration() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new StringReader("" +
- "var parentContainer = new PicoScriptable();\n" +
- "with (parentContainer) {\n" +
- " var pc = new Packages.org.picoextras.testmodel.WebServerConfigBean();\n" +
- " pc.setHost('foobar.com');\n" +
- " pc.setPort(4321);\n" +
- " registerComponentInstance(pc);\n" +
- " registerComponentImplementation('org.picoextras.testmodel.WebServer','" + XmlCompositionNanoContainerTestCase.OverriddenWebServerImpl.class.getName() + "');\n" +
- "}\n" +
- "pico.setPicoScriptable(parentContainer)\n"
- ), new MockMonitor());
-
- assertEquals("WebServerConfigBean and WebServerImpl expected", 2, nano.getRootContainer().getComponentInstances().size());
- WebServerConfig wsc = (WebServerConfig) nano.getRootContainer().getComponentInstance(WebServerConfig.class);
- assertEquals("foobar.com", wsc.getHost());
- assertEquals(4321, wsc.getPort());
- }
-
-}

----------

nano /src /test /org /nanocontainer

JythonCompositionNanoContainerTestCase.java removed after 1.6

diff -N JythonCompositionNanoContainerTestCase.java
--- JythonCompositionNanoContainerTestCase.java 24 Dec 2003 00:34:25 -0000 1.6
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,113 +0,0 @@

-/*****************************************************************************
- * Copyright (C) NanoContainer Organization. All rights reserved. *
- * ------------------------------------------------------------------------- *
- * The software in this package is published under the terms of the BSD *
- * style license a copy of which has been included with this distribution in *
- * the LICENSE.txt file. *
- * *
- *****************************************************************************/
-package org.nanocontainer;
-
-import junit.framework.ComparisonFailure;
-import junit.framework.TestCase;
-import org.picoextras.testmodel.WebServerConfig;
-import org.picoextras.script.PicoCompositionException;
-import org.picocontainer.defaults.NoSatisfiableConstructorsException;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-
-/**
- * @author Aslak Helles&oslash;y
- * @author Paul Hammant
- * @author Ward Cunningham
- * @author Mike Royle
- * @version $Revision: 1.6 $
- */
-public class JythonCompositionNanoContainerTestCase extends TestCase {
-
- protected void setUp() throws Exception {
- MockMonitor.monitorRecorder = "";
- MockMonitor.allComps = new ArrayList();
- Xxx.componentRecorder = "";
- }
-
- public void testInstantiateBasicRhinoScriptable() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = new JythonCompositionNanoContainer(new StringReader("" +
- "rootContainer.registerComponentImplementation('org.nanocontainer.Xxx$A')\n"
- ), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- assertEquals("Should match the expression", "<AA>!A", Xxx.componentRecorder);
- }
-
- public void testInstantiateWithChildContainer() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- // A and C have no no dependancies. B Depends on A.
-
- NanoContainer nano = new JythonCompositionNanoContainer(new StringReader("" +
- "rootContainer.registerComponentImplementation('org.nanocontainer.Xxx$A')\n" +
- "childContainer = DefaultReflectionFrontEnd()\n" +
- "rootContainer.getPicoContainer().addChild(childContainer.getPicoContainer())\n" +
- "childContainer.registerComponentImplementation('org.nanocontainer.Xxx$B')\n" +
- "rootContainer.registerComponentImplementation('org.nanocontainer.Xxx$C')\n"
- ), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- //TODO - this works differently under Maven to IDEA
- // needs attention!
-
- try {
- assertEquals("Should match the expression", "<A<C<BB>C>A>!B!C!A", Xxx.componentRecorder);
- } catch (ComparisonFailure e) {
- assertEquals("Should match the expression", "<C<A<BB>A>C>!B!A!C", Xxx.componentRecorder);
- }
-
- try {
- assertEquals("Should match the expression", "*A*B+A_started+B_started+B_stopped+A_stopped+B_disposed+A_disposed", MockMonitor.monitorRecorder);
- } catch (ComparisonFailure e) {
- assertEquals("Should match the expression", "*C*B+C_started+B_started+B_stopped+C_stopped+B_disposed+C_disposed", MockMonitor.monitorRecorder);
- }
-
-
- }
-
- public void testInstantiateWithImpossibleComponentDependanciesConsideringTheHierarchy() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- // A and C have no no dependancies. B Depends on A.
-
- try {
- new JythonCompositionNanoContainer(new StringReader("" +
- "rootContainer.registerComponentImplementation('org.nanocontainer.Xxx$B')\n" +
- "childContainer = DefaultReflectionFrontEnd()\n" +
- "rootContainer.getPicoContainer().addChild(childContainer.getPicoContainer())\n" +
- "childContainer.registerComponentImplementation('org.nanocontainer.Xxx$A')\n" +
- "rootContainer.registerComponentImplementation('org.nanocontainer.Xxx$C')\n"
- ), new MockMonitor());
- fail("Should not have been able to instansiate component tree due to visibility/parent reasons.");
- } catch (NoSatisfiableConstructorsException e) {
- }
- }
-
- public void testInstantiateWithInlineConfiguration() throws IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = new JythonCompositionNanoContainer(new StringReader("" +
- "from org.picoextras.testmodel import WebServerConfigBean\n" +
- "wsc = WebServerConfigBean()\n" +
- "wsc.setHost('foobar.com')\n" +
- "wsc.setPort(4321)\n" +
- "rootContainer.getPicoContainer().registerComponentInstance(wsc)\n" +
- "rootContainer.registerComponentImplementation('org.picoextras.testmodel.WebServer','" + XmlCompositionNanoContainerTestCase.OverriddenWebServerImpl.class.getName() + "')\n"
- ), new MockMonitor());
-
- assertEquals("WebServerConfigBean and WebServerImpl expected", 2, nano.getRootContainer().getComponentInstances().size());
- WebServerConfig wsc = (WebServerConfig) nano.getRootContainer().getComponentInstance(WebServerConfig.class);
- assertEquals("foobar.com", wsc.getHost());
- assertEquals(4321, wsc.getPort());
- }
-
-}

----------

nano /src /test /org /nanocontainer

XmlCompositionNanoContainerTestCase.java removed after 1.7

diff -N XmlCompositionNanoContainerTestCase.java
--- XmlCompositionNanoContainerTestCase.java 24 Dec 2003 00:34:25 -0000 1.7
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,248 +0,0 @@

-/*****************************************************************************
- * Copyright (C) NanoContainer Organization. All rights reserved. *
- * ------------------------------------------------------------------------- *
- * The software in this package is published under the terms of the BSD *
- * style license a copy of which has been included with this distribution in *
- * the LICENSE.txt file. *
- * *
- *****************************************************************************/
-package org.nanocontainer;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import org.picoextras.testmodel.DefaultWebServerConfig;
-import org.picoextras.testmodel.WebServerConfig;
-import org.picoextras.testmodel.WebServerImpl;
-import org.picoextras.script.PicoCompositionException;
-import org.picocontainer.defaults.AmbiguousComponentResolutionException;
-import org.picocontainer.defaults.DefaultComponentAdapterFactory;
-import org.picocontainer.defaults.NoSatisfiableConstructorsException;
-import org.picocontainer.defaults.DefaultPicoContainer;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * @author Aslak Helles&oslash;y
- * @author Paul Hammant
- * @author Ward Cunningham
- * @version $Revision: 1.7 $
- */
-public class XmlCompositionNanoContainerTestCase extends TestCase {
-
- protected void setUp() throws Exception {
- MockMonitor.monitorRecorder = "";
- MockMonitor.allComps = new ArrayList();
- }
-
- public void testInstantiateBasicTree() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- // A and C have no no dependancies. B Depends on A.
-
- NanoContainer nano = new XmlCompositionNanoContainer(new StringReader("" +
- "<container>" +
- " <component class='org.nanocontainer.Xxx$A'/>" +
- " <container>" +
- " <component class='org.nanocontainer.Xxx$B'/>" +
- " </container>" +
- " <component class='org.nanocontainer.Xxx$C'/>" +
- "</container>"), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- assertEquals("Should match the expression", "<A<C<BB>C>A>!B!C!A", Xxx.componentRecorder);
- assertEquals("Should match the expression", "*A*B+A_started+B_started+B_stopped+A_stopped+B_disposed+A_disposed", MockMonitor.monitorRecorder);
- }
-
- public void testInstantiateXmlWithImpossibleComponentDependanciesConsideringTheHierarchy()
- throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- // A and C have no no dependancies. B Depends on A.
-
- try {
- new XmlCompositionNanoContainer(new StringReader("" +
- "<container>" +
- " <container>" +
- " <component class='org.nanocontainer.Xxx$A'/>" +
- " </container>" +
- " <component class='org.nanocontainer.Xxx$B'/>" +
- " <component class='org.nanocontainer.Xxx$C'/>" +
- "</container>"), new MockMonitor());
- fail("Should not have been able to instansiate component tree due to visibility/parent reasons.");
- } catch (NoSatisfiableConstructorsException e) {
- //expected
- }
- }
-
-
- public void testInstantiateWithBespokeXmlFrontEnd() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- BespokeXmlFrontEnd.used = false;
-
- NanoContainer nano = new XmlCompositionNanoContainer(new StringReader("" +
- "<container xmlfrontend='org.nanocontainer.BespokeXmlFrontEnd'>" +
- " <component class='org.nanocontainer.Xxx$A'/>" +
- "</container>"), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- assertTrue("Bespoke Front End (a test class) should have been used", BespokeXmlFrontEnd.used);
- }
-
- public void testInstantiateWithBespokeComponentAdaptor() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- OverriddenComponentAdapterFactory.used = false;
-
- NanoContainer nano = null;
- nano = new XmlCompositionNanoContainer(new StringReader("" +
- "<container componentadaptor='" + OverriddenComponentAdapterFactory.class.getName() + "'>" +
- " <component typekey='org.picoextras.testmodel.WebServerConfig' class='org.picoextras.testmodel.DefaultWebServerConfig'/>" +
- "</container>"), new MockMonitor());
-
- Object wsc = nano.getRootContainer().getComponentInstance(WebServerConfig.class);
-
- assertTrue(wsc instanceof WebServerConfig);
- assertTrue(OverriddenComponentAdapterFactory.used);
-
- }
-
- public static class OverriddenComponentAdapterFactory extends DefaultComponentAdapterFactory {
- public static boolean used = false;
-
- public OverriddenComponentAdapterFactory() {
- used = true;
- }
- }
-
- public void testInstantiateWithXStreamComponentConfiguration() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = null;
- nano = new XmlCompositionNanoContainer(new StringReader("" +
- "<container>" +
- " <pseudocomponent factory='org.picoextras.script.xml.XStreamXmlPseudoComponentFactory'>" +
- " <org.picoextras.testmodel.WebServerConfigStub>" +
- " <host>foobar.com</host> " +
- " <port>4321</port> " +
- " </org.picoextras.testmodel.WebServerConfigStub>" +
- " </pseudocomponent>" +
- " <component typekey='org.picoextras.testmodel.WebServer' " +
- " class='org.picoextras.testmodel.WebServerImpl'/>" +
- "</container>"), new MockMonitor());
-
- assertEquals("WebServerConfigBean and WebServerImpl expected", 2, nano.getRootContainer().getComponentInstances().size());
- WebServerConfig wsc = (WebServerConfig) nano.getRootContainer().getComponentInstance(WebServerConfig.class);
- assertEquals("foobar.com", wsc.getHost());
- assertEquals(4321, wsc.getPort());
- }
-
- public void testInstantiateWithBeanComponentConfiguration() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- NanoContainer nano = null;
- nano = new XmlCompositionNanoContainer(new StringReader("" +
- "<container>" +
- " <pseudocomponent factory='org.picoextras.script.xml.BeanXmlPseudoComponentFactory'>" +
- " <org.picoextras.testmodel.WebServerConfigBean>" +
- " <host>foobar.com</host> " +
- " <port>4321</port> " +
- " </org.picoextras.testmodel.WebServerConfigBean>" +
- " </pseudocomponent>" +
- " <component typekey='org.picoextras.testmodel.WebServer' " +
- " class='org.picoextras.testmodel.WebServerImpl'/>" +
- "</container>"), new MockMonitor());
-
- assertEquals("WebServerConfigBean and WebServerImpl expected", 2, nano.getRootContainer().getComponentInstances().size());
- WebServerConfig wsc = (WebServerConfig) nano.getRootContainer().getComponentInstance(WebServerConfig.class);
- assertEquals("foobar.com", wsc.getHost());
- assertEquals(4321, wsc.getPort());
- }
-
- public void testInstantiateWithBogusXmlFrontEnd() throws SAXException, ParserConfigurationException, IOException, PicoCompositionException {
-
- try {
- new XmlCompositionNanoContainer(new StringReader("" +
- "<container xmlfrontend='YeeeeeHaaaaa'>" +
- " <component classname='org.nanocontainer.Xxx$A'/>" +
- "</container>"), new MockMonitor());
- fail("Should have barfed with PicoCompositionException");
- } catch (PicoCompositionException e) {
- }
-
- }
-
- public void testInstantiateWithBespokeContainer() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- OverriddenPicoContainer.used = false;
-
- NanoContainer nano = new XmlCompositionNanoContainer(new StringReader("" +
- "<container container='" + OverriddenPicoContainer.class.getName() + "'>" +
- " <component class='org.nanocontainer.Xxx$A'/>" +
- "</container>"), new MockMonitor());
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
-
- assertTrue("Bespoke Container (a test class) should have been used", OverriddenPicoContainer.used);
- assertEquals("Should match the expression", "*A+A_started+A_stopped+A_disposed", MockMonitor.monitorRecorder);
-
- }
-
- public void testInstantiateWithBogusContainer() throws SAXException, ParserConfigurationException, IOException, PicoCompositionException {
-
- try {
- new XmlCompositionNanoContainer(new StringReader("" +
- "<container container='YeeeHaaaaa'>" +
- " <component classname='org.nanocontainer.Xxx$A'/>" +
- "</container>"), new MockMonitor());
- fail("Should have barfed with PicoCompositionException");
- } catch (PicoCompositionException e) {
- }
-
- }
-
- public static class OverriddenPicoContainer extends DefaultPicoContainer {
-
- public static boolean used;
-
- public OverriddenPicoContainer() {
- used = true;
- }
- }
-
- public static class OverriddenWebServerImpl extends WebServerImpl {
- public OverriddenWebServerImpl(WebServerConfig wsc) {
- super(wsc);
- Assert.assertTrue(wsc instanceof WebServerConfig);
- Assert.assertFalse(wsc instanceof DefaultWebServerConfig);
- }
- }
-
- public void testInstantiateWithHintedComponentResolution() throws SAXException, ParserConfigurationException, IOException, ClassNotFoundException, PicoCompositionException {
-
- try {
- new XmlCompositionNanoContainer(new StringReader("" +
- "<container>" +
- " <component stringkey='one' class='java.util.ArrayList'/>" +
- " <component stringkey='two' class='java.util.Vector'/>" +
- " <component class='" + CollectionNeedingComponent.class.getName() + "'>" +
- " <hint stringkey='one'/>" +
- " </component>" +
- "</container>"), new MockMonitor());
- } catch (AmbiguousComponentResolutionException e) {
- //TODO - This should work not barf.
- }
-
- }
-
- public static class CollectionNeedingComponent {
- public CollectionNeedingComponent(Collection col) {
- if (col == null) {
- throw new NullPointerException();
- }
- }
- }
-
-
-}

----------

nano /src /java /org /nanocontainer

JavaScriptCompositionNanoContainer.java 1.5 -> 1.6

diff -u -r1.5 -r1.6
--- JavaScriptCompositionNanoContainer.java 24 Dec 2003 00:34:25 -0000 1.5
+++ JavaScriptCompositionNanoContainer.java 19 Jan 2004 20:40:24 -0000 1.6
@@ -9,54 +9,58 @@

package org.nanocontainer;

import org.picoextras.script.rhino.PicoScriptable;

-import org.picoextras.script.rhino.PicoManager;
-import org.picoextras.script.PicoCompositionException;

+import org.picoextras.script.rhino.JavascriptContainerAssembler;
+import org.picoextras.integrationkit.PicoAssemblyException;
+import org.picoextras.integrationkit.PicoAssemblyException;

import org.picocontainer.PicoContainer;
import org.mozilla.javascript.JavaScriptException;

import java.io.IOException;
import java.io.Reader;
import java.io.FileReader;

-

+/**
+ * @deprecated All this Javascript stuff is moved to PicoExtras-Script. We should avoid parallel
+ * class hierarchies and use Dependency Injection instead ;-)
+ */

public class JavaScriptCompositionNanoContainer extends NanoContainer {

- private final Class nanoRhinoScriptableClass;
- private final Reader script;
-
- public JavaScriptCompositionNanoContainer(Reader script, NanoContainerMonitor monitor, Class nanoRhinoScriptableClass)
- throws PicoCompositionException{
- super(monitor);
- this.nanoRhinoScriptableClass = nanoRhinoScriptableClass;
- this.script = script;
- init();
- }
-
- public JavaScriptCompositionNanoContainer(Reader script, NanoContainerMonitor monitor)
- throws PicoCompositionException{
- this(script, monitor, PicoScriptable.class);
- }
-
- public JavaScriptCompositionNanoContainer(Reader script)
- throws PicoCompositionException{
- this(script, new NullNanoContainerMonitor());
- }
-
- protected PicoContainer createPicoContainer() throws PicoCompositionException {
- try {
- return new PicoManager().execute(nanoRhinoScriptableClass, script);
- } catch (IOException e) {
- throw new PicoCompositionException(e);
- } catch (JavaScriptException e) {
- throw new PicoCompositionException(e);
- }
- }
-
- public static void main(String[] args) throws Exception {
- String nanoContainerJs = args[0];
- if (nanoContainerJs == null) {
- nanoContainerJs = "composition/components.js";
- }
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new FileReader(nanoContainerJs));
- nano.addShutdownHook();
- }

+// private final Class nanoRhinoScriptableClass;
+// private final Reader script;
+//
+// public JavaScriptCompositionNanoContainer(Reader script, NanoContainerMonitor monitor, Class nanoRhinoScriptableClass)
+// throws PicoAssemblyException{
+// super(monitor);
+// this.nanoRhinoScriptableClass = nanoRhinoScriptableClass;
+// this.script = script;
+// init();
+// }
+//
+// public JavaScriptCompositionNanoContainer(Reader script, NanoContainerMonitor monitor)
+// throws PicoAssemblyException{
+// this(script, monitor, PicoScriptable.class);
+// }
+//
+// public JavaScriptCompositionNanoContainer(Reader script)
+// throws PicoAssemblyException{
+// this(script, new NullNanoContainerMonitor());
+// }
+//
+// protected PicoContainer createPicoContainer() throws PicoAssemblyException {
+// try {
+// return new JavascriptContainerAssembler().execute(nanoRhinoScriptableClass, script);
+// } catch (IOException e) {
+// throw new PicoAssemblyException(e);
+// } catch (JavaScriptException e) {
+// throw new PicoAssemblyException(e);
+// }
+// }
+//
+// public static void main(String[] args) throws Exception {
+// String nanoContainerJs = args[0];
+// if (nanoContainerJs == null) {
+// nanoContainerJs = "composition/components.js";
+// }
+// NanoContainer nano = new JavaScriptCompositionNanoContainer(new FileReader(nanoContainerJs));
+// nano.addShutdownHook();
+// }

}

----------

nano /src /java /org /nanocontainer

JythonCompositionNanoContainer.java 1.3 -> 1.4

diff -u -r1.3 -r1.4
--- JythonCompositionNanoContainer.java 22 Nov 2003 17:44:08 -0000 1.3
+++ JythonCompositionNanoContainer.java 19 Jan 2004 20:40:24 -0000 1.4
@@ -8,9 +8,10 @@

*****************************************************************************/
package org.nanocontainer;

-import org.picoextras.reflection.DefaultReflectionFrontEnd;
-import org.picoextras.reflection.ReflectionFrontEnd;
-import org.picoextras.script.PicoCompositionException;

+import org.picoextras.reflection.DefaultReflectionContainerAdapter;
+import org.picoextras.reflection.ReflectionContainerAdapter;
+import org.picoextras.integrationkit.PicoAssemblyException;
+import org.picoextras.integrationkit.PicoAssemblyException;

import org.picocontainer.PicoContainer;
import org.python.util.PythonInterpreter;

@@ -23,44 +24,47 @@

* @author Paul Hammant
* @author Mike Royle
* @author Aslak Helles&oslash;y

+ *
+ * @deprecated All this Jython stuff is moved to PicoExtras-Script. We should avoid parallel
+ * class hierarchies and use Dependency Injection instead ;-)

*/
public class JythonCompositionNanoContainer extends NanoContainer {

-
- private ReflectionFrontEnd reflectionRootContainer;
- private PythonInterpreter interpreter;
- private Reader script;
-
- public JythonCompositionNanoContainer(Reader script, NanoContainerMonitor monitor)
- throws PicoCompositionException{
- super(monitor);
- this.script = script;
- interpreter = new PythonInterpreter();
- interpreter.exec("from org.picoextras.reflection import DefaultReflectionFrontEnd");
- reflectionRootContainer = new DefaultReflectionFrontEnd();
- init();
- }
-
- public JythonCompositionNanoContainer(Reader script)
- throws PicoCompositionException {
- this(script, new NullNanoContainerMonitor());
- }
-
- public static void main(String[] args) throws Exception {
- String nanoContainerPy = args[0];
- if (nanoContainerPy == null) {
- nanoContainerPy = "composition/components.py";
- }
- NanoContainer nano = new JythonCompositionNanoContainer(new FileReader(nanoContainerPy));
- nano.addShutdownHook();
- }
-
- protected PicoContainer createPicoContainer() throws PicoCompositionException {
- interpreter.set("rootContainer", reflectionRootContainer);
- interpreter.execfile(new InputStream() {
- public int read() throws IOException {
- return script.read();
- }
- });
- return reflectionRootContainer.getPicoContainer();
- }

+//
+// private ReflectionContainerAdapter reflectionRootContainer;
+// private PythonInterpreter interpreter;
+// private Reader script;
+//
+// public JythonCompositionNanoContainer(Reader script, NanoContainerMonitor monitor)
+// throws PicoAssemblyException{
+// super(monitor);
+// this.script = script;
+// interpreter = new PythonInterpreter();
+// interpreter.exec("from org.picoextras.reflection import DefaultReflectionContainerAdapter");
+// reflectionRootContainer = new DefaultReflectionContainerAdapter();
+// init();
+// }
+//
+// public JythonCompositionNanoContainer(Reader script)
+// throws PicoAssemblyException {
+// this(script, new NullNanoContainerMonitor());
+// }
+//
+// public static void main(String[] args) throws Exception {
+// String nanoContainerPy = args[0];
+// if (nanoContainerPy == null) {
+// nanoContainerPy = "composition/components.py";
+// }
+// NanoContainer nano = new JythonCompositionNanoContainer(new FileReader(nanoContainerPy));
+// nano.addShutdownHook();
+// }
+//
+// protected PicoContainer createPicoContainer() throws PicoAssemblyException {
+// interpreter.set("rootContainer", reflectionRootContainer);
+// interpreter.execfile(new InputStream() {
+// public int read() throws IOException {
+// return script.read();
+// }
+// });
+// return reflectionRootContainer.getPicoContainer();
+// }

}

----------

nano /src /java /org /nanocontainer

Main.java 1.5 -> 1.6

diff -u -r1.5 -r1.6
--- Main.java 22 Nov 2003 17:44:08 -0000 1.5
+++ Main.java 19 Jan 2004 20:40:24 -0000 1.6
@@ -9,17 +9,22 @@

package org.nanocontainer;

-import org.picoextras.script.PicoCompositionException;

+import org.picocontainer.defaults.ObjectReference;
+import org.picocontainer.defaults.SimpleReference;
+import org.picoextras.integrationkit.ContainerAssembler;
+import org.picoextras.integrationkit.ContainerBuilder;
+import org.picoextras.script.jython.JythonContainerAssembler;
+import org.picoextras.script.rhino.JavascriptContainerAssembler;
+import org.picoextras.script.xml.XMLContainerAssembler;

import org.realityforge.cli.CLArgsParser;

-import org.realityforge.cli.CLOptionDescriptor;

import org.realityforge.cli.CLOption;

+import org.realityforge.cli.CLOptionDescriptor;

import org.realityforge.cli.CLUtil;

-import javax.xml.parsers.ParserConfigurationException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.List;

+import java.util.HashMap;

import java.util.Iterator;

+import java.util.List;
+import java.util.Map;

public class Main {

@@ -28,6 +33,13 @@

private static final int MONITOR_OPT = 'm';
private static final int COMPOSITION_OPT = 'c';

+ private static final Map extensionToAssemblerMap = new HashMap();
+ static {
+ extensionToAssemblerMap.put(".js", JavascriptContainerAssembler.class);
+ extensionToAssemblerMap.put(".xml", XMLContainerAssembler.class);
+ extensionToAssemblerMap.put(".py", JythonContainerAssembler.class);
+ }
+

private static final CLOptionDescriptor[] OPTIONS = new CLOptionDescriptor[]
{
new CLOptionDescriptor("help",

@@ -49,7 +61,7 @@

};

- public static void main(String[] args) throws IOException, ClassNotFoundException, PicoCompositionException, ParserConfigurationException {

+ public static void main(String[] args) throws IllegalAccessException, InstantiationException {

List options = getOptions(args);

String monitor = "";

@@ -87,21 +99,52 @@

// Monitor
NanoContainerMonitor nanoContainerMonitor = createMonitor(args, monitor);

- createComposition(composition, nanoContainerMonitor);

+ buildAndStartContainer(composition, nanoContainerMonitor);

}

- private static void createComposition(String composition, NanoContainerMonitor nanoContainerMonitor) throws PicoCompositionException, ClassNotFoundException, IOException, ParserConfigurationException {
- if (composition.toLowerCase().endsWith(".js")) {
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new FileReader(composition), nanoContainerMonitor);
- nano.addShutdownHook();
- } else if (composition.toLowerCase().endsWith(".xml")) {
- NanoContainer nano = new XmlCompositionNanoContainer(new FileReader(composition), nanoContainerMonitor);
- nano.addShutdownHook();
- } else {
- System.err.println("NanoContainer: Unknown configuration file suffix, .js or .xml expected");
- System.exit(30);
- }

+ /*
+ Now that the breadth/depth-first traversal of "child" containers, we should consider adding support
+ for "monitors" at a higher level of abstraction.
+
+ I think that ideally this should be done on the multicaster level, so that we can get monitor
+ events whenever *any* method is called via the multicaster. That way we could easily intercept lifecycle
+ methods on individual components, not only on the container level.
+
+ The most elegant way to deal with this is perhaps via Nanning, or we could add support for it
+ directly in the MulticastInvoker class. (It could be constructed with an additional argument
+ called InvocationInterceptor. MulticastInvoker would then call methods on this object in addition
+ to the subject. The InvocationInterceptor would serve the same purpose as this NanoContainerMonitor,
+ but at a much higher level of abstraction. It would be more reusable, since it would enable monitoring
+ outside the scope of nano. It could be useful in e.g. WebWork or other environments.
+
+ I think it should be up to the ContainerBuilder instances (in integrationkit) to decide what kind of
+ monitor/InvocationInterceptor to use.
+
+ AH
+ */
+ private static void buildAndStartContainer(String composition, NanoContainerMonitor nanoContainerMonitor) throws IllegalAccessException, InstantiationException {
+ final String extension = composition.substring(composition.indexOf("."));
+ Class containerAssemblerClass = (Class) extensionToAssemblerMap.get(extension);
+
+ // This won't work. They all need different ctor parameters. We should use pico itself to assemble this!!
+ ContainerAssembler ca = (ContainerAssembler) containerAssemblerClass.newInstance();
+ final ContainerBuilder cb = new org.picoextras.integrationkit.LifecycleContainerBuilder();
+
+ final ObjectReference containerRef = new SimpleReference();
+
+ // build and start the container
+ cb.buildContainer(containerRef, null, ca, null);
+
+ // add a shutdown hook that will tell the builder to kill it.
+ Runnable shutdownHook = new Runnable() {
+ public void run() {
+ cb.killContainer(containerRef);
+ }
+ };
+ Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook));
+

}

+

private static NanoContainerMonitor createMonitor(String[] args, String monitor) {
NanoContainerMonitor nanoContainerMonitor = new NullNanoContainerMonitor();

----------

nano /src /java /org /nanocontainer

NanoContainer.java 1.13 -> 1.14

diff -u -r1.13 -r1.14
--- NanoContainer.java 22 Nov 2003 17:44:08 -0000 1.13
+++ NanoContainer.java 19 Jan 2004 20:40:24 -0000 1.14
@@ -8,99 +8,91 @@

*****************************************************************************/
package org.nanocontainer;

-import org.picocontainer.PicoContainer;
-import org.picocontainer.extras.DefaultLifecyclePicoAdapter;
-import org.picocontainer.lifecycle.LifecyclePicoAdapter;
-import org.picoextras.script.PicoCompositionException;
-import org.picoextras.script.xml.EmptyCompositionException;

-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;

/**
* @author Aslak Helles&oslash;y
* @author Mauro Talevi
* @author Ward Cunningham
* @author Paul Hammant

- * @version $Revision: 1.13 $

+ * @version $Revision: 1.14 $
+ * @deprecated All required functionality is in the Main class. It delegates to other classes
+ * that are all in PicoExtras.

*/
public abstract class NanoContainer {

- private final List lifecycleAdapters = new ArrayList();
- private final NanoContainerMonitor monitor;
- private PicoContainer rootContainer;
-
- public NanoContainer(NanoContainerMonitor monitor) throws EmptyCompositionException {
- this.monitor = monitor;
- }
-
- protected abstract PicoContainer createPicoContainer() throws PicoCompositionException;
-
- protected void init() throws PicoCompositionException {
- rootContainer = createPicoContainer();
- instantiateComponentsBreadthFirst(rootContainer);
- startComponentsBreadthFirst();
- }
-
- public PicoContainer getRootContainer() {
- return rootContainer;
- }
-
- private void instantiateComponentsBreadthFirst(PicoContainer picoContainer) throws EmptyCompositionException {
- if (picoContainer instanceof LifecyclePicoAdapter) {
- lifecycleAdapters.add(picoContainer);
- } else {
- lifecycleAdapters.add(new DefaultLifecyclePicoAdapter(picoContainer));
- }
- List comps = picoContainer.getComponentInstances();
- if (comps.size() == 0) {
- throw new EmptyCompositionException();
- }
- monitor.componentsInstantiated(picoContainer);
- Collection childContainers = picoContainer.getChildContainers();
- for (Iterator iterator = childContainers.iterator(); iterator.hasNext();) {
- PicoContainer childContainer = (PicoContainer) iterator.next();
- instantiateComponentsBreadthFirst(childContainer);
- }
- }
-
- public void startComponentsBreadthFirst() {
- for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
- LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
- lpa.start();
- monitor.componentsLifecycleEvent("started",lpa);
- }
- Collections.reverse(lifecycleAdapters); // for stop and dispose
- }
-
- public void stopComponentsDepthFirst() {
- for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
- LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
- lpa.stop();
- monitor.componentsLifecycleEvent("stopped",lpa);
- }
- }
-
- public void disposeComponentsDepthFirst() {
- for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
- LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
- lpa.dispose();
- monitor.componentsLifecycleEvent("disposed",lpa);
- }
- }
-
- public void addShutdownHook() {
- Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook));
- }
-
- private Runnable shutdownHook = new Runnable() {
- public void run() {
- stopComponentsDepthFirst();
- disposeComponentsDepthFirst();
-
- }
- };

+// private final List lifecycleAdapters = new ArrayList();
+// private final NanoContainerMonitor monitor;
+// private PicoContainer rootContainer;
+//
+// public NanoContainer(NanoContainerMonitor monitor) throws EmptyCompositionException {
+// this.monitor = monitor;
+// }
+//
+// protected abstract PicoContainer createPicoContainer() throws PicoAssemblyException;
+//
+// protected void init() throws PicoAssemblyException {
+// rootContainer = createPicoContainer();
+// instantiateComponentsBreadthFirst(rootContainer);
+// startComponentsBreadthFirst();
+// }
+//
+// public PicoContainer getRootContainer() {
+// return rootContainer;
+// }
+//
+// private void instantiateComponentsBreadthFirst(PicoContainer picoContainer) throws EmptyCompositionException {
+// if (picoContainer instanceof LifecyclePicoAdapter) {
+// lifecycleAdapters.add(picoContainer);
+// } else {
+// lifecycleAdapters.add(new DefaultLifecyclePicoAdapter(picoContainer));
+// }
+// List comps = picoContainer.getComponentInstances();
+// if (comps.size() == 0) {
+// throw new EmptyCompositionException();
+// }
+// monitor.componentsInstantiated(picoContainer);
+// Collection childContainers = picoContainer.getChildContainers();
+// for (Iterator iterator = childContainers.iterator(); iterator.hasNext();) {
+// PicoContainer childContainer = (PicoContainer) iterator.next();
+// instantiateComponentsBreadthFirst(childContainer);
+// }
+// }
+//
+// public void startComponentsBreadthFirst() {
+// for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
+// LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
+// lpa.start();
+// monitor.componentsLifecycleEvent("started",lpa);
+// }
+// Collections.reverse(lifecycleAdapters); // for stop and dispose
+// }
+//
+// public void stopComponentsDepthFirst() {
+// for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
+// LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
+// lpa.stop();
+// monitor.componentsLifecycleEvent("stopped",lpa);
+// }
+// }
+//
+// public void disposeComponentsDepthFirst() {
+// for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
+// LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
+// lpa.dispose();
+// monitor.componentsLifecycleEvent("disposed",lpa);
+// }
+// }
+//
+// public void addShutdownHook() {
+// Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook));
+// }
+//
+// private Runnable shutdownHook = new Runnable() {
+// public void run() {
+// stopComponentsDepthFirst();
+// disposeComponentsDepthFirst();
+//
+// }
+// };

}

----------

nano /src /java /org /nanocontainer

NanoContainerMonitor.java 1.2 -> 1.3

diff -u -r1.2 -r1.3
--- NanoContainerMonitor.java 4 Nov 2003 22:09:48 -0000 1.2
+++ NanoContainerMonitor.java 19 Jan 2004 20:40:24 -0000 1.3
@@ -12,9 +12,13 @@

import org.picocontainer.PicoContainer;
import org.picocontainer.lifecycle.LifecyclePicoAdapter;

+// TODO can we deprecate this in favour of some sort of InvocationInterceptor
+// that sits closer to the MulticastInvoker? See longer comment inside the Main class.
+// AH
+

/**
* @author Paul Hammant

- * @version $Revision: 1.2 $

+ * @version $Revision: 1.3 $

*/
public interface NanoContainerMonitor {
void componentsLifecycleEvent(String eventName, LifecyclePicoAdapter lpa);

----------

nano /src /java /org /nanocontainer

XmlCompositionNanoContainer.java 1.4 -> 1.5

diff -u -r1.4 -r1.5
--- XmlCompositionNanoContainer.java 22 Nov 2003 17:44:08 -0000 1.4
+++ XmlCompositionNanoContainer.java 19 Jan 2004 20:40:24 -0000 1.5
@@ -8,96 +8,85 @@

*****************************************************************************/
package org.nanocontainer;

-import org.picoextras.script.xml.DefaultXmlFrontEnd;
-import org.picoextras.script.xml.XmlFrontEnd;
-import org.picoextras.script.PicoCompositionException;
-import org.picocontainer.PicoContainer;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;

+import org.picoextras.script.xml.XMLContainerAssembler;

/**
* @author Aslak Helles&oslash;y
* @author Paul Hammant
* @author Ward Cunningham

- * @version $Revision: 1.4 $

+ * @version $Revision: 1.5 $
+ *
+ * @deprecated To replace with a NanoContainer instance that is given a
+ * {@link XMLContainerAssembler} instance in its ctor.

*/

-public class XmlCompositionNanoContainer extends NanoContainer {
-
- private final DocumentBuilder documentBuilder;
- private Reader composition;
-
- public XmlCompositionNanoContainer(Reader composition)
- throws ParserConfigurationException, PicoCompositionException {
- this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), composition, new ConsoleNanoContainerMonitor());
- }
-
- public XmlCompositionNanoContainer(Reader composition, NanoContainerMonitor monitor)
- throws ParserConfigurationException, PicoCompositionException {
- this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), composition, monitor);
- }
-
- public XmlCompositionNanoContainer(DocumentBuilder documentBuilder, Reader composition, NanoContainerMonitor monitor)
- throws PicoCompositionException {
- super(monitor);
- this.documentBuilder = documentBuilder;
- this.composition = composition;
- init();
- }
-
- private Element getRootElement(InputSource inputSource) throws SAXException, IOException {
- Document document = documentBuilder.parse(inputSource);
- return document.getDocumentElement();
- }
-
- protected PicoContainer createPicoContainer()
- throws PicoCompositionException {
- final InputSource is = new InputSource(composition);
- try {
- Element rootElement = getRootElement(is);
- String xmlFrontEndClassName = rootElement.getAttribute("xmlfrontend");
- XmlFrontEnd xmlFrontEnd = null;
- if (xmlFrontEndClassName != null && !xmlFrontEndClassName.equals("")) {
- xmlFrontEnd = createXmlFrontEnd(xmlFrontEndClassName);
- } else {
- xmlFrontEnd = new DefaultXmlFrontEnd();
- }
- return xmlFrontEnd.createPicoContainer(rootElement);
- } catch (SAXException e) {
- throw new PicoCompositionException(e);
- } catch (ClassNotFoundException e) {
- throw new PicoCompositionException(e);
- } catch (IOException e) {
- throw new PicoCompositionException(e);
- }
- }
-
- private XmlFrontEnd createXmlFrontEnd(String xmlFrontEndClassName) throws ClassNotFoundException {
- XmlFrontEnd xmlFrontEnd;
- try {
- xmlFrontEnd = (XmlFrontEnd) this.getClass().getClassLoader().loadClass(xmlFrontEndClassName).newInstance();
- } catch (InstantiationException e) {
- throw new ClassNotFoundException("InstantiationException in XmlCompositionNanoContainer - " + e.getMessage());
- } catch (IllegalAccessException e) {
- throw new ClassNotFoundException("IllegalAccessException in XmlCompositionNanoContainer - " + e.getMessage());
- }
- return xmlFrontEnd;
- }

+public class XmlCompositionNanoContainer /*extends NanoContainer*/ {

- public static void main(String[] args) throws Exception {
- String nanoContainerXml = args[0];
- if (nanoContainerXml == null) {
- nanoContainerXml = "config/nanocontainer.xml";
- }
- NanoContainer nano = new XmlCompositionNanoContainer(new FileReader(nanoContainerXml));
- nano.addShutdownHook();
- }

+// private final DocumentBuilder documentBuilder;
+// private Reader composition;
+//
+// public XmlCompositionNanoContainer(Reader composition)
+// throws ParserConfigurationException, PicoAssemblyException {
+// this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), composition, new ConsoleNanoContainerMonitor());
+// }
+//
+// public XmlCompositionNanoContainer(Reader composition, NanoContainerMonitor monitor)
+// throws ParserConfigurationException, PicoAssemblyException {
+// this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), composition, monitor);
+// }
+//
+// public XmlCompositionNanoContainer(DocumentBuilder documentBuilder, Reader composition, NanoContainerMonitor monitor)
+// throws PicoAssemblyException {
+// super(monitor);
+// this.documentBuilder = documentBuilder;
+// this.composition = composition;
+// init();
+// }
+//
+// private Element getRootElement(InputSource inputSource) throws SAXException, IOException {
+// Document document = documentBuilder.parse(inputSource);
+// return document.getDocumentElement();
+// }
+//
+// protected PicoContainer createPicoContainer()
+// throws PicoAssemblyException {
+// final InputSource is = new InputSource(composition);
+// try {
+// Element rootElement = getRootElement(is);
+// String xmlFrontEndClassName = rootElement.getAttribute("xmlfrontend");
+// XmlFrontEnd xmlFrontEnd = null;
+// if (xmlFrontEndClassName != null && !xmlFrontEndClassName.equals("")) {
+// xmlFrontEnd = createXmlFrontEnd(xmlFrontEndClassName);
+// } else {
+// xmlFrontEnd = new XMLContainerAssembler();
+// }
+// return xmlFrontEnd.createPicoContainer(rootElement);
+// } catch (SAXException e) {
+// throw new PicoAssemblyException(e);
+// } catch (ClassNotFoundException e) {
+// throw new PicoAssemblyException(e);
+// } catch (IOException e) {
+// throw new PicoAssemblyException(e);
+// }
+// }
+//
+// private XmlFrontEnd createXmlFrontEnd(String xmlFrontEndClassName) throws ClassNotFoundException {
+// XmlFrontEnd xmlFrontEnd;
+// try {
+// xmlFrontEnd = (XmlFrontEnd) this.getClass().getClassLoader().loadClass(xmlFrontEndClassName).newInstance();
+// } catch (InstantiationException e) {
+// throw new ClassNotFoundException("InstantiationException in XmlCompositionNanoContainer - " + e.getMessage());
+// } catch (IllegalAccessException e) {
+// throw new ClassNotFoundException("IllegalAccessException in XmlCompositionNanoContainer - " + e.getMessage());
+// }
+// return xmlFrontEnd;
+// }
+//
+// public static void main(String[] args) throws Exception {
+// String nanoContainerXml = args[0];
+// if (nanoContainerXml == null) {
+// nanoContainerXml = "config/nanocontainer.xml";
+// }
+// NanoContainer nano = new XmlCompositionNanoContainer(new FileReader(nanoContainerXml));
+// nano.addShutdownHook();
+// }

}