﻿<?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.
-->
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <ProjectGuid>{5094C35B-4FDB-4322-AC05-45D684501CBF}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Org.Apache.REEF.Client</RootNamespace>
    <AssemblyName>Org.Apache.REEF.Client</AssemblyName>
    <TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <RestorePackages>true</RestorePackages>
    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..</SolutionDir>
  </PropertyGroup>
  <PropertyGroup>
    <StartupObject />
  </PropertyGroup>
  <Import Project="$(SolutionDir)\build.props" />
  <PropertyGroup>
    <TempResxFile Condition="$(TempResxFile) == ''">$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\$(AssemblyName)\Resources.resx</TempResxFile>
    <UseVSHostingProcess>false</UseVSHostingProcess>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="Microsoft.Practices.TransientFaultHandling.Core, Version=5.1.1209.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>$(PackagesDir)\TransientFaultHandling.Core.5.1.1209.1\lib\NET4\Microsoft.Practices.TransientFaultHandling.Core.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="Newtonsoft.Json">
      <HintPath>$(PackagesDir)\Newtonsoft.Json.$(NewtonsoftJsonVersion)\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Hadoop.Avro">
      <HintPath>$(PackagesDir)\Microsoft.Hadoop.Avro.$(AvroVersion)\lib\net45\Microsoft.Hadoop.Avro.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.IO.Compression" />
    <Reference Include="System.IO.Compression.FileSystem" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Net.Http.WebRequest" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="$(SolutionDir)\SharedAssemblyInfo.cs">
      <Link>Properties\SharedAssemblyInfo.cs</Link>
    </Compile>
    <Compile Include="API\AppParameters.cs" />
    <Compile Include="API\AppParametersBuilder.cs" />
    <Compile Include="API\ClientFactory.cs" />
    <Compile Include="API\Exceptions\ClasspathException.cs" />
    <Compile Include="API\Exceptions\JavaNotFoundException.cs" />
    <Compile Include="API\IREEFClient.cs" />
    <Compile Include="API\JobParameters.cs" />
    <Compile Include="API\JobParametersBuilder.cs" />
    <Compile Include="API\JobRequest.cs" />
    <Compile Include="API\JobRequestBuilder.cs" />
    <Compile Include="API\TcpPortConfigurationModule.cs" />
    <Compile Include="Avro\AvroAppSubmissionParameters.cs" />
    <Compile Include="Avro\AvroJobSubmissionParameters.cs" />
    <Compile Include="Avro\Local\AvroLocalAppSubmissionParameters.cs" />
    <Compile Include="Avro\Local\AvroLocalJobSubmissionParameters.cs" />
    <Compile Include="Avro\YARN\AvroYarnAppSubmissionParameters.cs" />
    <Compile Include="Avro\YARN\AvroYarnJobSubmissionParameters.cs" />
    <Compile Include="Avro\YARN\AvroYarnClusterJobSubmissionParameters.cs" />
    <Compile Include="Common\DotNetFile.cs" />
    <Compile Include="Common\ClientConstants.cs" />
    <Compile Include="Common\DriverFolderPreparationHelper.cs" />
    <Compile Include="Common\EnvironmentDriverConfigurationProviders.cs" />
    <Compile Include="Common\IFile.cs" />
    <Compile Include="Common\IResourceArchiveFileGenerator.cs" />
    <Compile Include="Common\FileSets.cs" />
    <Compile Include="Common\IJavaClientLauncher.cs" />
    <Compile Include="Common\IJobSubmissionResult.cs" />
    <Compile Include="Common\JobSubmissionResult.cs" />
    <Compile Include="Common\JavaClientLauncher.cs" />
    <Compile Include="Common\ResourceArchiveFileGenerator.cs" />
    <Compile Include="Local\LocalClient.cs" />
    <Compile Include="Local\LocalDriverConfigurationProvider.cs" />
    <Compile Include="Local\LocalJobSubmissionResult.cs" />
    <Compile Include="Local\LocalRuntimeClientConfiguration.cs" />
    <Compile Include="Local\Parameters\LocalRuntimeDirectory.cs" />
    <Compile Include="Local\Parameters\NumberOfEvaluators.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="YARN\HDI\HDInsightClientConfiguration.cs" />
    <Compile Include="YARN\HDI\HDInsightCommandLineEnvironment.cs" />
    <Compile Include="YARN\HDI\HDInsightCredential.cs" />
    <Compile Include="YARN\HDI\HDInsightResourceFileRemoteUrlToClusterUrlConverter.cs" />
    <Compile Include="YARN\HDI\HDInsightUrlProvider.cs" />
    <Compile Include="YARN\HDI\NamedParameters.cs" />
    <Compile Include="YARN\IdentityResourceFileRemoteUrlToClusterUrlConverter.cs" />
    <Compile Include="YARN\IResourceFileRemoteUrlToClusterUrlConverter.cs" />
    <Compile Include="YARN\IYarnCommandLineEnvironment.cs" />
    <Compile Include="YARN\IYarnJobCommandProvider.cs" />
    <Compile Include="YARN\IJobResourceUploader.cs" />
    <Compile Include="YARN\IJobSubmissionDirectoryProvider.cs" />
    <Compile Include="YARN\Parameters\DriverMaxMemoryAllicationPoolSizeMB.cs" />
    <Compile Include="YARN\Parameters\DriverMaxPermSizeMB.cs" />
    <Compile Include="YARN\Parameters\DriverStderrFilePath.cs" />
    <Compile Include="YARN\Parameters\DriverStdoutFilePath.cs" />
    <Compile Include="YARN\Parameters\FileSystemUrl.cs" />
    <Compile Include="YARN\RestClient\HttpClient.cs" />
    <Compile Include="YARN\RestClient\IDeserializer.cs" />
    <Compile Include="YARN\RestClient\IHttpClient.cs" />
    <Compile Include="YARN\RestClient\IRequestFactory.cs" />
    <Compile Include="YARN\RestClient\IRestClient.cs" />
    <Compile Include="YARN\RestClient\ISerializer.cs" />
    <Compile Include="YARN\RestClient\IYarnRestClientCredential.cs" />
    <Compile Include="YARN\RestClient\Method.cs" />
    <Compile Include="YARN\RestClient\NullYarnRestClientCredential.cs" />
    <Compile Include="YARN\RestClient\RequestFactory.cs" />
    <Compile Include="YARN\RestClient\RestClient.cs" />
    <Compile Include="YARN\RestClient\RestJsonDeserializer.cs" />
    <Compile Include="YARN\RestClient\RestJsonSerializer.cs" />
    <Compile Include="YARN\RestClient\RestRequest.cs" />
    <Compile Include="YARN\RestClient\RestResponse.cs" />
    <Compile Include="YARN\RestClient\HttpClientRetryHandler.cs" />
    <Compile Include="YARN\WindowsYarnJobCommandProvider.cs" />
    <Compile Include="YARN\JobResource.cs" />
    <Compile Include="YARN\JobSubmissionDirectoryProvider.cs" />
    <Compile Include="YARN\LegacyJobResourceUploader.cs" />
    <Compile Include="YARN\Parameters\EnableDebugLogging.cs" />
    <Compile Include="YARN\Parameters\JobSubmissionDirectoryPrefixParameter.cs" />
    <Compile Include="YARN\Parameters\SecurityTokenParameters.cs" />
    <Compile Include="YARN\RestClient\DataModel\Acls.cs" />
    <Compile Include="YARN\RestClient\DataModel\AmContainerSpec.cs" />
    <Compile Include="YARN\RestClient\DataModel\ApplicationFinalState.cs" />
    <Compile Include="YARN\RestClient\DataModel\ApplicationTag.cs" />
    <Compile Include="YARN\RestClient\DataModel\ClusterHaState.cs" />
    <Compile Include="YARN\RestClient\DataModel\ClusterState.cs" />
    <Compile Include="YARN\RestClient\DataModel\Commands.cs" />
    <Compile Include="YARN\RestClient\DataModel\Credentials.cs" />
    <Compile Include="YARN\RestClient\DataModel\Environment.cs" />
    <Compile Include="YARN\RestClient\DataModel\KeyValuePair.cs" />
    <Compile Include="YARN\RestClient\DataModel\LocalResources.cs" />
    <Compile Include="YARN\RestClient\DataModel\Secrets.cs" />
    <Compile Include="YARN\RestClient\DataModel\ServiceData.cs" />
    <Compile Include="YARN\RestClient\DataModel\SubmitApplication.cs" />
    <Compile Include="YARN\RestClient\DataModel\Tokens.cs" />
    <Compile Include="YARN\RestClient\IRestRequestExecutor.cs" />
    <Compile Include="YARN\RestClient\IUrlProvider.cs" />
    <Compile Include="YARN\RestClient\FileSystemJobResourceUploader.cs" />
    <Compile Include="YARN\RestClient\MultipleRMUrlProvider.cs" />
    <Compile Include="YARN\YarnCommandProviderConfiguration.cs" />
    <Compile Include="YARN\YarnJobSubmissionResult.cs" />
    <Compile Include="YARN\YARNREEFClient.cs" />
    <Compile Include="YARN\RestClient\RestRequestExecutor.cs" />
    <Compile Include="YARN\RestClient\IYarnRMClient.cs" />
    <Compile Include="YARN\RestClient\DataModel\Application.cs" />
    <Compile Include="YARN\RestClient\DataModel\Applications.cs" />
    <Compile Include="YARN\RestClient\DataModel\ApplicationState.cs" />
    <Compile Include="YARN\RestClient\DataModel\ClusterInfo.cs" />
    <Compile Include="YARN\RestClient\DataModel\ClusterMetrics.cs" />
    <Compile Include="YARN\RestClient\DataModel\Error.cs" />
    <Compile Include="YARN\RestClient\DataModel\Resouce.cs" />
    <Compile Include="YARN\RestClient\DataModel\NewApplication.cs" />
    <Compile Include="YARN\RestClient\YarnClient.cs" />
    <Compile Include="YARN\RestClient\YarnClientNoCancellationToken.cs" />
    <Compile Include="YARN\RestClient\YarnConfigurationUrlProvider.cs" />
    <Compile Include="YARN\RestClient\YarnRestAPIException.cs" />
    <Compile Include="YARN\YARNClientConfiguration.cs" />
    <Compile Include="YARN\YarnCommandLineEnvironment.cs" />
    <Compile Include="YARN\YarnREEFDotNetClient.cs" />
    <Compile Include="YARN\YarnREEFDotNetParamSerializer.cs" />
    <Compile Include="YARN\YarnREEFParamSerializer.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Avro\README.md" />
    <None Include="Org.Apache.REEF.Client.nuspec" />
    <None Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.csproj">
      <Project>{79e7f89a-1dfb-45e1-8d43-d71a954aeb98}</Project>
      <Name>Org.Apache.REEF.Utilities</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.csproj">
      <Project>{97dbb573-3994-417a-9f69-ffa25f00d2a6}</Project>
      <Name>Org.Apache.REEF.Tang</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Common\Org.Apache.REEF.Common.csproj">
      <Project>{545a0582-4105-44ce-b99c-b1379514a630}</Project>
      <Name>Org.Apache.REEF.Common</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Driver\Org.Apache.REEF.Driver.csproj">
      <Project>{a6baa2a7-f52f-4329-884e-1bcf711d6805}</Project>
      <Name>Org.Apache.REEF.Driver</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Network\Org.Apache.REEF.Network.csproj">
      <Project>{883ce800-6a6a-4e0a-b7fe-c054f4f2c1dc}</Project>
      <Name>Org.Apache.REEF.Network</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj">
      <Project>{cdfb3464-4041-42b1-9271-83af24cd5008}</Project>
      <Name>Org.Apache.REEF.Wake</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Bridge\Org.Apache.REEF.Bridge.vcxproj">
      <Project>{4e69d40a-26d6-4d4a-b96d-729946c07fe1}</Project>
      <Name>Org.Apache.REEF.Bridge</Name>
      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
      <LinkLibraryDependencies>false</LinkLibraryDependencies>
      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Evaluator\Org.Apache.REEF.Evaluator.csproj">
      <Project>{1b983182-9c30-464c-948d-f87eb93a8240}</Project>
      <Name>Org.Apache.REEF.Evaluator</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Examples\Org.Apache.REEF.Examples.csproj">
      <Project>{75503f90-7b82-4762-9997-94b5c68f15db}</Project>
      <Name>Org.Apache.REEF.Examples</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.IO\Org.Apache.REEF.IO.csproj">
      <Project>{DEC0F0A8-DBEF-4EBF-B69C-E2369C15ABF1}</Project>
      <Name>Org.Apache.REEF.IO</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="$(TempResxFile)">
      <Generator>ResXFileCodeGenerator</Generator>
      <Visible>false</Visible>
    </EmbeddedResource>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Import Project="$(PackagesDir)\StyleCop.MSBuild.$(StyleCopVersion)\build\StyleCop.MSBuild.Targets" Condition="Exists('$(PackagesDir)\StyleCop.MSBuild.$(StyleCopVersion)\build\StyleCop.MSBuild.Targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>
  <!--begin jar reference-->
  <PropertyGroup>
    <BeforeBuildDependsOn>
      $(BeforeBuildDependsOn);
      RewriteClientResources;
    </BeforeBuildDependsOn>
  </PropertyGroup>
  <!--
       ########################################################################
         ReWrite client resx to point to correct version of jars
       ######################################################################## 
  -->
  <!--A Task that extracts the version from the pom in a given folder.-->
  <UsingTask TaskName="UpdateClientResources" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <SnapshotNumber />
      <ProjectFolder Required="true" />
      <DebugOrRelease Required="true" />
      <resxOutputPath Required="true" />
    </ParameterGroup>
    <Task>
      <Reference Include="System.Xml" />
      <Reference Include="System.Xml.Linq" />
      <Using Namespace="System" />
      <Using Namespace="System.IO" />
      <Using Namespace="System.Xml" />
      <Using Namespace="System.Linq" />
      <Using Namespace="System.Xml.Linq" />
      <Code Type="Fragment" Language="cs"><![CDATA[
      var Version = XDocument.Load(Path.Combine(ProjectFolder, "pom.xml")).Descendants()
        .Where(x => x.Name.ToString().Contains("version"))
        .FirstOrDefault().Value;
      var snapshortNumberAsString = ($(SnapshotNumber) >= 0 && $(SnapshotNumber) <=9) ? "0" + $(SnapshotNumber) : $(SnapshotNumber).ToString();
      var reefVersion = Version;

      var srcDir = @"lang\cs\Org.Apache.REEF.Client\Properties";
      var binDir = @"lang\cs\bin\x64";
      var resxInputPath  = Path.Combine(ProjectFolder, srcDir, "Resources.xml");      
      var resourceDir = Path.Combine(ProjectFolder, binDir, DebugOrRelease, "Org.Apache.REEF.Bridge.JAR");
      var clrDriverDir = Path.Combine(ProjectFolder, binDir, DebugOrRelease, "Org.Apache.REEF.Bridge");
      var byteArrayType = ";System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
      var jarRest = reefVersion + "-shaded.jar" + byteArrayType;

      var dllResources = new Dictionary<string,string>();
      dllResources.Add("reef_bridge_client", resourceDir + @"\reef-bridge-client-" + jarRest);
      dllResources.Add("reef_bridge_driver", resourceDir + @"\reef-bridge-java-" + jarRest);
      dllResources.Add("evaluator", resourceDir + "Org.Apache.REEF.Evaluator.exe" + byteArrayType);
      dllResources.Add("reef_clrdriver", clrDriverDir + @"\Org.Apache.REEF.Bridge.exe" + byteArrayType);
      dllResources.Add("ClientJarFullName", "reef-bridge-client-" + reefVersion + "-shaded.jar");
      dllResources.Add("DriverJarFullName", "reef-bridge-java-" + reefVersion + "-shaded.jar");
      dllResources.Add("ClrDriverFullName", "Org.Apache.REEF.Bridge.exe");
      
      XElement root = XElement.Load(resxInputPath);
      var resources = root.Descendants().Where(x => x.Name.LocalName == "data").ToList();
      foreach (var resource in resources)
      {
          var resourceName = resource.Attribute("name").Value;
          string replaceValue;
          if (dllResources.TryGetValue(resourceName, out replaceValue))
          {
              var resourceValue = resource.Descendants().Where(x => x.Name.LocalName == "value").FirstOrDefault();
              if (resourceValue != null)
              {
                  resourceValue.Value = replaceValue;
              }
          }
      }
      var settings = new XmlWriterSettings
      {
          Indent = true,
          IndentChars = "  ",
          NewLineChars = "\r\n",
          NewLineHandling = NewLineHandling.Replace
      };
      (new FileInfo(resxOutputPath)).Directory.Create();
      using (var wr = XmlWriter.Create(resxOutputPath, settings))
      {
          root.WriteTo(wr);
      }
        ]]></Code>
    </Task>
  </UsingTask>
  <!--
      A Target that reWrites client resx to point to correct version of jars
    -->
  <Target Name="CopyJarFiles">
    <MSBuild Targets="Build" BuildInParallel="$(BuildInParallel)" Properties="Chip=$(Chip);Lang=$(Lang)" Projects="@(ProjectFile)" />
    <ItemGroup>
      <MySourceFiles Include="$(Bindir)\**\Org.Apache.REEF.Bridge.JAR\*.jar" />
    </ItemGroup>
    <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(TargetDir)%(Filename)%(Extension)')" />
  </Target>
  <Target Name="RewriteClientResources" DependsOnTargets="CopyJarFiles">
    <UpdateClientResources ProjectFolder="$(REEF_Source_Folder)" DebugOrRelease="$(Configuration)" resxOutputPath="$(TempResxFile)">
    </UpdateClientResources>
  </Target>
  <Target Name="AfterBuild">
    <Delete Files="$(TempResxFile)" />
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
  </Target>
  <Target Name="BeforeBuild" DependsOnTargets="$(BeforeBuildDependsOn);RewriteClientResources">
  </Target>
</Project>