logo       

[picocontainer-scm] [picocontainer] [3146] java/nanocontainer/trunk/contain: msg#00053

java.picocontainer.cvs

Subject: [picocontainer-scm] [picocontainer] [3146] java/nanocontainer/trunk/container-rhino: Moved common test objects to testmodel module.

Revision
3146
Author
mauro
Date
2006-12-26 05:00:07 -0600 (Tue, 26 Dec 2006)

Log Message

Moved common test objects to testmodel module.

Modified Paths

Added Paths

Removed Paths

Diff

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/A.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/A.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/A.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,8 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-/**
- * @author Mauro Talevi
- */
-public class A extends X {
-
-}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/B.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/B.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/B.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,20 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-import junit.framework.Assert;
-
-
-/**
- * @author Mauro Talevi
- */
-public class B extends X {
-    A a;
-
-    public B(A a) {
-        Assert.assertNotNull(a);
-        this.a = a;
-    }
-
-    public A getA() {
-        return a;
-    }
-}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/C.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/C.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/C.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,8 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-/**
- * @author Mauro Talevi
- */
-public class C extends X {
-
-}

Modified: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/GroovyContainerBuilderTestCase.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/GroovyContainerBuilderTestCase.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/GroovyContainerBuilderTestCase.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -14,6 +14,7 @@
 package org.nanocontainer.script.groovy;
 
 import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase;
+import org.nanocontainer.testmodel.A;
 import org.picocontainer.PicoContainer;
 import org.picocontainer.defaults.DefaultPicoContainer;
 

Modified: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/GroovyNodeBuilderTestCase.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/GroovyNodeBuilderTestCase.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/GroovyNodeBuilderTestCase.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -16,7 +16,13 @@
 import org.nanocontainer.script.BarDecoratingPicoContainer;
 import org.nanocontainer.script.FooDecoratingPicoContainer;
 import org.nanocontainer.script.NanoContainerMarkupException;
+import org.nanocontainer.testmodel.A;
+import org.nanocontainer.testmodel.B;
+import org.nanocontainer.testmodel.HasParams;
+import org.nanocontainer.testmodel.ParentAssemblyScope;
+import org.nanocontainer.testmodel.SomeAssemblyScope;
 import org.nanocontainer.testmodel.WebServerConfig;
+import org.nanocontainer.testmodel.X;
 import org.picocontainer.ComponentAdapter;
 import org.picocontainer.MutablePicoContainer;
 import org.picocontainer.PicoContainer;
@@ -89,12 +95,12 @@
     public void testShouldAcceptConstantParametersForComponent() throws PicoCompositionException {
         Reader script = new StringReader("" +
                 "import org.picocontainer.defaults.ConstantParameter\n" +
-                "import org.nanocontainer.script.groovy.HasParams\n" +
+                "import org.nanocontainer.testmodel.HasParams\n" +
                 "" +
                 "builder = new org.nanocontainer.script.groovy.GroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +
                 "    component(key:'byClass', class:HasParams, parameters:[ 'a', 'b', new ConstantParameter('c') ])\n" +
-                "    component(key:'byClassString', class:'org.nanocontainer.script.groovy.HasParams', parameters:[ 'c', 'a', 't' ])\n" +
+                "    component(key:'byClassString', class:'org.nanocontainer.testmodel.HasParams', parameters:[ 'c', 'a', 't' ])\n" +
                 "}");
 
         PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/HasParams.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/HasParams.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/HasParams.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,26 +0,0 @@
-/*****************************************************************************
- * Copyright (c) PicoContainer 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.                                                     *
- *                                                                           *
- * Idea by Rachel Davies, Original code by various                           *
- *****************************************************************************/
-package org.nanocontainer.script.groovy;
-
-/**
- * @author Stephen Molitor
- */
-public class HasParams {
-
-    private String params;
-
-    public HasParams(String a, String b, String c) {
-        params = a + b + c;
-    }
-
-    public String getParams() {
-        return params;
-    }
-}

Modified: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/OldGroovyNodeBuilderTestCase.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/OldGroovyNodeBuilderTestCase.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/OldGroovyNodeBuilderTestCase.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -10,7 +10,13 @@
 import org.nanocontainer.reflection.DefaultNanoPicoContainer;
 import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase;
 import org.nanocontainer.script.NanoContainerMarkupException;
+import org.nanocontainer.testmodel.A;
+import org.nanocontainer.testmodel.B;
+import org.nanocontainer.testmodel.HasParams;
+import org.nanocontainer.testmodel.ParentAssemblyScope;
+import org.nanocontainer.testmodel.SomeAssemblyScope;
 import org.nanocontainer.testmodel.WebServerConfig;
+import org.nanocontainer.testmodel.X;
 import org.picocontainer.ComponentAdapter;
 import org.picocontainer.MutablePicoContainer;
 import org.picocontainer.PicoContainer;
@@ -30,8 +36,8 @@
 
     public void testInstantiateBasicScriptable() throws PicoCompositionException {
         Reader script = new StringReader("" +
-                "import org.nanocontainer.script.groovy.X\n" +
-                "import org.nanocontainer.script.groovy.A\n" +
+                "import org.nanocontainer.testmodel.X\n" +
+                "import org.nanocontainer.testmodel.A\n" +
                 "X.reset()\n" +
                 "builder = new org.nanocontainer.script.groovy.OldGroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +
@@ -47,7 +53,7 @@
 
     public void testComponentInstances() throws PicoCompositionException {
         Reader script = new StringReader("" +
-                "import org.nanocontainer.script.groovy.A\n" +
+                "import org.nanocontainer.testmodel.A\n" +
                 "builder = new org.nanocontainer.script.groovy.OldGroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +
                 "    component(key:'a', instance:'apple')\n" +
@@ -79,12 +85,12 @@
     public void testShouldAcceptConstantParametersForComponent() throws PicoCompositionException {
         Reader script = new StringReader("" +
                 "import org.picocontainer.defaults.ConstantParameter\n" +
-                "import org.nanocontainer.script.groovy.HasParams\n" +
+                "import org.nanocontainer.testmodel.HasParams\n" +
                 "" +
                 "builder = new org.nanocontainer.script.groovy.OldGroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +
                 "    component(key:'byClass', class:HasParams, parameters:[ 'a', 'b', new ConstantParameter('c') ])\n" +
-                "    component(key:'byClassString', class:'org.nanocontainer.script.groovy.HasParams', parameters:[ 'c', 'a', 't' ])\n" +
+                "    component(key:'byClassString', class:'org.nanocontainer.testmodel.HasParams', parameters:[ 'c', 'a', 't' ])\n" +
                 "}");
 
         PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
@@ -98,8 +104,8 @@
     public void testShouldAcceptComponentParametersForComponent() throws PicoCompositionException {
         Reader script = new StringReader("" +
                 "import org.picocontainer.defaults.ComponentParameter\n" +
-                "import org.nanocontainer.script.groovy.A\n" +
-                "import org.nanocontainer.script.groovy.B\n" +
+                "import org.nanocontainer.testmodel.A\n" +
+                "import org.nanocontainer.testmodel.B\n" +
                 "" +
                 "builder = new org.nanocontainer.script.groovy.OldGroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +
@@ -129,8 +135,8 @@
     public void testShouldAcceptComponentParameterWithClassNameKey() throws PicoCompositionException {
         Reader script = new StringReader("" +
                 "import org.picocontainer.defaults.ComponentParameter\n" +
-                "import org.nanocontainer.script.groovy.A\n" +
-                "import org.nanocontainer.script.groovy.B\n" +
+                "import org.nanocontainer.testmodel.A\n" +
+                "import org.nanocontainer.testmodel.B\n" +
                 "" +
                 "builder = new org.nanocontainer.script.groovy.OldGroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +
@@ -532,8 +538,8 @@
 
     public void testComponentAdapterIsPotentiallyScriptable() throws PicoCompositionException {
         Reader script = new StringReader("" +
-                "import org.nanocontainer.script.groovy.X\n" +
-                "import org.nanocontainer.script.groovy.A\n" +
+                "import org.nanocontainer.testmodel.X\n" +
+                "import org.nanocontainer.testmodel.A\n" +
                 "X.reset()\n" +
                 "builder = new org.nanocontainer.script.groovy.OldGroovyNodeBuilder()\n" +
                 "nano = builder.container {\n" +

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/ParentAssemblyScope.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/ParentAssemblyScope.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/ParentAssemblyScope.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,5 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-public class ParentAssemblyScope {
-
-}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/SomeAssemblyScope.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/SomeAssemblyScope.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/SomeAssemblyScope.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,5 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-public class SomeAssemblyScope {
-
-}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/StringBean.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/StringBean.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/StringBean.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,39 +0,0 @@
-/*****************************************************************************
- * Copyright (c) PicoContainer 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.                                                     *
- *                                                                           *
- * Idea by Rachel Davies, Original code by various                           *
- *****************************************************************************/
-package org.nanocontainer.script.groovy;
-
-/**
- * @author Stephen Molitor
- * @version $Revision$
- */
-public class StringBean {
-
-    private String firstName;
-    private String lastName;
-
-    public StringBean() {
-    }
-    
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public void setFirstName(String firstName) {
-        this.firstName = firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public void setLastName(String lastName) {
-        this.lastName = lastName;
-    }
-}
\ No newline at end of file

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestComponentAdapterFactory.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestComponentAdapterFactory.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestComponentAdapterFactory.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,26 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-import org.picocontainer.ComponentAdapter;
-import org.picocontainer.Parameter;
-import org.picocontainer.PicoIntrospectionException;
-import org.picocontainer.defaults.AssignabilityRegistrationException;
-import org.picocontainer.defaults.DefaultComponentAdapterFactory;
-import org.picocontainer.defaults.NotConcreteRegistrationException;
-
-/**
- * @author Paul Hammant
- * @version $Revision$
- */
-public class TestComponentAdapterFactory extends DefaultComponentAdapterFactory {
-
-    public StringBuffer sb;
-
-    public TestComponentAdapterFactory(StringBuffer sb) {
-        this.sb = sb;
-    }
-
-    public ComponentAdapter createComponentAdapter(Object componentKey, Class componentImplementation, Parameter[] parameters) throws PicoIntrospectionException, AssignabilityRegistrationException, NotConcreteRegistrationException {
-        sb.append("called");
-        return super.createComponentAdapter(componentKey, componentImplementation, parameters);    //To change body of overridden methods use File | Settings | File Templates.
-    }
-}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestContainer.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestContainer.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestContainer.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,23 +0,0 @@
-package org.nanocontainer.script.groovy;
-
-import org.nanocontainer.reflection.DefaultNanoPicoContainer;
-import org.picocontainer.PicoContainer;
-import org.picocontainer.defaults.ComponentAdapterFactory;
-
-/**
- * @author Paul Hammant
- * @version $Revision$
- */
-public class TestContainer extends DefaultNanoPicoContainer {
-
-    public TestContainer(ComponentAdapterFactory caf, PicoContainer parent) {
-        super(TestContainer.class.getClassLoader(), caf, parent);
-    }
-
-    public TestContainer(PicoContainer parent) {
-        super(TestContainer.class.getClassLoader(), parent);
-    }
-
-    public TestContainer() {
-    }
-}

Added: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestContainer.java (0 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestContainer.java	                        (rev 0)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestContainer.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,23 @@
+package org.nanocontainer.script.groovy;
+
+import org.nanocontainer.reflection.DefaultNanoPicoContainer;
+import org.picocontainer.PicoContainer;
+import org.picocontainer.defaults.ComponentAdapterFactory;
+
+/**
+ * @author Paul Hammant
+ * @version $Revision: 3144 $
+ */
+public class TestContainer extends DefaultNanoPicoContainer {
+
+    public TestContainer(ComponentAdapterFactory caf, PicoContainer parent) {
+        super(TestContainer.class.getClassLoader(), caf, parent);
+    }
+
+    public TestContainer(PicoContainer parent) {
+        super(TestContainer.class.getClassLoader(), parent);
+    }
+
+    public TestContainer() {
+    }
+}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestingChildBuilder.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestingChildBuilder.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestingChildBuilder.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -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.                                                     *
- *                                                                           *
- * Original code by Aslak Hellesoy and Paul Hammant                          *
- *****************************************************************************/
-
-package org.nanocontainer.script.groovy;
-
-import groovy.util.NodeBuilder;
-import org.picocontainer.MutablePicoContainer;
-
-import java.util.Map;
-
-/**
- * @author Paul Hammant
- * @version $Revision$
- */
-public class TestingChildBuilder extends NodeBuilder {
-
-    MutablePicoContainer toOperateOn;
-
-    public TestingChildBuilder(MutablePicoContainer toOperateOn) {
-        this.toOperateOn = toOperateOn;
-    }
-
-    protected Object createNode(Object name, Map map) {
-        if (name.equals("component")) {
-            return toOperateOn.registerComponentImplementation(map.remove("key"), (Class) map.remove("class"));
-        } else {
-            return null;
-        }
-    }
-
-}

Added: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestingChildBuilder.java (0 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestingChildBuilder.java	                        (rev 0)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestingChildBuilder.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,38 @@
+/*****************************************************************************
+ * 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.                                                     *
+ *                                                                           *
+ * Original code by Aslak Hellesoy and Paul Hammant                          *
+ *****************************************************************************/
+
+package org.nanocontainer.script.groovy;
+
+import groovy.util.NodeBuilder;
+import org.picocontainer.MutablePicoContainer;
+
+import java.util.Map;
+
+/**
+ * @author Paul Hammant
+ * @version $Revision: 3144 $
+ */
+public class TestingChildBuilder extends NodeBuilder {
+
+    MutablePicoContainer toOperateOn;
+
+    public TestingChildBuilder(MutablePicoContainer toOperateOn) {
+        this.toOperateOn = toOperateOn;
+    }
+
+    protected Object createNode(Object name, Map map) {
+        if (name.equals("component")) {
+            return toOperateOn.registerComponentImplementation(map.remove("key"), (Class) map.remove("class"));
+        } else {
+            return null;
+        }
+    }
+
+}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/X.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/X.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/X.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,42 +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.script.groovy;
-
-import org.picocontainer.Disposable;
-import org.picocontainer.Startable;
-
-/**
- * An abstract component and three dependancies used for testing.
- */
-public abstract class X implements Startable, Disposable {
-
-    public static String componentRecorder = "";
-
-    public static void reset() {
-        componentRecorder = "";
-    }
-
-    public void start() {
-        componentRecorder += "<" + code();
-    }
-
-    public void stop() {
-        componentRecorder += code() + ">";
-    }
-
-    public void dispose() {
-        componentRecorder += "!" + code();
-    }
-
-    private String code() {
-        String name = getClass().getName();
-        return name.substring(name.lastIndexOf('.') + 1, name.length());
-    }
-
-}

Deleted: java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/Xxx.java (3145 => 3146)

--- java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/Xxx.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/Xxx.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,61 +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.script.groovy;
-
-import junit.framework.Assert;
-import org.picocontainer.Disposable;
-import org.picocontainer.Startable;
-
-/**
- * An abstract component and three dependancies used for testing.
- */
-public abstract class Xxx implements Startable, Disposable {
-
-    public static String componentRecorder = "";
-
-    public static void reset() {
-        componentRecorder = "";
-    }
-
-    public void start() {
-        componentRecorder += "<" + code();
-    }
-
-    public void stop() {
-        componentRecorder += code() + ">";
-    }
-
-    public void dispose() {
-        componentRecorder += "!" + code();
-    }
-
-    private String code() {
-        String name = getClass().getName();
-        return name.substring(name.indexOf('$') + 1, name.length());
-    }
-
-    public static class A extends Xxx {
-    }
-
-    public static class B extends Xxx {
-        A a;
-
-        public B(A a) {
-            Assert.assertNotNull(a);
-            this.a = a;
-        }
-
-        public A getA() {
-            return a;
-        }
-    }
-
-    public static class C extends Xxx {
-    }
-}

Modified: java/nanocontainer/trunk/container-jruby/pom.xml (3145 => 3146)

--- java/nanocontainer/trunk/container-jruby/pom.xml	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-jruby/pom.xml	2006-12-26 11:00:07 UTC (rev 3146)
@@ -9,7 +9,7 @@
         <version>1.1-SNAPSHOT</version>
     </parent>
     <artifactId>nanocontainer-jruby</artifactId>
-    <name>NanoContainer JRury</name>
+    <name>NanoContainer JRuby</name>
     <packaging>jar</packaging>
     <dependencies>
         <dependency>

Added: java/nanocontainer/trunk/container-jruby/src/test/org/nanocontainer/script/jruby/JRuby2ContainerBuilderTestCase.java (0 => 3146)

--- java/nanocontainer/trunk/container-jruby/src/test/org/nanocontainer/script/jruby/JRuby2ContainerBuilderTestCase.java	                        (rev 0)
+++ java/nanocontainer/trunk/container-jruby/src/test/org/nanocontainer/script/jruby/JRuby2ContainerBuilderTestCase.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,585 @@
+package org.nanocontainer.script.jruby;
+
+import org.jmock.Mock;
+import org.nanocontainer.NanoPicoContainer;
+import org.nanocontainer.TestHelper;
+import org.nanocontainer.integrationkit.PicoCompositionException;
+import org.nanocontainer.reflection.DefaultNanoPicoContainer;
+import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase;
+import org.nanocontainer.script.NanoContainerMarkupException;
+import org.nanocontainer.testmodel.A;
+import org.nanocontainer.testmodel.B;
+import org.nanocontainer.testmodel.HasParams;
+import org.nanocontainer.testmodel.ParentAssemblyScope;
+import org.nanocontainer.testmodel.SomeAssemblyScope;
+import org.nanocontainer.testmodel.X;
+import org.picocontainer.ComponentAdapter;
+import org.picocontainer.MutablePicoContainer;
+import org.picocontainer.PicoContainer;
+import org.picocontainer.defaults.ComponentAdapterFactory;
+import org.picocontainer.defaults.DefaultPicoContainer;
+import org.picocontainer.defaults.InstanceComponentAdapter;
+import org.picocontainer.defaults.SetterInjectionComponentAdapter;
+import org.picocontainer.defaults.SetterInjectionComponentAdapterFactory;
+import org.picocontainer.defaults.UnsatisfiableDependenciesException;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+/**
+ * @author Nick Sieger
+ * @author Paul Hammant
+ * @author Chris Bailey
+ * @author Mauro Talevi
+ */
+public class JRuby2ContainerBuilderTestCase extends AbstractScriptedContainerBuilderTestCase {
+    private static final String ASSEMBLY_SCOPE = "SOME_SCOPE";
+
+
+    public void testContainerCanBeBuiltWithParentGlobal() {
+        Reader script = new StringReader(
+                                         "StringBuffer = java.lang.StringBuffer\n" +
+                                         "container(:parent => $parent) { \n" +
+                                         "  component(StringBuffer)\n" +
+                                         "}");
+        PicoContainer parent = new DefaultPicoContainer();
+        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
+        //PicoContainer.getParent() is now ImmutablePicoContainer
+        assertNotNull(pico.getParent());
+        assertNotSame(parent, pico.getParent());
+        assertEquals(StringBuffer.class, pico.getComponentInstance(StringBuffer.class).getClass());
+    }
+
+    public void testContainerCanBeBuiltWithComponentImplementation() {
+        X.reset();
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "container {\n" +
+                                         "    component(A)\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        // LifecyleContainerBuilder starts the container
+        pico.dispose();
+
+        assertEquals("Should match the _expression_", "<A!A", X.componentRecorder);
+    }
+
+    public void testContainerCanBeBuiltWithComponentInstance() {
+        Reader script = new StringReader(
+                                         "container { \n" +
+                                         "  component(:key => 'string', :instance => 'foo')\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, "SOME_SCOPE");
+
+        assertEquals("foo", pico.getComponentInstance("string"));
+    }
+
+    public void testBuildingWithPicoSyntax() {
+        Reader script = new StringReader(
+                                         "$parent.registerComponentImplementation('foo', Java::JavaClass.for_name('java.lang.String'))\n"
+                                         +
+                                         "DefaultPicoContainer = org.picocontainer.defaults.DefaultPicoContainer\n" +
+                                         "pico = DefaultPicoContainer.new($parent)\n" +
+                                         "pico.registerComponentImplementation(Java::JavaClass.for_name('org.nanocontainer.testmodel.A'))\n"
+                                         +
+                                         "pico");
+
+        PicoContainer parent = new DefaultPicoContainer();
+        PicoContainer pico = buildContainer(script, parent, "SOME_SCOPE");
+
+        assertNotSame(parent, pico.getParent());
+        assertNotNull(pico.getComponentInstance(A.class));
+        assertNotNull(pico.getComponentInstance("foo"));
+    }
+
+    public void testContainerBuiltWithMultipleComponentInstances() {
+        Reader script = new StringReader(
+                                         "container {\n" +
+                                         "    component(:key => 'a', :instance => 'apple')\n" +
+                                         "    component(:key => 'b', :instance => 'banana')\n" +
+                                         "    component(:instance => 'noKeySpecified')\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        assertEquals("apple", pico.getComponentInstance("a"));
+        assertEquals("banana", pico.getComponentInstance("b"));
+        assertEquals("noKeySpecified", pico.getComponentInstance(String.class));
+    }
+
+    public void testShouldFailWhenNeitherClassNorInstanceIsSpecifiedForComponent() {
+        Reader script = new StringReader(
+                                         "container {\n" +
+                                         "  component(:key => 'a')\n" +
+                                         "}");
+
+        try {
+            buildContainer(script, null, ASSEMBLY_SCOPE);
+            fail("NanoContainerMarkupException should have been raised");
+        } catch(NanoContainerMarkupException e) {
+            // expected
+        }
+    }
+
+    public void testAcceptsConstantParametersForComponent() {
+        Reader script = new StringReader(
+                                         "HasParams = org.nanocontainer.testmodel.HasParams\n" +
+                                         "container {\n" +
+                                         "    component(:key => 'byClass', :class => HasParams, :parameters => [ 'a', 'b', constant('c')])\n"
+                                         +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        HasParams byClass = (HasParams) pico.getComponentInstance("byClass");
+        assertEquals("abc", byClass.getParams());
+    }
+
+    public void testAcceptsComponentClassNameAsString() {
+        Reader script = new StringReader(
+                                         "container {\n" +
+                                         "    component(:key => 'byClassString', :class => 'org.nanocontainer.testmodel.HasParams', :parameters => [ 'c', 'a', 't' ])\n"
+                                         +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        HasParams byClassString = (HasParams) pico.getComponentInstance("byClassString");
+        assertEquals("cat", byClassString.getParams());
+    }
+
+    public void testAcceptsComponentParametersForComponent() {
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "B = org.nanocontainer.testmodel.B\n" +
+                                         "container {\n" +
+                                         "    component(:key => 'a1', :class => A)\n" +
+                                         "    component(:key => 'a2', :class => A)\n" +
+                                         "    component(:key => 'b1', :class => B, :parameters => [ key('a1') ])\n" +
+                                         "    component(:key => 'b2', :class => B, :parameters => key('a2'))\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        A a1 = (A) pico.getComponentInstance("a1");
+        A a2 = (A) pico.getComponentInstance("a2");
+        B b1 = (B) pico.getComponentInstance("b1");
+        B b2 = (B) pico.getComponentInstance("b2");
+
+        assertNotNull(a1);
+        assertNotNull(a2);
+        assertNotNull(b1);
+        assertNotNull(b2);
+
+        assertSame(a1, b1.getA());
+        assertSame(a2, b2.getA());
+        assertNotSame(a1, a2);
+        assertNotSame(b1, b2);
+    }
+
+    public void testAcceptsComponentParameterWithClassNameKey() {
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "B = org.nanocontainer.testmodel.B\n" +
+                                         "container {\n" +
+                                         "    component(:class => A)\n" +
+                                         "    component(:key => B, :class => B, :parameters => key(A))\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        A a = (A) pico.getComponentInstance(A.class);
+        B b = (B) pico.getComponentInstance(B.class);
+
+        assertNotNull(a);
+        assertNotNull(b);
+        assertSame(a, b.getA());
+    }
+
+    public void testInstantiateBasicComponentInDeeperTree() {
+        X.reset();
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "container {\n" +
+                                         "  container {\n" +
+                                         "    component(A)\n" +
+                                         "  }\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        pico.dispose();
+        assertEquals("Should match the _expression_", "<A!A", X.componentRecorder);
+    }
+
+    public void testCustomComponentAdapterFactoryCanBeSpecified() {
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "container(:component_adapter_factory => $assembly_scope) {\n" +
+                                         "    component(A)\n" +
+                                         "}");
+
+        A a = new A();
+        Mock cafMock = mock(ComponentAdapterFactory.class);
+        cafMock.expects(once()).method("createComponentAdapter").with(same(A.class), same(A.class), eq(null))
+            .will(returnValue(new InstanceComponentAdapter(A.class, a)));
+        PicoContainer pico = buildContainer(script, null, cafMock.proxy());
+        assertSame(a, pico.getComponentInstanceOfType(A.class));
+    }
+
+    public void testCustomComponentMonitorCanBeSpecified() {
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "StringWriter = java.io.StringWriter\n" +
+                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
+                                         "writer = StringWriter.new\n" +
+                                         "monitor = WriterComponentMonitor.new(writer) \n" +
+                                         "container(:component_monitor => monitor) {\n" +
+                                         "    component(A)\n" +
+                                         "    component(:key => StringWriter, :instance => writer)\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
+        assertTrue(writer.toString().length() > 0);
+    }
+
+    public void testCustomComponentMonitorCanBeSpecifiedWhenCAFIsSpecified() {
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "StringWriter = java.io.StringWriter\n" +
+                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
+                                         "DefaultComponentAdapterFactory = org.picocontainer.defaults.DefaultComponentAdapterFactory\n" +
+                                         "writer = StringWriter.new\n" +
+                                         "monitor = WriterComponentMonitor.new(writer) \n" +
+                                         "container(:component_adapter_factory => DefaultComponentAdapterFactory.new, :component_monitor => monitor) {\n"
+                                         +
+                                         "    component(A)\n" +
+                                         "    component(:key => StringWriter, :instance => writer)\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
+        assertTrue(writer.toString().length() > 0);
+    }
+
+    public void testCustomComponentMonitorCanBeSpecifiedWhenParentIsSpecified() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "StringWriter = java.io.StringWriter\n" +
+                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
+                                         "writer = StringWriter.new\n" +
+                                         "monitor = WriterComponentMonitor.new(writer) \n" +
+                                         "container(:parent => $parent, :component_monitor => monitor) {\n" +
+                                         "    component(A)\n" +
+                                         "    component(:key => StringWriter, :instance => writer)\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
+        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
+        assertTrue(writer.toString().length() > 0);
+    }
+
+    public void testCustomComponentMonitorCanBeSpecifiedWhenParentAndCAFAreSpecified() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "StringWriter = java.io.StringWriter\n" +
+                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
+                                         "DefaultComponentAdapterFactory = org.picocontainer.defaults.DefaultComponentAdapterFactory\n" +
+                                         "writer = StringWriter.new\n" +
+                                         "monitor = WriterComponentMonitor.new(writer) \n" +
+                                         "container(:parent => $parent, :component_adapter_factory => DefaultComponentAdapterFactory.new, :component_monitor => monitor) {\n"
+                                         +
+                                         "    component(A)\n" +
+                                         "    component(:key => StringWriter, :instance => writer)\n" +
+                                         "}");
+
+        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
+        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
+        assertTrue(writer.toString().length() > 0);
+    }
+
+    public void testInstantiateWithImpossibleComponentDependenciesConsideringTheHierarchy() {
+        X.reset();
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "B = org.nanocontainer.testmodel.B\n" +
+                                         "C = org.nanocontainer.testmodel.C\n" +
+                                         "container {\n" +
+                                         "    component(B)\n" +
+                                         "    container() {\n" +
+                                         "        component(A)\n" +
+                                         "    }\n" +
+                                         "    component(C)\n" +
+                                         "}");
+
+        try {
+            buildContainer(script, null, ASSEMBLY_SCOPE);
+            fail("Should not have been able to instansiate component tree due to visibility/parent reasons.");
+        } catch(UnsatisfiableDependenciesException expected) {
+        }
+    }
+
+    public void testInstantiateWithChildContainerAndStartStopAndDisposeOrderIsCorrect() {
+        X.reset();
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "B = org.nanocontainer.testmodel.B\n" +
+                                         "C = org.nanocontainer.testmodel.C\n" +
+                                         "container {\n" +
+                                         "    component(A)\n" +
+                                         "    container() {\n" +
+                                         "         component(B)\n" +
+                                         "    }\n" +
+                                         "    component(C)\n" +
+                                         "}\n");
+
+        // A and C have no no dependancies. B Depends on A.
+        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
+        pico.stop();
+        pico.dispose();
+
+        assertEquals("Should match the _expression_", "<A<C<BB>C>A>!B!C!A", X.componentRecorder);
+    }
+
+    public void testBuildContainerWithParentAttribute() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        parent.registerComponentInstance("hello", "world");
+
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "container(:parent => $parent) {\n" +
+                                         "    component(A)\n" +
+                                         "}\n");
+
+        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
+        // Should be able to get instance that was registered in the parent container
+        assertEquals("world", pico.getComponentInstance("hello"));
+    }
+
+    public void testBuildContainerWithParentDependencyAndAssemblyScope() throws Exception {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        parent.registerComponentImplementation("a", A.class);
+
+        String source =
+                        "B = org.nanocontainer.testmodel.B\n" +
+                        "SomeAssemblyScope = org.nanocontainer.testmodel.SomeAssemblyScope\n" +
+                        "container(:parent => $parent) {\n" +
+                        "  if $assembly_scope.kind_of?(SomeAssemblyScope)\n " +
+                        "    component(B)\n" +
+                        "  end\n " +
+                        "}\n";
+
+        Reader script = new StringReader(source);
+
+        PicoContainer pico = buildContainer(script, parent, new SomeAssemblyScope());
+        assertNotNull(pico.getComponentInstanceOfType(B.class));
+
+        script = new StringReader(source);
+        pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
+        assertNull(pico.getComponentInstanceOfType(B.class));
+    }
+
+    public void testBuildContainerWithParentAndChildAssemblyScopes() throws IOException {
+        String scriptValue =
+                             "A = org.nanocontainer.testmodel.A\n" +
+                             "B = org.nanocontainer.testmodel.B\n" +
+                             "ParentAssemblyScope = org.nanocontainer.testmodel.ParentAssemblyScope\n" +
+                             "SomeAssemblyScope = org.nanocontainer.testmodel.SomeAssemblyScope\n" +
+                             "container(:parent => $parent) {\n" +
+                             "  puts 'assembly_scope:'+$assembly_scope.inspect\n " +
+                             "  case $assembly_scope\n" +
+                             "  when ParentAssemblyScope\n " +
+                             "    puts 'parent scope'\n " +
+                             "    component(A)\n" +
+                             "  when SomeAssemblyScope\n " +
+                             "    puts 'child scope'\n " +
+                             "    component(B)\n" +
+                             "  else \n" +
+                             "     raise 'Invalid Scope: ' +  $assembly_scope.inspect\n" +
+                             "  end\n " +
+                             "}\n";
+
+        Reader script = new StringReader(scriptValue);
+        NanoPicoContainer parent = new DefaultNanoPicoContainer(
+            buildContainer(script, null, new ParentAssemblyScope()));
+        assertNotNull(parent.getComponentAdapterOfType(A.class));
+
+        script = new StringReader(scriptValue);
+        PicoContainer pico = buildContainer(script, parent, new SomeAssemblyScope());
+        assertNotNull(pico.getComponentInstance(B.class));
+    }
+
+    public void FAILING_testBuildContainerWithParentAttributesPropagatesComponentAdapterFactory() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer(new SetterInjectionComponentAdapterFactory());
+        Reader script = new StringReader("container(:parent => $parent)\n");
+
+        MutablePicoContainer pico = (MutablePicoContainer) buildContainer(script, parent, ASSEMBLY_SCOPE);
+        // Should be able to get instance that was registered in the parent container
+        ComponentAdapter componentAdapter = pico.registerComponentImplementation(String.class);
+        assertTrue("ComponentAdapter should be originally defined by parent",
+                   componentAdapter instanceof SetterInjectionComponentAdapter);
+    }
+
+    public void testExceptionThrownWhenParentAttributeDefinedWithinChild() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer(new SetterInjectionComponentAdapterFactory());
+        Reader script = new StringReader(
+                                         "A = org.nanocontainer.testmodel.A\n" +
+                                         "B = org.nanocontainer.testmodel.B\n" +
+                                         "container() {\n" +
+                                         "    component(A)\n" +
+                                         "    container(:parent => $parent) {\n" +
+                                         "         component(B)\n" +
+                                         "    }\n" +
+                                         "}\n");
+
+        try {
+            buildContainer(script, parent, ASSEMBLY_SCOPE);
+            fail("NanoContainerMarkupException should have been thrown.");
+        } catch(NanoContainerMarkupException ignore) {
+            // expected
+        }
+    }
+
+    //TODO
+    public void testSpuriousAttributes() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+
+        Reader script = new StringReader(
+                                         "container(:jim => 'Jam', :foo => 'bar')");
+        try {
+            buildContainer(script, parent, ASSEMBLY_SCOPE);
+            //fail("Should throw exception upon spurious attributes?");
+        } catch(NanoContainerMarkupException ex) {
+            //ok?
+        }
+    }
+
+    public void testWithDynamicClassPathThatDoesNotExist() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        try {
+            Reader script = new StringReader(
+                                             "container {\n" +
+                                             "  classPathElement(:path => 'this/path/does/not/exist.jar')\n" +
+                                             "  component(:class => \"FooBar\")\n" +
+                                             "}");
+
+            buildContainer(script, parent, ASSEMBLY_SCOPE);
+            fail("should have barfed with bad path exception");
+        } catch(NanoContainerMarkupException e) {
+            // excpected
+        }
+
+    }
+
+    public void testWithDynamicClassPath() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        Reader script = new StringReader(
+            "TestHelper = org.nanocontainer.TestHelper\n"
+            + "testCompJar = TestHelper.getTestCompJarFile()\n"
+            + "compJarPath = testCompJar.getCanonicalPath()\n"
+            + "container {\n"
+            + "  classPathElement(:path => compJarPath)\n"
+            + "  component(:class => \"TestComp\")\n"
+            + "}" );
+
+        MutablePicoContainer pico = (MutablePicoContainer) buildContainer(script, parent, ASSEMBLY_SCOPE);
+
+        assertEquals(1, pico.getComponentInstances().size());
+        assertEquals("TestComp", pico.getComponentInstances().get(0).getClass()
+            .getName());
+    }
+
+    public void testWithDynamicClassPathWithPermissions() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        Reader script = new StringReader(
+            "TestHelper = org.nanocontainer.TestHelper\n" +
+            "SocketPermission = java.net.SocketPermission\n"
+            + "testCompJar = TestHelper.getTestCompJarFile()\n"
+            + "compJarPath = testCompJar.getCanonicalPath()\n"
+            + "container {\n"
+            + "  classPathElement(:path => compJarPath) {\n"
+            + "    grant(:perm => SocketPermission.new('google.com','connect'))\n"
+            + "  }\n"
+            + "  component(:class => \"TestComp\")\n"
+            + "}" );
+
+        MutablePicoContainer pico = (MutablePicoContainer) buildContainer(script, parent, ASSEMBLY_SCOPE);
+
+        assertEquals(1, pico.getComponentInstances().size());
+        // can't actually test the permission under JUNIT control. We're just
+        // testing the syntax here.
+    }
+
+    public void testGrantPermissionInWrongPlace() {
+        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
+        try {
+            Reader script = new StringReader(
+                "TestHelper = org.nanocontainer.TestHelper\n" +
+                "SocketPermission = java.net.SocketPermission\n" +
+                "testCompJar = TestHelper.getTestCompJarFile()\n" +
+                "container {\n" +
+                "  grant(:perm => SocketPermission.new('google.com','connect'))\n" +
+                "}");
+
+            buildContainer(script, parent, ASSEMBLY_SCOPE);
+            fail("should barf with [Don't know how to create a 'grant' child] exception");
+        } catch(PicoCompositionException e) {
+            String message = e.getCause().getMessage();
+            assertNotNull(message);
+            assertTrue(message.contains("undefined method `grant' for #<Nano::Container:"));
+        }
+
+    }
+
+
+    public void testWithParentClassPathPropagatesWithNoParentContainer() throws IOException {
+        File testCompJar = TestHelper.getTestCompJarFile();
+
+        URLClassLoader classLoader = new URLClassLoader(new URL[]{testCompJar.toURL()},
+                                                        this.getClass().getClassLoader());
+        Class testComp = null;
+
+        try {
+            testComp = classLoader.loadClass("TestComp");
+        } catch(ClassNotFoundException ex) {
+            fail("Unable to load test component from the jar using a url classloader");
+        }
+        Reader script = new StringReader(
+            "container(:parent => $parent) {\n"
+            + "  component(:class => \"TestComp\")\n"
+            + "}");
+
+        PicoContainer pico = buildContainer(new JRubyContainerBuilder(script, classLoader), null, null);
+        assertNotNull(pico);
+        Object testCompInstance = pico.getComponentInstance(testComp.getName());
+        assertSame(testCompInstance.getClass(), testComp);
+
+    }
+
+//    public void testExceptionThrownWhenParentAttributeDefinedWithinChild() {
+//        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer(new SetterInjectionComponentAdapterFactory() );
+//        Reader script = new StringReader("" +
+//                "package org.nanocontainer.testmodel\n" +
+//                "nano = new GroovyNodeBuilder().container() {\n" +
+//                "    component(A)\n" +
+//                "    container(parent:parent) {\n" +
+//                "         component(B)\n" +
+//                "    }\n" +
+//                "}\n");
+//
+//        try {
+//            buildContainer(script, parent, ASSEMBLY_SCOPE);
+//            fail("NanoContainerMarkupException should have been thrown.");
+//        } catch (NanoContainerMarkupException ignore) {
+//            // ignore
+//        }
+//    }
+
+    private PicoContainer buildContainer(Reader script, PicoContainer parent, Object scope) {
+        return buildContainer(new JRubyContainerBuilder(script, getClass().getClassLoader()), parent, scope);
+    }
+}

Deleted: java/nanocontainer/trunk/container-jruby/src/test/org/nanocontainer/script/jruby/JRubyContainerBuilderTestCase.java (3145 => 3146)

--- java/nanocontainer/trunk/container-jruby/src/test/org/nanocontainer/script/jruby/JRubyContainerBuilderTestCase.java	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-jruby/src/test/org/nanocontainer/script/jruby/JRubyContainerBuilderTestCase.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -1,585 +0,0 @@
-package org.nanocontainer.script.jruby;
-
-import org.jmock.Mock;
-import org.nanocontainer.NanoPicoContainer;
-import org.nanocontainer.TestHelper;
-import org.nanocontainer.integrationkit.PicoCompositionException;
-import org.nanocontainer.reflection.DefaultNanoPicoContainer;
-import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase;
-import org.nanocontainer.script.NanoContainerMarkupException;
-import org.nanocontainer.script.groovy.A;
-import org.nanocontainer.script.groovy.B;
-import org.nanocontainer.script.groovy.HasParams;
-import org.nanocontainer.script.groovy.ParentAssemblyScope;
-import org.nanocontainer.script.groovy.SomeAssemblyScope;
-import org.nanocontainer.script.groovy.X;
-import org.picocontainer.ComponentAdapter;
-import org.picocontainer.MutablePicoContainer;
-import org.picocontainer.PicoContainer;
-import org.picocontainer.defaults.ComponentAdapterFactory;
-import org.picocontainer.defaults.DefaultPicoContainer;
-import org.picocontainer.defaults.InstanceComponentAdapter;
-import org.picocontainer.defaults.SetterInjectionComponentAdapter;
-import org.picocontainer.defaults.SetterInjectionComponentAdapterFactory;
-import org.picocontainer.defaults.UnsatisfiableDependenciesException;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-/**
- * @author Nick Sieger
- * @author Paul Hammant
- * @author Chris Bailey
- * @author Mauro Talevi
- */
-public class JRubyContainerBuilderTestCase extends AbstractScriptedContainerBuilderTestCase {
-    private static final String ASSEMBLY_SCOPE = "SOME_SCOPE";
-
-
-    public void testContainerCanBeBuiltWithParentGlobal() {
-        Reader script = new StringReader(
-                                         "StringBuffer = java.lang.StringBuffer\n" +
-                                         "container(:parent => $parent) { \n" +
-                                         "  component(StringBuffer)\n" +
-                                         "}");
-        PicoContainer parent = new DefaultPicoContainer();
-        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
-        //PicoContainer.getParent() is now ImmutablePicoContainer
-        assertNotNull(pico.getParent());
-        assertNotSame(parent, pico.getParent());
-        assertEquals(StringBuffer.class, pico.getComponentInstance(StringBuffer.class).getClass());
-    }
-
-    public void testContainerCanBeBuiltWithComponentImplementation() {
-        X.reset();
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "container {\n" +
-                                         "    component(A)\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        // LifecyleContainerBuilder starts the container
-        pico.dispose();
-
-        assertEquals("Should match the _expression_", "<A!A", X.componentRecorder);
-    }
-
-    public void testContainerCanBeBuiltWithComponentInstance() {
-        Reader script = new StringReader(
-                                         "container { \n" +
-                                         "  component(:key => 'string', :instance => 'foo')\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, "SOME_SCOPE");
-
-        assertEquals("foo", pico.getComponentInstance("string"));
-    }
-
-    public void testBuildingWithPicoSyntax() {
-        Reader script = new StringReader(
-                                         "$parent.registerComponentImplementation('foo', Java::JavaClass.for_name('java.lang.String'))\n"
-                                         +
-                                         "DefaultPicoContainer = org.picocontainer.defaults.DefaultPicoContainer\n" +
-                                         "pico = DefaultPicoContainer.new($parent)\n" +
-                                         "pico.registerComponentImplementation(Java::JavaClass.for_name('org.nanocontainer.script.groovy.A'))\n"
-                                         +
-                                         "pico");
-
-        PicoContainer parent = new DefaultPicoContainer();
-        PicoContainer pico = buildContainer(script, parent, "SOME_SCOPE");
-
-        assertNotSame(parent, pico.getParent());
-        assertNotNull(pico.getComponentInstance(A.class));
-        assertNotNull(pico.getComponentInstance("foo"));
-    }
-
-    public void testContainerBuiltWithMultipleComponentInstances() {
-        Reader script = new StringReader(
-                                         "container {\n" +
-                                         "    component(:key => 'a', :instance => 'apple')\n" +
-                                         "    component(:key => 'b', :instance => 'banana')\n" +
-                                         "    component(:instance => 'noKeySpecified')\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        assertEquals("apple", pico.getComponentInstance("a"));
-        assertEquals("banana", pico.getComponentInstance("b"));
-        assertEquals("noKeySpecified", pico.getComponentInstance(String.class));
-    }
-
-    public void testShouldFailWhenNeitherClassNorInstanceIsSpecifiedForComponent() {
-        Reader script = new StringReader(
-                                         "container {\n" +
-                                         "  component(:key => 'a')\n" +
-                                         "}");
-
-        try {
-            buildContainer(script, null, ASSEMBLY_SCOPE);
-            fail("NanoContainerMarkupException should have been raised");
-        } catch(NanoContainerMarkupException e) {
-            // expected
-        }
-    }
-
-    public void testAcceptsConstantParametersForComponent() {
-        Reader script = new StringReader(
-                                         "HasParams = org.nanocontainer.script.groovy.HasParams\n" +
-                                         "container {\n" +
-                                         "    component(:key => 'byClass', :class => HasParams, :parameters => [ 'a', 'b', constant('c')])\n"
-                                         +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        HasParams byClass = (HasParams) pico.getComponentInstance("byClass");
-        assertEquals("abc", byClass.getParams());
-    }
-
-    public void testAcceptsComponentClassNameAsString() {
-        Reader script = new StringReader(
-                                         "container {\n" +
-                                         "    component(:key => 'byClassString', :class => 'org.nanocontainer.script.groovy.HasParams', :parameters => [ 'c', 'a', 't' ])\n"
-                                         +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        HasParams byClassString = (HasParams) pico.getComponentInstance("byClassString");
-        assertEquals("cat", byClassString.getParams());
-    }
-
-    public void testAcceptsComponentParametersForComponent() {
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "B = org.nanocontainer.script.groovy.B\n" +
-                                         "container {\n" +
-                                         "    component(:key => 'a1', :class => A)\n" +
-                                         "    component(:key => 'a2', :class => A)\n" +
-                                         "    component(:key => 'b1', :class => B, :parameters => [ key('a1') ])\n" +
-                                         "    component(:key => 'b2', :class => B, :parameters => key('a2'))\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        A a1 = (A) pico.getComponentInstance("a1");
-        A a2 = (A) pico.getComponentInstance("a2");
-        B b1 = (B) pico.getComponentInstance("b1");
-        B b2 = (B) pico.getComponentInstance("b2");
-
-        assertNotNull(a1);
-        assertNotNull(a2);
-        assertNotNull(b1);
-        assertNotNull(b2);
-
-        assertSame(a1, b1.getA());
-        assertSame(a2, b2.getA());
-        assertNotSame(a1, a2);
-        assertNotSame(b1, b2);
-    }
-
-    public void testAcceptsComponentParameterWithClassNameKey() {
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "B = org.nanocontainer.script.groovy.B\n" +
-                                         "container {\n" +
-                                         "    component(:class => A)\n" +
-                                         "    component(:key => B, :class => B, :parameters => key(A))\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        A a = (A) pico.getComponentInstance(A.class);
-        B b = (B) pico.getComponentInstance(B.class);
-
-        assertNotNull(a);
-        assertNotNull(b);
-        assertSame(a, b.getA());
-    }
-
-    public void testInstantiateBasicComponentInDeeperTree() {
-        X.reset();
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "container {\n" +
-                                         "  container {\n" +
-                                         "    component(A)\n" +
-                                         "  }\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        pico.dispose();
-        assertEquals("Should match the _expression_", "<A!A", X.componentRecorder);
-    }
-
-    public void testCustomComponentAdapterFactoryCanBeSpecified() {
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "container(:component_adapter_factory => $assembly_scope) {\n" +
-                                         "    component(A)\n" +
-                                         "}");
-
-        A a = new A();
-        Mock cafMock = mock(ComponentAdapterFactory.class);
-        cafMock.expects(once()).method("createComponentAdapter").with(same(A.class), same(A.class), eq(null))
-            .will(returnValue(new InstanceComponentAdapter(A.class, a)));
-        PicoContainer pico = buildContainer(script, null, cafMock.proxy());
-        assertSame(a, pico.getComponentInstanceOfType(A.class));
-    }
-
-    public void testCustomComponentMonitorCanBeSpecified() {
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "StringWriter = java.io.StringWriter\n" +
-                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
-                                         "writer = StringWriter.new\n" +
-                                         "monitor = WriterComponentMonitor.new(writer) \n" +
-                                         "container(:component_monitor => monitor) {\n" +
-                                         "    component(A)\n" +
-                                         "    component(:key => StringWriter, :instance => writer)\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
-        assertTrue(writer.toString().length() > 0);
-    }
-
-    public void testCustomComponentMonitorCanBeSpecifiedWhenCAFIsSpecified() {
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "StringWriter = java.io.StringWriter\n" +
-                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
-                                         "DefaultComponentAdapterFactory = org.picocontainer.defaults.DefaultComponentAdapterFactory\n" +
-                                         "writer = StringWriter.new\n" +
-                                         "monitor = WriterComponentMonitor.new(writer) \n" +
-                                         "container(:component_adapter_factory => DefaultComponentAdapterFactory.new, :component_monitor => monitor) {\n"
-                                         +
-                                         "    component(A)\n" +
-                                         "    component(:key => StringWriter, :instance => writer)\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
-        assertTrue(writer.toString().length() > 0);
-    }
-
-    public void testCustomComponentMonitorCanBeSpecifiedWhenParentIsSpecified() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "StringWriter = java.io.StringWriter\n" +
-                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
-                                         "writer = StringWriter.new\n" +
-                                         "monitor = WriterComponentMonitor.new(writer) \n" +
-                                         "container(:parent => $parent, :component_monitor => monitor) {\n" +
-                                         "    component(A)\n" +
-                                         "    component(:key => StringWriter, :instance => writer)\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
-        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
-        assertTrue(writer.toString().length() > 0);
-    }
-
-    public void testCustomComponentMonitorCanBeSpecifiedWhenParentAndCAFAreSpecified() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "StringWriter = java.io.StringWriter\n" +
-                                         "WriterComponentMonitor = org.picocontainer.monitors.WriterComponentMonitor\n" +
-                                         "DefaultComponentAdapterFactory = org.picocontainer.defaults.DefaultComponentAdapterFactory\n" +
-                                         "writer = StringWriter.new\n" +
-                                         "monitor = WriterComponentMonitor.new(writer) \n" +
-                                         "container(:parent => $parent, :component_adapter_factory => DefaultComponentAdapterFactory.new, :component_monitor => monitor) {\n"
-                                         +
-                                         "    component(A)\n" +
-                                         "    component(:key => StringWriter, :instance => writer)\n" +
-                                         "}");
-
-        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
-        StringWriter writer = (StringWriter) pico.getComponentInstanceOfType(StringWriter.class);
-        assertTrue(writer.toString().length() > 0);
-    }
-
-    public void testInstantiateWithImpossibleComponentDependenciesConsideringTheHierarchy() {
-        X.reset();
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "B = org.nanocontainer.script.groovy.B\n" +
-                                         "C = org.nanocontainer.script.groovy.C\n" +
-                                         "container {\n" +
-                                         "    component(B)\n" +
-                                         "    container() {\n" +
-                                         "        component(A)\n" +
-                                         "    }\n" +
-                                         "    component(C)\n" +
-                                         "}");
-
-        try {
-            buildContainer(script, null, ASSEMBLY_SCOPE);
-            fail("Should not have been able to instansiate component tree due to visibility/parent reasons.");
-        } catch(UnsatisfiableDependenciesException expected) {
-        }
-    }
-
-    public void testInstantiateWithChildContainerAndStartStopAndDisposeOrderIsCorrect() {
-        X.reset();
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "B = org.nanocontainer.script.groovy.B\n" +
-                                         "C = org.nanocontainer.script.groovy.C\n" +
-                                         "container {\n" +
-                                         "    component(A)\n" +
-                                         "    container() {\n" +
-                                         "         component(B)\n" +
-                                         "    }\n" +
-                                         "    component(C)\n" +
-                                         "}\n");
-
-        // A and C have no no dependancies. B Depends on A.
-        PicoContainer pico = buildContainer(script, null, ASSEMBLY_SCOPE);
-        pico.stop();
-        pico.dispose();
-
-        assertEquals("Should match the _expression_", "<A<C<BB>C>A>!B!C!A", X.componentRecorder);
-    }
-
-    public void testBuildContainerWithParentAttribute() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        parent.registerComponentInstance("hello", "world");
-
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "container(:parent => $parent) {\n" +
-                                         "    component(A)\n" +
-                                         "}\n");
-
-        PicoContainer pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
-        // Should be able to get instance that was registered in the parent container
-        assertEquals("world", pico.getComponentInstance("hello"));
-    }
-
-    public void testBuildContainerWithParentDependencyAndAssemblyScope() throws Exception {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        parent.registerComponentImplementation("a", A.class);
-
-        String source =
-                        "B = org.nanocontainer.script.groovy.B\n" +
-                        "SomeAssemblyScope = org.nanocontainer.script.groovy.SomeAssemblyScope\n" +
-                        "container(:parent => $parent) {\n" +
-                        "  if $assembly_scope.kind_of?(SomeAssemblyScope)\n " +
-                        "    component(B)\n" +
-                        "  end\n " +
-                        "}\n";
-
-        Reader script = new StringReader(source);
-
-        PicoContainer pico = buildContainer(script, parent, new SomeAssemblyScope());
-        assertNotNull(pico.getComponentInstanceOfType(B.class));
-
-        script = new StringReader(source);
-        pico = buildContainer(script, parent, ASSEMBLY_SCOPE);
-        assertNull(pico.getComponentInstanceOfType(B.class));
-    }
-
-    public void testBuildContainerWithParentAndChildAssemblyScopes() throws IOException {
-        String scriptValue =
-                             "A = org.nanocontainer.script.groovy.A\n" +
-                             "B = org.nanocontainer.script.groovy.B\n" +
-                             "ParentAssemblyScope = org.nanocontainer.script.groovy.ParentAssemblyScope\n" +
-                             "SomeAssemblyScope = org.nanocontainer.script.groovy.SomeAssemblyScope\n" +
-                             "container(:parent => $parent) {\n" +
-                             "  puts 'assembly_scope:'+$assembly_scope.inspect\n " +
-                             "  case $assembly_scope\n" +
-                             "  when ParentAssemblyScope\n " +
-                             "    puts 'parent scope'\n " +
-                             "    component(A)\n" +
-                             "  when SomeAssemblyScope\n " +
-                             "    puts 'child scope'\n " +
-                             "    component(B)\n" +
-                             "  else \n" +
-                             "     raise 'Invalid Scope: ' +  $assembly_scope.inspect\n" +
-                             "  end\n " +
-                             "}\n";
-
-        Reader script = new StringReader(scriptValue);
-        NanoPicoContainer parent = new DefaultNanoPicoContainer(
-            buildContainer(script, null, new ParentAssemblyScope()));
-        assertNotNull(parent.getComponentAdapterOfType(A.class));
-
-        script = new StringReader(scriptValue);
-        PicoContainer pico = buildContainer(script, parent, new SomeAssemblyScope());
-        assertNotNull(pico.getComponentInstance(B.class));
-    }
-
-    public void FAILING_testBuildContainerWithParentAttributesPropagatesComponentAdapterFactory() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer(new SetterInjectionComponentAdapterFactory());
-        Reader script = new StringReader("container(:parent => $parent)\n");
-
-        MutablePicoContainer pico = (MutablePicoContainer) buildContainer(script, parent, ASSEMBLY_SCOPE);
-        // Should be able to get instance that was registered in the parent container
-        ComponentAdapter componentAdapter = pico.registerComponentImplementation(String.class);
-        assertTrue("ComponentAdapter should be originally defined by parent",
-                   componentAdapter instanceof SetterInjectionComponentAdapter);
-    }
-
-    public void testExceptionThrownWhenParentAttributeDefinedWithinChild() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer(new SetterInjectionComponentAdapterFactory());
-        Reader script = new StringReader(
-                                         "A = org.nanocontainer.script.groovy.A\n" +
-                                         "B = org.nanocontainer.script.groovy.B\n" +
-                                         "container() {\n" +
-                                         "    component(A)\n" +
-                                         "    container(:parent => $parent) {\n" +
-                                         "         component(B)\n" +
-                                         "    }\n" +
-                                         "}\n");
-
-        try {
-            buildContainer(script, parent, ASSEMBLY_SCOPE);
-            fail("NanoContainerMarkupException should have been thrown.");
-        } catch(NanoContainerMarkupException ignore) {
-            // expected
-        }
-    }
-
-    //TODO
-    public void testSpuriousAttributes() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-
-        Reader script = new StringReader(
-                                         "container(:jim => 'Jam', :foo => 'bar')");
-        try {
-            buildContainer(script, parent, ASSEMBLY_SCOPE);
-            //fail("Should throw exception upon spurious attributes?");
-        } catch(NanoContainerMarkupException ex) {
-            //ok?
-        }
-    }
-
-    public void testWithDynamicClassPathThatDoesNotExist() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        try {
-            Reader script = new StringReader(
-                                             "container {\n" +
-                                             "  classPathElement(:path => 'this/path/does/not/exist.jar')\n" +
-                                             "  component(:class => \"FooBar\")\n" +
-                                             "}");
-
-            buildContainer(script, parent, ASSEMBLY_SCOPE);
-            fail("should have barfed with bad path exception");
-        } catch(NanoContainerMarkupException e) {
-            // excpected
-        }
-
-    }
-
-    public void testWithDynamicClassPath() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        Reader script = new StringReader(
-            "TestHelper = org.nanocontainer.TestHelper\n"
-            + "testCompJar = TestHelper.getTestCompJarFile()\n"
-            + "compJarPath = testCompJar.getCanonicalPath()\n"
-            + "container {\n"
-            + "  classPathElement(:path => compJarPath)\n"
-            + "  component(:class => \"TestComp\")\n"
-            + "}" );
-
-        MutablePicoContainer pico = (MutablePicoContainer) buildContainer(script, parent, ASSEMBLY_SCOPE);
-
-        assertEquals(1, pico.getComponentInstances().size());
-        assertEquals("TestComp", pico.getComponentInstances().get(0).getClass()
-            .getName());
-    }
-
-    public void testWithDynamicClassPathWithPermissions() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        Reader script = new StringReader(
-            "TestHelper = org.nanocontainer.TestHelper\n" +
-            "SocketPermission = java.net.SocketPermission\n"
-            + "testCompJar = TestHelper.getTestCompJarFile()\n"
-            + "compJarPath = testCompJar.getCanonicalPath()\n"
-            + "container {\n"
-            + "  classPathElement(:path => compJarPath) {\n"
-            + "    grant(:perm => SocketPermission.new('google.com','connect'))\n"
-            + "  }\n"
-            + "  component(:class => \"TestComp\")\n"
-            + "}" );
-
-        MutablePicoContainer pico = (MutablePicoContainer) buildContainer(script, parent, ASSEMBLY_SCOPE);
-
-        assertEquals(1, pico.getComponentInstances().size());
-        // can't actually test the permission under JUNIT control. We're just
-        // testing the syntax here.
-    }
-
-    public void testGrantPermissionInWrongPlace() {
-        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer();
-        try {
-            Reader script = new StringReader(
-                "TestHelper = org.nanocontainer.TestHelper\n" +
-                "SocketPermission = java.net.SocketPermission\n" +
-                "testCompJar = TestHelper.getTestCompJarFile()\n" +
-                "container {\n" +
-                "  grant(:perm => SocketPermission.new('google.com','connect'))\n" +
-                "}");
-
-            buildContainer(script, parent, ASSEMBLY_SCOPE);
-            fail("should barf with [Don't know how to create a 'grant' child] exception");
-        } catch(PicoCompositionException e) {
-            String message = e.getCause().getMessage();
-            assertNotNull(message);
-            assertTrue(message.indexOf("undefined method `grant' for #<Nano::Container:") != -1);
-        }
-
-    }
-
-
-    public void testWithParentClassPathPropagatesWithNoParentContainer() throws IOException {
-        File testCompJar = TestHelper.getTestCompJarFile();
-
-        URLClassLoader classLoader = new URLClassLoader(new URL[]{testCompJar.toURL()},
-                                                        this.getClass().getClassLoader());
-        Class testComp = null;
-
-        try {
-            testComp = classLoader.loadClass("TestComp");
-        } catch(ClassNotFoundException ex) {
-            fail("Unable to load test component from the jar using a url classloader");
-        }
-        Reader script = new StringReader(
-            "container(:parent => $parent) {\n"
-            + "  component(:class => \"TestComp\")\n"
-            + "}");
-
-        PicoContainer pico = buildContainer(new JRubyContainerBuilder(script, classLoader), null, null);
-        assertNotNull(pico);
-        Object testCompInstance = pico.getComponentInstance(testComp.getName());
-        assertSame(testCompInstance.getClass(), testComp);
-
-    }
-
-//    public void testExceptionThrownWhenParentAttributeDefinedWithinChild() {
-//        DefaultNanoPicoContainer parent = new DefaultNanoPicoContainer(new SetterInjectionComponentAdapterFactory() );
-//        Reader script = new StringReader("" +
-//                "package org.nanocontainer.script.groovy\n" +
-//                "nano = new GroovyNodeBuilder().container() {\n" +
-//                "    component(A)\n" +
-//                "    container(parent:parent) {\n" +
-//                "         component(B)\n" +
-//                "    }\n" +
-//                "}\n");
-//
-//        try {
-//            buildContainer(script, parent, ASSEMBLY_SCOPE);
-//            fail("NanoContainerMarkupException should have been thrown.");
-//        } catch (NanoContainerMarkupException ignore) {
-//            // ignore
-//        }
-//    }
-
-    private PicoContainer buildContainer(Reader script, PicoContainer parent, Object scope) {
-        return buildContainer(new JRubyContainerBuilder(script, getClass().getClassLoader()), parent, scope);
-    }
-}

Modified: java/nanocontainer/trunk/container-jython/pom.xml (3145 => 3146)

--- java/nanocontainer/trunk/container-jython/pom.xml	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-jython/pom.xml	2006-12-26 11:00:07 UTC (rev 3146)
@@ -17,6 +17,14 @@
             <artifactId>nanocontainer</artifactId>
         </dependency>
         <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>nanocontainer-tck</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>nanocontainer-testmodel</artifactId>
+        </dependency>
+        <dependency>
             <groupId>jython</groupId>
             <artifactId>jython</artifactId>
             <version>2.1</version>

Modified: java/nanocontainer/trunk/container-rhino/pom.xml (3145 => 3146)

--- java/nanocontainer/trunk/container-rhino/pom.xml	2006-12-26 10:32:38 UTC (rev 3145)
+++ java/nanocontainer/trunk/container-rhino/pom.xml	2006-12-26 11:00:07 UTC (rev 3146)
@@ -17,6 +17,14 @@
             <artifactId>nanocontainer</artifactId>
         </dependency>
         <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>nanocontainer-tck</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>nanocontainer-testmodel</artifactId>
+        </dependency>
+        <dependency>
             <groupId>rhino</groupId>
             <artifactId>js</artifactId>
             <version>1.5R4.1</version>

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/A.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/A.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/A.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/A.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,8 @@
+package org.nanocontainer.testmodel;
+
+/**
+ * @author Mauro Talevi
+ */
+public class A extends X {
+
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/B.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/B.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/B.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/B.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,20 @@
+package org.nanocontainer.testmodel;
+
+import junit.framework.Assert;
+
+
+/**
+ * @author Mauro Talevi
+ */
+public class B extends X {
+    public A a;
+
+    public B(A a) {
+        Assert.assertNotNull(a);
+        this.a = a;
+    }
+
+    public A getA() {
+        return a;
+    }
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/C.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/C.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/C.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/C.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,8 @@
+package org.nanocontainer.testmodel;
+
+/**
+ * @author Mauro Talevi
+ */
+public class C extends X {
+
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/HasParams.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/HasParams.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/HasParams.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/HasParams.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,26 @@
+/*****************************************************************************
+ * Copyright (c) PicoContainer 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.                                                     *
+ *                                                                           *
+ * Idea by Rachel Davies, Original code by various                           *
+ *****************************************************************************/
+package org.nanocontainer.testmodel;
+
+/**
+ * @author Stephen Molitor
+ */
+public class HasParams {
+
+    private String params;
+
+    public HasParams(String a, String b, String c) {
+        params = a + b + c;
+    }
+
+    public String getParams() {
+        return params;
+    }
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/ParentAssemblyScope.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/ParentAssemblyScope.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/ParentAssemblyScope.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/ParentAssemblyScope.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,5 @@
+package org.nanocontainer.testmodel;
+
+public class ParentAssemblyScope {
+
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/SomeAssemblyScope.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/SomeAssemblyScope.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/SomeAssemblyScope.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/SomeAssemblyScope.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,5 @@
+package org.nanocontainer.testmodel;
+
+public class SomeAssemblyScope {
+
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/StringBean.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/StringBean.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/StringBean.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/StringBean.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,39 @@
+/*****************************************************************************
+ * Copyright (c) PicoContainer 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.                                                     *
+ *                                                                           *
+ * Idea by Rachel Davies, Original code by various                           *
+ *****************************************************************************/
+package org.nanocontainer.testmodel;
+
+/**
+ * @author Stephen Molitor
+ * @version $Revision$
+ */
+public class StringBean {
+
+    private String firstName;
+    private String lastName;
+
+    public StringBean() {
+    }
+    
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+}
\ No newline at end of file

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/TestComponentAdapterFactory.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/TestComponentAdapterFactory.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/TestComponentAdapterFactory.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/TestComponentAdapterFactory.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,26 @@
+package org.nanocontainer.testmodel;
+
+import org.picocontainer.ComponentAdapter;
+import org.picocontainer.Parameter;
+import org.picocontainer.PicoIntrospectionException;
+import org.picocontainer.defaults.AssignabilityRegistrationException;
+import org.picocontainer.defaults.DefaultComponentAdapterFactory;
+import org.picocontainer.defaults.NotConcreteRegistrationException;
+
+/**
+ * @author Paul Hammant
+ * @version $Revision$
+ */
+public class TestComponentAdapterFactory extends DefaultComponentAdapterFactory {
+
+    public StringBuffer sb;
+
+    public TestComponentAdapterFactory(StringBuffer sb) {
+        this.sb = sb;
+    }
+
+    public ComponentAdapter createComponentAdapter(Object componentKey, Class componentImplementation, Parameter[] parameters) throws PicoIntrospectionException, AssignabilityRegistrationException, NotConcreteRegistrationException {
+        sb.append("called");
+        return super.createComponentAdapter(componentKey, componentImplementation, parameters);    //To change body of overridden methods use File | Settings | File Templates.
+    }
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/X.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/X.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/X.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/X.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ * 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.testmodel;
+
+import org.picocontainer.Disposable;
+import org.picocontainer.Startable;
+
+/**
+ * An abstract component and three dependancies used for testing.
+ */
+public abstract class X implements Startable, Disposable {
+
+    public static String componentRecorder = "";
+
+    public static void reset() {
+        componentRecorder = "";
+    }
+
+    public void start() {
+        componentRecorder += "<" + code();
+    }
+
+    public void stop() {
+        componentRecorder += code() + ">";
+    }
+
+    public void dispose() {
+        componentRecorder += "!" + code();
+    }
+
+    private String code() {
+        String name = getClass().getName();
+        return name.substring(name.lastIndexOf('.') + 1, name.length());
+    }
+
+}

Copied: java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/Xxx.java (from rev 3144, java/nanocontainer/trunk/container-groovy/src/test/org/nanocontainer/script/groovy/Xxx.java) (0 => 3146)

--- java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/Xxx.java	                        (rev 0)
+++ java/nanocontainer/trunk/testmodel/src/java/org/nanocontainer/testmodel/Xxx.java	2006-12-26 11:00:07 UTC (rev 3146)
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * 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.testmodel;
+
+import junit.framework.Assert;
+import org.picocontainer.Disposable;
+import org.picocontainer.Startable;
+
+/**
+ * An abstract component and three dependancies used for testing.
+ */
+public abstract class Xxx implements Startable, Disposable {
+
+    public static String componentRecorder = "";
+
+    public static void reset() {
+        componentRecorder = "";
+    }
+
+    public void start() {
+        componentRecorder += "<" + code();
+    }
+
+    public void stop() {
+        componentRecorder += code() + ">";
+    }
+
+    public void dispose() {
+        componentRecorder += "!" + code();
+    }
+
+    private String code() {
+        String name = getClass().getName();
+        return name.substring(name.indexOf('$') + 1, name.length());
+    }
+
+    public static class A extends Xxx {
+    }
+
+    public static class B extends Xxx {
+        A a;
+
+        public B(A a) {
+            Assert.assertNotNull(a);
+            this.a = a;
+        }
+
+        public A getA() {
+            return a;
+        }
+    }
+
+    public static class C extends Xxx {
+    }
+}


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise