<?xml version="1.0" encoding="UTF-8"?>
<!--
 * 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.    
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
           targetNamespace="http://sample"
           xmlns:sample="http://sample"
           name="HelloWorld">

	
    <!-- local only wire -->
    <component name="AHelloWorldClientLocal">
		<implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldClientLocalImpl"/>
        <reference name="helloWorldService" target="AHelloWorldServiceLocal" />
    </component>
    
    <component name="AHelloWorldServiceLocal">
        <implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldServiceLocalImpl" />
    </component> 
    
    <!-- unresolved remote wire -->   
    <component name="AHelloWorldClientRemote">
		<implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldClientRemoteImpl" />
        <reference name="helloWorldService" target="BHelloWorldServiceRemote" />
    </component>
    
    <!-- local and remote wires -->    
    <component name="AHelloWorldClientLocalAndRemote">
		<implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldClientRemoteImpl" />
        <reference name="helloWorldService" target="BHelloWorldServiceLocalAndRemote"/>
    </component>  
    
    <!-- multiple services -->
    <component name="AHelloWorldClientMultipleServices">
		<implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldClientRemoteImpl" />
        <reference name="helloWorldService" target="BHelloWorldServiceMultipleServices/HelloWorldServiceRemote"/>
    </component>  
    
    <component name="AHelloWorldClientMultipleServices2">
		<implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldClientRemote2Impl" />
        <reference name="helloWorldService" target="BHelloWorldServiceMultipleServices/HelloWorldServiceRemote2"/>       
    </component> 
    
    <!-- multiple bindings -->   
    <component name="AHelloWorldClientMultipleBindings">
		<implementation.java class="org.apache.tuscany.sca.binding.sca.axis2.helloworld.impl.HelloWorldClientRemoteImpl" />
        <reference name="helloWorldService" target="BHelloWorldMultipleBindings/HelloWorldServiceRemote/scaBinding">
            <interface.java interface="org.apache.tuscany.sca.binding.sca.axis2.helloworld.HelloWorldServiceRemote" />        
        </reference>
    </component>
    
</composite>
