You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2007/02/13 20:54:04 UTC
svn commit: r507186 - in /incubator/tuscany/java/sca/kernel/core/src:
main/java/org/apache/tuscany/core/implementation/
test/java/org/apache/tuscany/core/implementation/
Author: jboynes
Date: Tue Feb 13 11:54:02 2007
New Revision: 507186
URL: http://svn.apache.org/viewvc?view=rev&rev=507186
Log:
support getProperty for POJO components
Added:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java (with props)
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?view=diff&rev=507186&r1=507185&r2=507186
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Tue Feb 13 11:54:02 2007
@@ -25,6 +25,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.osoa.sca.ComponentContext;
@@ -62,6 +63,7 @@
protected Map<String, Member> referenceSites;
protected Map<String, Member> resourceSites;
protected Map<String, Member> propertySites;
+ protected Map<String, ObjectFactory<?>> propertyFactories = new ConcurrentHashMap<String, ObjectFactory<?>>();
protected Map<String, Member> callbackSites;
protected List<Injector<Object>> injectors;
protected Class implementationClass;
@@ -162,7 +164,13 @@
break;
}
}
- //FIXME throw an error if no injection site found
+
+ propertyFactories.put(name, factory);
+ }
+
+ Object getProperty(String name) {
+ ObjectFactory<?> factory = propertyFactories.get(name);
+ return factory != null ? factory.getInstance() : null;
}
public void addResourceFactory(String name, ObjectFactory<?> factory) {
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java?view=diff&rev=507186&r1=507185&r2=507186
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java Tue Feb 13 11:54:02 2007
@@ -50,7 +50,7 @@
}
public <B> B getProperty(Class<B> type, String propertyName) {
- return null;
+ return type.cast(component.getProperty(propertyName));
}
public <B> ServiceReference<B> createSelfReference(Class<B> businessInterface) {
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java?view=diff&rev=507186&r1=507185&r2=507186
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java Tue Feb 13 11:54:02 2007
@@ -38,13 +38,10 @@
* @version $Rev$ $Date$
*/
public class PojoAtomicComponentTestCase extends TestCase {
- private PojoObjectFactory<Foo> factory;
+ private PojoConfiguration config;
@SuppressWarnings({"unchecked"})
public void testDestroy() throws Exception {
- PojoConfiguration config = new PojoConfiguration();
- config.setName(URI.create("foo"));
- config.setInstanceFactory(factory);
EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
invoker.invokeEvent(EasyMock.notNull());
EasyMock.replay(invoker);
@@ -57,9 +54,6 @@
@SuppressWarnings({"unchecked"})
public void testInit() throws Exception {
- PojoConfiguration config = new PojoConfiguration();
- config.setName(URI.create("foo"));
- config.setInstanceFactory(factory);
EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
invoker.invokeEvent(EasyMock.notNull());
EasyMock.replay(invoker);
@@ -70,18 +64,12 @@
}
public void testOptimizable() throws Exception {
- PojoConfiguration config = new PojoConfiguration();
- config.setName(URI.create("foo"));
- config.setInstanceFactory(factory);
TestAtomicComponent component = new TestAtomicComponent(config);
assertTrue(component.isOptimizable());
}
@SuppressWarnings({"unchecked"})
public void testDestroyableButOptimizable() throws Exception {
- PojoConfiguration config = new PojoConfiguration();
- config.setInstanceFactory(factory);
- config.setName(URI.create("foo"));
EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
invoker.invokeEvent(EasyMock.notNull());
EasyMock.replay(invoker);
@@ -92,18 +80,12 @@
@SuppressWarnings({"unchecked"})
public void testStatelessOptimizable() throws Exception {
- PojoConfiguration config = new PojoConfiguration();
- config.setName(URI.create("foo"));
- config.setInstanceFactory(factory);
TestStatelessAtomicComponent component = new TestStatelessAtomicComponent(config);
assertTrue(component.isOptimizable());
}
@SuppressWarnings({"unchecked"})
public void testNotOptimizable() throws Exception {
- PojoConfiguration config = new PojoConfiguration();
- config.setInstanceFactory(factory);
- config.setName(URI.create("foo"));
EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
invoker.invokeEvent(EasyMock.notNull());
EasyMock.replay(invoker);
@@ -112,9 +94,24 @@
assertFalse(component.isOptimizable());
}
+ public void testPropertyAccess() {
+ String value = "Foo!";
+ ObjectFactory objectFactory = EasyMock.createMock(ObjectFactory.class);
+ EasyMock.expect(objectFactory.getInstance()).andReturn(value);
+ EasyMock.replay(objectFactory);
+
+ TestAtomicComponent component = new TestAtomicComponent(config);
+ component.addPropertyFactory("foo", objectFactory);
+ assertSame(value, component.getProperty("foo"));
+ }
+
protected void setUp() throws Exception {
super.setUp();
- factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor());
+ PojoObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor());
+
+ config = new PojoConfiguration();
+ config.setInstanceFactory(factory);
+ config.setName(URI.create("foo"));
}
private class TestAtomicComponent extends PojoAtomicComponent {
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java?view=auto&rev=507186
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java Tue Feb 13 11:54:02 2007
@@ -0,0 +1,78 @@
+/*
+ * 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.core.implementation;
+
+import java.net.URI;
+
+import junit.framework.TestCase;
+import org.easymock.classextension.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class PojoComponentContextImplTestCase extends TestCase {
+ private PojoAtomicComponent component;
+ private PojoComponentContextImpl context;
+
+ public void testURI() {
+ URI uri = URI.create("foo");
+ EasyMock.expect(component.getUri()).andReturn(uri);
+ EasyMock.replay(component);
+ assertEquals(uri.toString(), context.getURI());
+ EasyMock.verify(component);
+ }
+
+ public void testGetProperty() {
+ String name = "foo";
+ String value = "bar";
+ EasyMock.expect(component.getProperty(name)).andReturn(value);
+ EasyMock.replay(component);
+ assertSame(value, context.getProperty(String.class, name));
+ EasyMock.verify(component);
+ }
+
+ public void testGetPropertyThatIsIncompatible() {
+ String name = "foo";
+ String value = "bar";
+ EasyMock.expect(component.getProperty(name)).andReturn(value);
+ EasyMock.replay(component);
+ try {
+ context.getProperty(Integer.class, name);
+ fail();
+ } catch (ClassCastException e) {
+ // expected
+ }
+ EasyMock.verify(component);
+ }
+
+ public void testGetPropertyThatIsSubclass() {
+ String name = "foo";
+ String value = "bar";
+ EasyMock.expect(component.getProperty(name)).andReturn(value);
+ EasyMock.replay(component);
+ assertSame(value, context.getProperty(Object.class, name));
+ EasyMock.verify(component);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ component = EasyMock.createMock(PojoAtomicComponent.class);
+ context = new PojoComponentContextImpl(component);
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org