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/17 03:16:22 UTC
svn commit: r508691 - in /incubator/tuscany/java/sca/kernel/core/src:
main/java/org/apache/tuscany/core/component/
main/java/org/apache/tuscany/core/implementation/
test/java/org/apache/tuscany/core/component/
test/java/org/apache/tuscany/core/implemen...
Author: jboynes
Date: Fri Feb 16 18:16:21 2007
New Revision: 508691
URL: http://svn.apache.org/viewvc?view=rev&rev=508691
Log:
refactor ComponentContextImpl out from PojoAtomicComponent
Added:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java (contents, props changed)
- copied, changed from r508679, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java (with props)
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ComponentContextImplTestCase.java (contents, props changed)
- copied, changed from r508690, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java
Removed:
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/PojoComponentContextImplTestCase.java
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java (from r508679, 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/component/ComponentContextImpl.java?view=diff&rev=508691&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponentContextImpl.java&r1=508679&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java&r2=508691
==============================================================================
--- 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/component/ComponentContextImpl.java Fri Feb 16 18:16:21 2007
@@ -16,20 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.core.implementation;
+package org.apache.tuscany.core.component;
import org.osoa.sca.ComponentContext;
import org.osoa.sca.CallableReference;
import org.osoa.sca.ServiceReference;
import org.osoa.sca.RequestContext;
+import org.apache.tuscany.core.component.ComponentContextProvider;
+
/**
+ * Implementation of ComponentContext that delegates to a ComponentContextProvider.
+ *
* @version $Rev$ $Date$
*/
-public class PojoComponentContextImpl implements ComponentContext {
- private final PojoAtomicComponent component;
+public class ComponentContextImpl implements ComponentContext {
+ private final ComponentContextProvider component;
- public PojoComponentContextImpl(PojoAtomicComponent component) {
+ public ComponentContextImpl(ComponentContextProvider component) {
this.component = component;
}
@@ -50,7 +54,7 @@
}
public <B> B getProperty(Class<B> type, String propertyName) {
- return type.cast(component.getProperty(propertyName));
+ return component.getProperty(type, propertyName);
}
public <B> ServiceReference<B> createSelfReference(Class<B> businessInterface) {
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java?view=auto&rev=508691
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java Fri Feb 16 18:16:21 2007
@@ -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.core.component;
+
+import java.net.URI;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+
+/**
+ * Interface implemented by Component's that want to expose a ComponentContext.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ComponentContextProvider {
+ ComponentContext getComponentContext();
+
+ URI getUri();
+
+ <B> B getService(Class<B> businessInterface, String referenceName);
+
+ <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, String referenceName);
+
+ <B> B getProperty(Class<B> type, String propertyName);
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=508691&r1=508690&r2=508691
==============================================================================
--- 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 Fri Feb 16 18:16:21 2007
@@ -30,15 +30,9 @@
import org.osoa.sca.ComponentContext;
import org.osoa.sca.ServiceReference;
-import org.apache.tuscany.spi.ObjectCreationException;
-import org.apache.tuscany.spi.ObjectFactory;
-import org.apache.tuscany.spi.component.TargetDestructionException;
-import org.apache.tuscany.spi.component.TargetInitializationException;
-import org.apache.tuscany.spi.component.TargetResolutionException;
-import org.apache.tuscany.spi.extension.AtomicComponentExtension;
-import org.apache.tuscany.spi.model.Scope;
-import org.apache.tuscany.spi.wire.OutboundWire;
-
+import org.apache.tuscany.core.component.ComponentContextProvider;
+import org.apache.tuscany.core.component.ServiceReferenceImpl;
+import org.apache.tuscany.core.component.ComponentContextImpl;
import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
import org.apache.tuscany.core.injection.ConversationIDObjectFactory;
import org.apache.tuscany.core.injection.EventInvoker;
@@ -51,14 +45,21 @@
import org.apache.tuscany.core.injection.NoMultiplicityTypeException;
import org.apache.tuscany.core.injection.ObjectCallbackException;
import org.apache.tuscany.core.injection.PojoObjectFactory;
-import org.apache.tuscany.core.component.ServiceReferenceImpl;
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.component.TargetDestructionException;
+import org.apache.tuscany.spi.component.TargetInitializationException;
+import org.apache.tuscany.spi.component.TargetResolutionException;
+import org.apache.tuscany.spi.extension.AtomicComponentExtension;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.wire.OutboundWire;
/**
* Base implementation of an {@link org.apache.tuscany.spi.component.AtomicComponent} whose type is a Java class
*
* @version $$Rev$$ $$Date$$
*/
-public abstract class PojoAtomicComponent extends AtomicComponentExtension {
+public abstract class PojoAtomicComponent extends AtomicComponentExtension implements ComponentContextProvider {
protected EventInvoker<Object> initInvoker;
protected EventInvoker<Object> destroyInvoker;
protected PojoObjectFactory<?> instanceFactory;
@@ -77,13 +78,13 @@
public PojoAtomicComponent(PojoConfiguration configuration) {
super(configuration.getName(),
- configuration.getWireService(),
- configuration.getWorkContext(),
- configuration.getScheduler(),
- configuration.getMonitor(),
- configuration.getInitLevel(),
- configuration.getMaxIdleTime(),
- configuration.getMaxAge());
+ configuration.getWireService(),
+ configuration.getWorkContext(),
+ configuration.getScheduler(),
+ configuration.getMonitor(),
+ configuration.getInitLevel(),
+ configuration.getMaxIdleTime(),
+ configuration.getMaxAge());
assert configuration.getInstanceFactory() != null : "Object factory was null";
initInvoker = configuration.getInitInvoker();
destroyInvoker = configuration.getDestroyInvoker();
@@ -101,7 +102,7 @@
: new HashMap<String, Member>();
implementationClass = configuration.getImplementationClass();
- componentContext = new PojoComponentContextImpl(this);
+ componentContext = new ComponentContextImpl(this);
}
@@ -298,9 +299,13 @@
return componentContext;
}
- public Object getProperty(String name) {
- ObjectFactory<?> factory = propertyFactories.get(name);
- return factory != null ? factory.getInstance() : null;
+ public <B> B getProperty(Class<B> type, String propertyName) {
+ ObjectFactory<?> factory = propertyFactories.get(propertyName);
+ if (factory != null) {
+ return type.cast(factory.getInstance());
+ } else {
+ return null;
+ }
}
Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ComponentContextImplTestCase.java (from r508690, 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/component/ComponentContextImplTestCase.java?view=diff&rev=508691&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java&r1=508690&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ComponentContextImplTestCase.java&r2=508691
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoComponentContextImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ComponentContextImplTestCase.java Fri Feb 16 18:16:21 2007
@@ -16,19 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.core.implementation;
+package org.apache.tuscany.core.component;
import java.net.URI;
import junit.framework.TestCase;
import org.easymock.classextension.EasyMock;
+import org.apache.tuscany.core.implementation.PojoAtomicComponent;
+
/**
* @version $Rev$ $Date$
*/
-public class PojoComponentContextImplTestCase extends TestCase {
+public class ComponentContextImplTestCase extends TestCase {
private PojoAtomicComponent component;
- private PojoComponentContextImpl context;
+ private ComponentContextImpl context;
public void testURI() {
URI uri = URI.create("foo");
@@ -41,7 +43,7 @@
public void testGetProperty() {
String name = "foo";
String value = "bar";
- EasyMock.expect(component.getProperty(name)).andReturn(value);
+ EasyMock.expect(component.getProperty(String.class, name)).andReturn(value);
EasyMock.replay(component);
assertSame(value, context.getProperty(String.class, name));
EasyMock.verify(component);
@@ -49,8 +51,7 @@
public void testGetPropertyThatIsIncompatible() {
String name = "foo";
- String value = "bar";
- EasyMock.expect(component.getProperty(name)).andReturn(value);
+ EasyMock.expect(component.getProperty(Integer.class, name)).andThrow(new ClassCastException());
EasyMock.replay(component);
try {
context.getProperty(Integer.class, name);
@@ -64,7 +65,7 @@
public void testGetPropertyThatIsSubclass() {
String name = "foo";
String value = "bar";
- EasyMock.expect(component.getProperty(name)).andReturn(value);
+ EasyMock.expect(component.getProperty(Object.class, name)).andReturn(value);
EasyMock.replay(component);
assertSame(value, context.getProperty(Object.class, name));
EasyMock.verify(component);
@@ -82,7 +83,7 @@
protected void setUp() throws Exception {
super.setUp();
component = EasyMock.createMock(PojoAtomicComponent.class);
- context = new PojoComponentContextImpl(component);
+ context = new ComponentContextImpl(component);
}
public interface FooService {
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ComponentContextImplTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ComponentContextImplTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=508691&r1=508690&r2=508691
==============================================================================
--- 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 Fri Feb 16 18:16:21 2007
@@ -102,7 +102,7 @@
TestAtomicComponent component = new TestAtomicComponent(config);
component.addPropertyFactory("foo", objectFactory);
- assertSame(value, component.getProperty("foo"));
+ assertSame(value, component.getProperty(String.class, "foo"));
}
public void testServiceLookup() {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org