Skip to content

Commit ff7cc06

Browse files
authored
Add Static JSON Creator to DateTimeRfc1123 (Azure#28624)
Add Static JSON Creator to DateTimeRfc1123
1 parent 09846b7 commit ff7cc06

File tree

8 files changed

+79
-44
lines changed

8 files changed

+79
-44
lines changed

sdk/core/azure-core/src/main/java/com/azure/core/util/DateTimeRfc1123.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package com.azure.core.util;
55

66
import com.azure.core.util.logging.ClientLogger;
7+
import com.fasterxml.jackson.annotation.JsonCreator;
78

89
import java.time.DateTimeException;
910
import java.time.DayOfWeek;
@@ -47,6 +48,23 @@ public OffsetDateTime getDateTime() {
4748
return this.dateTime;
4849
}
4950

51+
/**
52+
* JSON creator for DateTimeRfc1123.
53+
* <p>
54+
* If {@code date} is null or an empty string null will be returned.
55+
*
56+
* @param date RFC1123 datetime string.
57+
* @return The DateTimeRfc1123 representation of the datetime string, or null if {@code date} is null or empty.
58+
*/
59+
@JsonCreator
60+
static DateTimeRfc1123 fromString(final String date) {
61+
if (CoreUtils.isNullOrEmpty(date)) {
62+
return null;
63+
}
64+
65+
return new DateTimeRfc1123(date);
66+
}
67+
5068
/**
5169
* Parses the RFC1123 format datetime string into OffsetDateTime.
5270
*

sdk/storage/azure-storage-blob/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
<dependency>
7777
<groupId>com.azure</groupId>
7878
<artifactId>azure-core</artifactId>
79-
<version>1.27.0</version> <!-- {x-version-update;com.azure:azure-core;dependency} -->
79+
<version>1.28.0-beta.1</version> <!-- {x-version-update;unreleased_com.azure:azure-core;dependency} -->
8080
</dependency>
8181
<dependency>
8282
<groupId>com.azure</groupId>

sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -619,12 +619,12 @@ public Mono<Boolean> deleteIfExists() {
619619
* .setIfUnmodifiedSince&#40;OffsetDateTime.now&#40;&#41;.minusDays&#40;3&#41;&#41;;
620620
*
621621
* client.deleteIfExistsWithResponse&#40;requestConditions&#41;.subscribe&#40;response -&gt; &#123;
622-
* if &#40;response.getStatusCode&#40;&#41; == 404&#41; &#123;
623-
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
624-
* &#125; else &#123;
625-
* System.out.println&#40;&quot;successfully deleted.&quot;&#41;;
626-
* &#125;
627-
* &#125;&#41;;
622+
* if &#40;response.getStatusCode&#40;&#41; == 404&#41; &#123;
623+
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
624+
* &#125; else &#123;
625+
* System.out.println&#40;&quot;successfully deleted.&quot;&#41;;
626+
* &#125;
627+
* &#125;&#41;;
628628
* </pre>
629629
* <!-- end com.azure.storage.blob.BlobContainerAsyncClient.deleteIfExistsWithResponse#BlobRequestConditions -->
630630
*

sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobServiceAsyncClient.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -386,13 +386,13 @@ Mono<Response<Void>> deleteBlobContainerWithResponse(String containerName, Conte
386386
*
387387
* <!-- src_embed com.azure.storage.blob.BlobServiceAsyncClient.deleteBlobContainerIfExists#String -->
388388
* <pre>
389-
* client.deleteBlobContainerIfExists&#40;&quot;containerName&quot;&#41;.subscribe&#40;response -&gt; &#123;
390-
* if &#40;response.getStatusCode&#40;&#41; == 404&#41; &#123;
391-
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
392-
* &#125; else &#123;
393-
* System.out.println&#40;&quot;successfully deleted.&quot;&#41;;
394-
* &#125;
395-
* &#125;&#41;;
389+
* client.deleteBlobContainerIfExists&#40;&quot;containerName&quot;&#41;.subscribe&#40;deleted -&gt; &#123;
390+
* if &#40;deleted&#41; &#123;
391+
* System.out.println&#40;&quot;Successfully deleted.&quot;&#41;;
392+
* &#125; else &#123;
393+
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
394+
* &#125;
395+
* &#125;&#41;;
396396
* </pre>
397397
* <!-- end com.azure.storage.blob.BlobServiceAsyncClient.deleteBlobContainerIfExists#String -->
398398
*
@@ -415,9 +415,13 @@ public Mono<Boolean> deleteBlobContainerIfExists(String containerName) {
415415
* <!-- src_embed com.azure.storage.blob.BlobServiceAsyncClient.deleteBlobContainerIfExistsWithResponse#String -->
416416
* <pre>
417417
* Context context = new Context&#40;&quot;Key&quot;, &quot;Value&quot;&#41;;
418-
* client.deleteBlobContainerIfExistsWithResponse&#40;&quot;containerName&quot;&#41;.switchIfEmpty&#40;Mono.&lt;Response&lt;Void&gt;&gt;empty&#40;&#41;
419-
* .doOnSuccess&#40;x -&gt; System.out.println&#40;&quot;Does not exist.&quot;&#41;&#41;&#41;.subscribe&#40;response -&gt;
420-
* System.out.printf&#40;&quot;Delete completed with status %d%n&quot;, response.getStatusCode&#40;&#41;&#41;&#41;;
418+
* client.deleteBlobContainerIfExistsWithResponse&#40;&quot;containerName&quot;&#41;.subscribe&#40;response -&gt; &#123;
419+
* if &#40;response.getStatusCode&#40;&#41; == 404&#41; &#123;
420+
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
421+
* &#125; else &#123;
422+
* System.out.println&#40;&quot;successfully deleted.&quot;&#41;;
423+
* &#125;
424+
* &#125;&#41;;
421425
* </pre>
422426
* <!-- end com.azure.storage.blob.BlobServiceAsyncClient.deleteBlobContainerIfExistsWithResponse#String -->
423427
*

sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,12 +1725,12 @@ public Mono<Boolean> deleteIfExists() {
17251725
* <!-- src_embed com.azure.storage.blob.specialized.BlobAsyncClientBase.deleteIfExistsWithResponse#DeleteSnapshotsOptionType-BlobRequestConditions -->
17261726
* <pre>
17271727
* client.deleteIfExistsWithResponse&#40;DeleteSnapshotsOptionType.INCLUDE, null&#41;.subscribe&#40;response -&gt; &#123;
1728-
* if &#40;response.getStatusCode&#40;&#41; == 404&#41; &#123;
1729-
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
1730-
* &#125; else &#123;
1731-
* System.out.println&#40;&quot;successfully deleted.&quot;&#41;;
1732-
* &#125;
1733-
* &#125;&#41;;
1728+
* if &#40;response.getStatusCode&#40;&#41; == 404&#41; &#123;
1729+
* System.out.println&#40;&quot;Does not exist.&quot;&#41;;
1730+
* &#125; else &#123;
1731+
* System.out.println&#40;&quot;successfully deleted.&quot;&#41;;
1732+
* &#125;
1733+
* &#125;&#41;;
17341734
* </pre>
17351735
* <!-- end com.azure.storage.blob.specialized.BlobAsyncClientBase.deleteIfExistsWithResponse#DeleteSnapshotsOptionType-BlobRequestConditions -->
17361736
*

sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -919,7 +919,7 @@ Mono<Response<PageList>> getPageRangesWithResponse(BlobRange blobRange, BlobRequ
919919
*
920920
* System.out.println&#40;&quot;Valid Page Ranges are:&quot;&#41;;
921921
* client.listPageRanges&#40;blobRange&#41;.subscribe&#40;rangeItem -&gt; System.out.printf&#40;&quot;Offset: %s, Length: %s%n&quot;,
922-
* rangeItem.getRange&#40;&#41;.getOffset&#40;&#41;, rangeItem.getRange&#40;&#41;.getLength&#40;&#41;&#41;&#41;;
922+
* rangeItem.getRange&#40;&#41;.getOffset&#40;&#41;, rangeItem.getRange&#40;&#41;.getLength&#40;&#41;&#41;&#41;;
923923
* </pre>
924924
* <!-- end com.azure.storage.blob.specialized.PageBlobAsyncClient.listPageRanges#BlobRange -->
925925
*
@@ -941,11 +941,11 @@ public PagedFlux<PageRangeItem> listPageRanges(BlobRange blobRange) {
941941
* <!-- src_embed com.azure.storage.blob.specialized.PageBlobAsyncClient.listPageRanges#ListPageRangesOptions -->
942942
* <pre>
943943
* ListPageRangesOptions options = new ListPageRangesOptions&#40;new BlobRange&#40;offset&#41;&#41;
944-
* .setMaxResultsPerPage&#40;1000&#41;.setRequestConditions&#40;new BlobRequestConditions&#40;&#41;.setLeaseId&#40;leaseId&#41;&#41;;
944+
* .setMaxResultsPerPage&#40;1000&#41;.setRequestConditions&#40;new BlobRequestConditions&#40;&#41;.setLeaseId&#40;leaseId&#41;&#41;;
945945
*
946946
* client.listPageRanges&#40;options&#41;
947-
* .subscribe&#40;rangeItem -&gt; System.out.printf&#40;&quot;Offset: %s, Length: %s%n&quot;, rangeItem.getRange&#40;&#41;.getOffset&#40;&#41;,
948-
* rangeItem.getRange&#40;&#41;.getLength&#40;&#41;&#41;&#41;;
947+
* .subscribe&#40;rangeItem -&gt; System.out.printf&#40;&quot;Offset: %s, Length: %s%n&quot;, rangeItem.getRange&#40;&#41;.getOffset&#40;&#41;,
948+
* rangeItem.getRange&#40;&#41;.getLength&#40;&#41;&#41;&#41;;
949949
* </pre>
950950
* <!-- end com.azure.storage.blob.specialized.PageBlobAsyncClient.listPageRanges#ListPageRangesOptions -->
951951
*
@@ -1149,12 +1149,12 @@ public PagedFlux<PageRangeItem> listPageRangesDiff(BlobRange blobRange, String p
11491149
* <!-- src_embed com.azure.storage.blob.specialized.PageBlobAsyncClient.listPageRangesDiff#ListPageRangesDiffOptions -->
11501150
* <pre>
11511151
* ListPageRangesDiffOptions options = new ListPageRangesDiffOptions&#40;new BlobRange&#40;offset&#41;, &quot;previous snapshot&quot;&#41;
1152-
* .setRequestConditions&#40;new BlobRequestConditions&#40;&#41;.setLeaseId&#40;leaseId&#41;&#41;
1153-
* .setMaxResultsPerPage&#40;1000&#41;;
1152+
* .setRequestConditions&#40;new BlobRequestConditions&#40;&#41;.setLeaseId&#40;leaseId&#41;&#41;
1153+
* .setMaxResultsPerPage&#40;1000&#41;;
11541154
*
11551155
* client.listPageRangesDiff&#40;options&#41;
1156-
* .subscribe&#40;rangeItem -&gt; System.out.printf&#40;&quot;Offset: %s, Length: %s, isClear: %s%n&quot;,
1157-
* rangeItem.getRange&#40;&#41;.getOffset&#40;&#41;, rangeItem.getRange&#40;&#41;.getLength&#40;&#41;, rangeItem.isClear&#40;&#41;&#41;&#41;;
1156+
* .subscribe&#40;rangeItem -&gt; System.out.printf&#40;&quot;Offset: %s, Length: %s, isClear: %s%n&quot;,
1157+
* rangeItem.getRange&#40;&#41;.getOffset&#40;&#41;, rangeItem.getRange&#40;&#41;.getLength&#40;&#41;, rangeItem.isClear&#40;&#41;&#41;&#41;;
11581158
* </pre>
11591159
* <!-- end com.azure.storage.blob.specialized.PageBlobAsyncClient.listPageRangesDiff#ListPageRangesDiffOptions -->
11601160
*

sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobClient.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,8 @@ public Response<PageList> getPageRangesWithResponse(BlobRange blobRange, BlobReq
697697
* <pre>
698698
* BlobRange blobRange = new BlobRange&#40;offset&#41;;
699699
* String prevSnapshot = &quot;previous snapshot&quot;;
700-
* PagedIterable<PageRangeItem> iterable = client.listPageRanges&#40;blobRange&#41;;
700+
* PagedIterable&lt;PageRangeItem&gt; iterable = client.listPageRanges&#40;blobRange&#41;;
701+
*
701702
* for &#40;PageRangeItem item : iterable&#41; &#123;
702703
* System.out.printf&#40;&quot;Offset: %s, Length: %s, isClear: %s%n&quot;, item.getRange&#40;&#41;.getOffset&#40;&#41;,
703704
* item.getRange&#40;&#41;.getLength&#40;&#41;, item.isClear&#40;&#41;&#41;;
@@ -721,17 +722,21 @@ public PagedIterable<PageRangeItem> listPageRanges(BlobRange blobRange) {
721722
* <p><strong>Code Samples</strong></p>
722723
*
723724
* <!-- src_embed com.azure.storage.blob.specialized.PageBlobClient.getPageRangesWithResponse#ListPageRangesOptions-Duration-Context -->
724-
* ListPageRangesOptions options = new ListPageRangesOptions&40;new BlobRange&40;offset&41;&41;
725-
* .setRequestConditions&40;new BlobRequestConditions&40;&41;.setLeaseId&40;leaseId&41;&41;
726-
* .setMaxResultsPerPage&40;1000&41;;
727-
* Context context = new Context&40;key, value&41;;
725+
* <pre>
726+
* ListPageRangesOptions options = new ListPageRangesOptions&#40;new BlobRange&#40;offset&#41;&#41;
727+
* .setRequestConditions&#40;new BlobRequestConditions&#40;&#41;.setLeaseId&#40;leaseId&#41;&#41;
728+
* .setMaxResultsPerPage&#40;1000&#41;;
729+
*
730+
* Context context = new Context&#40;key, value&#41;;
731+
*
728732
* PagedIterable&lt;PageRangeItem&gt; iter = client
729-
* .listPageRanges&40;options, timeout, context&41;;
730-
* System.out.println&40;&quot;Valid Page Ranges are:&quot;&41;;
731-
* for &40;PageRangeItem item : iter&41; &#123;
732-
* System.out.printf&40;&quot;Offset: %s, Length: %s, isClear: %s%n&quot;, item.getRange&40;&41;.getOffset&40;&41;,
733-
* item.getRange&40;&41;.getLength&40;&41;, item.isClear&40;&41;&41;;
734-
* &#125;
733+
* .listPageRanges&#40;options, timeout, context&#41;;
734+
*
735+
* System.out.println&#40;&quot;Valid Page Ranges are:&quot;&#41;;
736+
* for &#40;PageRangeItem item : iter&#41; &#123;
737+
* System.out.printf&#40;&quot;Offset: %s, Length: %s, isClear: %s%n&quot;, item.getRange&#40;&#41;.getOffset&#40;&#41;,
738+
* item.getRange&#40;&#41;.getLength&#40;&#41;, item.isClear&#40;&#41;&#41;;
739+
* &#125;
735740
* </pre>
736741
* <!-- end com.azure.storage.blob.specialized.PageBlobClient.getPageRangesWithResponse#ListPageRangesOptions-Duration-Context -->
737742
*
@@ -876,7 +881,7 @@ public PagedIterable<PageRangeItem> listPageRangesDiff(BlobRange blobRange, Stri
876881
*
877882
* Context context = new Context&#40;key, value&#41;;
878883
*
879-
* PagedIterable&lt;PageRangeItem&lg; iter = client
884+
* PagedIterable&lt;PageRangeItem&gt; iter = client
880885
* .listPageRangesDiff&#40;options, timeout, context&#41;;
881886
*
882887
* System.out.println&#40;&quot;Valid Page Ranges are:&quot;&#41;;

sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ServiceAPITest.groovy

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.azure.storage.blob.models.BlobServiceProperties
2020
import com.azure.storage.blob.models.BlobSignedIdentifier
2121
import com.azure.storage.blob.models.BlobStorageException
2222
import com.azure.storage.blob.models.CustomerProvidedKey
23+
import com.azure.storage.blob.models.GeoReplicationStatus
2324
import com.azure.storage.blob.models.ListBlobContainersOptions
2425
import com.azure.storage.blob.models.ParallelTransferOptions
2526
import com.azure.storage.blob.models.StaticWebsite
@@ -763,7 +764,14 @@ class ServiceAPITest extends APISpec {
763764
response.getHeaders().getValue("x-ms-request-id") != null
764765
response.getHeaders().getValue("Date") != null
765766
response.getValue().getGeoReplication().getStatus() != null
766-
response.getValue().getGeoReplication().getLastSyncTime() != null
767+
768+
// The LastSyncTime will return a DateTimeRfc1123 if the replication status is LIVE
769+
// but there are two other statuses, unavailable and bootstrap, which will return null.
770+
if (response.getValue().getGeoReplication().getStatus() == GeoReplicationStatus.LIVE) {
771+
assert response.getValue().getGeoReplication().getLastSyncTime() != null
772+
} else {
773+
assert response.getValue().getGeoReplication().getLastSyncTime() == null
774+
}
767775
}
768776

769777
def "Get stats min"() {

0 commit comments

Comments
 (0)