/// <inheritdoc />
 public async Task<HadoopJob> GetJob(string jobId)
 {
     JobPayloadConverter converter = new JobPayloadConverter();
     using (var client = ServiceLocator.Instance.Locate<IHDInsightJobSubmissionRestClientFactory>().Create(this.credentials))
     {
         var result = await client.GetJobDetail(dnsName, location, jobId);
         var retval = converter.DeserializeJobDetails(result.Content, jobId);
         return retval;
     }
 }
 public void TheValueOfTheSerializedOutputShouldBeEquivalentWithTheOrignal()
 {
     var clientConverter = new JobPayloadConverter();
     var serverConverter = new JobPayloadServerConverter();
     JobList asList = this.transferObject.As<JobList>();
     if (asList.IsNotNull())
     {
         JobList actual = clientConverter.DeserializeJobList(this.serializedForm);
         Assert.AreEqual(asList.ErrorCode, actual.ErrorCode);
         Assert.AreEqual(asList.HttpStatusCode, actual.HttpStatusCode);
         Assert.IsTrue(asList.Jobs.Select(j => j.JobId).SequenceEqual(actual.Jobs.Select(j => j.JobId)));
         return;
     }
     var asJob = this.transferObject.As<Hadoop.Client.JobDetails>();
     if (asJob.IsNotNull())
     {
         var actual = clientConverter.DeserializeJobDetails(this.serializedForm, asJob.JobId);
         Assert.AreEqual(asJob.ErrorCode, actual.ErrorCode);
         Assert.AreEqual(asJob.HttpStatusCode, actual.HttpStatusCode);
         Assert.AreEqual(asJob.ErrorOutputPath, actual.ErrorOutputPath);
         Assert.AreEqual(asJob.ExitCode, actual.ExitCode);
         Assert.AreEqual(asJob.JobId, actual.JobId);
         Assert.AreEqual(asJob.LogicalOutputPath, actual.LogicalOutputPath);
         Assert.AreEqual(asJob.Name, actual.Name);
         Assert.AreEqual(new Uri(asJob.PhysicalOutputPath), new Uri(actual.PhysicalOutputPath));
         Assert.AreEqual(asJob.Query, actual.Query);
         Assert.AreEqual(asJob.StatusCode, actual.StatusCode);
         Assert.AreEqual(asJob.SubmissionTime, actual.SubmissionTime);
         Assert.AreEqual(asJob.Callback, actual.Callback);
         return;
     }
     var asMapReduce = this.transferObject.As<MapReduceJobCreateParameters>();
     if (asMapReduce.IsNotNull())
     {
         MapReduceJobCreateParameters actual = serverConverter.DeserializeMapReduceJobCreationDetails(this.serializedForm);
         Assert.AreEqual(asMapReduce.ClassName, actual.ClassName);
         Assert.IsTrue(asMapReduce.Arguments.SequenceEqual(actual.Arguments));
         Assert.AreEqual(asMapReduce.JarFile, actual.JarFile);
         Assert.AreEqual(asMapReduce.JobName, actual.JobName);
         Assert.AreEqual(asMapReduce.StatusFolder, actual.StatusFolder);
         Assert.IsTrue(asMapReduce.Defines.SequenceEqual(actual.Defines));
         Assert.IsTrue(asMapReduce.Files.SequenceEqual(actual.Files));
         return;
     }
     var asHive = this.transferObject.As<HiveJobCreateParameters>();
     if (asHive.IsNotNull())
     {
         HiveJobCreateParameters actual = serverConverter.DeserializeHiveJobCreationDetails(this.serializedForm);
         Assert.AreEqual(asHive.JobName, actual.JobName);
         Assert.AreEqual(asHive.StatusFolder, actual.StatusFolder);
         Assert.IsTrue(asHive.Defines.SequenceEqual(actual.Defines));
         Assert.AreEqual(asHive.Query, actual.Query);
         Assert.IsTrue(asHive.Files.SequenceEqual(actual.Files));
         return;
     }
     Assert.Fail("Unable to recognize the object type.");
 }