﻿<?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\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\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>