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