<?xml version="1.0" encoding="ASCII"?>
<!--
  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.

  Licensed 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.
 -->

<module xmlns="http://www.osoa.org/xmlns/sca/0.9" 
	xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9" 
	xmlns:mvs="http://www.myvalue.org/MyValueService/"
	name="MyValueModule">

	<!-- Expose as a web service -->
	<entryPoint name="MyValueService" multiplicity="1..1">
		<interface.wsdl interface="MyValue/MyValueService.wsdl" callbackInterface=""></interface.wsdl>
		<binding.ws port="mvs:MyValueServiceBinding"></binding.ws>
		<reference>MyValueServiceComponent</reference>
	</entryPoint>

	<component name="MyValueServiceComponent">
		<implementation.cpp dll="MyValue/libMyValue.so" header="MyValue/MyValueImpl.h"></implementation.cpp>
		<properties>
		</properties>
		<references>
			<customerInfo>CustomerInfoComponent</customerInfo>
			<stockQuote>StockQuoteService</stockQuote>
		</references>
	</component>

	<externalService name="StockQuoteService">
		<interface.cpp header="StockQuoteService/StockQuoteService.h"/>
		<binding.ws port="http://swanandmokashi.com#wsdl.endpoint(StockQuotes/StockQuotesSoap)"/>
	</externalService>

	<!--wire>
		<source.uri>MyValueServiceComponent/customerInfo</source.uri>
		<target.uri>CustomerInfoComponent</target.uri>
	</wire-->

</module>
	