From fa49d1ac49867136d3f62a401cc6c9ad10b2b66f Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Mon, 13 Oct 2008 16:31:59 +0000 Subject: Refactored contribution exceptions, moved them to the contribution.processor package which is exported out of the contribution module. Removed unused implementation classes. Moved test cases from contribution-impl to contribution. Also renamed a few test cases that had compile errors as easymock is not on the classpath. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@704156 13f79535-47bb-0310-9956-ffa450edef68 --- .../context/ReflectiveInstanceWrapperTestCase.java | 84 ---- .../ReflectiveInstanceWrapperTestCase.java.fixme | 84 ++++ .../CallbackWireObjectFactoryTestCase.java | 54 --- .../CallbackWireObjectFactoryTestCase.java.fixme | 54 +++ .../JavaPropertyValueObjectFactoryTestCase.java | 449 --------------------- ...vaPropertyValueObjectFactoryTestCase.java.fixme | 449 +++++++++++++++++++++ .../injection/ResourceObjectFactoryTestCase.java | 89 ---- .../ResourceObjectFactoryTestCase.java.fixme | 89 ++++ 8 files changed, 676 insertions(+), 676 deletions(-) delete mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java create mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java.fixme delete mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java create mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java.fixme delete mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java create mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java.fixme delete mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java create mode 100644 branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java.fixme (limited to 'branches/sca-equinox/modules/implementation-java-runtime/src/test') diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java deleted file mode 100644 index 628a308c86..0000000000 --- a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.java.context; - -import static org.easymock.EasyMock.createMock; -import junit.framework.TestCase; - -import org.apache.tuscany.sca.core.scope.TargetDestructionException; -import org.apache.tuscany.sca.core.scope.TargetInitializationException; -import org.apache.tuscany.sca.implementation.java.invocation.EventInvoker; -import org.easymock.EasyMock; - -/** - * @version $Rev$ $Date$ - */ -public class ReflectiveInstanceWrapperTestCase extends TestCase { - private ReflectiveInstanceWrapper wrapper; - private Object instance; - private EventInvoker initInvoker; - private EventInvoker destroyInvoker; - - public void testWithNoCallbacks() { - wrapper = new ReflectiveInstanceWrapper(instance, null, null); - try { - wrapper.start(); - } catch (TargetInitializationException e) { - fail(); - } - try { - wrapper.stop(); - } catch (TargetDestructionException e) { - fail(); - } - } - - public void testWithStartCallback() { - initInvoker.invokeEvent(instance); - EasyMock.replay(initInvoker); - wrapper = new ReflectiveInstanceWrapper(instance, initInvoker, null); - try { - wrapper.start(); - } catch (TargetInitializationException e) { - fail(); - } - EasyMock.verify(initInvoker); - } - - public void testWithStopCallback() { - destroyInvoker.invokeEvent(instance); - EasyMock.replay(destroyInvoker); - wrapper = new ReflectiveInstanceWrapper(instance, null, destroyInvoker); - try { - wrapper.stop(); - } catch (TargetDestructionException e) { - fail(); - } - EasyMock.verify(destroyInvoker); - } - - @Override - @SuppressWarnings("unchecked") - protected void setUp() throws Exception { - super.setUp(); - instance = new Object(); - initInvoker = createMock(EventInvoker.class); - destroyInvoker = createMock(EventInvoker.class); - } -} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java.fixme b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java.fixme new file mode 100644 index 0000000000..628a308c86 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceWrapperTestCase.java.fixme @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.implementation.java.context; + +import static org.easymock.EasyMock.createMock; +import junit.framework.TestCase; + +import org.apache.tuscany.sca.core.scope.TargetDestructionException; +import org.apache.tuscany.sca.core.scope.TargetInitializationException; +import org.apache.tuscany.sca.implementation.java.invocation.EventInvoker; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class ReflectiveInstanceWrapperTestCase extends TestCase { + private ReflectiveInstanceWrapper wrapper; + private Object instance; + private EventInvoker initInvoker; + private EventInvoker destroyInvoker; + + public void testWithNoCallbacks() { + wrapper = new ReflectiveInstanceWrapper(instance, null, null); + try { + wrapper.start(); + } catch (TargetInitializationException e) { + fail(); + } + try { + wrapper.stop(); + } catch (TargetDestructionException e) { + fail(); + } + } + + public void testWithStartCallback() { + initInvoker.invokeEvent(instance); + EasyMock.replay(initInvoker); + wrapper = new ReflectiveInstanceWrapper(instance, initInvoker, null); + try { + wrapper.start(); + } catch (TargetInitializationException e) { + fail(); + } + EasyMock.verify(initInvoker); + } + + public void testWithStopCallback() { + destroyInvoker.invokeEvent(instance); + EasyMock.replay(destroyInvoker); + wrapper = new ReflectiveInstanceWrapper(instance, null, destroyInvoker); + try { + wrapper.stop(); + } catch (TargetDestructionException e) { + fail(); + } + EasyMock.verify(destroyInvoker); + } + + @Override + @SuppressWarnings("unchecked") + protected void setUp() throws Exception { + super.setUp(); + instance = new Object(); + initInvoker = createMock(EventInvoker.class); + destroyInvoker = createMock(EventInvoker.class); + } +} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java deleted file mode 100644 index 29dcfa8169..0000000000 --- a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.java.injection; - -import static org.easymock.EasyMock.createMock; - -import java.util.ArrayList; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.tuscany.sca.core.invocation.CallbackWireObjectFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.runtime.RuntimeWire; -import org.easymock.EasyMock; - -/** - * @version $Rev$ $Date$ - */ -public class CallbackWireObjectFactoryTestCase extends TestCase { - - @SuppressWarnings({"unchecked"}) - public void testCreateInstance() throws Exception { - ProxyFactory service = createMock(ProxyFactory.class); - Foo foo = new Foo() { - }; - EasyMock.expect(service.createCallbackProxy(EasyMock.eq(Foo.class), EasyMock.isA(List.class))).andReturn(foo); - EasyMock.replay(service); - List wires = new ArrayList(); - CallbackWireObjectFactory factory = new CallbackWireObjectFactory(Foo.class, service, wires); - assertEquals(foo, factory.getInstance()); - EasyMock.verify(service); - } - - private interface Foo { - - } -} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java.fixme b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java.fixme new file mode 100644 index 0000000000..29dcfa8169 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/CallbackWireObjectFactoryTestCase.java.fixme @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.implementation.java.injection; + +import static org.easymock.EasyMock.createMock; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.core.invocation.CallbackWireObjectFactory; +import org.apache.tuscany.sca.core.invocation.ProxyFactory; +import org.apache.tuscany.sca.runtime.RuntimeWire; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class CallbackWireObjectFactoryTestCase extends TestCase { + + @SuppressWarnings({"unchecked"}) + public void testCreateInstance() throws Exception { + ProxyFactory service = createMock(ProxyFactory.class); + Foo foo = new Foo() { + }; + EasyMock.expect(service.createCallbackProxy(EasyMock.eq(Foo.class), EasyMock.isA(List.class))).andReturn(foo); + EasyMock.replay(service); + List wires = new ArrayList(); + CallbackWireObjectFactory factory = new CallbackWireObjectFactory(Foo.class, service, wires); + assertEquals(foo, factory.getInstance()); + EasyMock.verify(service); + } + + private interface Foo { + + } +} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java deleted file mode 100644 index 366f21d9f0..0000000000 --- a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.java.injection; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.core.factory.ObjectCreationException; -import org.apache.tuscany.sca.core.factory.ObjectFactory; -import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; -import org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint; -import org.apache.tuscany.sca.databinding.Mediator; -import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl; -import org.apache.tuscany.sca.implementation.java.JavaElementImpl; -import org.easymock.EasyMock; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * This test case will test the JavaPropertyValueObjectFactory. - * - * @version $Rev$ $Date$ - */ -public class JavaPropertyValueObjectFactoryTestCase { - - /** - * The factory we should use for testing. - */ - private static JavaPropertyValueObjectFactory factory; - - /** - * The assembly factory used to create Properties. - */ - private static AssemblyFactory assemblyFactory; - - /** - * Test Setup. - */ - @BeforeClass - public static void setup() { - // Create the factory - Mediator mediator = EasyMock.createNiceMock(Mediator.class); - DataBindingExtensionPoint dpep = new DefaultDataBindingExtensionPoint(); - EasyMock.expect(mediator.getDataBindings()).andReturn(dpep).anyTimes(); - EasyMock.replay(mediator); - factory = new JavaPropertyValueObjectFactory(mediator); - - // Create the AssemblyFactory we should use - assemblyFactory = new DefaultAssemblyFactory(); - } - - /** - * A test that will attempt to inject positive, negative and zero into an - * int property. - */ - @Test - public void testIntegerInjectionValid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.expectedType = Integer.TYPE; - - for (int i = -5; i <= 5; i++) { - params.propertyValue = Integer.toString(i); - params.expectedValueFromFactory = i; - doInjection(params); - } - } - - /** - * A test that will attempt to inject positive, negative and zero into an - * int property using a JavaElement. - */ - @Test - public void testIntegerInjectionValidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.expectedJavaElement = new JavaElementImpl(int.class); - - for (int i = -5; i <= 5; i++) { - params.propertyValue = Integer.toString(i); - params.expectedValueFromFactory = i; - doInjection(params); - } - } - - /** - * A test that will attempt to inject multiple int values into an - * int property. - */ - @Test - public void testIntegerArrayInjectionValid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.isMany = true; - params.expectedType = int.class; - params.propertyValue = "1 2 3 4 5"; - params.expectedValueFromFactory = Arrays.asList(1, 2, 3, 4, 5); - doInjection(params); - } - - /** - * A test that will attempt to inject multiple int values into an - * int property using a JavaElement. - */ - @Test - public void testIntegerArrayInjectionValidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.isMany = true; - params.expectedJavaElement = new JavaElementImpl(int[].class); - params.propertyValue = "1 2 3 4 5"; - int[] expected = { 1, 2, 3, 4, 5 }; - params.expectedValueFromFactory = expected; - doInjection(params); - } - - /** - * A test that will attempt to inject a non-number into an - * int property. - */ - @Test - public void testIntegerInjectionBadNumberInvalid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.expectedType = Integer.TYPE; - params.propertyValue = "a"; - params.exceptionExpected = true; - doInjection(params); - } - - /** - * A test that will attempt to inject a non-number into an - * int property using a JavaElement. - */ - @Test - public void testIntegerInjectionBadNumberInvalidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.expectedJavaElement = new JavaElementImpl(Integer.TYPE); - params.propertyValue = "a"; - params.exceptionExpected = true; - doInjection(params); - } - - /** - * A test that will attempt to inject multiple int values into an - * int property where one of the property values is not a number. - * The injection should throw ObjectCreationException - */ - @Test - public void testIntegerArrayInjectionBadNumberInvalid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.isMany = true; - params.expectedType = int.class; - params.propertyValue = "1 2 aa 4 5"; - params.exceptionExpected = true; - doInjection(params); - } - - /** - * A test that will attempt to inject multiple int values into an - * int property using a JavaElement where one of the property - * values is not a number. - * The injection should throw ObjectCreationException - */ - @Test - public void testIntegerArrayInjectionBadNumberInvalidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.isMany = true; - params.expectedJavaElement = new JavaElementImpl(int[].class); - params.propertyValue = "1 2 aa 4 5"; - params.exceptionExpected = true; - doInjection(params); - } - - /** - * A test that will attempt to inject an empty string into an int property. - * The injection should throw ObjectCreationException - */ - @Test - public void testIntegerInjectionEmptyStringInvalid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.expectedType = Integer.TYPE; - params.propertyValue = ""; - params.exceptionExpected = true; - doInjection(params); - } - - /** - * A test that will attempt to inject an empty string into an int property - * using a JavaElement. - * The injection should throw ObjectCreationException - */ - @Test - public void testIntegerInjectionEmptyStringInvalidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "intField"; - params.xsdType = SimpleTypeMapperImpl.XSD_INT; - params.expectedJavaElement = new JavaElementImpl(Integer.TYPE); - params.propertyValue = ""; - params.exceptionExpected = true; - doInjection(params); - } - - /** - * A test that will attempt to inject a String into a String - * property. - */ - @Test - public void testStringInjectionValid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "StringField"; - params.xsdType = SimpleTypeMapperImpl.XSD_STRING; - params.expectedType = String.class; - - params.propertyValue = "Some Test String"; - params.expectedValueFromFactory = "Some Test String"; - doInjection(params); - } - - /** - * A test that will attempt to inject a String into a String - * property using a JavaElement. - */ - @Test - public void testStringInjectionValidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "StringField"; - params.xsdType = SimpleTypeMapperImpl.XSD_STRING; - params.expectedJavaElement = new JavaElementImpl(String.class); - - params.propertyValue = "Some Test String"; - params.expectedValueFromFactory = "Some Test String"; - doInjection(params); - } - - /** - * This class defines all the parameters for the Property Injection test. - */ - private class InjectionTestParams { - // Input parameters for the test - public boolean isMany = false; - public String propertyName; - public String propertyValue; - public QName xsdType; - - // Expected result for test - public Object expectedValueFromFactory; - public Class expectedType; - public JavaElementImpl expectedJavaElement; - public boolean exceptionExpected = false; - } - - /** - * A test that will attempt to inject multiple String values into an - * String property. - */ - @Test - public void testStringArrayInjectionValid() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "StringField"; - params.xsdType = SimpleTypeMapperImpl.XSD_STRING; - params.isMany = true; - params.expectedType = String.class; - params.propertyValue = "\"String1\" \"String2\" \"String3\" \"String4\" \"String5\""; - params.expectedValueFromFactory = Arrays.asList( - "String1", "String2", "String3", "String4", "String5"); - doInjection(params); - } - - /** - * A test that will attempt to inject multiple String values into an - * String property using a JavaElement. - */ - @Test - public void testStringArrayInjectionValidWithJavaElement() { - InjectionTestParams params = new InjectionTestParams(); - params.propertyName = "StringField"; - params.xsdType = SimpleTypeMapperImpl.XSD_STRING; - params.isMany = true; - params.expectedJavaElement = new JavaElementImpl(String.class); - params.propertyValue = "\"String1\" \"String2\" \"String3\" \"String4\" \"String5\""; - params.expectedValueFromFactory = Arrays.asList( - "String1", "String2", "String3", "String4", "String5"); - doInjection(params); - } - - /** - * Utility method for testing creating properties with the - * JavaPropertyValueObjectFactory. - * - * @param testParams The parameters for the test - */ - private void doInjection(final InjectionTestParams testParams) { - // Create the property - Property prop = assemblyFactory.createProperty(); - prop.setMany(testParams.isMany); - prop.setName(testParams.propertyName); - prop.setXSDType(testParams.xsdType); - - // Mock up the XML that will contain the Property details - Document doc = EasyMock.createNiceMock(Document.class); - Element rootElement = EasyMock.createMock(Element.class); - EasyMock.expect(doc.getDocumentElement()).andReturn(rootElement); - NodeList nodeList = EasyMock.createMock(NodeList.class); - EasyMock.expect(rootElement.getChildNodes()).andReturn(nodeList).anyTimes(); - EasyMock.expect(nodeList.getLength()).andReturn(1); - Node node = EasyMock.createMock(Node.class); - EasyMock.expect(nodeList.item(0)).andReturn(node); - EasyMock.expect(node.getTextContent()).andReturn(testParams.propertyValue); - EasyMock.replay(doc, rootElement, nodeList, node); - - // Create a factory either using the Class or JavaElementImpl constructor - ObjectFactory objectFactory; - if (testParams.expectedJavaElement != null) { - objectFactory = factory.createValueFactory(prop, doc, testParams.expectedJavaElement); - } else { - objectFactory = factory.createValueFactory(prop, doc, testParams.expectedType); - } - Assert.assertNotNull(objectFactory); - - // Lets test the factory - try { - // Create a new instance with the factory - Object value = objectFactory.getInstance(); - - // Did we expect an exception to be thrown? - if (testParams.exceptionExpected) { - Assert.fail("Test should have thrown ObjectCreationException"); - } - - // Make sure the result is of the correct type - if (testParams.expectedValueFromFactory instanceof Collection) { - // Make sure the Collections contain the same type - Assert.assertTrue(value instanceof Collection); - Iterator iter1 = ((Collection) testParams.expectedValueFromFactory).iterator(); - Iterator iter2 = ((Collection) value).iterator(); - Assert.assertEquals(iter1.next().getClass(), iter2.next().getClass()); - } else { - Assert.assertEquals(testParams.expectedValueFromFactory.getClass(), value.getClass()); - } - - // Validate the result - Assert.assertNotNull(value); - if (testParams.expectedValueFromFactory.getClass().isArray()) { - Assert.assertTrue(compareArrays(testParams.expectedValueFromFactory, value)); - } else { - Assert.assertEquals(testParams.expectedValueFromFactory, value); - } - } catch (ObjectCreationException ex) { - // Is this an expected exception? - if (testParams.exceptionExpected) { - // Make sure the exception error message contains the property name - Assert.assertTrue(ex.toString().indexOf(testParams.propertyName) != -1); - - // Make sure the exception error message contains the property value - if (testParams.propertyValue != null) { - if (testParams.isMany) { - // FIXME: No simple way to do this for multi-value properties - } else { - Assert.assertTrue(ex.toString().indexOf(testParams.propertyValue) != -1); - } - } - } else { - // Test failure. We were not expecting an exception - ex.printStackTrace(); - Assert.fail("Unexpected exception " + ex); - } - } - } - - /** - * Compares two Objects that are actually arrays to make sure that they are - * equal. - * - * @param array1 The first array - * @param array2 The second array - * @return True if they are equal. False if they are not - */ - private boolean compareArrays(final Object array1, final Object array2) { - // Check for primitive array types - if (array1 instanceof boolean[]) { - return Arrays.equals((boolean[]) array1, (boolean[]) array2); - } - if (array1 instanceof byte[]) { - return Arrays.equals((byte[]) array1, (byte[]) array2); - } - if (array1 instanceof char[]) { - return Arrays.equals((char[]) array1, (char[]) array2); - } - if (array1 instanceof double[]) { - return Arrays.equals((double[]) array1, (double[]) array2); - } - if (array1 instanceof float[]) { - return Arrays.equals((float[]) array1, (float[]) array2); - } - if (array1 instanceof int[]) { - return Arrays.equals((int[]) array1, (int[]) array2); - } - if (array1 instanceof long[]) { - return Arrays.equals((long[]) array1, (long[]) array2); - } - if (array1 instanceof short[]) { - return Arrays.equals((short[]) array1, (short[]) array2); - } - - // Not a primitive so must be an Object[] - return Arrays.equals((Object[]) array1, (Object[]) array2); - } -} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java.fixme b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java.fixme new file mode 100644 index 0000000000..366f21d9f0 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactoryTestCase.java.fixme @@ -0,0 +1,449 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.implementation.java.injection; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.AssemblyFactory; +import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory; +import org.apache.tuscany.sca.assembly.Property; +import org.apache.tuscany.sca.core.factory.ObjectCreationException; +import org.apache.tuscany.sca.core.factory.ObjectFactory; +import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; +import org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint; +import org.apache.tuscany.sca.databinding.Mediator; +import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl; +import org.apache.tuscany.sca.implementation.java.JavaElementImpl; +import org.easymock.EasyMock; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * This test case will test the JavaPropertyValueObjectFactory. + * + * @version $Rev$ $Date$ + */ +public class JavaPropertyValueObjectFactoryTestCase { + + /** + * The factory we should use for testing. + */ + private static JavaPropertyValueObjectFactory factory; + + /** + * The assembly factory used to create Properties. + */ + private static AssemblyFactory assemblyFactory; + + /** + * Test Setup. + */ + @BeforeClass + public static void setup() { + // Create the factory + Mediator mediator = EasyMock.createNiceMock(Mediator.class); + DataBindingExtensionPoint dpep = new DefaultDataBindingExtensionPoint(); + EasyMock.expect(mediator.getDataBindings()).andReturn(dpep).anyTimes(); + EasyMock.replay(mediator); + factory = new JavaPropertyValueObjectFactory(mediator); + + // Create the AssemblyFactory we should use + assemblyFactory = new DefaultAssemblyFactory(); + } + + /** + * A test that will attempt to inject positive, negative and zero into an + * int property. + */ + @Test + public void testIntegerInjectionValid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.expectedType = Integer.TYPE; + + for (int i = -5; i <= 5; i++) { + params.propertyValue = Integer.toString(i); + params.expectedValueFromFactory = i; + doInjection(params); + } + } + + /** + * A test that will attempt to inject positive, negative and zero into an + * int property using a JavaElement. + */ + @Test + public void testIntegerInjectionValidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.expectedJavaElement = new JavaElementImpl(int.class); + + for (int i = -5; i <= 5; i++) { + params.propertyValue = Integer.toString(i); + params.expectedValueFromFactory = i; + doInjection(params); + } + } + + /** + * A test that will attempt to inject multiple int values into an + * int property. + */ + @Test + public void testIntegerArrayInjectionValid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.isMany = true; + params.expectedType = int.class; + params.propertyValue = "1 2 3 4 5"; + params.expectedValueFromFactory = Arrays.asList(1, 2, 3, 4, 5); + doInjection(params); + } + + /** + * A test that will attempt to inject multiple int values into an + * int property using a JavaElement. + */ + @Test + public void testIntegerArrayInjectionValidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.isMany = true; + params.expectedJavaElement = new JavaElementImpl(int[].class); + params.propertyValue = "1 2 3 4 5"; + int[] expected = { 1, 2, 3, 4, 5 }; + params.expectedValueFromFactory = expected; + doInjection(params); + } + + /** + * A test that will attempt to inject a non-number into an + * int property. + */ + @Test + public void testIntegerInjectionBadNumberInvalid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.expectedType = Integer.TYPE; + params.propertyValue = "a"; + params.exceptionExpected = true; + doInjection(params); + } + + /** + * A test that will attempt to inject a non-number into an + * int property using a JavaElement. + */ + @Test + public void testIntegerInjectionBadNumberInvalidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.expectedJavaElement = new JavaElementImpl(Integer.TYPE); + params.propertyValue = "a"; + params.exceptionExpected = true; + doInjection(params); + } + + /** + * A test that will attempt to inject multiple int values into an + * int property where one of the property values is not a number. + * The injection should throw ObjectCreationException + */ + @Test + public void testIntegerArrayInjectionBadNumberInvalid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.isMany = true; + params.expectedType = int.class; + params.propertyValue = "1 2 aa 4 5"; + params.exceptionExpected = true; + doInjection(params); + } + + /** + * A test that will attempt to inject multiple int values into an + * int property using a JavaElement where one of the property + * values is not a number. + * The injection should throw ObjectCreationException + */ + @Test + public void testIntegerArrayInjectionBadNumberInvalidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.isMany = true; + params.expectedJavaElement = new JavaElementImpl(int[].class); + params.propertyValue = "1 2 aa 4 5"; + params.exceptionExpected = true; + doInjection(params); + } + + /** + * A test that will attempt to inject an empty string into an int property. + * The injection should throw ObjectCreationException + */ + @Test + public void testIntegerInjectionEmptyStringInvalid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.expectedType = Integer.TYPE; + params.propertyValue = ""; + params.exceptionExpected = true; + doInjection(params); + } + + /** + * A test that will attempt to inject an empty string into an int property + * using a JavaElement. + * The injection should throw ObjectCreationException + */ + @Test + public void testIntegerInjectionEmptyStringInvalidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "intField"; + params.xsdType = SimpleTypeMapperImpl.XSD_INT; + params.expectedJavaElement = new JavaElementImpl(Integer.TYPE); + params.propertyValue = ""; + params.exceptionExpected = true; + doInjection(params); + } + + /** + * A test that will attempt to inject a String into a String + * property. + */ + @Test + public void testStringInjectionValid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "StringField"; + params.xsdType = SimpleTypeMapperImpl.XSD_STRING; + params.expectedType = String.class; + + params.propertyValue = "Some Test String"; + params.expectedValueFromFactory = "Some Test String"; + doInjection(params); + } + + /** + * A test that will attempt to inject a String into a String + * property using a JavaElement. + */ + @Test + public void testStringInjectionValidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "StringField"; + params.xsdType = SimpleTypeMapperImpl.XSD_STRING; + params.expectedJavaElement = new JavaElementImpl(String.class); + + params.propertyValue = "Some Test String"; + params.expectedValueFromFactory = "Some Test String"; + doInjection(params); + } + + /** + * This class defines all the parameters for the Property Injection test. + */ + private class InjectionTestParams { + // Input parameters for the test + public boolean isMany = false; + public String propertyName; + public String propertyValue; + public QName xsdType; + + // Expected result for test + public Object expectedValueFromFactory; + public Class expectedType; + public JavaElementImpl expectedJavaElement; + public boolean exceptionExpected = false; + } + + /** + * A test that will attempt to inject multiple String values into an + * String property. + */ + @Test + public void testStringArrayInjectionValid() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "StringField"; + params.xsdType = SimpleTypeMapperImpl.XSD_STRING; + params.isMany = true; + params.expectedType = String.class; + params.propertyValue = "\"String1\" \"String2\" \"String3\" \"String4\" \"String5\""; + params.expectedValueFromFactory = Arrays.asList( + "String1", "String2", "String3", "String4", "String5"); + doInjection(params); + } + + /** + * A test that will attempt to inject multiple String values into an + * String property using a JavaElement. + */ + @Test + public void testStringArrayInjectionValidWithJavaElement() { + InjectionTestParams params = new InjectionTestParams(); + params.propertyName = "StringField"; + params.xsdType = SimpleTypeMapperImpl.XSD_STRING; + params.isMany = true; + params.expectedJavaElement = new JavaElementImpl(String.class); + params.propertyValue = "\"String1\" \"String2\" \"String3\" \"String4\" \"String5\""; + params.expectedValueFromFactory = Arrays.asList( + "String1", "String2", "String3", "String4", "String5"); + doInjection(params); + } + + /** + * Utility method for testing creating properties with the + * JavaPropertyValueObjectFactory. + * + * @param testParams The parameters for the test + */ + private void doInjection(final InjectionTestParams testParams) { + // Create the property + Property prop = assemblyFactory.createProperty(); + prop.setMany(testParams.isMany); + prop.setName(testParams.propertyName); + prop.setXSDType(testParams.xsdType); + + // Mock up the XML that will contain the Property details + Document doc = EasyMock.createNiceMock(Document.class); + Element rootElement = EasyMock.createMock(Element.class); + EasyMock.expect(doc.getDocumentElement()).andReturn(rootElement); + NodeList nodeList = EasyMock.createMock(NodeList.class); + EasyMock.expect(rootElement.getChildNodes()).andReturn(nodeList).anyTimes(); + EasyMock.expect(nodeList.getLength()).andReturn(1); + Node node = EasyMock.createMock(Node.class); + EasyMock.expect(nodeList.item(0)).andReturn(node); + EasyMock.expect(node.getTextContent()).andReturn(testParams.propertyValue); + EasyMock.replay(doc, rootElement, nodeList, node); + + // Create a factory either using the Class or JavaElementImpl constructor + ObjectFactory objectFactory; + if (testParams.expectedJavaElement != null) { + objectFactory = factory.createValueFactory(prop, doc, testParams.expectedJavaElement); + } else { + objectFactory = factory.createValueFactory(prop, doc, testParams.expectedType); + } + Assert.assertNotNull(objectFactory); + + // Lets test the factory + try { + // Create a new instance with the factory + Object value = objectFactory.getInstance(); + + // Did we expect an exception to be thrown? + if (testParams.exceptionExpected) { + Assert.fail("Test should have thrown ObjectCreationException"); + } + + // Make sure the result is of the correct type + if (testParams.expectedValueFromFactory instanceof Collection) { + // Make sure the Collections contain the same type + Assert.assertTrue(value instanceof Collection); + Iterator iter1 = ((Collection) testParams.expectedValueFromFactory).iterator(); + Iterator iter2 = ((Collection) value).iterator(); + Assert.assertEquals(iter1.next().getClass(), iter2.next().getClass()); + } else { + Assert.assertEquals(testParams.expectedValueFromFactory.getClass(), value.getClass()); + } + + // Validate the result + Assert.assertNotNull(value); + if (testParams.expectedValueFromFactory.getClass().isArray()) { + Assert.assertTrue(compareArrays(testParams.expectedValueFromFactory, value)); + } else { + Assert.assertEquals(testParams.expectedValueFromFactory, value); + } + } catch (ObjectCreationException ex) { + // Is this an expected exception? + if (testParams.exceptionExpected) { + // Make sure the exception error message contains the property name + Assert.assertTrue(ex.toString().indexOf(testParams.propertyName) != -1); + + // Make sure the exception error message contains the property value + if (testParams.propertyValue != null) { + if (testParams.isMany) { + // FIXME: No simple way to do this for multi-value properties + } else { + Assert.assertTrue(ex.toString().indexOf(testParams.propertyValue) != -1); + } + } + } else { + // Test failure. We were not expecting an exception + ex.printStackTrace(); + Assert.fail("Unexpected exception " + ex); + } + } + } + + /** + * Compares two Objects that are actually arrays to make sure that they are + * equal. + * + * @param array1 The first array + * @param array2 The second array + * @return True if they are equal. False if they are not + */ + private boolean compareArrays(final Object array1, final Object array2) { + // Check for primitive array types + if (array1 instanceof boolean[]) { + return Arrays.equals((boolean[]) array1, (boolean[]) array2); + } + if (array1 instanceof byte[]) { + return Arrays.equals((byte[]) array1, (byte[]) array2); + } + if (array1 instanceof char[]) { + return Arrays.equals((char[]) array1, (char[]) array2); + } + if (array1 instanceof double[]) { + return Arrays.equals((double[]) array1, (double[]) array2); + } + if (array1 instanceof float[]) { + return Arrays.equals((float[]) array1, (float[]) array2); + } + if (array1 instanceof int[]) { + return Arrays.equals((int[]) array1, (int[]) array2); + } + if (array1 instanceof long[]) { + return Arrays.equals((long[]) array1, (long[]) array2); + } + if (array1 instanceof short[]) { + return Arrays.equals((short[]) array1, (short[]) array2); + } + + // Not a primitive so must be an Object[] + return Arrays.equals((Object[]) array1, (Object[]) array2); + } +} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java deleted file mode 100644 index ed7a0e7d03..0000000000 --- a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.java.injection; - -import junit.framework.TestCase; - -import org.easymock.EasyMock; - -/** - * @version $Rev$ $Date$ - */ -public class ResourceObjectFactoryTestCase extends TestCase { - - public void testResolveFromHostByType() throws Exception { - ResourceHost host = EasyMock.createMock(ResourceHost.class); - EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn("foo"); - EasyMock.replay(host); - ResourceObjectFactory factory = new ResourceObjectFactory(String.class, false, host); - assertEquals("foo", factory.getInstance()); - EasyMock.verify(host); - } - - public void testResolveFromHostByName() throws Exception { - ResourceHost host = EasyMock.createMock(ResourceHost.class); - EasyMock.expect(host.resolveResource(EasyMock.eq(String.class), - EasyMock.eq("sca://localhost/bar"))).andReturn("foo"); - EasyMock.replay(host); - ResourceObjectFactory factory = - new ResourceObjectFactory(String.class, "sca://localhost/bar", false, host); - assertEquals("foo", factory.getInstance()); - EasyMock.verify(host); - } - - - public void testResolveFromParentThenResolveFromHostNotFound() throws Exception { - ResourceHost host = EasyMock.createMock(ResourceHost.class); - EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn(null); - EasyMock.replay(host); - ResourceObjectFactory factory = new ResourceObjectFactory(String.class, true, host); - assertNull(factory.getInstance()); - EasyMock.verify(host); - } - - public void testResolveByTypeNotFound() throws Exception { -// ResourceHost host = EasyMock.createMock(ResourceHost.class); -// EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn(null); -// EasyMock.replay(host); -// -// RuntimeWire wire = EasyMock.createMock(RuntimeWire.class); -// EasyMock.expect(wire.getTargetInstance()).andReturn(null); -// EasyMock.replay(wire); -// -// ResourceObjectFactory factory = new ResourceObjectFactory(String.class, false, host); -// try { -// factory.getInstance(); -// fail(); -// } catch (ResourceNotFoundException e) { -// //expected -// } -// EasyMock.verify(host); - } - - public void testResolveByTypeNotFoundOptional() throws Exception { - ResourceHost host = EasyMock.createMock(ResourceHost.class); - EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn(null); - EasyMock.replay(host); - ResourceObjectFactory factory = new ResourceObjectFactory(String.class, true, host); - assertNull(factory.getInstance()); - EasyMock.verify(host); - } - - -} diff --git a/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java.fixme b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java.fixme new file mode 100644 index 0000000000..ed7a0e7d03 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/injection/ResourceObjectFactoryTestCase.java.fixme @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.implementation.java.injection; + +import junit.framework.TestCase; + +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class ResourceObjectFactoryTestCase extends TestCase { + + public void testResolveFromHostByType() throws Exception { + ResourceHost host = EasyMock.createMock(ResourceHost.class); + EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn("foo"); + EasyMock.replay(host); + ResourceObjectFactory factory = new ResourceObjectFactory(String.class, false, host); + assertEquals("foo", factory.getInstance()); + EasyMock.verify(host); + } + + public void testResolveFromHostByName() throws Exception { + ResourceHost host = EasyMock.createMock(ResourceHost.class); + EasyMock.expect(host.resolveResource(EasyMock.eq(String.class), + EasyMock.eq("sca://localhost/bar"))).andReturn("foo"); + EasyMock.replay(host); + ResourceObjectFactory factory = + new ResourceObjectFactory(String.class, "sca://localhost/bar", false, host); + assertEquals("foo", factory.getInstance()); + EasyMock.verify(host); + } + + + public void testResolveFromParentThenResolveFromHostNotFound() throws Exception { + ResourceHost host = EasyMock.createMock(ResourceHost.class); + EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn(null); + EasyMock.replay(host); + ResourceObjectFactory factory = new ResourceObjectFactory(String.class, true, host); + assertNull(factory.getInstance()); + EasyMock.verify(host); + } + + public void testResolveByTypeNotFound() throws Exception { +// ResourceHost host = EasyMock.createMock(ResourceHost.class); +// EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn(null); +// EasyMock.replay(host); +// +// RuntimeWire wire = EasyMock.createMock(RuntimeWire.class); +// EasyMock.expect(wire.getTargetInstance()).andReturn(null); +// EasyMock.replay(wire); +// +// ResourceObjectFactory factory = new ResourceObjectFactory(String.class, false, host); +// try { +// factory.getInstance(); +// fail(); +// } catch (ResourceNotFoundException e) { +// //expected +// } +// EasyMock.verify(host); + } + + public void testResolveByTypeNotFoundOptional() throws Exception { + ResourceHost host = EasyMock.createMock(ResourceHost.class); + EasyMock.expect(host.resolveResource(EasyMock.eq(String.class))).andReturn(null); + EasyMock.replay(host); + ResourceObjectFactory factory = new ResourceObjectFactory(String.class, true, host); + assertNull(factory.getInstance()); + EasyMock.verify(host); + } + + +} -- cgit v1.2.3