﻿<?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</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="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\IJobSubmission.cs" />
    <Compile Include="API\IJobSubmissionBuilder.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\JobSubmission.cs" />
    <Compile Include="API\JobSubmissionBuilder.cs" />
    <Compile Include="API\JobSubmissionBuilderFactory.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\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\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\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\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\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.4.7.49.1\build\StyleCop.MSBuild.Targets" Condition="Exists('$(PackagesDir)\StyleCop.MSBuild.4.7.49.1\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>