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 2007/02/17 09:35:25 UTC

svn commit: r508732 [1/8] - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/binding/local/ kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/ kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/...

Author: jmarino
Date: Sat Feb 17 00:35:19 2007
New Revision: 508732

URL: http://svn.apache.org/viewvc?view=rev&rev=508732
Log:
wire refactoring to use a single wire type and removal of inbound/outbound specializations

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ComponentNotFoundException.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetComponentNotFoundException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidSourceTypeException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoBindingException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/SourceServiceNotFoundException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptor.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandler.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InvalidSourceTypeExceptionTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/WireToScopedJavaTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationHandlerTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/OutboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingInterceptorTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireImplTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/OutboundWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerProxyTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerProxyTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerSerializationTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInvocationHandler.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/ChainHolder.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundChainHolder.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInvocationHandlerTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/ChainHolderTestCase.java   (contents, props changed)
      - copied, changed from r507339, incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/OutboundChainHolderTestCase.java
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetComponentNotFoundException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WireConnectException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/AbstractInvocationChain.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/BridgingInterceptor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/InboundInvocationChainImpl.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/NonBlockingBridgingInterceptor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OutboundInvocationChainImpl.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/SynchronousBridgingInterceptor.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/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandler.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorPostProcessTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InboundtoOutboundConnectTestCase.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/NonBlockingForwardNonBlockingCallbackConnectionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/NonBlockingForwardSyncCallbackConnectionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/OutboundToInboundConnectTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/SynchronousForwardCallbackConnectionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/SystemWireConnectionTestCase.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/CompositeComponentImplBasicTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InboundInvocationErrorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/OutboundInvocationErrorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/OutboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/OutboundWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/SynchronousBridgingInterceptorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireServiceExtensionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerSerializationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerProxyTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInboundInvocationHandler.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/InboundInvocationChain.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/InboundWire.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundChainHolder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundInvocationChain.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/OutboundChainHolderTestCase.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
    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/builder/WirePostProcessorRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ServiceReferenceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.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/databinding/impl/PassByValueWirePostProcessor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ReferenceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemSingletonAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/CallbackWireObjectFactory.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/policy/PolicyBuilderRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/CallbackInterfaceInterceptor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OptimizedWireObjectFactory.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireObjectFactory.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/WireUtils.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/JDKWireService.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AtomicConnectorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.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/builder/ReferenceConnectorTestCase.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/builder/WirePostProcessorRegistryImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingInterceptorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorOptimizationTestCase.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/databinding/impl/PassByValueWirePostProcessorTestCase.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/PojoAtomicComponentTestCase.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/CompositeComponentImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ServiceImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderReferenceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderResourceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerBasicInvocationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerNonBlockingInvocationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/ResourceInjectionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentWireInvocationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/CallbackWireObjectFactoryTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/ResourceObjectFactoryTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/AbstractConversationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/ConversationIdleExpireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/ConversationMaxAgeExpireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/ConversationStartStopEndTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/scope/ScopeReferenceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/oneway/OneWayWireToJavaInvocationTestCase.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/mock/binding/MockServiceBinding.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/BasicReferenceInvocationHandlerTestCase.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/InvocationConfigurationErrorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationConfigurationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/OptimizedWireObjectFactoryTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireObjectFactoryTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireUtilsTestCase.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/JDKCallbackInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKProxyTestCase.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/component/ReferenceBinding.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/WorkContext.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/extension/ReferenceBindingExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceBindingExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/policy/SourcePolicyBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/policy/TargetPolicyBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/InvocationChain.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/Message.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/MessageImpl.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/WirePostProcessor.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/policy/SourcePolicyBuilderExtensionTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/policy/TargetPolicyBuilderExtensionTestCase.java
    incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java
    incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/implementation/webapp/WebappComponent.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java?view=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java Sat Feb 17 00:35:19 2007
@@ -21,9 +21,9 @@
 import java.lang.reflect.InvocationTargetException;
 
 import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.InvocationRuntimeException;
 import org.apache.tuscany.spi.wire.Message;
-import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
@@ -50,7 +50,7 @@
         throw new InvocationTargetException(new UnsupportedOperationException());
     }
 
-    protected Message invoke(OutboundInvocationChain chain, TargetInvoker invoker, Message msg) throws Throwable {
+    protected Message invoke(InvocationChain chain, TargetInvoker invoker, Message msg) throws Throwable {
         Interceptor headInterceptor = chain.getHeadInterceptor();
         if (headInterceptor == null) {
             try {

Modified: 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=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java Sat Feb 17 00:35:19 2007
@@ -43,7 +43,7 @@
                                 LocalBindingDefinition bindingDefinition,
                                 DeploymentContext deploymentContext)
         throws BuilderException {
-        return new LocalServiceBinding(serviceDefinition.getUri(), parent);
+        return new LocalServiceBinding(serviceDefinition.getUri());
     }
 
 
@@ -51,6 +51,6 @@
                                   ReferenceDefinition referenceDefinition,
                                   LocalBindingDefinition bindingDefinition,
                                   DeploymentContext deploymentContext) throws BuilderException {
-        return new LocalReferenceBinding(referenceDefinition.getUri());
+        return new LocalReferenceBinding(referenceDefinition.getUri(), bindingDefinition.getTargetUri());
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java?view=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java Sat Feb 17 00:35:19 2007
@@ -19,15 +19,14 @@
 package org.apache.tuscany.core.binding.local;
 
 import java.util.Map;
-import java.net.URI;
 
 import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.InvocationChain;
 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.TargetInvoker;
+import org.apache.tuscany.spi.wire.Wire;
 
 /**
  * Dispatches a callback invocation to the callback instance
@@ -36,12 +35,12 @@
  */
 public class LocalCallbackTargetInvoker extends AbstractLocalTargetInvoker {
     private Operation operation;
-    private InboundWire inboundWire;
+    private Wire wire;
 
-    public LocalCallbackTargetInvoker(Operation operation, InboundWire inboundWire) {
+    public LocalCallbackTargetInvoker(Operation operation, Wire wire) {
         assert operation != null : "Operation method cannot be null";
         this.operation = operation;
-        this.inboundWire = inboundWire;
+        this.wire = wire;
     }
 
     public Message invoke(Message msg) throws InvocationRuntimeException {
@@ -55,14 +54,9 @@
     }
 
     private Message invoke(Operation operation, Message msg) throws Throwable {
-        URI targetAddress = msg.popFromAddress();
-        if (targetAddress == null) {
-            throw new AssertionError("Popped a null from address from message");
-        }
         //TODO optimize as this is slow in local invocations
-        Map<Operation<?>, OutboundInvocationChain> sourceCallbackInvocationChains =
-            inboundWire.getSourceCallbackInvocationChains(targetAddress);
-        OutboundInvocationChain chain = sourceCallbackInvocationChains.get(operation);
+        Map<Operation<?>, InvocationChain> chains = wire.getCallbackInvocationChains();
+        InvocationChain chain = chains.get(operation);
         TargetInvoker invoker = chain.getTargetInvoker();
         return invoke(chain, invoker, msg);
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java?view=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java Sat Feb 17 00:35:19 2007
@@ -25,7 +25,6 @@
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.extension.ReferenceBindingExtension;
 import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.Wire;
 
@@ -36,26 +35,21 @@
  */
 public class LocalReferenceBinding extends ReferenceBindingExtension {
 
-    public LocalReferenceBinding(URI name) throws CoreRuntimeException {
-        super(name);
+    public LocalReferenceBinding(URI name, URI targetUri) throws CoreRuntimeException {
+        super(name, targetUri);
     }
 
     public QName getBindingType() {
         return Wire.LOCAL_BINDING;
     }
 
-    public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation)
+    public TargetInvoker createTargetInvoker(String name, Operation operation)
         throws TargetInvokerCreationException {
         if (operation.isCallback()) {
-            return new LocalCallbackTargetInvoker(operation, inboundWire);
+            return new LocalCallbackTargetInvoker(operation, wire);
         } else {
-            return new LocalTargetInvoker(operation, outboundWire);
+            return new LocalTargetInvoker(operation, wire);
         }
-    }
-
-    public TargetInvoker createCallbackTargetInvoker(ServiceContract contract, Operation operation)
-        throws TargetInvokerCreationException {
-        return new LocalCallbackTargetInvoker(operation, inboundWire);
     }
 
 }

Modified: 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=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java Sat Feb 17 00:35:19 2007
@@ -22,11 +22,9 @@
 import javax.xml.namespace.QName;
 
 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;
 import org.apache.tuscany.spi.wire.Wire;
 
@@ -37,20 +35,20 @@
  */
 public class LocalServiceBinding extends ServiceBindingExtension {
 
-    public LocalServiceBinding(URI name, CompositeComponent parent) throws CoreRuntimeException {
-        super(name, parent);
+    public LocalServiceBinding(URI name) throws CoreRuntimeException {
+        super(name);
     }
 
     public QName getBindingType() {
         return Wire.LOCAL_BINDING;
     }
 
-    public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation)
+    public TargetInvoker createTargetInvoker(String name, Operation operation)
         throws TargetInvokerCreationException {
         if (operation.isCallback()) {
-            return new LocalCallbackTargetInvoker(operation, getInboundWire());
+            return new LocalCallbackTargetInvoker(operation, getWire());
         } else {
-            return new LocalTargetInvoker(operation, outboundWire);
+            return new LocalTargetInvoker(operation, getWire());
         }
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java?view=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java Sat Feb 17 00:35:19 2007
@@ -22,12 +22,12 @@
 
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.util.UriHelper;
+import org.apache.tuscany.spi.wire.InvocationChain;
 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;
+import org.apache.tuscany.spi.wire.Wire;
 
 /**
  * Dispatches an invocation through a composite service or reference using the local binding
@@ -35,18 +35,18 @@
  * @version $Rev$ $Date$
  */
 public class LocalTargetInvoker extends AbstractLocalTargetInvoker {
-    private OutboundInvocationChain chain;
+    private InvocationChain chain;
     private URI fromAddress;
     private boolean contractHasCallback;
 
-    public LocalTargetInvoker(Operation operation, OutboundWire outboundWire) {
+    public LocalTargetInvoker(Operation operation, Wire wire) {
         assert operation != null;
-        chain = outboundWire.getOutboundInvocationChains().get(operation);
+        chain = wire.getInvocationChains().get(operation);
         assert chain != null;
-        if (outboundWire.getSourceUri() != null) {
-            fromAddress = URI.create(UriHelper.getBaseName(outboundWire.getSourceUri()));
+        if (wire.getSourceUri() != null) {
+            fromAddress = URI.create(UriHelper.getBaseName(wire.getSourceUri()));
         }
-        contractHasCallback = outboundWire.getServiceContract().getCallbackClass() != null;
+        contractHasCallback = !wire.getCallbackInvocationChains().isEmpty();
     }
 
     @Override
@@ -60,7 +60,8 @@
             assert invoker != null;
             // Pushing the from address only needs to happen in the outbound (forward) direction for callbacks
             if (contractHasCallback) {
-                msg.pushFromAddress(fromAddress);
+                //JFM do we need this?
+                msg.pushCallbackUri(fromAddress);
             }
 
             return invoke(chain, invoker, msg);

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?view=diff&rev=508732&r1=508731&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Sat Feb 17 00:35:19 2007
@@ -78,7 +78,6 @@
 import org.apache.tuscany.core.loader.ServiceLoader;
 import org.apache.tuscany.core.property.PropertyObjectFactoryImpl;
 import org.apache.tuscany.core.resolver.AutowireResolver;
-import org.apache.tuscany.core.wire.jdk.JDKWireService;
 import org.apache.tuscany.host.MonitorFactory;
 
 /**
@@ -153,7 +152,7 @@
         JavaInterfaceProcessorRegistry interfaceIntrospector = new JavaInterfaceProcessorRegistryImpl();
         Introspector introspector = createIntrospector(interfaceIntrospector);
         LoaderRegistry loader = createLoader(new PropertyObjectFactoryImpl(), introspector);
-        DeployerImpl deployer = new DeployerImpl(xmlFactory, loader, builder, resolver, componentManager, connector);
+        DeployerImpl deployer = new DeployerImpl(xmlFactory, loader, builder, resolver, connector);
         deployer.setMonitor(getMonitorFactory().getMonitor(ScopeContainerMonitor.class));
         return deployer;
     }
@@ -264,7 +263,7 @@
      */
     private Builder createBuilder(ScopeRegistry scopeRegistry) {
         BuilderRegistryImpl builderRegistry =
-            new BuilderRegistryImpl(scopeRegistry, new JDKWireService(), componentManager);
+            new BuilderRegistryImpl(scopeRegistry, componentManager);
         SystemCompositeBuilder builder = new SystemCompositeBuilder(builderRegistry);
         builderRegistry.register(SystemCompositeImplementation.class, builder);
         builderRegistry.register(SystemImplementation.class, new SystemComponentBuilder());

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=508732&r1=508731&r2=508732
==============================================================================
--- 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 Feb 17 00:35:19 2007
@@ -30,9 +30,7 @@
 import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 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.builder.ScopeNotFoundException;
-import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
@@ -52,7 +50,6 @@
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
 import org.apache.tuscany.core.component.ComponentManager;
@@ -66,7 +63,6 @@
  */
 @EagerInit
 public class BuilderRegistryImpl implements BuilderRegistry {
-    private WireService wireService;
     private ScopeRegistry scopeRegistry;
     private ComponentManager componentManager;
 
@@ -76,11 +72,8 @@
     private final Map<Class<? extends BindingDefinition>, BindingBuilder<? extends BindingDefinition>> bindingBuilders =
         new HashMap<Class<? extends BindingDefinition>, BindingBuilder<? extends BindingDefinition>>();
 
-    public BuilderRegistryImpl(@Autowire ScopeRegistry scopeRegistry,
-                               @Autowire WireService wireService,
-                               @Autowire ComponentManager componentManager) {
+    public BuilderRegistryImpl(@Autowire ScopeRegistry scopeRegistry, @Autowire ComponentManager componentManager) {
         this.scopeRegistry = scopeRegistry;
-        this.wireService = wireService;
         this.componentManager = componentManager;
     }
 
@@ -146,9 +139,9 @@
             ComponentType<?, ?, ?> componentType = componentDefinition.getImplementation().getComponentType();
             assert componentType != null : "Component type must be set";
             // create wires for the component
-            if (wireService != null && component instanceof AtomicComponent) {
-                wireService.createWires((AtomicComponent) component, componentDefinition);
-            }
+//            if (wireService != null && component instanceof AtomicComponent) {
+//                wireService.createWires((AtomicComponent) component, componentDefinition);
+//            }
             componentManager.register(component);
             return component;
         } catch (BuilderException e) {
@@ -186,14 +179,14 @@
             }
             ServiceBinding binding =
                 bindingBuilder.build(parent, serviceDefinition, definition, deploymentContext);
-            if (wireService != null) {
-                if (targetUri == null) {
-                    throw new MissingWireTargetException("Service target uri not specified");
-                }
-                //String path = uri.getPath();
-                ServiceContract<?> contract = serviceDefinition.getServiceContract();
-                wireService.createWires(binding, contract, targetUri.toString());
-            }
+//            if (wireService != null) {
+//                if (targetUri == null) {
+//                    throw new MissingWireTargetException("Service target uri not specified");
+//                }
+//                //String path = uri.getPath();
+//                ServiceContract<?> contract = serviceDefinition.getServiceContract();
+//                wireService.createWires(binding, contract, targetUri.toString());
+//            }
             service.addServiceBinding(binding);
         }
         return service;
@@ -221,12 +214,12 @@
             BindingBuilder bindingBuilder = bindingBuilders.get(bindingClass);
             ReferenceBinding binding = bindingBuilder.build(parent, referenceDefinition, bindingDefinition, context);
             // create wires for the component
-            if (wireService != null) {
-                URI targetUri = bindingDefinition.getTargetUri();
-                // it is possible for a binding to not have a URI
-                wireService.createWires(binding, contract, targetUri);
-
-            }
+//            if (wireService != null) {
+//                URI targetUri = bindingDefinition.getTargetUri();
+//                // it is possible for a binding to not have a URI
+//                wireService.createWires(binding, contract, targetUri);
+//
+//            }
             reference.addReferenceBinding(binding);
 
         }

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ComponentNotFoundException.java (from r507339, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetComponentNotFoundException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ComponentNotFoundException.java?view=diff&rev=508732&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetComponentNotFoundException.java&r1=507339&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ComponentNotFoundException.java&r2=508732
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetComponentNotFoundException.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ComponentNotFoundException.java Sat Feb 17 00:35:19 2007
@@ -5,14 +5,14 @@
 import org.apache.tuscany.spi.builder.WiringException;
 
 /**
- * Indicates the target component of a reference was not found
+ * Indicates a component was not found during wiring
  *
  * @version $Rev$ $Date$
  */
-public class TargetComponentNotFoundException extends WiringException {
+public class ComponentNotFoundException extends WiringException {
 
-    public TargetComponentNotFoundException(String message, URI sourceName, URI targetName) {
-        super(message, sourceName, targetName);
+    public ComponentNotFoundException(String message, URI name) {
+        super(message, name, name);
     }
 
 }

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

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

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=508732&r1=508731&r2=508732
==============================================================================
--- 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 Feb 17 00:35:19 2007
@@ -19,41 +19,49 @@
 package org.apache.tuscany.core.builder;
 
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import javax.xml.namespace.QName;
 
 import org.osoa.sca.annotations.Constructor;
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.builder.MissingWireTargetException;
 import org.apache.tuscany.spi.builder.WiringException;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Invocable;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.ReferenceBinding;
-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.WorkContext;
+import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.model.physical.WireDefinition;
 import org.apache.tuscany.spi.services.work.WorkScheduler;
 import org.apache.tuscany.spi.util.UriHelper;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.IncompatibleServiceContractException;
-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.TargetInvoker;
+import org.apache.tuscany.spi.wire.InvocationChain;
+import org.apache.tuscany.spi.wire.Wire;
 import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
-import org.apache.tuscany.spi.wire.WireService;
 
+import org.apache.tuscany.core.binding.local.LocalServiceBinding;
 import org.apache.tuscany.core.component.ComponentManager;
-import org.apache.tuscany.core.wire.NonBlockingBridgingInterceptor;
-import org.apache.tuscany.core.wire.SynchronousBridgingInterceptor;
+import org.apache.tuscany.core.wire.InvocationChainImpl;
+import org.apache.tuscany.core.wire.InvokerInterceptor;
+import org.apache.tuscany.core.wire.NonBlockingInterceptor;
+import org.apache.tuscany.core.wire.WireImpl;
 import org.apache.tuscany.core.wire.WireUtils;
 
 /**
@@ -62,7 +70,6 @@
  * @version $$Rev$$ $$Date$$
  */
 public class ConnectorImpl implements Connector {
-    private WireService wireService;
     private WirePostProcessorRegistry postProcessorRegistry;
     private ComponentManager componentManager;
     private WorkContext workContext;
@@ -73,290 +80,324 @@
     }
 
     @Constructor
-    public ConnectorImpl(@Autowire WireService wireService,
-                         @Autowire WirePostProcessorRegistry processorRegistry,
-                         @Autowire ComponentManager componentManager,
-                         @Autowire WorkScheduler scheduler,
-                         @Autowire WorkContext workContext) {
-        this.wireService = wireService;
+    public ConnectorImpl(
+        @Autowire WirePostProcessorRegistry processorRegistry,
+        @Autowire ComponentManager componentManager,
+        @Autowire WorkScheduler scheduler,
+        @Autowire WorkContext workContext) {
         this.postProcessorRegistry = processorRegistry;
         this.componentManager = componentManager;
         this.scheduler = scheduler;
         this.workContext = workContext;
     }
 
-    public void connect(SCAObject source) throws WiringException {
-        if (source instanceof Component) {
-            handleComponent((Component) source);
-        } else if (source instanceof Reference) {
-            handleReference((Reference) source);
-        } else if (source instanceof Service) {
-            handleService((Service) source);
-        } else {
-            throw new AssertionError("Invalid source type");
-        }
-    }
 
-    public void connect(SCAObject source,
-                        InboundWire sourceWire,
-                        SCAObject target,
-                        OutboundWire targetWire,
-                        boolean optimizable)
-        throws WiringException {
-        Map<Operation<?>, OutboundInvocationChain> targetChains = targetWire.getOutboundInvocationChains();
-        for (InboundInvocationChain inboundChain : sourceWire.getInboundInvocationChains().values()) {
-            // match invocation chains
-            OutboundInvocationChain outboundChain = targetChains.get(inboundChain.getOperation());
-            if (outboundChain == null) {
-                throw new IncompatibleInterfacesException(sourceWire.getSourceUri(), targetWire.getTargetUri());
-            }
-            connect(inboundChain, outboundChain);
-        }
-        if (postProcessorRegistry != null) {
-            // run wire post-processors
-            postProcessorRegistry.process(source, sourceWire, target, targetWire);
-        }
-        if (optimizable && WireUtils.isOptimizable(source, sourceWire) && WireUtils.isOptimizable(targetWire)) {
-            sourceWire.setOptimizable(true);
-            sourceWire.setTargetWire(targetWire);
-        }
+    public void connect(WireDefinition definition) throws WiringException {
+        throw new UnsupportedOperationException();
     }
 
-    /**
-     * Connects the source outbound wire to a corresponding target inbound wire
-     *
-     * @param sourceWire  the source wire to connect
-     * @param targetWire  the target wire to connect to
-     * @param optimizable true if the wire connection can be optimized
-     * @throws WiringException
-     * @deprecated
-     */
-    public void connect(SCAObject source,
-                        OutboundWire sourceWire,
-                        SCAObject target,
-                        InboundWire targetWire,
-                        boolean optimizable)
-        throws WiringException {
-        assert source != null;
-        assert target != null;
-        assert sourceWire.getTargetUri() != null;
-        Map<Operation<?>, InboundInvocationChain> targetChains = targetWire.getInboundInvocationChains();
-        String portName = sourceWire.getTargetUri().getFragment();
-        // match outbound to inbound chains
-        for (OutboundInvocationChain outboundChain : sourceWire.getOutboundInvocationChains().values()) {
-            Operation<?> operation = outboundChain.getOperation();
-            InboundInvocationChain inboundChain = targetChains.get(operation);
-            if (inboundChain == null) {
-                throw new IncompatibleInterfacesException(sourceWire.getSourceUri(), targetWire.getSourceUri());
-            }
-            Operation<?> inboundOperation = inboundChain.getOperation();
-            boolean isOneWayOperation = operation.isNonBlocking();
-            TargetInvoker invoker;
-            if (target instanceof Component) {
-                Component component = (Component) target;
-                try {
-                    invoker = component.createTargetInvoker(portName, inboundOperation, targetWire);
-                } catch (TargetInvokerCreationException e) {
-                    URI sourceUri = sourceWire.getSourceUri();
-                    URI targetUri = targetWire.getSourceUri();
-                    throw new WireConnectException("Error connecting source and target", sourceUri, targetUri, e);
-                }
-            } else if (target instanceof ReferenceBinding) {
-                ReferenceBinding referenceBinding = (ReferenceBinding) target;
-                try {
-                    invoker = referenceBinding.createTargetInvoker(targetWire.getServiceContract(), inboundOperation);
-                } catch (TargetInvokerCreationException e) {
-                    URI targetName = targetWire.getSourceUri();
-                    throw new WireConnectException("Error processing inbound wire",
-                        sourceWire.getSourceUri(),
-                        targetName,
-                        e);
+    public void connect(ComponentDefinition<? extends Implementation<?>> definition) throws WiringException {
+        URI sourceUri = definition.getUri();
+        Component source = componentManager.getComponent(sourceUri);
+        if (source == null) {
+            throw new ComponentNotFoundException("Source not found", sourceUri);
+        }
+        ComponentType<?, ?, ?> type = definition.getImplementation().getComponentType();
+        if (type instanceof CompositeComponentType) {
+            CompositeComponentType<?, ?, ?> compositeType = (CompositeComponentType<?, ?, ?>) type;
+            for (ComponentDefinition<? extends Implementation<?>> child : compositeType.getComponents().values()) {
+                connect(child);
+            }
+            for (ServiceDefinition child : compositeType.getServices().values()) {
+                connect(child);
+            }
+            for (ReferenceDefinition child : compositeType.getReferences().values()) {
+                connect(child);
+            }
+        }
+        Map<String, ReferenceTarget> targets = definition.getReferenceTargets();
+        for (ReferenceTarget referenceTarget : targets.values()) {
+            List<Wire> wires = new ArrayList<Wire>();
+            String refName = referenceTarget.getReferenceName().getFragment();
+            ReferenceDefinition refDefinition = type.getReferences().get(refName);
+            assert refDefinition != null;
+            List<URI> uris = referenceTarget.getTargets();
+            for (URI uri : uris) {
+                URI targetUri = UriHelper.getDefragmentedName(uri);
+                Component target = componentManager.getComponent(targetUri);
+                if (target == null && !refDefinition.isRequired()) {
+                    // a non-required reference, just skip
+                    continue;
+                }
+                if (target == null) {
+                    throw new ComponentNotFoundException("Target not found", targetUri);
+                }
+                String fragment = uri.getFragment();
+                URI sourceURI = refDefinition.getUri();
+                Wire wire = createWire(sourceURI, uri, refDefinition.getServiceContract(), Wire.LOCAL_BINDING);
+                if (fragment == null) {
+                    try {
+                        // add target invokers
+                        attachInvokers(wire, source, target);
+                    } catch (TargetInvokerCreationException e) {
+                        throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                    }
+                } else {
+                    if (target instanceof CompositeComponent) {
+                        CompositeComponent composite = (CompositeComponent) target;
+                        Service service = composite.getService(fragment);
+                        if (service != null) {
+                            if (service.getServiceBindings().isEmpty()) {
+                                // for now, throw an assertion exception.
+                                // We will need to choose bindings during allocation
+                                throw new AssertionError();
+                            }
+                            ServiceBinding binding = service.getServiceBindings().get(0);
+                            try {
+                                // add target invokers
+                                attachInvokers(wire, source, binding);
+                            } catch (TargetInvokerCreationException e) {
+                                throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                            }
+                        }
+                        Reference reference = composite.getReference(fragment);
+                        if (reference != null) {
+                            ReferenceBinding binding = reference.getReferenceBindings().get(0);
+                            try {
+                                // add target invokers
+                                attachInvokers(wire, source, binding);
+                            } catch (TargetInvokerCreationException e) {
+                                throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                            }
+                        } else if (refDefinition.isRequired()) {
+                            throw new ComponentNotFoundException("Target not found", targetUri);
+                        } else if (wire == null) {
+                            continue;
+                        }
+                    } else {
+                        // atomic component
+                        try {
+                            // add target invokers
+                            attachInvokers(wire, source, target);
+                        } catch (TargetInvokerCreationException e) {
+                            throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                        }
+                    }
                 }
-            } else if (target instanceof ServiceBinding) {
-                ServiceBinding binding = (ServiceBinding) target;
-                try {
-                    invoker = binding.createTargetInvoker(targetWire.getServiceContract(), inboundChain.getOperation());
-                } catch (TargetInvokerCreationException e) {
-                    URI targetName = targetWire.getSourceUri();
-                    throw new WireConnectException("Error processing inbound wire",
-                        sourceWire.getSourceUri(),
-                        targetName,
-                        e);
+                if (postProcessorRegistry != null) {
+                    postProcessorRegistry.process(wire);
                 }
-            } else {
-                throw new AssertionError();
+                optimize(source, target, wire);
+                wires.add(wire);
+                if (!wire.getCallbackInvocationChains().isEmpty()) {
+                    target.attachCallbackWire(wire);
+                }
+            }
+            if (wires.size() > 1) {
+                // attach as a multiplicity
+                source.attachWires(wires);
+            } else if (wires.size() == 1) {
+                // attach as a single wire
+                Wire wire = wires.get(0);
+                source.attachWire(wire);
             }
+        }
+    }
 
-            if (source instanceof ServiceBinding) {
-                // services are a special case: invoker must go on the inbound and outbound chains
-                if (target instanceof Component && isOneWayOperation) {
-                    // if the target is a component and the operation is non-blocking
-                    connect(outboundChain, inboundChain, invoker, true);
+    protected void connect(ServiceDefinition definition) throws WiringException {
+        URI uri = definition.getUri();
+        URI sourceUri = UriHelper.getDefragmentedName(uri);
+        URI targetUri = UriHelper.getDefragmentedName(definition.getTarget());
+        Component source = componentManager.getComponent(sourceUri);
+        if (source == null) {
+            throw new ComponentNotFoundException("Source not found", sourceUri);
+        }
+        if (!(source instanceof CompositeComponent)) {
+            // this should not happen
+            throw new InvalidSourceTypeException("Illegal source type", uri, targetUri);
+        }
+        CompositeComponent sourceComposite = (CompositeComponent) source;
+        Service service = sourceComposite.getService(uri.getFragment());
+        if (service == null) {
+            throw new SourceServiceNotFoundException("Service not found on composite", uri);
+        }
+        Component target = componentManager.getComponent(targetUri);
+        if (target == null) {
+            throw new ComponentNotFoundException("Target not found", sourceUri);
+        }
+        ServiceContract<?> contract = definition.getServiceContract();
+        if (target instanceof CompositeComponent) {
+            String fragment = definition.getTarget().getFragment();
+            CompositeComponent targetComposite = (CompositeComponent) target;
+            Invocable invocable;
+            Reference targetReference = targetComposite.getReference(fragment);
+            if (targetReference == null) {
+                Service targetService = targetComposite.getService(fragment);
+                if (targetService == null) {
+                    throw new TargetServiceNotFoundException("Service not found", sourceUri, definition.getTarget());
+                }
+                // TODO select binding in allocator
+                if (targetService.getServiceBindings().isEmpty()) {
+                    invocable = new LocalServiceBinding(service.getUri());
                 } else {
-                    connect(outboundChain, inboundChain, invoker, false);
+                    invocable = targetService.getServiceBindings().get(0);
                 }
-                ServiceBinding binding = (ServiceBinding) source;
-                InboundInvocationChain chain = binding.getInboundWire().getInboundInvocationChains().get(operation);
-                chain.setTargetInvoker(invoker);
             } else {
-                if (target instanceof Component && isOneWayOperation) {
-                    // if the target is a component and the operation is non-blocking
-                    connect(outboundChain, inboundChain, invoker, true);
+                if (targetReference.getReferenceBindings().isEmpty()) {
+                    throw new NoBindingException("No binding specified for wire", sourceUri, targetUri);
                 } else {
-                    connect(outboundChain, inboundChain, invoker, false);
+                    invocable = targetReference.getReferenceBindings().get(0);
                 }
             }
-        }
-
-        // create source callback chains and connect them if target callback chains exist
-        //String sourceName = UriHelper.getBaseName(source.getUri());
-        Map<Operation<?>, OutboundInvocationChain> sourceCallbackChains =
-            targetWire.getSourceCallbackInvocationChains(source.getUri());
-        for (InboundInvocationChain inboundChain : sourceWire.getTargetCallbackInvocationChains().values()) {
-            Operation<?> operation = inboundChain.getOperation();
-            if (sourceCallbackChains != null && sourceCallbackChains.get(operation) != null) {
-                String opName = operation.getName();
-                throw new IllegalCallbackException("Source callback chain should not exist for operation",
-                    opName,
-                    sourceWire.getSourceUri(),
-                    targetWire.getSourceUri());
-            }
-
-            ServiceContract<?> targetContract = targetWire.getServiceContract();
-            assert targetContract != null;
-            String opName = operation.getName();
-            assert opName != null;
-            Operation targetOp = targetContract.getCallbackOperations().get(opName);
-            OutboundInvocationChain outboundChain = wireService.createOutboundChain(targetOp);
-            targetWire.addSourceCallbackInvocationChain(source.getUri(), targetOp, outboundChain);
-            if (source instanceof Component) {
-                Component component = (Component) source;
-                TargetInvoker invoker;
-                try {
-                    invoker = component.createTargetInvoker(targetOp.getName(), operation, null);
-                } catch (TargetInvokerCreationException e) {
-                    URI sourceUri = sourceWire.getSourceUri();
-                    URI targetUri = targetWire.getSourceUri();
-                    throw new WireConnectException("Error connecting source and target", sourceUri, targetUri, e);
-                }
-                boolean isOneWayOperation = targetOp.isNonBlocking();
-                if (target instanceof Component && isOneWayOperation) {
-                    // if the target is a component and the operation is non-blocking
-                    connect(outboundChain, inboundChain, invoker, true);
-                } else {
-                    connect(outboundChain, inboundChain, invoker, false);
+            for (ServiceBinding binding : service.getServiceBindings()) {
+                Wire wire = createWire(uri, targetUri, contract, binding.getBindingType());
+                binding.setWire(wire);
+                if (postProcessorRegistry != null) {
+                    postProcessorRegistry.process(wire);
                 }
-            } else if (source instanceof ReferenceBinding) {
-                ReferenceBinding binding = (ReferenceBinding) source;
-                ServiceContract sourceContract = sourceWire.getServiceContract();
-                TargetInvoker invoker;
                 try {
-                    invoker = binding.createTargetInvoker(sourceContract, operation);
+                    attachInvokers(wire, binding, invocable);
                 } catch (TargetInvokerCreationException e) {
-                    URI sourceUri = sourceWire.getSourceUri();
-                    URI targetUri = targetWire.getSourceUri();
-                    throw new WireConnectException("Error connecting source and target", sourceUri, targetUri, e);
-                }
-                connect(outboundChain, inboundChain, invoker, false);
-            } else if (source instanceof ServiceBinding) {
-                ServiceBinding binding = (ServiceBinding) source;
-                ServiceContract sourceContract = sourceWire.getServiceContract();
-                TargetInvoker invoker;
+                    throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                }
+            }
+
+        } else {
+            // TODO if no binding, do local
+            for (ServiceBinding binding : service.getServiceBindings()) {
+                Wire wire = createWire(uri, targetUri, contract, binding.getBindingType());
+                binding.setWire(wire);
+                if (postProcessorRegistry != null) {
+                    postProcessorRegistry.process(wire);
+                }
                 try {
-                    invoker = binding.createTargetInvoker(sourceContract, operation);
+                    attachInvokers(wire, binding, target);
                 } catch (TargetInvokerCreationException e) {
-                    URI targetName = sourceWire.getSourceUri();
-                    throw new WireConnectException("Error processing callback wire",
-                        sourceWire.getSourceUri(),
-                        targetName,
-                        e);
+                    throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
                 }
-                connect(outboundChain, inboundChain, invoker, false);
-            } else {
-                throw new AssertionError();
             }
         }
-        if (postProcessorRegistry != null) {
-            // run wire post-processors
-            postProcessorRegistry.process(source, sourceWire, target, targetWire);
+    }
+
+    protected void connect(ReferenceDefinition definition) throws WiringException {
+        URI uri = definition.getUri();
+        URI sourceUri = UriHelper.getDefragmentedName(uri);
+        Component source = componentManager.getComponent(sourceUri);
+        if (source == null) {
+            throw new ComponentNotFoundException("Source not found", sourceUri);
+        }
+        if (!(source instanceof CompositeComponent)) {
+            throw new AssertionError("Illegal source type");
+        }
+        CompositeComponent sourceComposite = (CompositeComponent) source;
+        Reference reference = sourceComposite.getReference(uri.getFragment());
+        if (reference == null) {
+            throw new SourceServiceNotFoundException("Reference not found on composite", uri);
         }
-        // perform optimization, if possible
-        if (optimizable && WireUtils.isOptimizable(sourceWire) && WireUtils.isOptimizable(target, targetWire)) {
-            sourceWire.setOptimizable(true);
-            sourceWire.setTargetWire(targetWire);
+
+        for (ReferenceBinding binding : reference.getReferenceBindings()) {
+            // create wire
+            if (Wire.LOCAL_BINDING.equals(binding.getBindingType())) {
+                URI targetUri = binding.getTargetUri();
+                ServiceContract<?> contract = binding.getBindingServiceContract();
+                QName type = binding.getBindingType();
+                Wire wire = createWire(sourceUri, targetUri, contract, type);
+                binding.setWire(wire);
+                // wire local bindings to their targets
+                Component target = componentManager.getComponent(UriHelper.getDefragmentedName(targetUri));
+                if (target == null) {
+                    throw new ComponentNotFoundException("Target not found", sourceUri);
+                }
+                if (target instanceof CompositeComponent) {
+                    String fragment = targetUri.getFragment();
+                    CompositeComponent targetComposite = (CompositeComponent) target;
+                    Invocable invocable;
+                    Reference targetReference = targetComposite.getReference(fragment);
+                    if (targetReference == null) {
+                        Service targetService = targetComposite.getService(fragment);
+                        if (targetService == null) {
+                            throw new TargetServiceNotFoundException("Service not found", sourceUri, targetUri);
+                        }
+                        // TODO select binding in allocator
+                        if (targetService.getServiceBindings().isEmpty()) {
+                            throw new NoBindingException("No binding specified for wire", sourceUri, targetUri);
+                        } else {
+                            invocable = targetService.getServiceBindings().get(0);
+                        }
+                    } else {
+                        if (targetReference.getReferenceBindings().isEmpty()) {
+                            throw new NoBindingException("No binding specified for wire", sourceUri, targetUri);
+                        } else {
+                            invocable = targetReference.getReferenceBindings().get(0);
+                        }
+                    }
+                    try {
+                        attachInvokers(wire, binding, invocable);
+                    } catch (TargetInvokerCreationException e) {
+                        throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                    }
+                } else {
+                    try {
+                        attachInvokers(wire, binding, target);
+                    } catch (TargetInvokerCreationException e) {
+                        throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
+                    }
+                }
+            } else {
+                Wire wire = createWire(sourceUri, null, binding.getBindingServiceContract(), binding.getBindingType());
+                if (postProcessorRegistry != null) {
+                    postProcessorRegistry.process(wire);
+                }
+                binding.setWire(wire);
+            }
         }
     }
 
-    /**
-     * Connects a source to target chain
-     *
-     * @param sourceChain the source chain
-     * @param targetChain the target chain
-     * @param invoker     the invoker to place on the source chain for dispatching invocations
-     * @param nonBlocking true if the operation is non-blocking
-     */
-    protected void connect(OutboundInvocationChain sourceChain,
-                           InboundInvocationChain targetChain,
-                           TargetInvoker invoker,
-                           boolean nonBlocking) throws WireConnectException {
-        Interceptor head = targetChain.getHeadInterceptor();
-        if (head == null) {
-            throw new WireConnectException("Inbound chain must contain at least one interceptor");
+    protected Wire createWire(URI sourceURI, URI targetUri, ServiceContract<?> contract, QName bindingType) {
+        Wire wire = new WireImpl(bindingType);
+        wire.setSourceContract(contract);
+        wire.setSourceUri(sourceURI);
+        wire.setTargetUri(targetUri);
+        for (Operation<?> operation : contract.getOperations().values()) {
+            InvocationChain chain = new InvocationChainImpl(operation);
+            if (operation.isNonBlocking()) {
+                chain.addInterceptor(new NonBlockingInterceptor(scheduler, workContext));
+            }
+            chain.addInterceptor(new InvokerInterceptor());
+            wire.addInvocationChain(operation, chain);
+
         }
-        if (nonBlocking) {
-            sourceChain.setTargetInterceptor(new NonBlockingBridgingInterceptor(scheduler, workContext, head));
-        } else {
-            sourceChain.setTargetInterceptor(new SynchronousBridgingInterceptor(head));
+        wire.setCallbackReferenceName(contract.getCallbackName());
+        for (Operation<?> operation : contract.getCallbackOperations().values()) {
+            InvocationChain chain = new InvocationChainImpl(operation);
+            if (operation.isNonBlocking()) {
+                chain.addInterceptor(new NonBlockingInterceptor(scheduler, workContext));
+            }
+            chain.addInterceptor(new InvokerInterceptor());
+            wire.addCallbackInvocationChain(operation, chain);
         }
-        sourceChain.prepare();
-        sourceChain.setTargetInvoker(invoker);
+        return wire;
     }
 
-
-    /**
-     * Connects an inbound source chain to an outbound target chain
-     *
-     * @param sourceChain the source chain to connect
-     * @param targetChain the target chain to connect
-     */
-    protected void connect(InboundInvocationChain sourceChain, OutboundInvocationChain targetChain)
-        throws WireConnectException {
-        Interceptor head = targetChain.getHeadInterceptor();
-        if (head == null) {
-            throw new WireConnectException("Outbound chain must contain at least one interceptor");
+    private void attachInvokers(Wire wire, Invocable source, Invocable target)
+        throws TargetInvokerCreationException {
+        for (InvocationChain chain : wire.getInvocationChains().values()) {
+            String name = target.getUri().getFragment();
+            chain.setTargetInvoker(target.createTargetInvoker(name, chain.getOperation()));
+        }
+        for (InvocationChain chain : wire.getCallbackInvocationChains().values()) {
+            chain.setTargetInvoker(source.createTargetInvoker(null, chain.getOperation()));
         }
-        // invocations from inbound to outbound chains are always synchronous as they occur in services and references
-        sourceChain.addInterceptor(new SynchronousBridgingInterceptor(head));
     }
 
-    protected boolean assertWireable(OutboundWire sourceWire, InboundWire targetWire, boolean silent)
-        throws IncompatibleInterfacesException {
-        if (wireService == null) {
-            Class<?> sourceInterface = sourceWire.getServiceContract().getInterfaceClass();
-            Class<?> targetInterface = targetWire.getServiceContract().getInterfaceClass();
-            if (!sourceInterface.isAssignableFrom(targetInterface)) {
-                if (!silent) {
-                    throw new IncompatibleInterfacesException(sourceWire.getSourceUri(), targetWire.getSourceUri());
-                } else {
-                    return false;
-                }
-            }
+    protected void optimize(Component source, Component target, Wire wire) {
+        boolean optimizableScopes = isOptimizable(source.getScope(), target.getScope());
+        if (optimizableScopes && target.isOptimizable() && WireUtils.isOptimizable(wire)) {
+            wire.setOptimizable(true);
+            wire.setTarget((AtomicComponent) target);
         } else {
-            try {
-                ServiceContract sourceContract = sourceWire.getServiceContract();
-                ServiceContract targetContract = targetWire.getServiceContract();
-                wireService.checkCompatibility(sourceContract, targetContract, false, silent);
-            } catch (IncompatibleServiceContractException e) {
-                URI sourceUri = sourceWire.getSourceUri();
-                URI targetUri = targetWire.getSourceUri();
-                if (!silent) {
-                    throw new IncompatibleInterfacesException(sourceUri, targetUri, e);
-                } else {
-                    return false;
-                }
-            }
+            wire.setOptimizable(false);
         }
-        return true;
     }
 
     protected boolean isOptimizable(Scope pReferrer, Scope pReferee) {
@@ -390,102 +431,4 @@
                 return pReferrer == Scope.COMPOSITE && pReferee == Scope.SYSTEM;
             }
     }
-
-    /**
-     * Connects wires from a service to a target
-     *
-     * @param service the service
-     * @throws WiringException if an exception connecting the service wires is encountered
-     */
-    private void handleService(Service service) throws WiringException {
-        for (ServiceBinding binding : service.getServiceBindings()) {
-            InboundWire inboundWire = binding.getInboundWire();
-            OutboundWire outboundWire = binding.getOutboundWire();
-            URI sourceUri = outboundWire.getSourceUri();
-            URI targetUri = outboundWire.getTargetUri();
-            String fragment = targetUri.getFragment();
-            URI defragUri = UriHelper.getDefragmentedName(targetUri);
-            Component targetComponent = componentManager.getComponent(defragUri);
-            if (targetComponent == null) {
-                throw new TargetComponentNotFoundException("Target not found", sourceUri, targetUri);
-            }
-            InboundWire targetWire = targetComponent.getTargetWire(fragment);
-            if (targetWire == null) {
-                throw new TargetServiceNotFoundException("Target not found", sourceUri, targetUri);
-            }
-            assertWireable(outboundWire, targetWire, false);
-            boolean optimizable = isOptimizable(Scope.SYSTEM, targetComponent.getScope());
-            connect(binding, outboundWire, targetComponent, targetWire, optimizable);
-            connect(binding, inboundWire, targetComponent, outboundWire, true);
-        }
-    }
-
-    private void handleReference(Reference reference) throws WiringException {
-        for (ReferenceBinding binding : reference.getReferenceBindings()) {
-            InboundWire inboundWire = binding.getInboundWire();
-            Map<Operation<?>, InboundInvocationChain> inboundChains = inboundWire.getInboundInvocationChains();
-            for (InboundInvocationChain chain : inboundChains.values()) {
-                // add target invoker on inbound side
-                ServiceContract contract = inboundWire.getServiceContract();
-                Operation operation = chain.getOperation();
-                TargetInvoker invoker;
-                try {
-                    invoker = binding.createTargetInvoker(contract, operation);
-                } catch (TargetInvokerCreationException e) {
-                    URI targetName = inboundWire.getSourceUri();
-                    throw new WireConnectException("Error processing inbound wire",
-                        reference.getUri(),
-                        targetName,
-                        e);
-                }
-                chain.setTargetInvoker(invoker);
-            }
-            OutboundWire outboundWire = binding.getOutboundWire();
-            // connect the reference's inbound and outbound wires
-            connect(binding, inboundWire, binding, outboundWire, true);
-        }
-    }
-
-    private void handleComponent(Component component) throws WiringException {
-        // connect outbound wires for component references to their targets
-        for (List<OutboundWire> referenceWires : component.getOutboundWires().values()) {
-            for (OutboundWire outboundWire : referenceWires) {
-                if (outboundWire.getTargetUri() == null) {
-                    URI source = outboundWire.getSourceUri();
-                    URI target = outboundWire.getTargetUri();
-                    throw new MissingWireTargetException("Target name was null", source, target);
-                }
-                URI sourceUri = outboundWire.getSourceUri();
-                URI targetUri = outboundWire.getTargetUri();
-                String fragment = targetUri.getFragment();
-                URI defragUri = UriHelper.getDefragmentedName(targetUri);
-                Component targetComponent = componentManager.getComponent(defragUri);
-                if (targetComponent == null) {
-                    throw new TargetComponentNotFoundException("Target not found", sourceUri, targetUri);
-                }
-                InboundWire targetWire = null;
-                if (fragment == null) {
-                    // JFM TODO test
-                    // find a suitable wire since no specific service was named
-                    for (InboundWire wire : targetComponent.getInboundWires()) {
-                        if (assertWireable(outboundWire, wire, true)) {
-                            targetWire = wire;
-                            break;
-                        }
-                    }
-                    if (targetWire == null) {
-                        throw new TargetServiceNotFoundException("Target not found", sourceUri, targetUri);
-                    }
-                } else {
-                    targetWire = targetComponent.getTargetWire(fragment);
-                    if (targetWire == null) {
-                        throw new TargetServiceNotFoundException("Target not found", sourceUri, targetUri);
-                    }
-                    assertWireable(outboundWire, targetWire, false);
-                }
-                boolean optimizable = isOptimizable(component.getScope(), targetComponent.getScope());
-                connect(component, outboundWire, targetComponent, targetWire, optimizable);
-            }
-        }
-    }
-}
+}
\ No newline at end of file



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