Author: jmarino
Date: Sun Jan 7 06:13:43 2007
New Revision: 493724
URL: http://svn.apache.org/viewvc?view=rev&rev=493724
Log:
continue refactoring Component and CompositeComponent
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/LocalReferenceWiringTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ServiceConnectorTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/QualifiedName.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
Sun Jan 7 06:13:43 2007
@@ -353,12 +353,10 @@
protected void connect(SCAObject source, OutboundWire sourceWire,
SCAObject target) throws WiringException {
assert sourceWire.getTargetName() != null;
QualifiedName targetName = sourceWire.getTargetName();
- if (target instanceof AtomicComponent) {
- connect(source, sourceWire, (AtomicComponent) target);
+ if (target instanceof Component) {
+ connect(source, sourceWire, (Component) target);
} else if (target instanceof Reference) {
connect(source, sourceWire, (Reference) target);
- } else if (target instanceof CompositeComponent) {
- connect(source, sourceWire, (CompositeComponent) target);
} else if (target instanceof Service) {
connect(source, sourceWire, (Service) target);
} else if (target == null) {
@@ -380,26 +378,6 @@
}
}
- protected void connect(SCAObject source, OutboundWire sourceWire,
AtomicComponent target)
- throws WiringException {
- assert sourceWire.getTargetName() != null;
- QualifiedName targetName = sourceWire.getTargetName();
-
- InboundWire targetWire =
target.getInboundWire(targetName.getPortName());
- if (targetWire == null) {
- String sourceName = sourceWire.getContainer().getName();
- String sourceReference = sourceWire.getReferenceName();
- throw new TargetServiceNotFoundException("Target service not
found",
- sourceName,
- sourceReference,
- targetName.getPartName(),
- targetName.getPortName());
- }
- checkIfWireable(sourceWire, targetWire);
- boolean optimizable = isOptimizable(source.getScope(),
target.getScope());
- connect(sourceWire, targetWire, optimizable);
- }
-
protected void connect(SCAObject source, OutboundWire sourceWire,
Reference target) throws WiringException {
assert sourceWire.getTargetName() != null;
QualifiedName targetName = sourceWire.getTargetName();
@@ -442,28 +420,29 @@
connect(sourceWire, targetWire, optimizable);
}
- protected void connect(SCAObject source, OutboundWire sourceWire,
CompositeComponent target)
+ protected void connect(SCAObject source, OutboundWire sourceWire,
Component target)
throws WiringException {
assert sourceWire.getTargetName() != null;
QualifiedName targetName = sourceWire.getTargetName();
InboundWire targetWire;
- // target is a composite service, connect to it
- if (source.isSystem()) {
- targetWire = target.getInboundSystemWire(targetName.getPortName());
+ // FIXME JFM should we move getInboundSystemWire up to Component?
+ if (target instanceof CompositeComponent && source.isSystem()) {
+ targetWire = ((CompositeComponent)
target).getInboundSystemWire(targetName.getPortName());
} else {
targetWire = target.getInboundWire(targetName.getPortName());
}
if (targetWire == null) {
String sourceName = sourceWire.getContainer().getName();
String sourceReference = sourceWire.getReferenceName();
- throw new TargetServiceNotFoundException("Target service does not
exist or is not configured with a "
+ throw new TargetServiceNotFoundException("Target service does not
exist or is not configured with a "
+ "local binding",
sourceName,
sourceReference,
targetName.getPartName(),
targetName.getPortName());
}
- boolean optimizable = isOptimizable(source.getScope(), Scope.SYSTEM);
+ checkIfWireable(sourceWire, targetWire);
+ boolean optimizable = isOptimizable(source.getScope(),
target.getScope());
connect(sourceWire, targetWire, optimizable);
}
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
Sun Jan 7 06:13:43 2007
@@ -58,10 +58,13 @@
}
public <T> T locateService(Class<T> serviceInterface, String serviceName)
throws ServiceRuntimeException {
- String name = serviceInterface.getName();
QualifiedName qName = new QualifiedName(serviceName);
+ if (qName.getPortName() == null) {
+ String name = serviceInterface.getName();
+ qName = new QualifiedName(qName.getPartName(), name);
+ }
SCAObject child = composite.getChild(qName.getPartName());
- InboundWire wire = getInboundWire(child, name, qName.getPortName());
+ InboundWire wire = getInboundWire(child, qName);
if (wire.isOptimizable()
&& wire.getServiceContract().getInterfaceClass() != null
&&
serviceInterface.isAssignableFrom(wire.getServiceContract().getInterfaceClass()))
{
@@ -74,12 +77,11 @@
return wireService.createProxy(serviceInterface, wire);
}
- protected InboundWire getInboundWire(SCAObject child, String name, String
serviceName) {
+ protected InboundWire getInboundWire(SCAObject child, QualifiedName qName)
{
InboundWire wire = null;
if (child instanceof Component) {
- wire = ((Component) child).getInboundWire(name);
+ wire = ((Component) child).getInboundWire(qName.getPortName());
if (wire == null) {
- String qName = serviceName + QualifiedName.NAME_SEPARATOR +
name;
throw new ServiceRuntimeException("Service not found [" +
qName + "]");
}
} else if (child instanceof Service) {
@@ -91,7 +93,7 @@
}
}
if (wire == null) {
- throw new ServiceRuntimeException("Local binding for service
not found [" + name + "]");
+ throw new ServiceRuntimeException("Local binding for service
not found [" + qName + "]");
}
} else if (child instanceof Reference) {
Reference service = (Reference) child;
@@ -102,10 +104,10 @@
}
}
if (wire == null) {
- throw new ServiceRuntimeException("Local binding for service
not found [" + name + "]");
+ throw new ServiceRuntimeException("Local binding for service
not found [" + qName + "]");
}
} else if (child == null) {
- throw new ServiceRuntimeException("Service not found [" +
serviceName + "]");
+ throw new ServiceRuntimeException("Service not found [" + qName +
"]");
} else {
throw new ServiceRuntimeException("Invalid service type [" +
child.getClass().getName() + "]");
}
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java
Sun Jan 7 06:13:43 2007
@@ -49,7 +49,6 @@
*/
public class SystemSingletonAtomicComponent<S, T extends S> extends
AbstractComponentExtension
implements AtomicComponent {
-
private T instance;
private Map<String, InboundWire> inboundWires;
private WireService wireService = new JDKWireService();
Modified:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/LocalReferenceWiringTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/LocalReferenceWiringTestCase.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/LocalReferenceWiringTestCase.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/LocalReferenceWiringTestCase.java
Sun Jan 7 06:13:43 2007
@@ -3,6 +3,7 @@
import java.util.Collections;
import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.Reference;
@@ -163,6 +164,7 @@
return localServiceInboundWire;
}
});
+ EasyMock.expect(sibling.getScope()).andReturn(Scope.SYSTEM).anyTimes();
EasyMock.replay(sibling);
CompositeComponent topComposite =
EasyMock.createMock(CompositeComponent.class);
Modified:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ServiceConnectorTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ServiceConnectorTestCase.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ServiceConnectorTestCase.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ServiceConnectorTestCase.java
Sun Jan 7 06:13:43 2007
@@ -145,6 +145,7 @@
Service service = createLocalService(compositeTarget);
ServiceBinding binding = service.getServiceBindings().get(0);
EasyMock.expect(compositeTarget.getInboundWire(TARGET_SERVICE)).andReturn(binding.getInboundWire());
+
EasyMock.expect(compositeTarget.getScope()).andReturn(Scope.SYSTEM).anyTimes();
EasyMock.replay(compositeTarget);
inboundWire.setContainer(compositeTarget);
Modified:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java
Sun Jan 7 06:13:43 2007
@@ -134,7 +134,7 @@
WireService service = EasyMock.createMock(WireService.class);
EasyMock.expect(
-
service.createProxy(EasyMock.eq(AbstractCompositeContextTestCase.FooService.class),
EasyMock.eq(wire)))
+ service.createProxy(EasyMock.eq(FooService.class),
EasyMock.eq(wire)))
.andReturn(new AbstractCompositeContextTestCase.FooService() {
});
EasyMock.replay(service);
@@ -224,6 +224,31 @@
EasyMock.replay(wireService);
CompositeContextImpl context = new CompositeContextImpl(composite,
wireService);
context.locateService(AbstractCompositeContextTestCase.FooService.class,
"Foo/Bar");
+ EasyMock.verify(wireService);
+ EasyMock.verify(composite);
+ EasyMock.verify(wire);
+ EasyMock.verify(child);
+ }
+
+ public void testCompositeLocateNoService() throws Exception {
+ InboundWire wire = EasyMock.createMock(InboundWire.class);
+ EasyMock.expect(wire.isOptimizable()).andReturn(false);
+ EasyMock.replay(wire);
+ CompositeComponent child =
EasyMock.createMock(CompositeComponent.class);
+
EasyMock.expect(child.getInboundWire(FooService.class.getName())).andReturn(wire);
+ EasyMock.replay(child);
+ CompositeComponent composite =
EasyMock.createMock(CompositeComponent.class);
+ EasyMock.expect(composite.getChild("Foo")).andReturn(child);
+ EasyMock.replay(composite);
+
+ WireService wireService = EasyMock.createMock(WireService.class);
+ EasyMock.expect(
+
wireService.createProxy(EasyMock.eq(AbstractCompositeContextTestCase.FooService.class),
EasyMock.eq(wire)))
+ .andReturn(new AbstractCompositeContextTestCase.FooService() {
+ });
+ EasyMock.replay(wireService);
+ CompositeContextImpl context = new CompositeContextImpl(composite,
wireService);
+ context.locateService(FooService.class, "Foo");
EasyMock.verify(wireService);
EasyMock.verify(composite);
EasyMock.verify(wire);
Modified:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
Sun Jan 7 06:13:43 2007
@@ -53,12 +53,6 @@
Assert.assertEquals(Scope.SYSTEM, composite.getScope());
}
- public void testGetChildren() throws Exception {
- CompositeComponent composite = new CompositeComponentImpl("parent",
null, null, null);
- composite.register(component);
- Assert.assertEquals(1, composite.getChildren().size());
- }
-
public void testReferencesServices() throws Exception {
CompositeComponent composite = new CompositeComponentImpl("parent",
null, null, null);
Service service = EasyMock.createMock(Service.class);
Modified:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/QualifiedName.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/QualifiedName.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/QualifiedName.java
(original)
+++
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/QualifiedName.java
Sun Jan 7 06:13:43 2007
@@ -44,7 +44,7 @@
}
int pos = qualifiedName.indexOf(QualifiedName.NAME_SEPARATOR);
switch (pos) {
- case -1:
+ case-1:
partName = qualifiedName;
break;
case 0:
@@ -55,6 +55,17 @@
break;
}
qName = qualifiedName;
+ }
+
+ /**
+ * Constructs a qualified name using the given part/port combination
+ *
+ * @param partName the part name
+ * @param portName the port name
+ */
+ public QualifiedName(String partName, String portName) {
+ this.partName = partName;
+ this.portName = portName;
}
/**
Modified:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
(original)
+++
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
Sun Jan 7 06:13:43 2007
@@ -36,7 +36,7 @@
public interface Component extends SCAObject {
/**
- * Returns the internal wire associated with the given service name or
null if not found
+ * Returns the wire associated with the given service name or null if not
found
*/
InboundWire getInboundWire(String serviceName);
Modified:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
(original)
+++
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
Sun Jan 7 06:13:43 2007
@@ -18,7 +18,6 @@
*/
package org.apache.tuscany.spi.component;
-import java.util.Collection;
import java.util.List;
import org.w3c.dom.Document;
@@ -45,7 +44,7 @@
/**
* Sets the scope container associated with the composite
- *
+ * TODO move to Component
* @param scopeContainer the scope container associated with the composite
*/
void setScopeContainer(ScopeContainer scopeContainer);
@@ -67,6 +66,14 @@
void register(SCAObject object) throws ComponentRegistrationException;
/**
+ * Returns the internal system wire associated with the given service name
or null if not found
+ *
+ * @param serviceName the service name
+ * @return the system wire or null if not found
+ */
+ InboundWire getInboundSystemWire(String serviceName);
+
+ /**
* Register a simple Java Object as a system component. This is primarily
intended for use by bootstrap code to
* create the initial configuration components.
*
@@ -99,31 +106,6 @@
* Returns the system child associated with a given name
*/
SCAObject getSystemChild(String name);
-
- /**
- * Returns the children contained by the composite
- */
- List<SCAObject> getChildren();
-
- /**
- * Returns the system children contained by the composite
- */
- List<SCAObject> getSystemChildren();
-
- /**
- * Returns the internal system wire associated with the given service name
or null if not found
- *
- * @param serviceName the service name
- * @return the system wire or null if not found
- */
- InboundWire getInboundSystemWire(String serviceName);
-
- /**
- * Returns all internal wires for system services contained by this
composite
- *
- * @return all internal wires for system services contained by this
composite
- */
- Collection<InboundWire> getInboundSystemWires();
/**
* Invoked by child components to return an wire to a target based on
matching type. Resolved targets may be
Modified:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?view=diff&rev=493724&r1=493723&r2=493724
==============================================================================
---
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
(original)
+++
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
Sun Jan 7 06:13:43 2007
@@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -131,14 +130,6 @@
return systemChildren.get(name);
}
- public List<SCAObject> getSystemChildren() {
- return Collections.unmodifiableList(new
ArrayList<SCAObject>(systemChildren.values()));
- }
-
- public List<SCAObject> getChildren() {
- return Collections.unmodifiableList(new
ArrayList<SCAObject>(children.values()));
- }
-
public void register(SCAObject child) throws
ComponentRegistrationException {
assert child instanceof Service || child instanceof Reference || child
instanceof Component;
if (child.isSystem()) {
@@ -254,18 +245,6 @@
synchronized (services) {
List<InboundWire> map = new ArrayList<InboundWire>();
for (Service service : services) {
- for (ServiceBinding binding : service.getServiceBindings()) {
- map.add(binding.getInboundWire());
- }
- }
- return map;
- }
- }
-
- public Collection<InboundWire> getInboundSystemWires() {
- synchronized (systemServices) {
- List<InboundWire> map = new ArrayList<InboundWire>();
- for (Service service : systemServices) {
for (ServiceBinding binding : service.getServiceBindings()) {
map.add(binding.getInboundWire());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]