|
|
[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
| |