diff options
Diffstat (limited to '')
9 files changed, 672 insertions, 0 deletions
diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DSComponentTypeLoaderTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DSComponentTypeLoaderTestCase.java new file mode 100644 index 0000000000..87c12db9bf --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DSComponentTypeLoaderTestCase.java @@ -0,0 +1,88 @@ +package org.apache.tuscany.persistence.datasource; + +import javax.sql.DataSource; + +import org.apache.tuscany.spi.implementation.java.JavaMappedProperty; +import org.apache.tuscany.spi.model.ComponentType; + +import junit.framework.TestCase; + +/** + * @version $Rev$ $Date$ + */ +public class DSComponentTypeLoaderTestCase extends TestCase { + + public void testIntrospection() throws Exception { + DSComponentTypeLoader loader = new DSComponentTypeLoader(null); + DataSourceImplementation implementation = new DataSourceImplementation(); + implementation.setProviderName(Foo.class.getName()); + implementation.setClassLoader(getClass().getClassLoader()); + loader.load(implementation, null); + ComponentType<?, ?, ?> type = implementation.getComponentType(); + assertEquals(2, type.getProperties().size()); + assertNull(type.getProperties().get("object")); + Object bar = type.getProperties().get("bar"); + assertEquals(String.class, ((JavaMappedProperty) bar).getJavaType()); + Object baz = type.getProperties().get("baz"); + assertEquals(Integer.TYPE, ((JavaMappedProperty) baz).getJavaType()); + assertEquals(1, type.getServices().size()); + assertEquals(DataSource.class, type.getServices().get("DataSource").getServiceContract().getInterfaceClass()); + } + + + public void testOverloadedMethod() throws Exception { + DSComponentTypeLoader loader = new DSComponentTypeLoader(null); + DataSourceImplementation implementation = new DataSourceImplementation(); + implementation.setProviderName(BadFoo.class.getName()); + implementation.setClassLoader(getClass().getClassLoader()); + try { + loader.load(implementation, null); + fail(); + } catch (AmbiguousPropertyException e) { + // expected + } + } + + public class Foo { + + private String bar; + + private int baz; + + private Foo object; + + public String getBar() { + return bar; + } + + public void setBar(String bar) { + this.bar = bar; + } + + public int getBaz() { + return baz; + } + + public void setBaz(int baz) { + this.baz = baz; + } + + public Foo getObject() { + return object; + } + + public void setObject(Foo object) { + this.object = object; + } + } + + public class BadFoo { + + public void setBar(String bar) { + } + + public void setBar(Object bar) { + } + } + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceBuilderTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceBuilderTestCase.java new file mode 100644 index 0000000000..c7daaa6e4d --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceBuilderTestCase.java @@ -0,0 +1,91 @@ +/* + * 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.persistence.datasource; + +import java.net.URI; +import javax.sql.DataSource; + +import org.apache.tuscany.spi.component.ScopeContainer; +import org.apache.tuscany.spi.deployer.DeploymentContext; +import org.apache.tuscany.spi.idl.java.JavaServiceContract; +import org.apache.tuscany.spi.model.ComponentDefinition; +import org.apache.tuscany.spi.model.ComponentType; +import org.apache.tuscany.spi.model.Property; +import org.apache.tuscany.spi.model.ReferenceDefinition; +import org.apache.tuscany.spi.model.ServiceDefinition; + +import junit.framework.TestCase; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class DataSourceBuilderTestCase extends TestCase { + + public void testBuild() throws Exception { + ScopeContainer scope = EasyMock.createMock(ScopeContainer.class); + EasyMock.replay(scope); + DeploymentContext ctx = EasyMock.createMock(DeploymentContext.class); + EasyMock.replay(ctx); + + DataSourceImplementation implementation = new DataSourceImplementation(); + ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> componentType = + new ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>(); + JavaServiceContract serviceContract = new JavaServiceContract(DataSource.class); + ServiceDefinition service = new ServiceDefinition(URI.create("DataSource"), serviceContract, false); + componentType.add(service); + componentType.setInitLevel(1); + implementation.setComponentType(componentType); + implementation.setProviderName(MockProvider.class.getName()); + implementation.setClassLoader(getClass().getClassLoader()); + + ComponentDefinition<DataSourceImplementation> def = + new ComponentDefinition<DataSourceImplementation>(URI.create("MyDS"), implementation); + + DataSourceBuilder builder = new DataSourceBuilder(); + + DataSourceComponent component = (DataSourceComponent) builder.build(def, ctx); + assertEquals(URI.create("MyDS"), component.getUri()); + + DataSource ds = (DataSource) component.createInstance(); + assertNotNull(ds); + EasyMock.verify(ctx); + EasyMock.verify(scope); + } + + private static class MockProvider implements DataSourceProvider { + + public MockProvider() { + } + + public void init() throws ProviderException { + + } + + public void close() throws ProviderException { + + } + + public DataSource getDataSource() throws ProviderException { + return EasyMock.createNiceMock(DataSource.class); + } + } + + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceComponentTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceComponentTestCase.java new file mode 100644 index 0000000000..e95c1c4123 --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceComponentTestCase.java @@ -0,0 +1,41 @@ +/* + * 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.persistence.datasource; + +import java.net.URI; + +import junit.framework.TestCase; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class DataSourceComponentTestCase extends TestCase { + + public void testDestroy() throws Exception { + DataSourceProvider provider = EasyMock.createMock(DataSourceProvider.class); + provider.close(); + EasyMock.replay(provider); + DataSourceComponent component = new DataSourceComponent(URI.create("ds"), null, 0); + component.destroy(provider); + EasyMock.verify(provider); + } + + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceImplementationLoaderTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceImplementationLoaderTestCase.java new file mode 100644 index 0000000000..49c83bacc7 --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceImplementationLoaderTestCase.java @@ -0,0 +1,70 @@ +/* + * 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.persistence.datasource; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import javax.xml.stream.XMLStreamReader; + +import org.apache.tuscany.spi.deployer.DeploymentContext; +import org.apache.tuscany.spi.loader.LoaderException; +import org.apache.tuscany.spi.loader.LoaderRegistry; + +import junit.framework.TestCase; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class DataSourceImplementationLoaderTestCase extends TestCase { + + public void testLoadingNoParameters() throws Exception { + LoaderRegistry registry = EasyMock.createNiceMock(LoaderRegistry.class); + EasyMock.replay(registry); + DataSourceImplementationLoader loader = new DataSourceImplementationLoader(registry); + XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class); + EasyMock.expect(reader.getAttributeValue(null, "provider")).andReturn("org.foo.MyDriver"); + EasyMock.expect(reader.next()).andReturn(END_ELEMENT); + EasyMock.replay(reader); + DeploymentContext ctx = EasyMock.createMock(DeploymentContext.class); + EasyMock.expect(ctx.getClassLoader()).andReturn(getClass().getClassLoader()); + EasyMock.replay(ctx); + DataSourceImplementation implementation = (DataSourceImplementation) loader.load(null, reader, ctx); + assertEquals("org.foo.MyDriver", implementation.getProviderName()); + assertEquals(getClass().getClassLoader(), implementation.getClassLoader()); + EasyMock.verify(reader); + EasyMock.verify(ctx); + } + + public void testNoDriverName() throws Exception { + LoaderRegistry registry = EasyMock.createNiceMock(LoaderRegistry.class); + EasyMock.replay(registry); + DataSourceImplementationLoader loader = new DataSourceImplementationLoader(registry); + XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class); + EasyMock.expect(reader.getAttributeValue(null, "provider")).andReturn(null); + EasyMock.replay(reader); + try { + loader.load(null, reader, null); + fail(); + } catch (LoaderException e) { + // expected + } + EasyMock.verify(reader); + } + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/InjectorTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/InjectorTestCase.java new file mode 100644 index 0000000000..8d5a6f06a4 --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/InjectorTestCase.java @@ -0,0 +1,53 @@ +/* + * 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.persistence.datasource; + +import java.lang.reflect.Method; + +import org.apache.tuscany.spi.ObjectFactory; + +import junit.framework.TestCase; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class InjectorTestCase extends TestCase { + + @SuppressWarnings("unchecked") + public void testInject() throws Exception { + Method m = Foo.class.getMethod("setVal", String.class); + ObjectFactory factory = EasyMock.createMock(ObjectFactory.class); + EasyMock.expect(factory.getInstance()).andReturn("foo"); + EasyMock.replay(factory); + Injector injector = new Injector(m, factory); + Foo foo = new Foo(); + injector.inject(foo); + assertEquals("foo", foo.val); + EasyMock.verify(factory); + } + + private class Foo { + private String val; + + public void setVal(String val) { + this.val = val; + } + } +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/ProviderObjectFactoryTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/ProviderObjectFactoryTestCase.java new file mode 100644 index 0000000000..d335dcc4d1 --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/ProviderObjectFactoryTestCase.java @@ -0,0 +1,150 @@ +/* + * 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.persistence.datasource; + +import java.io.PrintWriter; +import java.lang.reflect.Method; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import javax.sql.DataSource; + +import org.apache.tuscany.spi.ObjectCreationException; +import org.apache.tuscany.spi.ObjectFactory; + +import junit.framework.TestCase; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class ProviderObjectFactoryTestCase extends TestCase { + + public void testInstantiation() throws Exception { + List<Injector> injectors = new ArrayList<Injector>(); + Method m = Provider.class.getMethod("setVal", Integer.TYPE); + injectors.add(new Injector(m, new MockFactory(1))); + ProviderObjectFactory factory = new ProviderObjectFactory(Provider.class, injectors); + DataSource ds = factory.getInstance(); + Provider provider = (Provider) ds; + assertEquals(1, provider.getVal()); + } + + public void testInitInstantiation() throws Exception { + List<Injector> injectors = new ArrayList<Injector>(); + Method m = DSProvider.class.getMethod("setVal", Integer.TYPE); + injectors.add(new Injector(m, new MockFactory(1))); + ProviderObjectFactory factory = new ProviderObjectFactory(DSProvider.class, injectors); + assertNotNull(factory.getInstance()); + + } + + public static class Provider implements DataSource { + private int val; + + public Provider() { + } + + public int getVal() { + return val; + } + + public void setVal(int val) { + this.val = val; + } + + public Connection getConnection() throws SQLException { + return null; + } + + public Connection getConnection(String username, String password) throws SQLException { + return null; + } + + public PrintWriter getLogWriter() throws SQLException { + return null; + } + + public void setLogWriter(PrintWriter out) throws SQLException { + + } + + public void setLoginTimeout(int seconds) throws SQLException { + + } + + public int getLoginTimeout() throws SQLException { + return 0; + } + } + + public static class DSProvider implements DataSourceProvider { + private int val; + private boolean initialized; + + public DSProvider() { + } + + public int getVal() { + return val; + } + + public void setVal(int val) { + this.val = val; + } + + public boolean isInitialized() { + return initialized; + } + + public void init() { + if (val != 1) { + fail(); + } + initialized = true; + } + + + public void close() { + + } + + public DataSource getDataSource() throws ProviderException { + if (!initialized) { + fail(); + } + return EasyMock.createNiceMock(DataSource.class); + } + } + + private class MockFactory implements ObjectFactory<Integer> { + private Integer instance; + + public MockFactory(Integer instance) { + this.instance = instance; + } + + public Integer getInstance() throws ObjectCreationException { + return instance; + } + } + + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/DHCPBootstrapTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/DHCPBootstrapTestCase.java new file mode 100644 index 0000000000..a94ab25f3b --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/DHCPBootstrapTestCase.java @@ -0,0 +1,50 @@ +/* + * 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.persistence.datasource.integration; + +import java.net.URL; +import java.sql.Connection; +import javax.sql.DataSource; + +import org.apache.tuscany.spi.component.AtomicComponent; + +import junit.framework.TestCase; + +/** + * Verifies bootstrapping of a datasource implementation using Commons DBCP and HSQLDB + * + * @version $Rev$ $Date$ + */ +public class DHCPBootstrapTestCase extends TestCase { + + public void testBasicConnection() throws Exception { +// DataSource ds = (DataSource) ((AtomicComponent) component.getSystemChild("TestDS")).getTargetInstance(); +// assertNotNull(ds); +// Connection conn = ds.getConnection(); +// conn.createStatement().execute("CREATE TABLE foo (bar char(20));"); + } + + protected void setUp() throws Exception { +// URL url = getClass().getResource("/META-INF/sca/dataSource.scdl"); +// addExtension("DataSourceExtension", url); +// setApplicationSCDL(getClass().getResource("/META-INF/sca/dbcp.scdl")); +// super.setUp(); + } + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/ProviderBootstrapTestCase.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/ProviderBootstrapTestCase.java new file mode 100644 index 0000000000..23dab05e65 --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/ProviderBootstrapTestCase.java @@ -0,0 +1,50 @@ +/* + * 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.persistence.datasource.integration; + +import java.net.URL; +import javax.sql.DataSource; + +import org.apache.tuscany.spi.component.AtomicComponent; + +import org.apache.tuscany.persistence.datasource.integration.mock.Provider; +import junit.framework.TestCase; + +/** + * Verifies bootstrapping of a datasource implementation as a system service in an application composite using a mock + * Provider + * + * @version $Rev$ $Date$ + */ +public class ProviderBootstrapTestCase extends TestCase { + + public void testBoot() throws Exception { +// DataSource ds = (DataSource) ((AtomicComponent)component.getSystemChild("TestDS")).getTargetInstance(); +// assertNotNull(ds); +// assertEquals("value", ((Provider) ds).getTest()); + } + + protected void setUp() throws Exception { +// URL url = getClass().getResource("/META-INF/sca/dataSource.scdl"); +// addExtension("DataSourceExtension", url); +// setApplicationSCDL(getClass().getResource("/META-INF/sca/provider.scdl")); + super.setUp(); + } + +} diff --git a/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/mock/Provider.java b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/mock/Provider.java new file mode 100644 index 0000000000..558b73e700 --- /dev/null +++ b/sandbox/old/contrib/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/integration/mock/Provider.java @@ -0,0 +1,79 @@ +/* + * 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.persistence.datasource.integration.mock; + +import java.sql.Connection; +import java.sql.SQLException; +import java.io.PrintWriter; +import javax.sql.DataSource; + +import org.apache.tuscany.persistence.datasource.DataSourceProvider; +import org.apache.tuscany.persistence.datasource.ProviderException; + +/** + * @version $Rev$ $Date$ + */ +public class Provider implements DataSourceProvider, DataSource { + + private String test; + + public void setTest(String test) { + this.test = test; + } + + public String getTest() { + return test; + } + + public void init() throws ProviderException { + + } + + public void close() throws ProviderException { + + } + + public DataSource getDataSource() throws ProviderException { + return this; + } + + public Connection getConnection() throws SQLException { + return null; + } + + public Connection getConnection(String username, String password) throws SQLException { + return null; + } + + public PrintWriter getLogWriter() throws SQLException { + return null; + } + + public void setLogWriter(PrintWriter out) throws SQLException { + + } + + public void setLoginTimeout(int seconds) throws SQLException { + + } + + public int getLoginTimeout() throws SQLException { + return 0; + } +} |