[CVS nano] more fun getting this working for jesktop

Paul Hammant <paul-yCVjj/[email protected]> Fri, 6 Feb 2004 17:26:10 -0600
Newsgroups gmane.comp.java.nanocontainer.cvs
Message-ID <[email protected]>
Commit in nano/src/java/org/nanocontainer on MAIN

Main.java +16 -11 1.9 -> 1.10

more fun getting this working for jesktop

----------

nano /src /java /org /nanocontainer

Main.java 1.9 -> 1.10

diff -u -r1.9 -r1.10
--- Main.java 29 Jan 2004 00:03:43 -0000 1.9
+++ Main.java 6 Feb 2004 23:26:10 -0000 1.10
@@ -11,21 +11,23 @@

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

+import org.picocontainer.defaults.DefaultPicoContainer;
+import org.picocontainer.ComponentAdapter;

import org.picoextras.integrationkit.ContainerComposer;
import org.picoextras.integrationkit.ContainerBuilder;
import org.picoextras.integrationkit.DefaultLifecycleContainerBuilder;

+import org.picoextras.reflection.DefaultReflectionContainerAdapter;

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

-import org.nanocontainer.script.rhino.JavascriptContainerBuilder;
-import org.nanocontainer.script.xml.XMLContainerBuilder;
-import org.nanocontainer.script.jython.JythonContainerBuilder;

+import org.xml.sax.InputSource;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

+import java.io.FileReader;

public class Main {

@@ -37,9 +39,9 @@

private static final Map extensionToAssemblerMap = new HashMap();

static {

- extensionToAssemblerMap.put(".js", JavascriptContainerBuilder.class);
- extensionToAssemblerMap.put(".xml", XMLContainerBuilder.class);
- extensionToAssemblerMap.put(".py", JythonContainerBuilder.class);

+ extensionToAssemblerMap.put(".js", "org.nanocontainer.script.rhino.JavascriptContainerBuilder");
+ extensionToAssemblerMap.put(".xml", "org.nanocontainer.script.xml.XMLContainerBuilder");
+ extensionToAssemblerMap.put(".py", "org.nanocontainer.script.jython.JythonContainerBuilder");

}

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

@@ -126,12 +128,15 @@

*/
private static void buildAndStartContainer(String composition, NanoContainerMonitor nanoContainerMonitor) throws Exception, InstantiationException {
final String extension = composition.substring(composition.indexOf("."));

- Class containerAssemblerClass = (Class) extensionToAssemblerMap.get(extension);

+ String containerAssemblerClassName = (String) extensionToAssemblerMap.get(extension);

// This won't work. They all need different ctor parameters. We should use pico itself to assemble this!!

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

+ DefaultPicoContainer dpc = new DefaultPicoContainer();
+ dpc.registerComponentInstance( new FileReader(composition));
+ dpc.registerComponentInstance(Main.class.getClassLoader());
+ DefaultReflectionContainerAdapter defaultReflectionContainerAdapter = new DefaultReflectionContainerAdapter(dpc);
+ ComponentAdapter componentAdapter = defaultReflectionContainerAdapter.registerComponentImplementation(containerAssemblerClassName);
+ final ContainerBuilder cb = (ContainerBuilder) componentAdapter.getComponentInstance();

final ObjectReference containerRef = new SimpleReference();

// build and start the container

@@ -213,5 +218,5 @@

System.exit(0);
}
}

-

+