private void ValidateFileStorePath(FileStoreType fileStore, string source)
 {
     if (!this.ShouldValidate(fileStore.Path))
     {
         return;
     }
     if (String.IsNullOrEmpty(fileStore.Path))
     {
         ImageBuilderUtility.TraceAndThrowValidationError(
             TraceType,
             StringResources.ImageBuilderError_DiagnosticValidator_EmptyFilePathNotAllowed,
             source,
             FileStore,
             FileStorePath);
     }
     try
     {
         Uri uri = new Uri(fileStore.Path);
     }
     catch (Exception e)
     {
         ImageBuilderUtility.TraceAndThrowValidationError(
             TraceType,
             StringResources.ImageBuilderError_DiagnosticValidator_PathNotValidUri,
             fileStore.Path,
             source,
             FileStore,
             FileStorePath,
             e);
     }
 }
 private void ValidateManagedServiceAccount(FileStoreType fileStore, string source)
 {
     if ((this.ShouldValidate(fileStore.Password)) &&
         (!String.IsNullOrEmpty(fileStore.Password)))
     {
         ImageBuilderUtility.TraceAndThrowValidationError(
             TraceType,
             StringResources.ImageBuilderError_DiagnosticValidator_PasswordAttributeInvalid,
             Password,
             AccountType,
             FileStoreAccessAccountType.ManagedServiceAccount,
             source,
             FileStore);
     }
     if ((this.ShouldValidate(fileStore.PasswordEncrypted)) &&
         (!String.IsNullOrEmpty(fileStore.PasswordEncrypted)))
     {
         ImageBuilderUtility.TraceAndThrowValidationError(
             TraceType,
             StringResources.ImageBuilderError_DiagnosticValidator_PasswordAttributeInvalid,
             PasswordEncrypted,
             AccountType,
             FileStoreAccessAccountType.ManagedServiceAccount,
             source,
             FileStore);
     }
     ValidateAccountName(fileStore.AccountName, source, FileStore, AccountName);
 }
 private void ValidateDomainUser(FileStoreType fileStore, string source)
 {
     ValidateAccountName(fileStore.AccountName, source, FileStore, AccountName);
     ValidateType <bool>(
         fileStore.PasswordEncrypted,
         source,
         FileStore,
         PasswordEncrypted);
 }
 private void ValidateFileStore(FileStoreType fileStore, string source)
 {
     ValidateType <bool>(
         fileStore.IsEnabled,
         source,
         FileStore,
         IsEnabled);
     ValidateFileStorePath(fileStore, source);
     ValidateFileStoreAccessInformation(fileStore, source);
     ValidatePositiveInteger(
         fileStore.UploadIntervalInMinutes,
         source,
         FileStore,
         UploadIntervalInMinutes);
     ValidatePositiveInteger(
         fileStore.DataDeletionAgeInDays,
         source,
         FileStore,
         DataDeletionAgeInDays);
 }
 /// <summary>
 /// Check the storage type base on the properties.
 /// </summary>
 private void CheckStorageType()
 {
     this._fileStoreType = string.IsNullOrEmpty(this._fileLocation) ? FileStoreType.Resource : FileStoreType.FileSystem;
 }
        private void ValidateFileStoreAccessInformation(FileStoreType fileStore, string source)
        {
            if (String.IsNullOrEmpty(fileStore.AccountType))
            {
                if ((this.ShouldValidate(fileStore.AccountName)) &&
                    (!String.IsNullOrEmpty(fileStore.AccountName)))
                {
                    ImageBuilderUtility.TraceAndThrowValidationError(
                        TraceType,
                        StringResources.ImageBuilderError_DiagnosticValidator_AttributeInvalid,
                        AccountName,
                        AccountType,
                        source,
                        FileStore);
                }
                if ((this.ShouldValidate(fileStore.Password)) &&
                    (!String.IsNullOrEmpty(fileStore.Password)))
                {
                    ImageBuilderUtility.TraceAndThrowValidationError(
                        TraceType,
                        StringResources.ImageBuilderError_DiagnosticValidator_AttributeInvalid,
                        Password,
                        AccountType,
                        source,
                        FileStore);
                }
                if ((this.ShouldValidate(fileStore.PasswordEncrypted)) &&
                    (!String.IsNullOrEmpty(fileStore.PasswordEncrypted)))
                {
                    ImageBuilderUtility.TraceAndThrowValidationError(
                        TraceType,
                        StringResources.ImageBuilderError_DiagnosticValidator_AttributeInvalid,
                        PasswordEncrypted,
                        AccountType,
                        source,
                        FileStore);
                }
                return;
            }

            if (!this.ShouldValidate(fileStore.AccountType))
            {
                return;
            }

            FileStoreAccessAccountType accountType;

            if (!Enum.TryParse(fileStore.AccountType, out accountType))
            {
                ImageBuilderUtility.TraceAndThrowValidationError(
                    TraceType,
                    StringResources.ImageBuilderError_DiagnosticValidator_InvalidAccountType,
                    fileStore.AccountType,
                    FileStoreAccessAccountType.DomainUser,
                    FileStoreAccessAccountType.ManagedServiceAccount,
                    source,
                    FileStore,
                    AccountType);
            }
            switch (accountType)
            {
            case FileStoreAccessAccountType.DomainUser:
            {
                ValidateDomainUser(fileStore, source);
            }
            break;

            case FileStoreAccessAccountType.ManagedServiceAccount:
            {
                ValidateManagedServiceAccount(fileStore, source);
            }
            break;
            }
        }