< Summary

Class:Microsoft.Azure.Batch.NodeFile
Assembly:Microsoft.Azure.Batch
File(s):C:\Git\azure-sdk-for-net\sdk\batch\Microsoft.Azure.Batch\src\NodeFile.cs
Covered lines:20
Uncovered lines:16
Coverable lines:36
Total lines:275
Line coverage:55.5% (20 of 36)
Covered branches:2
Total branches:2
Branch coverage:100% (2 of 2)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
.ctor()-0%100%
.ctor(...)-100%100%
get_CustomBehaviors()-100%100%
get_IsDirectory()-0%100%
get_Name()-0%100%
get_Path()-100%100%
get_Properties()-100%100%
get_Url()-0%100%
ReadAsStringAsync(...)-100%100%
ReadAsString(...)-0%100%
CopyToStream(...)-0%100%
Delete(...)-0%100%
.ctor(...)-100%100%
get_IsDirectory()-0%100%
get_Name()-100%100%
get_Properties()-100%100%
get_Url()-0%100%

File(s)

C:\Git\azure-sdk-for-net\sdk\batch\Microsoft.Azure.Batch\src\NodeFile.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License. See License.txt in the project root for license information.
 3
 4using System;
 5using System.Collections.Generic;
 6using System.IO;
 7using System.Linq;
 8using System.Text;
 9using System.Threading.Tasks;
 10using Models = Microsoft.Azure.Batch.Protocol.Models;
 11using System.Threading;
 12
 13namespace Microsoft.Azure.Batch
 14{
 15    /// <summary>
 16    /// Exposes methods and properties to access files from Nodes or Tasks.
 17    /// </summary>
 18    public abstract class NodeFile : IInheritedBehaviors
 19    {
 20        internal FileItemBox fileItemBox;
 21
 22#region  // constructors
 23
 024        private NodeFile()
 25        {
 026        }
 27
 828        internal NodeFile(Models.NodeFile boundToThis, IEnumerable<BatchClientBehavior> inheritTheseBehaviors)
 29        {
 830            this.fileItemBox = new FileItemBox(boundToThis);
 31
 32            // inherit from parent
 833            InheritUtil.InheritClientBehaviorsAndSetPublicProperty(this, inheritTheseBehaviors);
 834        }
 35
 36#endregion
 37
 38#region IInheritedBehaviors
 39
 40        /// <summary>
 41        /// Gets or sets a list of behaviors that modify or customize requests to the Batch service
 42        /// made via this <see cref="NodeFile"/>.
 43        /// </summary>
 44        /// <remarks>
 45        /// <para>These behaviors are inherited by child objects.</para>
 46        /// <para>Modifications are applied in the order of the collection. The last write wins.</para>
 47        /// </remarks>
 1448        public IList<BatchClientBehavior> CustomBehaviors { get; set; }
 49
 50#endregion IInheritedBehaviors
 51
 52#region // NodeFile
 53
 54        /// <summary>
 55        /// Gets the value that indicates whether the file is a directory.
 56        /// </summary>
 57        public bool? IsDirectory
 58        {
 59            get
 60            {
 061                return this.fileItemBox.IsDirectory;
 62            }
 63        }
 64
 65        /// <summary>
 66        /// Gets the name of the file.
 67        /// </summary>
 68        [Obsolete("Obsolete as of 02/2017. Use Path instead.")]
 69        public string Name
 70        {
 71            get
 72            {
 073                return this.fileItemBox.Name;
 74            }
 75        }
 76
 77        /// <summary>
 78        /// Gets the path of the file.
 79        /// </summary>
 80        public string Path
 81        {
 82            get
 83            {
 684                return this.fileItemBox.Name;
 85            }
 86        }
 87
 88        /// <summary>
 89        /// Gets the FileProperties of the file.
 90        /// </summary>
 91        public FileProperties Properties
 92        {
 93            get
 94            {
 295                return this.fileItemBox.Properties;
 96            }
 97        }
 98
 99
 100        /// <summary>
 101        /// Gets the URL of the file.
 102        /// </summary>
 103        public string Url
 104        {
 105            get
 106            {
 0107                return this.fileItemBox.Url;
 108            }
 109        }
 110
 111        /// <summary>
 112        /// Begins asynchronous call to return the contents of the file as a string.
 113        /// </summary>
 114        /// <param name="encoding">The encoding used to interpret the file data. If no value or null is specified, UTF8 
 115        /// <param name="byteRange">The file byte range to retrieve. If null, the entire file is retrieved.</param>
 116        /// <param name="additionalBehaviors">A collection of BatchClientBehavior instances that are applied after the C
 117        /// <param name="cancellationToken">A <see cref="CancellationToken"/> for controlling the lifetime of the asynch
 118        /// <returns>A <see cref="System.Threading.Tasks.Task"/> object that represents the asynchronous operation.</ret
 119        public Task<string> ReadAsStringAsync(
 120            Encoding encoding = null,
 121            GetFileRequestByteRange byteRange = null,
 122            IEnumerable<BatchClientBehavior> additionalBehaviors = null,
 123            CancellationToken cancellationToken = default(CancellationToken))
 124        {
 2125            return UtilitiesInternal.ReadNodeFileAsStringAsync(
 2126                CopyToStreamAsync,
 2127                encoding,
 2128                byteRange,
 2129                additionalBehaviors,
 2130                cancellationToken);
 131        }
 132
 133        /// <summary>
 134        /// Blocking call to return the contents of the file as a string.
 135        /// </summary>
 136        /// <param name="encoding">The encoding used to interpret the file data. If no value or null is specified, UTF8 
 137        /// <param name="byteRange">The file byte range to retrieve. If null, the entire file is retrieved.</param>
 138        /// <param name="additionalBehaviors">A collection of BatchClientBehavior instances that are applied after the C
 139        /// <returns>A string containing the contents of the file.</returns>
 140        public string ReadAsString(Encoding encoding = null, GetFileRequestByteRange byteRange = null, IEnumerable<Batch
 141        {
 0142            Task<string> asyncTask = ReadAsStringAsync(encoding, byteRange, additionalBehaviors);
 0143            string readAsString = asyncTask.WaitAndUnaggregateException(this.CustomBehaviors, additionalBehaviors);
 144
 145            // return result
 0146            return readAsString;
 147        }
 148
 149        /// <summary>
 150        /// Begins an asynchronous call to copy the contents of the file into the given Stream.
 151        /// </summary>
 152        /// <param name="stream">The stream into which the contents of the file are copied.</param>
 153        /// <param name="byteRange">The file byte range to retrieve. If null, the entire file is retrieved.</param>
 154        /// <param name="additionalBehaviors">A collection of BatchClientBehavior instances that are applied after the C
 155        /// <param name="cancellationToken">A <see cref="CancellationToken"/> for controlling the lifetime of the asynch
 156        /// <returns>A <see cref="System.Threading.Tasks.Task"/> object that represents the asynchronous operation.</ret
 157        public abstract Task CopyToStreamAsync(Stream stream,
 158            GetFileRequestByteRange byteRange = null,
 159            IEnumerable<BatchClientBehavior> additionalBehaviors = null,
 160            CancellationToken cancellationToken = default(CancellationToken));
 161
 162        /// <summary>
 163        /// Blocking call to copy the contents of the file into the given Stream.
 164        /// </summary>
 165        /// <param name="stream">The stream into which the contents of the file are copied.</param>
 166        /// <param name="byteRange">The file byte range to retrieve. If null, the entire file is retrieved.</param>
 167        /// <param name="additionalBehaviors">A collection of BatchClientBehavior instances that are applied after the C
 168        public virtual void CopyToStream(Stream stream, GetFileRequestByteRange byteRange = null, IEnumerable<BatchClien
 169        {
 0170            Task asyncTask = CopyToStreamAsync(stream, byteRange, additionalBehaviors);
 0171            asyncTask.WaitAndUnaggregateException(this.CustomBehaviors, additionalBehaviors);
 0172        }
 173
 174        /// <summary>
 175        /// Begins an asynchronous call to delete the file.
 176        /// </summary>
 177        /// <param name="recursive">
 178        /// If the file-path parameter represents a directory instead of a file, you can set the optional
 179        /// recursive parameter to true to delete the directory and all of the files and subdirectories in it. If recurs
 180        /// then the directory must be empty or deletion will fail.
 181        /// </param>
 182        /// <param name="additionalBehaviors">A collection of BatchClientBehavior instances that are applied after the C
 183        /// <param name="cancellationToken">A <see cref="CancellationToken"/> for controlling the lifetime of the asynch
 184        /// <returns>A <see cref="System.Threading.Tasks.Task"/> object that represents the asynchronous operation.</ret
 185        public abstract Task DeleteAsync(bool? recursive = null, IEnumerable<BatchClientBehavior> additionalBehaviors = 
 186
 187        /// <summary>
 188        /// Blocking call to delete the file.
 189        /// </summary>
 190        /// <param name="recursive">
 191        /// If the file-path parameter represents a directory instead of a file, you can set the optional
 192        /// recursive parameter to true to delete the directory and all of the files and subdirectories in it. If recurs
 193        /// then the directory must be empty or deletion will fail.
 194        /// </param>
 195        /// <param name="additionalBehaviors">A collection of BatchClientBehavior instances that are applied after the C
 196        public virtual void Delete(bool? recursive = null, IEnumerable<BatchClientBehavior> additionalBehaviors = null)
 197        {
 0198            Task asyncTask = DeleteAsync(recursive, additionalBehaviors);
 0199            asyncTask.WaitAndUnaggregateException(this.CustomBehaviors, additionalBehaviors);
 0200        }
 201
 202        #endregion
 203
 204        #region IRefreshable
 205
 206        /// <summary>
 207        /// Refreshes the current <see cref="NodeFile"/>.
 208        /// </summary>
 209        /// <param name="detailLevel">The detail level for the refresh.  If a detail level which omits the <see cref="Na
 210        /// <param name="additionalBehaviors">A collection of <see cref="BatchClientBehavior"/> instances that are appli
 211        /// <param name="cancellationToken">A <see cref="CancellationToken"/> for controlling the lifetime of the asynch
 212        /// <returns>A <see cref="Task"/> representing the asynchronous refresh operation.</returns>
 213        public abstract Task RefreshAsync(DetailLevel detailLevel = null, IEnumerable<BatchClientBehavior> additionalBeh
 214
 215        /// <summary>
 216        /// Refreshes the current <see cref="NodeFile"/>.
 217        /// </summary>
 218        /// <param name="detailLevel">The detail level for the refresh.  If a detail level which omits the <see cref="Na
 219        /// <param name="additionalBehaviors">A collection of <see cref="BatchClientBehavior"/> instances that are appli
 220        public abstract void Refresh(DetailLevel detailLevel = null, IEnumerable<BatchClientBehavior> additionalBehavior
 221
 222#endregion
 223
 224        /// <summary>
 225        /// Encapsulates the properties of a FileItem so as to allow atomic replacement for Refresh().
 226        /// </summary>
 227        internal class FileItemBox
 228        {
 229            protected Models.NodeFile _boundFileItem; // the protocol object to which this instance is bound
 230            protected FileProperties _wrappedFileProperties;
 231
 8232            public FileItemBox(Models.NodeFile file)
 233            {
 8234                this._boundFileItem = file;
 8235                if (file.Properties != null)
 236                {
 6237                    this._wrappedFileProperties = new FileProperties(file.Properties);
 238                }
 8239            }
 240
 241            public bool? IsDirectory
 242            {
 243                get
 244                {
 0245                    return _boundFileItem.IsDirectory;
 246                }
 247            }
 248
 249            public string Name
 250            {
 251                get
 252                {
 6253                    return _boundFileItem.Name;
 254                }
 255            }
 256
 257            public FileProperties Properties
 258            {
 259                get
 260                {
 2261                    return _wrappedFileProperties;
 262                }
 263            }
 264
 265            public string Url
 266            {
 267                get
 268                {
 0269                    return _boundFileItem.Url;
 270                }
 271            }
 272        }
 273
 274    }
 275}