Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
492df07
Regenerate azure-storage-file-share for STG105 Files by ID
browndav-msft Sep 29, 2026
ac1d2a6
first pass with harness
browndav-msft Sep 29, 2026
4f75989
Regenerate File Share property-by-ID APIs from updated Swagger
browndav-msft Sep 30, 2026
f339022
Keep Files-by-ID timestamp handling consistent with existing SDK over…
browndav-msft Sep 30, 2026
f432e99
Use generated APIs for file and directory properties by ID
browndav-msft Sep 30, 2026
913700c
remove directory by id through swagger update
browndav-msft Sep 30, 2026
9959bf2
change time changes from loop to hardcode in swagger doc
browndav-msft Sep 30, 2026
8e48b0d
Remove directory-by-ID support from File Share clients
browndav-msft Sep 30, 2026
45e563d
Regenerate File Share with explicit timestamp overrides
browndav-msft Sep 30, 2026
cece015
Reuse file property headers for ID-based requests
browndav-msft Sep 30, 2026
17331cb
remove cosmetic change in ModelHelper
browndav-msft Sep 30, 2026
18a4e91
remove change for utf8 encoding for quotes
browndav-msft Sep 30, 2026
483de3d
spotless apply
browndav-msft Sep 30, 2026
c12ff91
add live tests
browndav-msft Sep 30, 2026
c610eef
add live tests and recordings
browndav-msft Sep 30, 2026
4800d03
add getDirectoryByFileId, add customization to avoid file-by-id varia…
browndav-msft Oct 1, 2026
7a56dbf
add tests with recordings
browndav-msft Oct 1, 2026
1f549ac
add recordings for prev features that were missing
browndav-msft Oct 1, 2026
46949f8
move check to validatePathOperation to encapsulate teh policy
browndav-msft Oct 1, 2026
cf75a44
spotless apply
browndav-msft Oct 1, 2026
a45e03f
restrict more paths when using file id
browndav-msft Oct 7, 2026
4a6f793
move unsupported operations tests into a separate file
browndav-msft Oct 7, 2026
c9793c8
remove redundant cases
browndav-msft Oct 7, 2026
44dea7e
update javadocs to reflect smb vs file operations
browndav-msft Oct 9, 2026
128588e
Merge branch 'feature/storage/stg105base' of https://github.com/Azure…
ibrandes Oct 12, 2026
a42179d
Revert "Storage - STG105 NFS List V2 Files and Directories (#50036)"
browndav-msft Oct 13, 2026
1711153
add recordings for prev features that were missing
browndav-msft Oct 1, 2026
d904b37
Merge remote-tracking branch 'origin/feature/storage/stg105base' into…
browndav-msft Oct 13, 2026
febff55
remove public apis for sharefileasync client and sync client
browndav-msft Oct 15, 2026
3952d1a
Update File Share Swagger input
browndav-msft Oct 15, 2026
c1bbd49
Merge branch 'feature/storage/stg105base' into stg105/files-by-id
browndav-msft Oct 15, 2026
9a38abc
fix sharefileasyncclient convenience method
browndav-msft Oct 15, 2026
3ca83e0
update filesimpl to reflect that hardlinks are smb only
browndav-msft Oct 18, 2026
d92e197
add changelog entry
browndav-msft Oct 19, 2026
c6b5f82
add error logging for ShareError in othe rplaces in code
browndav-msft Oct 19, 2026
5cdebe2
url encode fileId
browndav-msft Oct 19, 2026
c1d93c8
change null and empty checks to use code from common package
browndav-msft Oct 19, 2026
d1b9bcc
spotless apply
browndav-msft Oct 19, 2026
78a1359
add liveonly tests
browndav-msft Oct 19, 2026
2429430
block creation of lease clients with file-id based clients
browndav-msft Oct 22, 2026
10d4638
add remote swagger link
browndav-msft Oct 22, 2026
411de94
preserveConfiguredFileID
ibrandes Oct 22, 2026
9df0f35
Merge branch 'feature/storage/stg105base' into stg105/files-by-id
browndav-msft Oct 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions sdk/storage/azure-storage-file-share/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
## 12.33.0-beta.1 (Unreleased)

### Features Added
- Added support for retrieving file and directory properties by file ID
- Added support for retrieving a file's hard links by file ID on SMB shares.
- Added support for change feed on premium file shares. Added `ShareCreateOptions.setChangeFeedEnabled`,
`setChangeFeedRetentionInDays` and `ShareSetPropertiesOptions.setChangeFeedEnabled`,
`setChangeFeedRetentionInDays` to enable and configure change feed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.azure.storage.common.implementation.SasImplUtils;
import com.azure.storage.common.implementation.StorageImplUtils;
import com.azure.storage.file.share.implementation.AzureFileStorageImpl;
import com.azure.storage.file.share.implementation.ShareErrors;
import com.azure.storage.file.share.implementation.models.SharePermission;
import com.azure.storage.file.share.implementation.util.ModelHelper;
import com.azure.storage.file.share.implementation.util.ShareSasImplUtil;
Expand Down Expand Up @@ -173,6 +174,27 @@ public ShareDirectoryAsyncClient getDirectoryClient(String directoryName) {
serviceVersion, sasToken);
}

/**
* Creates a directory client that addresses a directory by its file ID.
*
* <p>Call {@link ShareDirectoryAsyncClient#getProperties()} on the returned client to retrieve properties without
* knowing the directory path. Obtain the ID from {@link FileSmbProperties#getFileId()} in a path-based properties
* response. Other service operations require a path-addressed client.</p>
*
* <pre>{@code
* Mono<ShareDirectoryProperties> properties = shareAsyncClient.getDirectoryClientByFileId(fileId).getProperties();
* }</pre>
*
* @param fileId The file ID of the directory.
* @return A client for interacting with the directory by ID.
* @throws IllegalArgumentException If {@code fileId} is null or blank.
*/
public ShareDirectoryAsyncClient getDirectoryClientByFileId(String fileId) {
ShareErrors.validateFileId(fileId);
return new ShareDirectoryAsyncClient(azureFileStorageClient, shareName, "", fileId, snapshot, accountName,
serviceVersion, sasToken);
Comment thread
browndav-msft marked this conversation as resolved.
}

/**
* Constructs a {@link ShareFileAsyncClient} that interacts with the specified file.
*
Expand All @@ -187,6 +209,28 @@ public ShareFileAsyncClient getFileClient(String filePath) {
serviceVersion, sasToken);
}

/**
* Creates a file client that addresses a file by its file ID.
*
* <p>Call {@link ShareFileAsyncClient#getProperties()} on the returned client to retrieve properties without knowing
* the file path. Obtain the ID from {@link FileSmbProperties#getFileId()} in a path-based properties response.
* The returned client supports property retrieval and {@link ShareFileAsyncClient#getFileLinks()} (SMB only).
* Other service operations require a path-addressed client.</p>
*
* <pre>{@code
* Mono<ShareFileProperties> properties = shareAsyncClient.getFileClientByFileId(fileId).getProperties();
* }</pre>
*
* @param fileId The file ID of the file.
* @return A client for interacting with the file by ID.
* @throws IllegalArgumentException If {@code fileId} is null or blank.
*/
public ShareFileAsyncClient getFileClientByFileId(String fileId) {
ShareErrors.validateFileId(fileId);
return new ShareFileAsyncClient(azureFileStorageClient, shareName, "", fileId, snapshot, accountName,
serviceVersion, sasToken);
}

/**
* Creates a new {@link ShareAsyncClient} linked to the {@code snapshot} of this share resource.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.azure.storage.common.implementation.SasImplUtils;
import com.azure.storage.common.implementation.StorageImplUtils;
import com.azure.storage.file.share.implementation.AzureFileStorageImpl;
import com.azure.storage.file.share.implementation.ShareErrors;
import com.azure.storage.file.share.implementation.models.SharePermission;
import com.azure.storage.file.share.implementation.models.ShareSignedIdentifierWrapper;
import com.azure.storage.file.share.implementation.models.ShareStats;
Expand Down Expand Up @@ -180,6 +181,27 @@ public ShareDirectoryClient getDirectoryClient(String directoryName) {
serviceVersion, sasToken);
}

/**
* Creates a directory client that addresses a directory by its file ID.
*
* <p>Call {@link ShareDirectoryClient#getProperties()} on the returned client to retrieve properties without
* knowing the directory path. Obtain the ID from {@link FileSmbProperties#getFileId()} in a path-based properties
* response. Other service operations require a path-addressed client.</p>
*
* <pre>{@code
* ShareDirectoryProperties properties = shareClient.getDirectoryClientByFileId(fileId).getProperties();
* }</pre>
*
* @param fileId The file ID of the directory.
* @return A client for interacting with the directory by ID.
* @throws IllegalArgumentException If {@code fileId} is null or blank.
*/
public ShareDirectoryClient getDirectoryClientByFileId(String fileId) {
ShareErrors.validateFileId(fileId);
return new ShareDirectoryClient(azureFileStorageClient, shareName, "", fileId, snapshot, accountName,
serviceVersion, sasToken);
Comment thread
browndav-msft marked this conversation as resolved.
}

/**
* Constructs a {@link ShareFileClient} that interacts with the specified file.
*
Expand All @@ -196,6 +218,30 @@ public ShareFileClient getFileClient(String filePath) {
azureFileStorageClient, shareName, filePath, snapshot, accountName, serviceVersion, sasToken);
}

/**
* Creates a file client that addresses a file by its file ID.
*
* <p>Call {@link ShareFileClient#getProperties()} on the returned client to retrieve properties without knowing
* the file path. Obtain the ID from {@link FileSmbProperties#getFileId()} in a path-based properties response.
* The returned client supports property retrieval and {@link ShareFileClient#getFileLinks()} (SMB only).
* Other service operations require a path-addressed client.</p>
*
* <pre>{@code
* ShareFileProperties properties = shareClient.getFileClientByFileId(fileId).getProperties();
* }</pre>
*
* @param fileId The file ID of the file.
* @return A client for interacting with the file by ID.
* @throws IllegalArgumentException If {@code fileId} is null or blank.
*/
public ShareFileClient getFileClientByFileId(String fileId) {
ShareErrors.validateFileId(fileId);
ShareFileAsyncClient asyncClient = new ShareFileAsyncClient(azureFileStorageClient, shareName, "", fileId,
snapshot, accountName, serviceVersion, sasToken);
return new ShareFileClient(asyncClient, azureFileStorageClient, shareName, "", fileId, snapshot, accountName,
serviceVersion, sasToken);
Comment thread
browndav-msft marked this conversation as resolved.
}

/**
* Creates a new {@link ShareAsyncClient} linked to the {@code snapshot} of this share resource.
*
Expand Down
Loading
Loading