You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/12/30 22:42:28 UTC

svn commit: r491325 [1/6] - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/binding/ kernel/core/src/main/java/org/apache/tuscany/core/binding/local/ kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/co...

Author: jmarino
Date: Sat Dec 30 13:42:22 2006
New Revision: 491325

URL: http://svn.apache.org/viewvc?view=rev&rev=491325
Log:
add support for multiple configured bindings per service; removal of bindless service specializations; multiple bindings per reference to follow

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeReferenceTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingImpl.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvokerTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingBuilderTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ServiceImplTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeLoaderNoBindingTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireServiceExtensionTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Service.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Service.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceBindingExtension.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedComponentTypeException.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ServiceBindingExtensionTestCase.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ServiceExtensionTestCase.java
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiServiceBinding.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiService.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceBinding.java   (contents, props changed)
      - copied, changed from r490475, incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixServiceBinding.java   (contents, props changed)
      - copied, changed from r490475, incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSServiceBinding.java   (contents, props changed)
      - copied, changed from r490475, incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCServiceBinding.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIServiceBinding.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingServiceBinding.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingService.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingServiceBinding.java   (contents, props changed)
      - copied, changed from r490460, incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingService.java
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeReferenceTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeService.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceImpl.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BindlessServiceDefinition.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ServiceExtensionTestCase.java
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiService.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingService.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingService.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    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/databinding/impl/DataBindingWirePostProcessor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBindlessBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.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/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentTypeElementLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ReferenceLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ServiceLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/InboundWireImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OutboundWireImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireServiceExtension.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandler.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandler.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/TestUtils.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireResolutionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplSystemWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentResolutionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeLoaderWireResolutionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositePropagationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/DuplicateRegistrationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/processor/HeuristicPojoProcessorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/launcher/CompositeContextImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeElementLoaderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandlerSerializationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerSerializationTestCase.java
    incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/ContentTypes.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindlessBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Connector.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/AtomicComponent.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/AtomicComponentExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/Wire.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
    incubator/tuscany/java/sca/plugins/plugin.itest/src/main/resources/META-INF/tuscany/embeddedMaven.scdl
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiBindingBuilder.java
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiInvoker.java
    incubator/tuscany/java/sca/runtime/standalone/launcher/src/main/resources/META-INF/tuscany/system.scdl
    incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/resources/META-INF/tuscany/webapp.scdl
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceCallbackTargetInvoker.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInMessageReceiver.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutAsyncMessageReceiver.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ReferenceTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ServiceTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixServiceInitException.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/ScriptGetterServlet.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilderTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCServiceTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/RMIServiceTestCase.java
    incubator/tuscany/java/sca/services/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponentBuilder.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/PropertyTestCase.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/RhinoScriptIntrospectorTestCase.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/ScriptInvokeTestCase.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/WireTestCase.java
    incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentBuilder.java
    incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyScriptIntrospectorTestCase.java
    incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/ScriptInvokeTestCase.java
    incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java
    incubator/tuscany/java/sca/services/containers/container.script/src/main/java/org/apache/tuscany/container/script/ScriptComponent.java
    incubator/tuscany/java/sca/services/containers/container.script/src/main/java/org/apache/tuscany/container/script/ScriptComponentBuilder.java
    incubator/tuscany/java/sca/services/containers/container.script/src/main/java/org/apache/tuscany/container/script/ScriptInstanceFactory.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java
    incubator/tuscany/java/sca/services/maven/src/test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/ArtifactFactory.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingBuilder.java
    incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/system.scdl

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java (from r490460, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeReferenceTargetInvoker.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java?view=diff&rev=491325&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeReferenceTargetInvoker.java&r1=490460&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeReferenceTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java Sat Dec 30 13:42:22 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.implementation.composite;
+package org.apache.tuscany.core.binding.local;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -27,12 +27,11 @@
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
- * Base class for dispatching to a Composite Reference.
+ * Base class for dispatching to a composite reference using the local binding
  *
  * @version $Rev$ $Date$
  */
-public abstract class AbstractCompositeReferenceTargetInvoker implements TargetInvoker {
-
+public abstract class AbstractCompositeTargetInvoker implements TargetInvoker {
     protected boolean cacheable;
 
     public boolean isCacheable() {
@@ -48,7 +47,7 @@
     }
 
     public Object invokeTarget(final Object payload, short sequence) throws InvocationTargetException {
-        throw new InvocationTargetException(new InvocationRuntimeException("Not allowed to invokeTarget with object"));
+        throw new InvocationTargetException(new UnsupportedOperationException());
     }
 
     protected Message invoke(OutboundInvocationChain chain, TargetInvoker invoker, Message msg) throws Throwable {
@@ -72,7 +71,7 @@
     }
 
     @Override
-    public AbstractCompositeReferenceTargetInvoker clone() throws CloneNotSupportedException {
-        return (AbstractCompositeReferenceTargetInvoker) super.clone();
+    public AbstractCompositeTargetInvoker clone() throws CloneNotSupportedException {
+        return (AbstractCompositeTargetInvoker) super.clone();
     }
 }

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java?view=auto&rev=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java Sat Dec 30 13:42:22 2006
@@ -0,0 +1,66 @@
+/*
+ * 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.binding.local;
+
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * Dispatches an invocation through a composite service or reference using the local binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeTargetInvoker extends AbstractCompositeTargetInvoker {
+    private OutboundInvocationChain chain;
+    private Object fromAddress;
+    private boolean contractHasCallback;
+
+    public CompositeTargetInvoker(Operation operation, OutboundWire outboundWire) {
+        assert operation != null;
+        chain = outboundWire.getInvocationChains().get(operation);
+        fromAddress = (outboundWire.getContainer() == null) ? null : outboundWire.getContainer().getName();
+        contractHasCallback = outboundWire.getServiceContract().getCallbackClass() != null;
+    }
+
+    @Override
+    public CompositeTargetInvoker clone() throws CloneNotSupportedException {
+        return (CompositeTargetInvoker) super.clone();
+    }
+
+    public Message invoke(Message msg) throws InvocationRuntimeException {
+        try {
+            TargetInvoker invoker = chain.getTargetInvoker();
+            // Pushing the from address only needs to happen in the outbound (forward) direction for callbacks
+            if (contractHasCallback) {
+                msg.pushFromAddress(fromAddress);
+            }
+
+            return invoke(chain, invoker, msg);
+        } catch (Throwable e) {
+            Message faultMsg = new MessageImpl();
+            faultMsg.setBodyWithFault(e);
+            return faultMsg;
+        }
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java?view=auto&rev=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java Sat Dec 30 13:42:22 2006
@@ -0,0 +1,55 @@
+/*
+ * 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.binding.local;
+
+import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.BindingBuilderExtension;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
+import org.apache.tuscany.spi.model.BoundServiceDefinition;
+
+/**
+ * Creates runtime artifacts for the local binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class LocalBindingBuilder extends BindingBuilderExtension<LocalBindingDefinition> {
+
+    protected Class<LocalBindingDefinition> getBindingType() {
+        return LocalBindingDefinition.class;
+    }
+
+    public ServiceBinding build(CompositeComponent parent,
+                                BoundServiceDefinition boundServiceDefinition,
+                                LocalBindingDefinition bindingDefinition,
+                                DeploymentContext deploymentContext)
+        throws BuilderException {
+        return new LocalServiceBinding(boundServiceDefinition.getName(), parent);
+    }
+
+
+    public Reference build(CompositeComponent parent,
+                           BoundReferenceDefinition<LocalBindingDefinition> boundReferenceDefinition,
+                           DeploymentContext deploymentContext) throws BuilderException {
+        throw new UnsupportedOperationException();
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java?view=auto&rev=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java Sat Dec 30 13:42:22 2006
@@ -0,0 +1,31 @@
+/*
+ * 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.binding.local;
+
+import org.apache.tuscany.spi.model.BindingDefinition;
+
+
+/**
+ * Represents the local by-reference binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class LocalBindingDefinition extends BindingDefinition {
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java?view=auto&rev=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java Sat Dec 30 13:42:22 2006
@@ -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.core.binding.local;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.StAXElementLoader;
+import org.apache.tuscany.spi.model.ModelObject;
+
+/**
+ * Loader responsible for handling the local binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class LocalBindingLoader implements StAXElementLoader {
+    private static final String NS = "http://tuscany.apache.org/xmlns/1.0-SNAPSHOT";
+    private static final QName BINDING = new QName(NS, "binding.local");
+
+    public QName getXMLType() {
+        return BINDING;
+    }
+
+    public ModelObject load(CompositeComponent parent,
+                            ModelObject object,
+                            XMLStreamReader reader,
+                            DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+        return new LocalBindingDefinition();
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java?view=auto&rev=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java Sat Dec 30 13:42:22 2006
@@ -0,0 +1,45 @@
+/*
+ * 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.binding.local;
+
+import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.extension.ServiceBindingExtension;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * The runtime representaion of the local binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class LocalServiceBinding extends ServiceBindingExtension {
+
+    public LocalServiceBinding(String name, CompositeComponent parent) throws CoreRuntimeException {
+        super(name, parent);
+    }
+
+    public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation)
+        throws TargetInvokerCreationException {
+        return new CompositeTargetInvoker(operation, outboundWire);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Sat Dec 30 13:42:22 2006
@@ -18,13 +18,11 @@
  */
 package org.apache.tuscany.core.builder;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
+import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Scope;
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
@@ -32,15 +30,16 @@
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.builder.ComponentBuilder;
+import org.apache.tuscany.spi.builder.MissingWireTargetException;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BindingDefinition;
-import org.apache.tuscany.spi.model.BindlessServiceDefinition;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
@@ -50,12 +49,13 @@
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.WireService;
 
+import org.apache.tuscany.core.implementation.composite.ServiceImpl;
+
 /**
  * The default builder registry in the runtime
  *
  * @version $Rev$ $Date$
  */
-@Scope("COMPOSITE")
 public class BuilderRegistryImpl implements BuilderRegistry {
     protected WireService wireService;
     protected ScopeRegistry scopeRegistry;
@@ -97,24 +97,6 @@
         componentBuilders.remove(implClass);
     }
 
-    @SuppressWarnings("unchecked")
-    public <B extends BindingDefinition> void register(BindingBuilder<B> builder) {
-        Type[] interfaces = builder.getClass().getGenericInterfaces();
-        for (Type type : interfaces) {
-            if (!(type instanceof ParameterizedType)) {
-                continue;
-            }
-            ParameterizedType interfaceType = (ParameterizedType) type;
-            if (!BindingBuilder.class.equals(interfaceType.getRawType())) {
-                continue;
-            }
-            Class<B> implClass = (Class<B>) interfaceType.getActualTypeArguments()[0];
-            register(implClass, builder);
-            return;
-        }
-        throw new IllegalArgumentException("builder is not generified");
-    }
-
     public <B extends BindingDefinition> void register(Class<B> implClass, BindingBuilder<B> builder) {
         bindingBuilders.put(implClass, builder);
     }
@@ -149,28 +131,41 @@
         }
     }
 
-    @SuppressWarnings("unchecked")
-    public <B extends BindingDefinition> SCAObject build(CompositeComponent parent,
-                                               BoundServiceDefinition<B> boundServiceDefinition,
-                                               DeploymentContext deploymentContext) throws BuilderException {
-        Class<?> bindingClass = boundServiceDefinition.getBinding().getClass();
-        BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
-        if (bindingBuilder == null) {
-            throw new NoRegisteredBuilderException("No builder registered for type", bindingClass.getName());
-        }
-        SCAObject object = bindingBuilder.build(parent, boundServiceDefinition, deploymentContext);
-        if (wireService != null) {
-            String path = boundServiceDefinition.getTarget().getPath();
-            ServiceContract<?> contract = boundServiceDefinition.getServiceContract();
-            wireService.createWires((Service) object, path, contract);
+    @SuppressWarnings({"unchecked"})
+    public Service build(CompositeComponent parent,
+                         BoundServiceDefinition boundServiceDefinition,
+                         DeploymentContext deploymentContext) throws BuilderException {
+        String name = boundServiceDefinition.getName();
+        ServiceContract<?> serviceContract = boundServiceDefinition.getServiceContract();
+        boolean system = parent.isSystem();
+        URI targetUri = boundServiceDefinition.getTarget();
+        Service service = new ServiceImpl(name, parent, serviceContract, targetUri, system);
+        for (BindingDefinition definition : boundServiceDefinition.getBindings()) {
+            Class<?> bindingClass = definition.getClass();
+            BindingBuilder bindingBuilder = bindingBuilders.get(bindingClass);
+            if (bindingBuilder == null) {
+                throw new NoRegisteredBuilderException("No builder registered for type", bindingClass.getName());
+            }
+            ServiceBinding binding =
+                bindingBuilder.build(parent, boundServiceDefinition, definition, deploymentContext);
+            if (wireService != null) {
+                URI uri = boundServiceDefinition.getTarget();
+                if (uri == null) {
+                    throw new MissingWireTargetException("Service uri not specified");
+                }
+                String path = uri.getPath();
+                ServiceContract<?> contract = boundServiceDefinition.getServiceContract();
+                wireService.createWires(binding, path, contract);
+            }
+            service.addServiceBinding(binding);
         }
-        return object;
+        return service;
     }
 
     @SuppressWarnings("unchecked")
     public <B extends BindingDefinition> SCAObject build(CompositeComponent parent,
-                                               BoundReferenceDefinition<B> boundReferenceDefinition,
-                                               DeploymentContext deploymentContext) throws BuilderException {
+                                                         BoundReferenceDefinition<B> boundReferenceDefinition,
+                                                         DeploymentContext deploymentContext) throws BuilderException {
         Class<B> bindingClass = (Class<B>) boundReferenceDefinition.getBinding().getClass();
         BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
         SCAObject object;
@@ -178,18 +173,6 @@
         // create wires for the component
         if (wireService != null) {
             wireService.createWires((Reference) object, boundReferenceDefinition.getServiceContract());
-        }
-        return object;
-    }
-
-    public SCAObject build(CompositeComponent parent,
-                           BindlessServiceDefinition serviceDefinition,
-                           DeploymentContext deploymentContext) {
-        SCAObject object = bindlessBuilder.build(parent, serviceDefinition, deploymentContext);
-        if (wireService != null) {
-            String path = serviceDefinition.getTarget().getPath();
-            ServiceContract<?> contract = serviceDefinition.getServiceContract();
-            wireService.createWires((Service) object, path, contract);
         }
         return object;
     }

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=491325&r1=491324&r2=491325
==============================================================================
--- 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 Sat Dec 30 13:42:22 2006
@@ -33,6 +33,7 @@
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -52,7 +53,6 @@
 import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.implementation.composite.CompositeReference;
-import org.apache.tuscany.core.implementation.composite.CompositeService;
 import org.apache.tuscany.core.wire.LoopBackWire;
 import org.apache.tuscany.core.wire.NonBlockingBridgingInterceptor;
 import org.apache.tuscany.core.wire.SynchronousBridgingInterceptor;
@@ -89,6 +89,8 @@
             handleReference((Reference) source);
         } else if (source instanceof Service) {
             handleService((Service) source);
+        } else {
+            throw new AssertionError("Invalid source type");
         }
     }
 
@@ -168,7 +170,7 @@
                     sourceWire,
                     targetWire);
             }
-            TargetInvoker invoker = null;
+            TargetInvoker invoker;
             if (target instanceof Component) {
                 Component component = (Component) target;
                 QualifiedName wireTargetName = sourceWire.getTargetName();
@@ -189,21 +191,28 @@
                     String targetName = targetWire.getContainer().getName();
                     throw new WireConnectException("Error processing inbound wire", null, null, targetName, null, e);
                 }
-            } else if (target instanceof CompositeService) {
-                CompositeService compServ = (CompositeService) target;
-                invoker = compServ.createTargetInvoker(targetWire.getServiceContract(), inboundChain.getOperation());
+            } else if (target instanceof ServiceBinding) {
+                ServiceBinding binding = (ServiceBinding) target;
+                try {
+                    invoker = binding.createTargetInvoker(targetWire.getServiceContract(), inboundChain.getOperation());
+                } catch (TargetInvokerCreationException e) {
+                    String targetName = targetWire.getContainer().getName();
+                    throw new WireConnectException("Error processing inbound wire", null, null, targetName, null, e);
+                }
+            } else {
+                throw new AssertionError();
             }
 
-            if (source instanceof Service) { //&& !(source instanceof CompositeService)) {
-                // services are a special case: invoker must go on the inbound chain
+            if (source instanceof ServiceBinding) {
+                // services are a special case: invoker must go on the inbound and outbound chains
                 if (target instanceof Component && (isOneWayOperation || operationHasCallback)) {
                     // if the target is a component and the operation is non-blocking
                     connect(outboundChain, inboundChain, invoker, true);
                 } else {
                     connect(outboundChain, inboundChain, invoker, false);
                 }
-                Service service = (Service) source;
-                InboundInvocationChain chain = service.getInboundWire().getInvocationChains().get(operation);
+                ServiceBinding binding = (ServiceBinding) source;
+                InboundInvocationChain chain = binding.getInboundWire().getInvocationChains().get(operation);
                 chain.setTargetInvoker(invoker);
             } else {
                 if (target instanceof Component && (isOneWayOperation || operationHasCallback)) {
@@ -252,14 +261,21 @@
             } else if (source instanceof Service) {
                 Service service = (Service) source;
                 ServiceContract sourceContract = sourceWire.getServiceContract();
-                TargetInvoker invoker;
-                try {
-                    invoker = service.createCallbackTargetInvoker(sourceContract, operation);
-                } catch (TargetInvokerCreationException e) {
-                    String targetName = sourceWire.getContainer().getName();
-                    throw new WireConnectException("Error processing callback wire", null, null, targetName, null, e);
+                for (ServiceBinding binding : service.getServiceBindings()) {
+                    TargetInvoker invoker;
+                    try {
+                        invoker = binding.createCallbackTargetInvoker(sourceContract, operation);
+                    } catch (TargetInvokerCreationException e) {
+                        String targetName = sourceWire.getContainer().getName();
+                        throw new WireConnectException("Error processing callback wire",
+                            null,
+                            null,
+                            targetName,
+                            null,
+                            e);
+                    }
+                    connect(outboundChain, inboundChain, invoker, false);
                 }
-                connect(outboundChain, inboundChain, invoker, false);
             }
         }
         if (postProcessorRegistry != null) {
@@ -276,10 +292,10 @@
      * @param invoker     the invoker to place on the source chain for dispatching invocations
      * @param nonBlocking true if the operation is non-blocking
      */
-    void connect(OutboundInvocationChain sourceChain,
-                 InboundInvocationChain targetChain,
-                 TargetInvoker invoker,
-                 boolean nonBlocking) {
+    protected void connect(OutboundInvocationChain sourceChain,
+                           InboundInvocationChain targetChain,
+                           TargetInvoker invoker,
+                           boolean nonBlocking) {
         Interceptor head = targetChain.getHeadInterceptor();
         assert head != null;
         if (nonBlocking) {
@@ -298,36 +314,35 @@
      * @param sourceChain the source chain to connect
      * @param targetChain the target chain to connect
      */
-    void connect(InboundInvocationChain sourceChain, OutboundInvocationChain targetChain) {
-        // invocations from inbound to outbound chains are always syncrhonius as they occur in services and references
+    protected void connect(InboundInvocationChain sourceChain, OutboundInvocationChain targetChain) {
+        // invocations from inbound to outbound chains are always synchronous as they occur in services and references
         sourceChain.addInterceptor(new SynchronousBridgingInterceptor(targetChain.getHeadInterceptor()));
     }
 
     /**
-     * Connects wires for a service
+     * Connects wires from a service to a target
      *
      * @param service the service
-     * @throws WiringException
+     * @throws WiringException if an exception connecting the service wires is encountered
      */
     private void handleService(Service service) throws WiringException {
         CompositeComponent parent = service.getParent();
-        InboundWire inboundWire = service.getInboundWire();
-        OutboundWire outboundWire = service.getOutboundWire();
-        // For a composite reference only, since its outbound wire comes from its parent composite,
-        // the corresponding target would not lie in its parent but rather in its parent's parent
-        SCAObject target;
-        if (service.isSystem()) {
-            target = parent.getSystemChild(outboundWire.getTargetName().getPartName());
-        } else {
-            target = parent.getChild(outboundWire.getTargetName().getPartName());
+        for (ServiceBinding binding : service.getServiceBindings()) {
+            InboundWire inboundWire = binding.getInboundWire();
+            OutboundWire outboundWire = binding.getOutboundWire();
+            // For a composite reference only, since its outbound wire comes from its parent composite,
+            // the corresponding target would not lie in its parent but rather in its parent's parent
+            SCAObject target;
+            if (service.isSystem()) {
+                target = parent.getSystemChild(outboundWire.getTargetName().getPartName());
+            } else {
+                target = parent.getChild(outboundWire.getTargetName().getPartName());
+            }
+            // connect the outbound service wire to the target
+            connect(binding, outboundWire, target);
+            // NB: this connect must be done after the outbound service chain is connected to its target above
+            connect(inboundWire, outboundWire, true);
         }
-        // connect the outbound service wire to the target
-        connect(service, outboundWire, target);
-        // NB: this connect must be done after the outbound service chain is connected to its target above
-        // if (!(service instanceof CompositeService)) {
-        //REVIEW JFM: do we need this to be special for composites?
-        connect(inboundWire, outboundWire, true);
-        // }
     }
 
     private void handleReference(Reference reference) throws WiringException {
@@ -400,7 +415,7 @@
             }
         }
         // connect inbound wires
-        for (InboundWire inboundWire : sourceComponent.getInboundWires().values()) {
+        for (InboundWire inboundWire : sourceComponent.getInboundWires()) {
             for (InboundInvocationChain chain : inboundWire.getInvocationChains().values()) {
                 Operation<?> operation = chain.getOperation();
                 String serviceName = inboundWire.getServiceName();
@@ -423,13 +438,12 @@
     }
 
     /**
-     * Connects an component's outbound wire to its target in a composite.  Valid targets are either component services
-     * or references.
+     * Connects an outbound wire to its target in a composite.  Valid targets are services and references.
      *
      * @param sourceWire the source wire to connect
      * @throws WiringException
      */
-    private void connect(SCAObject source, OutboundWire sourceWire, SCAObject target) throws WiringException {
+    protected void connect(SCAObject source, OutboundWire sourceWire, SCAObject target) throws WiringException {
         assert sourceWire.getTargetName() != null;
         QualifiedName targetName = sourceWire.getTargetName();
 
@@ -457,16 +471,27 @@
         } else if (target instanceof CompositeComponent) {
             CompositeComponent composite = (CompositeComponent) target;
             InboundWire targetWire = null;
+            // target is a composite service, connect to it
             if (source.isSystem()) {
                 for (Object child : composite.getSystemChildren()) {
-                    if (child instanceof CompositeService) {
-                        CompositeService compServ = (CompositeService) child;
-                        targetWire = compServ.getInboundWire();
-                        assert targetWire != null;
+                    if (child instanceof Service) {
+                        Service service = (Service) child;
+                        for (ServiceBinding binding : service.getServiceBindings()) {
+                            InboundWire candidate = binding.getInboundWire();
+                            if (sourceWire.getBindingType().equals(candidate.getBindingType())) {
+                                targetWire = candidate;
+                                break;
+                            }
+                        }
+                        if (targetWire == null) {
+                            throw new NoCompatibleBindingsException(source.getName(),
+                                targetName.getPartName(),
+                                targetName.getPortName());
+                        }
                         Class<?> sourceInterface = sourceWire.getServiceContract().getInterfaceClass();
                         Class<?> targetInterface = targetWire.getServiceContract().getInterfaceClass();
                         if (sourceInterface.isAssignableFrom(targetInterface)) {
-                            target = compServ;
+                            target = service;
                             break;
                         } else {
                             targetWire = null;
@@ -475,14 +500,24 @@
                 }
             } else {
                 for (Object child : composite.getChildren()) {
-                    if (child instanceof CompositeService) {
-                        CompositeService compServ = (CompositeService) child;
-                        targetWire = compServ.getInboundWire();
-                        assert targetWire != null;
+                    if (child instanceof Service) {
+                        Service service = (Service) child;
+                        for (ServiceBinding binding : service.getServiceBindings()) {
+                            InboundWire candidate = binding.getInboundWire();
+                            if (sourceWire.getBindingType().equals(candidate.getBindingType())) {
+                                targetWire = candidate;
+                                break;
+                            }
+                        }
+                        if (targetWire == null) {
+                            throw new NoCompatibleBindingsException(source.getName(),
+                                targetName.getPartName(),
+                                targetName.getPortName());
+                        }
                         Class<?> sourceInterface = sourceWire.getServiceContract().getInterfaceClass();
                         Class<?> targetInterface = targetWire.getServiceContract().getInterfaceClass();
                         if (sourceInterface.isAssignableFrom(targetInterface)) {
-                            target = compServ;
+                            target = service;
                             break;
                         } else {
                             targetWire = null;
@@ -520,7 +555,7 @@
         }
     }
 
-    private void autowire(OutboundWire outboundWire, CompositeComponent parent)
+    protected void autowire(OutboundWire outboundWire, CompositeComponent parent)
         throws WiringException {
         // JFM FIXME test
         InboundWire targetWire;
@@ -542,8 +577,9 @@
             }
         } catch (TargetResolutionException e) {
             String sourceReference = outboundWire.getReferenceName();
+            String sourceName = outboundWire.getContainer().getName();
             throw new WireConnectException("Error resolving autowire target",
-                outboundWire.getContainer().getName(),
+                sourceName,
                 sourceReference,
                 null,
                 null,
@@ -561,7 +597,7 @@
         connect(outboundWire, targetWire, optimizable);
     }
 
-    private void checkIfWireable(OutboundWire sourceWire, InboundWire targetWire)
+    protected void checkIfWireable(OutboundWire sourceWire, InboundWire targetWire)
         throws IncompatibleInterfacesException {
         if (wireService == null) {
             Class<?> sourceInterface = sourceWire.getServiceContract().getInterfaceClass();
@@ -580,7 +616,7 @@
         }
     }
 
-    private boolean isOptimizable(Scope pReferrer, Scope pReferee) {
+    protected boolean isOptimizable(Scope pReferrer, Scope pReferee) {
         if (pReferrer == Scope.UNDEFINED || pReferee == Scope.UNDEFINED) {
             return false;
         }

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java?view=auto&rev=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java Sat Dec 30 13:42:22 2006
@@ -0,0 +1,36 @@
+/*
+ * 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.builder;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class NoCompatibleBindingsException extends WiringException {
+    public NoCompatibleBindingsException(String sourceName,
+                                         String targetName,
+                                         String serviceName) {
+        super("No compatible bindings for source and target");
+        setSourceName(sourceName);
+        setTargetName(targetName);
+        setTargetServiceName(serviceName);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoCompatibleBindingsException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java Sat Dec 30 13:42:22 2006
@@ -25,7 +25,6 @@
 import org.osoa.sca.annotations.Constructor;
 
 import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.wire.WirePostProcessorExtension;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.databinding.Mediator;
@@ -36,10 +35,13 @@
 import org.apache.tuscany.spi.wire.Interceptor;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WirePostProcessorExtension;
 
 /**
- * This processor is responsible to add an interceptor to invocation chain if
- * the source and target operations have different databinding requirements
+ * This processor is responsible to add an interceptor to invocation chain if the source and target operations have
+ * different databinding requirements
+ *
+ * @version $Rev$ $Date$
  */
 public class DataBindingWirePostProcessor extends WirePostProcessorExtension {
     private Mediator mediator;

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBindlessBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBindlessBuilder.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBindlessBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBindlessBuilder.java Sat Dec 30 13:42:22 2006
@@ -25,9 +25,7 @@
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
-import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.model.BindlessServiceDefinition;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.wire.WireService;
 
@@ -35,6 +33,7 @@
  * The default implementation f a {@link BindlessBuilder} for a composite
  *
  * @version $Rev$ $Date$
+ * @deprecated
  */
 public class CompositeBindlessBuilder implements BindlessBuilder {
 
@@ -54,12 +53,6 @@
     @Init(eager = true)
     public void init() {
         builderRegistry.register(this);
-    }
-
-    public Service build(CompositeComponent parent,
-                         BindlessServiceDefinition definition,
-                         DeploymentContext deploymentContext) {
-        return new CompositeService(definition.getName(), parent);
     }
 
     public Reference build(CompositeComponent parent,

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Sat Dec 30 13:42:22 2006
@@ -26,10 +26,11 @@
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
 import org.apache.tuscany.spi.model.BindingDefinition;
-import org.apache.tuscany.spi.model.BindlessServiceDefinition;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
@@ -46,76 +47,61 @@
  */
 public class CompositeBuilder extends ComponentBuilderExtension<CompositeImplementation> {
 
+    @SuppressWarnings("unchecked")
     public Component build(CompositeComponent parent,
                            ComponentDefinition<CompositeImplementation> componentDefinition,
                            DeploymentContext deploymentContext) throws BuilderException {
         CompositeImplementation implementation = componentDefinition.getImplementation();
         CompositeComponentType<?, ?, ?> componentType = implementation.getComponentType();
+        String name = componentDefinition.getName();
+        CompositeComponentImpl component = new CompositeComponentImpl(name, parent, connector, null);
 
-        // create lists of all components, services and references in this composite
-        List<ComponentDefinition<? extends Implementation<?>>> allComponents =
-            new ArrayList<ComponentDefinition<? extends Implementation<?>>>();
-        allComponents.addAll(componentType.getComponents().values());
-
-        List<BoundServiceDefinition<? extends BindingDefinition>> allBoundServices =
-            new ArrayList<BoundServiceDefinition<? extends BindingDefinition>>();
-        List<BindlessServiceDefinition> allBindlessServices = new ArrayList<BindlessServiceDefinition>();
-        for (ServiceDefinition serviceDefinition : componentType.getServices().values()) {
-            if (serviceDefinition instanceof BoundServiceDefinition) {
-                BoundServiceDefinition<? extends BindingDefinition> boundService =
-                    (BoundServiceDefinition<? extends BindingDefinition>) serviceDefinition;
-                allBoundServices.add(boundService);
-            } else if (serviceDefinition instanceof BindlessServiceDefinition) {
-                allBindlessServices.add((BindlessServiceDefinition) serviceDefinition);
-            }
-        }
-
-        // FIXME is this right?
-        List<BoundReferenceDefinition<? extends BindingDefinition>> allBoundReferences =
+        List<BoundReferenceDefinition<? extends BindingDefinition>> boundReferences =
             new ArrayList<BoundReferenceDefinition<? extends BindingDefinition>>();
         List<ReferenceDefinition> allTargetlessReferences = new ArrayList<ReferenceDefinition>();
 
         for (Object referenceTarget : componentType.getReferences().values()) {
             if (referenceTarget instanceof BoundReferenceDefinition<?>) {
-                allBoundReferences.add((BoundReferenceDefinition<? extends BindingDefinition>) referenceTarget);
+                boundReferences.add((BoundReferenceDefinition<? extends BindingDefinition>) referenceTarget);
             } else if (referenceTarget instanceof ReferenceDefinition) {
                 allTargetlessReferences.add((ReferenceDefinition) referenceTarget);
             }
         }
 
-        String name = componentDefinition.getName();
-        CompositeComponentImpl component = new CompositeComponentImpl(name, parent, connector, null);
-        for (BoundReferenceDefinition<? extends BindingDefinition> referenceDefinition : allBoundReferences) {
+        for (ComponentDefinition<? extends Implementation<?>> definition : componentType.getComponents().values()) {
             try {
-                component.register(builderRegistry.build(component, referenceDefinition, deploymentContext));
+                Component child = builderRegistry.build(component, definition, deploymentContext);
+                component.register(child);
             } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering reference", e);
+                throw new BuilderInstantiationException("Error registering component", e);
             }
         }
-        for (BindlessServiceDefinition bindlessServiceDef : allBindlessServices) {
+        for (ServiceDefinition definition : componentType.getServices().values()) {
             try {
-                component.register(builderRegistry.build(component, bindlessServiceDef, deploymentContext));
+                if (definition instanceof BoundServiceDefinition) {
+                    BoundServiceDefinition bsd = (BoundServiceDefinition) definition;
+                    Service service = builderRegistry.build(component, bsd, deploymentContext);
+                    component.register(service);
+                } else {
+                    throw new UnsupportedOperationException();
+                }
             } catch (ComponentRegistrationException e) {
                 throw new BuilderInstantiationException("Error registering service", e);
             }
         }
-        for (ComponentDefinition<? extends Implementation<?>> child : allComponents) {
-            try {
-                component.register(builderRegistry.build(component, child, deploymentContext));
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering component", e);
-            }
-        }
-        for (BoundServiceDefinition<? extends BindingDefinition> serviceDefinition : allBoundServices) {
+        for (BoundReferenceDefinition<? extends BindingDefinition> definition : boundReferences) {
             try {
-                component.register(builderRegistry.build(component, serviceDefinition, deploymentContext));
+                SCAObject child = builderRegistry.build(component, definition, deploymentContext);
+                component.register(child);
             } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering service", e);
+                throw new BuilderInstantiationException("Error registering reference", e);
             }
         }
-        for (ReferenceDefinition targetlessReferenceDef : allTargetlessReferences) {
+        // TODO JFM remove need for targetless references
+        for (ReferenceDefinition definition : allTargetlessReferences) {
             try {
-                component.register(builderRegistry.build(component, targetlessReferenceDef, deploymentContext));
+                SCAObject child = builderRegistry.build(component, definition, deploymentContext);
+                component.register(child);
             } catch (ComponentRegistrationException e) {
                 throw new BuilderInstantiationException("Error registering reference", e);
             }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java Sat Dec 30 13:42:22 2006
@@ -40,7 +40,6 @@
 import org.apache.tuscany.spi.loader.InvalidWireException;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
-import org.apache.tuscany.spi.model.BindlessServiceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
@@ -51,7 +50,6 @@
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ReferenceTarget;
-import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.model.WireDefinition;
 import org.apache.tuscany.spi.services.artifact.Artifact;
@@ -90,7 +88,7 @@
         while (!done) {
             switch (reader.next()) {
                 case START_ELEMENT:
-                    ModelObject o = registry.load(parent, null, reader, deploymentContext);
+                    ModelObject o = registry.load(parent, composite, reader, deploymentContext);
                     if (o instanceof ServiceDefinition) {
                         composite.add((ServiceDefinition) o);
                     } else if (o instanceof ReferenceDefinition) {
@@ -122,7 +120,7 @@
                     } else if (o instanceof WireDefinition) {
                         composite.add((WireDefinition) o);
                     } else {
-                        // HACK: [rfeng] Add as an unknown model extension
+                        // add as an unknown model extension
                         if (o != null) {
                             composite.getExtensions().put(o.getClass(), o);
                         }
@@ -161,14 +159,6 @@
             if (serviceDefinition != null) {
                 if (serviceDefinition instanceof BoundServiceDefinition) {
                     ((BoundServiceDefinition) serviceDefinition).setTarget(wire.getTarget());
-                } else if (serviceDefinition instanceof BindlessServiceDefinition) {
-                    ((BindlessServiceDefinition) serviceDefinition).setTarget(wire.getTarget());
-                } else {
-                    ServiceContract<?> contract = serviceDefinition.getServiceContract();
-                    String name = serviceDefinition.getName();
-                    BindlessServiceDefinition bindlessSvcDefn =
-                        new BindlessServiceDefinition(name, contract, false, targetUri);
-                    composite.getDeclaredServices().put(sourceName.getPartName(), bindlessSvcDefn);
                 }
             } else {
                 componentDefinition = composite.getDeclaredComponents().get(sourceName.getPartName());
@@ -208,7 +198,7 @@
     protected void verifyCompositeCompleteness(
         CompositeComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> composite)
         throws InvalidServiceException {
-        // check if all of the composites services have been wired
+        // check if all of the composite services have been wired
         for (ServiceDefinition svcDefn : composite.getDeclaredServices().values()) {
             if (svcDefn instanceof BoundServiceDefinition && ((BoundServiceDefinition) svcDefn).getTarget() == null) {
                 throw new InvalidServiceException("Composite service not wired to a target", svcDefn.getName());

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java Sat Dec 30 13:42:22 2006
@@ -20,6 +20,7 @@
 
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.extension.ReferenceExtension;
+import org.apache.tuscany.core.binding.local.CompositeTargetInvoker;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.TargetInvoker;

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java?view=diff&rev=491325&r1=491324&r2=491325
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java Sat Dec 30 13:42:22 2006
@@ -27,14 +27,14 @@
 import org.apache.tuscany.spi.wire.MessageImpl;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.core.binding.local.AbstractCompositeTargetInvoker;
 
 /**
  * Dispatches a callback invocation to the callback instance
  *
  * @version $Rev$ $Date$
  */
-public class CompositeReferenceCallbackTargetInvoker extends AbstractCompositeReferenceTargetInvoker {
-
+public class CompositeReferenceCallbackTargetInvoker extends AbstractCompositeTargetInvoker {
     private Operation operation;
     private InboundWire inboundWire;
 



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org