[CVS nano] Refactorings. Removing duplication.

Aslak Hellesoy <rinkrank-yCVjj/[email protected]> Sat, 22 Nov 2003 11:44:09 -0600
Newsgroups gmane.comp.java.nanocontainer.cvs
Message-ID <[email protected]>
Commit in nano on MAIN

nanocontainer/src/java/org/nanocontainer/JavaScriptCompositionNanoContainer.java +18 -16 1.3 -> 1.4

/JythonCompositionNanoContainer.java +20 -19 1.2 -> 1.3

/Main.java +70 -61 1.4 -> 1.5

/NanoContainer.java +31 -22 1.12 -> 1.13

/XmlCompositionNanoContainer.java +38 -27 1.3 -> 1.4

/SAXCompositionException.java -25 1.1 removed

nanocontainer/src/test/org/nanocontainer/BespokeXmlFrontEnd.java +1 -1 1.7 -> 1.8

/JavaScriptCompositionNanoContainerTestCase.java +2 -2 1.2 -> 1.3

/JythonCompositionNanoContainerTestCase.java +2 -2 1.4 -> !

1.5

/XmlCompositionNanoContainerTestCase.java +6 -6 1.4 -> 1.5

script/src/java/org/picoextras/script/rhino/NanoRhinoManager.java +3 -12 1.1 -> 1.2

script/src/java/org/picoextras/script/xml/EmptyCompositionException.java +16 added 1.1

/DefaultXmlFrontEnd.java +4 -8 1.2 -> 1.3

/ParameterXmlFrontEnd.java +3 -3 1.1 -> 1.2

/XmlFrontEnd.java +2 -2 1.1 -> 1.2

/XmlFrontEndException.java +4 -3 1.1 -> 1.2

/EmptyXmlCompositionException.java -19 1.1 removed

script/src/test/org/picoextras/script/rhino/DefaultNanoRhinoScriptableTestCase.java +1 -1 1.1 -> 1.2

script/src/test/org/picoextras/script/xml/DefaultXmlFrontEndTestCase.java +4 -4 1.2 -> 1.3

script/src/java/org/picoextras/script/PicoCompositionException.java +30 added 1.1

+255 -233

2 added + 2 removed + 16 modified, total 20 files

Refactorings. Removing duplication.

----------

nano /nanocontainer /src /java /org /nanocontainer

JavaScriptCompositionNanoContainer.java 1.3 -> 1.4

diff -u -r1.3 -r1.4
--- JavaScriptCompositionNanoContainer.java 17 Nov 2003 23:13:50 -0000 1.3
+++ JavaScriptCompositionNanoContainer.java 22 Nov 2003 17:44:08 -0000 1.4
@@ -10,7 +10,8 @@

import org.picoextras.script.rhino.DefaultNanoRhinoScriptable;
import org.picoextras.script.rhino.NanoRhinoManager;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;
+import org.picocontainer.PicoContainer;

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

@@ -18,31 +19,33 @@

public class JavaScriptCompositionNanoContainer extends NanoContainer {

- private Class nanoRhinoScriptableClass = DefaultNanoRhinoScriptable.class;

+ private final Class nanoRhinoScriptableClass;
+ private final Reader script;

public JavaScriptCompositionNanoContainer(Reader script, NanoContainerMonitor monitor, Class nanoRhinoScriptableClass)

- throws PicoCompositionException, ClassNotFoundException, IOException {

+ throws PicoCompositionException{

super(monitor);
this.nanoRhinoScriptableClass = nanoRhinoScriptableClass;

- compose(script);

+ this.script = script;
+ init();

}

public JavaScriptCompositionNanoContainer(Reader script, NanoContainerMonitor monitor)

- throws PicoCompositionException, ClassNotFoundException, IOException {
- super(monitor);
- compose(script);

+ throws PicoCompositionException{
+ this(script, monitor, DefaultNanoRhinoScriptable.class);

}

public JavaScriptCompositionNanoContainer(Reader script)

- throws PicoCompositionException, ClassNotFoundException, IOException {
- super(new NullNanoContainerMonitor());
- compose(script);

+ throws PicoCompositionException{
+ this(script, new NullNanoContainerMonitor());

}

- protected void compose(Reader script) throws IOException, ClassNotFoundException, PicoCompositionException {
- rootContainer = new NanoRhinoManager().execute(nanoRhinoScriptableClass, script);
- instantiateComponentsBreadthFirst(rootContainer);
- startComponentsBreadthFirst();

+ protected PicoContainer createPicoContainer() throws PicoCompositionException {
+ try {
+ return new NanoRhinoManager().execute(nanoRhinoScriptableClass, script);
+ } catch (IOException e) {
+ throw new PicoCompositionException(e);
+ }

}

public static void main(String[] args) throws Exception {

@@ -51,7 +54,6 @@

nanoContainerJs = "composition/components.js";
}
NanoContainer nano = new JavaScriptCompositionNanoContainer(new FileReader(nanoContainerJs));

- addShutdownHook(nano);

+ nano.addShutdownHook();

}

-

}

----------

nano /nanocontainer /src /java /org /nanocontainer

JythonCompositionNanoContainer.java 1.2 -> 1.3

diff -u -r1.2 -r1.3
--- JythonCompositionNanoContainer.java 17 Nov 2003 10:03:16 -0000 1.2
+++ JythonCompositionNanoContainer.java 22 Nov 2003 17:44:08 -0000 1.3
@@ -10,7 +10,8 @@

import org.picoextras.reflection.DefaultReflectionFrontEnd;
import org.picoextras.reflection.ReflectionFrontEnd;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;
+import org.picocontainer.PicoContainer;

import org.python.util.PythonInterpreter;

import java.io.FileReader;

@@ -21,45 +22,45 @@

/**
* @author Paul Hammant
* @author Mike Royle

+ * @author Aslak Helles&oslash;y

*/
public class JythonCompositionNanoContainer extends NanoContainer {

- private PythonInterpreter interpreter;

private ReflectionFrontEnd reflectionRootContainer;

-

+ private PythonInterpreter interpreter;
+ private Reader script;

public JythonCompositionNanoContainer(Reader script, NanoContainerMonitor monitor)

- throws PicoCompositionException, ClassNotFoundException, IOException {

+ throws PicoCompositionException{

super(monitor);

+ this.script = script;

interpreter = new PythonInterpreter();
interpreter.exec("from org.picoextras.reflection import DefaultReflectionFrontEnd");
reflectionRootContainer = new DefaultReflectionFrontEnd();

- compose(script);

+ init();

}

public JythonCompositionNanoContainer(Reader script)

- throws PicoCompositionException, ClassNotFoundException, IOException {

+ throws PicoCompositionException {

this(script, new NullNanoContainerMonitor());
}

- protected void compose(final Reader script) throws IOException, ClassNotFoundException, PicoCompositionException {
- interpreter.set("rootContainer", reflectionRootContainer);
- interpreter.execfile(new InputStream() {
- public int read() throws IOException {
- return script.read();
- }
- });
- rootContainer = reflectionRootContainer.getPicoContainer();
- instantiateComponentsBreadthFirst(rootContainer);
- startComponentsBreadthFirst();
- }
-

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));

- addShutdownHook(nano);

+ 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();

}
}

----------

nano /nanocontainer /src /java /org /nanocontainer

Main.java 1.4 -> 1.5

diff -u -r1.4 -r1.5
--- Main.java 8 Nov 2003 12:13:37 -0000 1.4
+++ Main.java 22 Nov 2003 17:44:08 -0000 1.5
@@ -9,7 +9,7 @@

package org.nanocontainer;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.realityforge.cli.CLArgsParser;
import org.realityforge.cli.CLOptionDescriptor;
import org.realityforge.cli.CLOption;

@@ -19,6 +19,7 @@

import java.io.FileReader;
import java.io.IOException;
import java.util.List;

+import java.util.Iterator;

public class Main {

@@ -29,58 +30,39 @@

private static final CLOptionDescriptor[] OPTIONS = new CLOptionDescriptor[]
{

- new CLOptionDescriptor( "help",
- CLOptionDescriptor.ARGUMENT_DISALLOWED,
- HELP_OPT,
- "print this message and exit" ),
- new CLOptionDescriptor( "version",
- CLOptionDescriptor.ARGUMENT_DISALLOWED,
- VERSION_OPT,
- "print the version information and exit" ),
- new CLOptionDescriptor( "monitor",
- CLOptionDescriptor.ARGUMENT_REQUIRED,
- MONITOR_OPT,
- "specify the monitor implemenatation" ),
- new CLOptionDescriptor( "composition",
- CLOptionDescriptor.ARGUMENT_REQUIRED,
- COMPOSITION_OPT,
- "specify the assembly file" )

+ new CLOptionDescriptor("help",
+ CLOptionDescriptor.ARGUMENT_DISALLOWED,
+ HELP_OPT,
+ "print this message and exit"),
+ new CLOptionDescriptor("version",
+ CLOptionDescriptor.ARGUMENT_DISALLOWED,
+ VERSION_OPT,
+ "print the version information and exit"),
+ new CLOptionDescriptor("monitor",
+ CLOptionDescriptor.ARGUMENT_REQUIRED,
+ MONITOR_OPT,
+ "specify the monitor implemenatation"),
+ new CLOptionDescriptor("composition",
+ CLOptionDescriptor.ARGUMENT_REQUIRED,
+ COMPOSITION_OPT,
+ "specify the assembly file")

};

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

- if (args.length == 0) {
- System.err.println("NanoContainer: Needs a configuation file as a parameter");
- System.exit(10);
- }
-
- CLArgsParser parser = new CLArgsParser(args, OPTIONS);
-
- //Make sure that there was no errors parsing
- //arguments
- if( null != parser.getErrorString() )
- {
- System.err.println( "Error: " + parser.getErrorString() );
- return;
- }
-
- // Get a list of parsed options
- final List options = parser.getArguments();
- final int size = options.size();

+ List options = getOptions(args);

String monitor = "";
String composition = "";

- for( int i = 0; i < size; i++ )
- {
- final CLOption option = (CLOption)options.get( i );

+ for (Iterator iterator = options.iterator(); iterator.hasNext();) {
+ CLOption option = (CLOption) iterator.next();

- switch( option.getId() )
- {

+ switch (option.getId()) {

case CLOption.TEXT_ARGUMENT:
//This occurs when a user supplies an argument that
//is not an option

- System.out.println( "Unknown arg: " + option.getArgument() );

+ System.out.println("Unknown argument: " + option.getArgument());

break;

case HELP_OPT:

@@ -103,6 +85,25 @@

}

// Monitor

+ NanoContainerMonitor nanoContainerMonitor = createMonitor(args, monitor);
+
+ createComposition(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);
+ }
+ }
+
+ private static NanoContainerMonitor createMonitor(String[] args, String monitor) {

NanoContainerMonitor nanoContainerMonitor = new NullNanoContainerMonitor();
if (args.length == 2) {
if (monitor.equals("CommonsLogging")) {

@@ -113,43 +114,51 @@

nanoContainerMonitor = new ConsoleNanoContainerMonitor();
}
}

+ return nanoContainerMonitor;
+ }

- if (composition.toLowerCase().endsWith(".js")) {
- NanoContainer nano = new JavaScriptCompositionNanoContainer(new FileReader(composition), nanoContainerMonitor);
- JavaScriptCompositionNanoContainer.addShutdownHook(nano);
- } else if (composition.toLowerCase().endsWith(".xml")) {
- NanoContainer nano = new XmlCompositionNanoContainer(new FileReader(composition), nanoContainerMonitor);
- XmlCompositionNanoContainer.addShutdownHook(nano);
- } else {
- System.err.println("NanoContainer: Unknown configuration file suffix, .js or .xml expected");

+ private static List getOptions(String[] args) {
+ if (args.length == 0) {
+ System.err.println("NanoContainer: Needs a configuation file as a parameter");

System.exit(10);
}

+
+ CLArgsParser parser = new CLArgsParser(args, OPTIONS);
+
+ //Make sure that there was no errors parsing
+ //arguments
+ if (null != parser.getErrorString()) {
+ System.err.println("Error: " + parser.getErrorString());
+ System.exit(20);
+ }
+
+ // Get a list of parsed options
+ final List options = parser.getArguments();
+ return options;

}

- private static void printVersion()
- {
- System.out.println( "1.0" );
- System.exit( 0 );

+ private static void printVersion() {
+ System.out.println("1.0");
+ System.exit(0);

}

- private static void printUsage()
- {
- final String lineSeparator = System.getProperty( "line.separator" );

+ private static void printUsage() {
+ final String lineSeparator = System.getProperty("line.separator");

final StringBuffer msg = new StringBuffer();

- msg.append( lineSeparator );
- msg.append( "Foo!" );

+ msg.append(lineSeparator);
+ msg.append("Foo!");

/*
* Notice that the next line uses CLUtil.describeOptions to generate the
* list of descriptions for each option
*/

- msg.append( CLUtil.describeOptions( OPTIONS ).toString() );

+ msg.append(CLUtil.describeOptions(OPTIONS).toString());

- System.out.println( msg.toString() );

+ System.out.println(msg.toString());

- System.exit( 0 );

+ System.exit(0);

}
}

----------

nano /nanocontainer /src /java /org /nanocontainer

NanoContainer.java 1.12 -> 1.13

diff -u -r1.12 -r1.13
--- NanoContainer.java 17 Nov 2003 23:13:50 -0000 1.12
+++ NanoContainer.java 22 Nov 2003 17:44:08 -0000 1.13
@@ -8,37 +8,48 @@

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

-import org.picoextras.script.xml.EmptyXmlCompositionException;

import org.picocontainer.PicoContainer;

-import org.picocontainer.PicoCompositionException;

import org.picocontainer.extras.DefaultLifecyclePicoAdapter;
import org.picocontainer.lifecycle.LifecyclePicoAdapter;

-import java.io.IOException;
-import java.io.Reader;
-import java.util.*;

+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.12 $

+ * @version $Revision: 1.13 $

*/
public abstract class NanoContainer {

private final List lifecycleAdapters = new ArrayList();
private final NanoContainerMonitor monitor;

- protected PicoContainer rootContainer;

+ private PicoContainer rootContainer;

- public NanoContainer(NanoContainerMonitor monitor) {

+ 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;
}

- protected void instantiateComponentsBreadthFirst(PicoContainer picoContainer) throws EmptyXmlCompositionException {

+ private void instantiateComponentsBreadthFirst(PicoContainer picoContainer) throws EmptyCompositionException {

if (picoContainer instanceof LifecyclePicoAdapter) {
lifecycleAdapters.add(picoContainer);
} else {

@@ -46,7 +57,7 @@

}
List comps = picoContainer.getComponentInstances();
if (comps.size() == 0) {

- throw new EmptyXmlCompositionException();

+ throw new EmptyCompositionException();

}
monitor.componentsInstantiated(picoContainer);
Collection childContainers = picoContainer.getChildContainers();

@@ -56,7 +67,7 @@

}
}

- protected void startComponentsBreadthFirst() {

+ public void startComponentsBreadthFirst() {

for (Iterator iterator = lifecycleAdapters.iterator(); iterator.hasNext();) {
LifecyclePicoAdapter lpa= (LifecyclePicoAdapter) iterator.next();
lpa.start();

@@ -81,17 +92,15 @@

}
}

-
-
- protected static void addShutdownHook(final NanoContainer nano) {
- Runtime.getRuntime().addShutdownHook(new Thread() {
- public void run() {
- nano.stopComponentsDepthFirst();
- nano.disposeComponentsDepthFirst();
- }
- });

+ public void addShutdownHook() {
+ Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook));

}

- protected abstract void compose(Reader composition)
- throws IOException, ClassNotFoundException, PicoCompositionException;

+ private Runnable shutdownHook = new Runnable() {
+ public void run() {
+ stopComponentsDepthFirst();
+ disposeComponentsDepthFirst();
+
+ }
+ };

}

----------

nano /nanocontainer /src /java /org /nanocontainer

XmlCompositionNanoContainer.java 1.3 -> 1.4

diff -u -r1.3 -r1.4
--- XmlCompositionNanoContainer.java 17 Nov 2003 23:13:50 -0000 1.3
+++ XmlCompositionNanoContainer.java 22 Nov 2003 17:44:08 -0000 1.4
@@ -10,7 +10,8 @@

import org.picoextras.script.xml.DefaultXmlFrontEnd;
import org.picoextras.script.xml.XmlFrontEnd;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;
+import org.picocontainer.PicoContainer;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;

@@ -27,66 +28,76 @@

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

- * @version $Revision: 1.3 $

+ * @version $Revision: 1.4 $

*/
public class XmlCompositionNanoContainer extends NanoContainer {

- private DocumentBuilder documentBuilder;

+ private final DocumentBuilder documentBuilder;
+ private Reader composition;

- public XmlCompositionNanoContainer(Reader nanoContainerXml)
- throws ParserConfigurationException, ClassNotFoundException, IOException, PicoCompositionException {
- this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), nanoContainerXml, new ConsoleNanoContainerMonitor());

+ public XmlCompositionNanoContainer(Reader composition)
+ throws ParserConfigurationException, PicoCompositionException {
+ this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), composition, new ConsoleNanoContainerMonitor());

}

- public XmlCompositionNanoContainer(Reader nanoContainerConfig, NanoContainerMonitor monitor)
- throws ParserConfigurationException, ClassNotFoundException, IOException, PicoCompositionException {
- this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), nanoContainerConfig, monitor);

+ public XmlCompositionNanoContainer(Reader composition, NanoContainerMonitor monitor)
+ throws ParserConfigurationException, PicoCompositionException {
+ this(DocumentBuilderFactory.newInstance().newDocumentBuilder(), composition, monitor);

}

public XmlCompositionNanoContainer(DocumentBuilder documentBuilder, Reader composition, NanoContainerMonitor monitor)

- throws ClassNotFoundException, IOException, PicoCompositionException {

+ throws PicoCompositionException {

super(monitor);
this.documentBuilder = documentBuilder;

- compose(composition);

+ this.composition = composition;
+ init();

}

- protected Element getRootElement(InputSource inputSource) throws SAXException, IOException {

+ private Element getRootElement(InputSource inputSource) throws SAXException, IOException {

Document document = documentBuilder.parse(inputSource);
return document.getDocumentElement();
}

- protected void compose(Reader nanoContainerXml)
- throws IOException, ClassNotFoundException, PicoCompositionException, SAXCompositionException {
- final InputSource is = new InputSource(nanoContainerXml);

+ 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("")) {

- 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());
- }

+ xmlFrontEnd = createXmlFrontEnd(xmlFrontEndClassName);

} else {
xmlFrontEnd = new DefaultXmlFrontEnd();
}

- rootContainer = xmlFrontEnd.createPicoContainer(rootElement);
- instantiateComponentsBreadthFirst(rootContainer);
- startComponentsBreadthFirst();

+ return xmlFrontEnd.createPicoContainer(rootElement);

} catch (SAXException e) {

- throw new SAXCompositionException(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 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));

- addShutdownHook(nano);

+ nano.addShutdownHook();

}
}

----------

nano /nanocontainer /src /java /org /nanocontainer

SAXCompositionException.java removed after 1.1

diff -N SAXCompositionException.java
--- SAXCompositionException.java 8 Nov 2003 12:13:37 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,25 +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.picocontainer.PicoCompositionException;
-import org.xml.sax.SAXException;
-
-public class SAXCompositionException extends PicoCompositionException{
- private final SAXException se;
-
- public SAXCompositionException(SAXException se) {
- this.se = se;
- }
-
- public SAXException getSe() {
- return se;
- }
-}

----------

nano /nanocontainer /src /test /org /nanocontainer

BespokeXmlFrontEnd.java 1.7 -> 1.8

diff -u -r1.7 -r1.8
--- BespokeXmlFrontEnd.java 17 Nov 2003 23:13:50 -0000 1.7
+++ BespokeXmlFrontEnd.java 22 Nov 2003 17:44:08 -0000 1.8
@@ -11,7 +11,7 @@

import org.picoextras.script.xml.DefaultXmlFrontEnd;
import org.picoextras.script.xml.XmlFrontEnd;
import org.picocontainer.MutablePicoContainer;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.PicoContainer;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

----------

nano /nanocontainer /src /test /org /nanocontainer

JavaScriptCompositionNanoContainerTestCase.java 1.2 -> 1.3

diff -u -r1.2 -r1.3
--- JavaScriptCompositionNanoContainerTestCase.java 17 Nov 2003 10:03:16 -0000 1.2
+++ JavaScriptCompositionNanoContainerTestCase.java 22 Nov 2003 17:44:08 -0000 1.3
@@ -12,7 +12,7 @@

import junit.framework.TestCase;
import org.mozilla.javascript.EcmaError;
import org.picoextras.testmodel.WebServerConfig;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.defaults.NoSatisfiableConstructorsException;

import java.io.IOException;

@@ -23,7 +23,7 @@

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

- * @version $Revision: 1.2 $

+ * @version $Revision: 1.3 $

*/
public class JavaScriptCompositionNanoContainerTestCase extends TestCase {

----------

nano /nanocontainer /src /test /org /nanocontainer

JythonCompositionNanoContainerTestCase.java 1.4 -> 1.5

diff -u -r1.4 -r1.5
--- JythonCompositionNanoContainerTestCase.java 22 Nov 2003 16:11:22 -0000 1.4
+++ JythonCompositionNanoContainerTestCase.java 22 Nov 2003 17:44:08 -0000 1.5
@@ -11,7 +11,7 @@

import junit.framework.ComparisonFailure;
import junit.framework.TestCase;
import org.picoextras.testmodel.WebServerConfig;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.defaults.NoSatisfiableConstructorsException;

import java.io.IOException;

@@ -23,7 +23,7 @@

* @author Paul Hammant
* @author Ward Cunningham
* @author Mike Royle

- * @version $Revision: 1.4 $

+ * @version $Revision: 1.5 $

*/
public class JythonCompositionNanoContainerTestCase extends TestCase {

----------

nano /nanocontainer /src /test /org /nanocontainer

XmlCompositionNanoContainerTestCase.java 1.4 -> 1.5

diff -u -r1.4 -r1.5
--- XmlCompositionNanoContainerTestCase.java 22 Nov 2003 16:11:22 -0000 1.4
+++ XmlCompositionNanoContainerTestCase.java 22 Nov 2003 17:44:08 -0000 1.5
@@ -13,7 +13,7 @@

import org.picoextras.testmodel.DefaultWebServerConfig;
import org.picoextras.testmodel.WebServerConfig;
import org.picoextras.testmodel.WebServerImpl;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.defaults.AmbiguousComponentResolutionException;
import org.picocontainer.defaults.DefaultComponentAdapterFactory;
import org.picocontainer.defaults.NoSatisfiableConstructorsException;

@@ -30,7 +30,7 @@

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

- * @version $Revision: 1.4 $

+ * @version $Revision: 1.5 $

*/
public class XmlCompositionNanoContainerTestCase extends TestCase {

@@ -166,8 +166,8 @@

"<container xmlfrontend='YeeeeeHaaaaa'>" +
" <component classname='org.nanocontainer.Xxx$A'/>" +
"</container>"), new MockMonitor());

- fail("Should have barfed with ClassNotFoundException");
- } catch (ClassNotFoundException e) {

+ fail("Should have barfed with PicoCompositionException");
+ } catch (PicoCompositionException e) {

}

}

@@ -195,8 +195,8 @@

"<container container='YeeeHaaaaa'>" +
" <component classname='org.nanocontainer.Xxx$A'/>" +
"</container>"), new MockMonitor());

- fail("Should have barfed with ClassNotFoundException");
- } catch (ClassNotFoundException e) {

+ fail("Should have barfed with PicoCompositionException");
+ } catch (PicoCompositionException e) {

}

}

----------

nano /script /src /java /org /picoextras /script /rhino

NanoRhinoManager.java 1.1 -> 1.2

diff -u -r1.1 -r1.2
--- NanoRhinoManager.java 17 Nov 2003 23:13:51 -0000 1.1
+++ NanoRhinoManager.java 22 Nov 2003 17:44:08 -0000 1.2
@@ -4,7 +4,7 @@

import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.JavaScriptException;
import org.mozilla.javascript.ScriptableObject;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.PicoContainer;

import java.io.Reader;

@@ -28,12 +28,7 @@

return nanoHolder.getNanoRhinoScriptable().getPicoContainer();

} catch (final JavaScriptException e) {

- e.printStackTrace();
- throw new PicoCompositionException() {
- public String getMessage() {
- return "JavaScriptException : " + e.getMessage();
- }
- };

+ throw new PicoCompositionException(e);

} finally {
Context.exit();
}

@@ -44,11 +39,7 @@

try {
ScriptableObject.defineClass(scriptable, rhinoClass);
} catch (final Exception e) {

- throw new PicoCompositionException() {
- public String getMessage() {
- return "JavaScriptException : " + e.getMessage();
- }
- };

+ throw new PicoCompositionException(e);

}
}
}

----------

nano /script /src /java /org /picoextras /script /xml

EmptyCompositionException.java added at 1.1

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

+/*****************************************************************************
+ * 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.picoextras.script.xml;
+
+public class EmptyCompositionException extends XmlFrontEndException {
+ public String getMessage() {
+ return "No components in the XML composition";
+ }
+}

----------

nano /script /src /java /org /picoextras /script /xml

DefaultXmlFrontEnd.java 1.2 -> 1.3

diff -u -r1.2 -r1.3
--- DefaultXmlFrontEnd.java 22 Nov 2003 16:11:22 -0000 1.2
+++ DefaultXmlFrontEnd.java 22 Nov 2003 17:44:08 -0000 1.3
@@ -14,7 +14,7 @@

import org.picoextras.reflection.DefaultReflectionFrontEnd;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoContainer;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.defaults.DefaultPicoContainer;
import org.picocontainer.defaults.ComponentAdapterFactory;
import org.w3c.dom.Document;

@@ -33,7 +33,7 @@

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

- * @version $Revision: 1.2 $

+ * @version $Revision: 1.3 $

*/
public class DefaultXmlFrontEnd implements XmlFrontEnd {

@@ -87,7 +87,7 @@

}
}
if (componentCount == 0) {

- throw new EmptyXmlCompositionException();

+ throw new EmptyCompositionException();

}
}

@@ -178,11 +178,7 @@

Object pseudoComp = factory.makeInstance(childElement);
pico.getPicoContainer().registerComponentInstance(pseudoComp);
} catch (final SAXException e) {

- throw new PicoCompositionException() {
- public String getMessage() {
- return "SAXException during creation of PseudoComponent :" + e.getMessage();
- }
- };

+ throw new PicoCompositionException(e);

}
}
}

----------

nano /script /src /java /org /picoextras /script /xml

ParameterXmlFrontEnd.java 1.1 -> 1.2

diff -u -r1.1 -r1.2
--- ParameterXmlFrontEnd.java 17 Nov 2003 23:13:51 -0000 1.1
+++ ParameterXmlFrontEnd.java 22 Nov 2003 17:44:08 -0000 1.2
@@ -16,10 +16,10 @@

import org.picoextras.reflection.ReflectionFrontEnd;
import org.picoextras.reflection.DefaultReflectionFrontEnd;

-import org.picoextras.script.xml.EmptyXmlCompositionException;

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

import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoContainer;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.defaults.DefaultPicoContainer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

@@ -69,7 +69,7 @@

componentCount = 0;
PicoContainer container = registerContainer(null, rootElement);
if (componentCount == 0) {

- throw new EmptyXmlCompositionException();

+ throw new EmptyCompositionException();

}
return container;
}

----------

nano /script /src /java /org /picoextras /script /xml

XmlFrontEnd.java 1.1 -> 1.2

diff -u -r1.1 -r1.2
--- XmlFrontEnd.java 17 Nov 2003 23:13:51 -0000 1.1
+++ XmlFrontEnd.java 22 Nov 2003 17:44:08 -0000 1.2
@@ -11,7 +11,7 @@

package org.picoextras.script.xml;

import org.picocontainer.MutablePicoContainer;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.PicoContainer;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

@@ -23,7 +23,7 @@

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

- * @version $Revision: 1.1 $

+ * @version $Revision: 1.2 $

*/

public interface XmlFrontEnd {

----------

nano /script /src /java /org /picoextras /script /xml

XmlFrontEndException.java 1.1 -> 1.2

diff -u -r1.1 -r1.2
--- XmlFrontEndException.java 17 Nov 2003 23:13:51 -0000 1.1
+++ XmlFrontEndException.java 22 Nov 2003 17:44:08 -0000 1.2
@@ -9,15 +9,16 @@

package org.picoextras.script.xml;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

/**
* @author Jeppe Cramon
*/
public class XmlFrontEndException extends PicoCompositionException {

- public XmlFrontEndException() {
- }

+ protected XmlFrontEndException() {
+ super();
+ }

/**
* @param cause

----------

nano /script /src /java /org /picoextras /script /xml

EmptyXmlCompositionException.java removed after 1.1

diff -N EmptyXmlCompositionException.java
--- EmptyXmlCompositionException.java 17 Nov 2003 23:13:51 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,19 +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.picoextras.script.xml;
-
-public class EmptyXmlCompositionException extends XmlFrontEndException {
- public EmptyXmlCompositionException() {
- }
-
- public String getMessage() {
- return "No components in the XML composition";
- }
-}

----------

nano /script /src /test /org /picoextras /script /rhino

DefaultNanoRhinoScriptableTestCase.java 1.1 -> 1.2

diff -u -r1.1 -r1.2
--- DefaultNanoRhinoScriptableTestCase.java 17 Nov 2003 23:13:51 -0000 1.1
+++ DefaultNanoRhinoScriptableTestCase.java 22 Nov 2003 17:44:08 -0000 1.2
@@ -1,7 +1,7 @@

package org.picoextras.script.rhino;

import junit.framework.TestCase;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.PicoContainer;
import org.picoextras.testmodel.WebServer;
import org.picoextras.testmodel.WebServerConfig;

----------

nano /script /src /test /org /picoextras /script /xml

DefaultXmlFrontEndTestCase.java 1.2 -> 1.3

diff -u -r1.2 -r1.3
--- DefaultXmlFrontEndTestCase.java 22 Nov 2003 16:11:22 -0000 1.2
+++ DefaultXmlFrontEndTestCase.java 22 Nov 2003 17:44:08 -0000 1.3
@@ -11,7 +11,7 @@

package org.picoextras.script.xml;

import junit.framework.TestCase;

-import org.picocontainer.PicoCompositionException;

+import org.picoextras.script.PicoCompositionException;

import org.picocontainer.PicoContainer;
import org.picoextras.testmodel.DefaultWebServerConfig;
import org.picoextras.testmodel.WebServer;

@@ -27,7 +27,7 @@

/**
* @author Aslak Helles&oslash;y

- * @version $Revision: 1.2 $

+ * @version $Revision: 1.3 $

*/
public class DefaultXmlFrontEndTestCase extends TestCase {

@@ -125,8 +125,8 @@

"<container>" +
"</container>"));
PicoContainer rootContainer = new DefaultXmlFrontEnd().createPicoContainer(getRootElement(inputSource));

- fail("Should have thrown a EmptyXmlCompositionException");
- } catch (EmptyXmlCompositionException cnfe) {

+ fail("Should have thrown a EmptyCompositionException");
+ } catch (EmptyCompositionException cnfe) {

}
}

----------

nano /script /src /java /org /picoextras /script

PicoCompositionException.java added at 1.1

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

+package org.picoextras.script;
+
+import org.picocontainer.PicoException;
+
+public class PicoCompositionException extends PicoException {
+
+ protected Throwable cause;
+
+ protected PicoCompositionException() {
+ super();
+ }
+
+ public PicoCompositionException(String message, Throwable cause) {
+ super(message);
+ this.cause = cause;
+ }
+
+ public PicoCompositionException(Throwable cause) {
+ this.cause = cause;
+ }
+
+ public PicoCompositionException(String message) {
+ super(message);
+ cause = null;
+ }
+
+ public Throwable getCause() {
+ return cause;
+ }
+}