[CVS nano] Pico-refactoring: Merged Stoppable into Startable.

Aslak Hellesoy <rinkrank-yCVjj/[email protected]> Wed, 28 Jan 2004 16:56:48 -0600
Newsgroups gmane.comp.java.nanocontainer.cvs
Message-ID <[email protected]>
Commit in nano/src on MAIN

java/org/nanocontainer/Main.java +19 -11 1.7 -> 1.8

/XmlCompositionNanoContainer.java +2 -2 1.6 -> 1.7

/JavaScriptCompositionNanoContainer.java -66 1.6 removed

/JythonCompositionNanoContainer.java -70 1.4 removed

test/org/nanocontainer/BespokeNanoRhinoScriptable.java -38 1.7 removed

/BogusNanoRhinoScriptable.java -25 1.5 removed

+21 -212

4 removed + 2 modified, total 6 files

Pico-refactoring: Merged Stoppable into Startable.

----------

nano /src /java /org /nanocontainer

Main.java 1.7 -> 1.8

diff -u -r1.7 -r1.8
--- Main.java 25 Jan 2004 15:39:43 -0000 1.7
+++ Main.java 28 Jan 2004 22:56:48 -0000 1.8
@@ -11,11 +11,12 @@

import org.picocontainer.defaults.ObjectReference;
import org.picocontainer.defaults.SimpleReference;

-import org.picoextras.integrationkit.ContainerAssembler;

+import org.picoextras.integrationkit.ContainerComposer;

import org.picoextras.integrationkit.ContainerBuilder;

-import org.picoextras.script.jython.JythonContainerAssembler;
-import org.picoextras.script.rhino.JavascriptContainerAssembler;

+import org.picoextras.integrationkit.DefaultLifecycleContainerBuilder;
+import org.picoextras.script.rhino.JavascriptContainerBuilder;

import org.picoextras.script.xml.XMLContainerBuilder;

+import org.picoextras.script.jython.JythonContainerBuilder;

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

@@ -36,9 +37,9 @@

private static final Map extensionToAssemblerMap = new HashMap();

static {

- extensionToAssemblerMap.put(".js", JavascriptContainerAssembler.class);

+ extensionToAssemblerMap.put(".js", JavascriptContainerBuilder.class);

extensionToAssemblerMap.put(".xml", XMLContainerBuilder.class);

- extensionToAssemblerMap.put(".py", JythonContainerAssembler.class);

+ extensionToAssemblerMap.put(".py", JythonContainerBuilder.class);

}

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

@@ -62,7 +63,7 @@

};

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

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

List options = getOptions(args);

String monitor = "";

@@ -118,18 +119,18 @@

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

+ I think it should be up to the ContainerComposer instances (in integrationkit) to decide what kind of

monitor/InvocationInterceptor to use.

AH
*/

- private static void buildAndStartContainer(String composition, NanoContainerMonitor nanoContainerMonitor) throws IllegalAccessException, InstantiationException {

+ private static void buildAndStartContainer(String composition, NanoContainerMonitor nanoContainerMonitor) throws Exception, 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.DefaultLifecycleContainerBuilder(ca);

+ ContainerComposer ca = (ContainerComposer) containerAssemblerClass.newInstance();
+ final ContainerBuilder cb = new DefaultLifecycleContainerBuilder(null);

final ObjectReference containerRef = new SimpleReference();

@@ -139,7 +140,14 @@

// add a shutdown hook that will tell the builder to kill it.
Runnable shutdownHook = new Runnable() {
public void run() {

- cb.killContainer(containerRef);

+ System.out.println("Shutting Down NanoContainer");
+ try {
+ cb.killContainer(containerRef);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ System.out.println("Exiting VM");
+ }

}
};
Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook));

----------

nano /src /java /org /nanocontainer

XmlCompositionNanoContainer.java 1.6 -> 1.7

diff -u -r1.6 -r1.7
--- XmlCompositionNanoContainer.java 25 Jan 2004 15:39:43 -0000 1.6
+++ XmlCompositionNanoContainer.java 28 Jan 2004 22:56:48 -0000 1.7
@@ -14,9 +14,9 @@

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

- * @version $Revision: 1.6 $

+ * @version $Revision: 1.7 $

* @deprecated To replace with a NanoContainer instance that is given a

- * {@link XMLContainerBuilder} instance in its ctor.

+ * {@link XMLContainerBuilder} instance in its ctor.

*/
public class XmlCompositionNanoContainer /*extends NanoContainer*/ {

----------

nano /src /java /org /nanocontainer

JavaScriptCompositionNanoContainer.java removed after 1.6

diff -N JavaScriptCompositionNanoContainer.java
--- JavaScriptCompositionNanoContainer.java 19 Jan 2004 20:40:24 -0000 1.6
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,66 +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.rhino.PicoScriptable;
-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 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 removed after 1.4

diff -N JythonCompositionNanoContainer.java
--- JythonCompositionNanoContainer.java 19 Jan 2004 20:40:24 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,70 +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.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;
-
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-
-/**
- * @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 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 /test /org /nanocontainer

BespokeNanoRhinoScriptable.java removed after 1.7

diff -N BespokeNanoRhinoScriptable.java
--- BespokeNanoRhinoScriptable.java 19 Jan 2004 20:40:24 -0000 1.7
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,38 +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.mozilla.javascript.Context;
-import org.mozilla.javascript.Function;
-import org.mozilla.javascript.Scriptable;
-import org.picoextras.script.rhino.PicoScriptable;
-
-
-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);
-// }
-
-}

----------

nano /src /test /org /nanocontainer

BogusNanoRhinoScriptable.java removed after 1.5

diff -N BogusNanoRhinoScriptable.java
--- BogusNanoRhinoScriptable.java 24 Dec 2003 00:34:25 -0000 1.5
+++ /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.mozilla.javascript.Context;
-import org.mozilla.javascript.Function;
-import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.ScriptableObject;
-import org.picoextras.script.rhino.PicoScriptable;
-
-
-public class BogusNanoRhinoScriptable extends ScriptableObject {
- public String getClassName() {
- return "PicoScriptable";
- }
-
- // all pub static javascript methods missing.
-}