From eaf1a92e559c42bbeb9329ec61ab92252d75e032 Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Sun, 19 Jul 2020 22:34:11 -0700 Subject: [PATCH 1/4] add support for context passing --- .../azure-ai-formrecognizer/CHANGELOG.md | 1 + .../FormRecognizerAsyncClient.java | 49 +++++++++-- .../formrecognizer/FormRecognizerClient.java | 57 +++++++----- .../AdvancedDiffLabeledUnlabeledData.java | 5 +- ...rmRecognizerClientJavaDocCodeSnippets.java | 55 ++++++------ .../ai/formrecognizer/GetBoundingBoxes.java | 3 +- .../FormRecognizerClientTest.java | 87 ++++++++++--------- .../FormTrainingClientTest.java | 2 +- 8 files changed, 157 insertions(+), 102 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index f5b4e9ff48ade..e03f4a81fde6a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 1.0.0-beta.5 (Unreleased) +- Add support for context passing. ### Key Bug Fixes - Fixed `getFields()` to preserve service side ordering of fields. diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java index 6e9dc5a0a9629..f3cbb20d2f62b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java @@ -22,6 +22,7 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpPipeline; import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.Context; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.LongRunningOperationStatus; @@ -118,13 +119,20 @@ public final class FormRecognizerAsyncClient { @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> beginRecognizeCustomFormsFromUrl(String formUrl, String modelId, RecognizeOptions recognizeOptions) { + return beginRecognizeCustomFormsFromUrl(formUrl, modelId, recognizeOptions, Context.NONE); + } + + PollerFlux> + beginRecognizeCustomFormsFromUrl(String formUrl, String modelId, RecognizeOptions recognizeOptions, + Context context) { try { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux>( recognizeOptions.getPollInterval(), analyzeFormActivationOperation(formUrl, modelId, recognizeOptions.isIncludeFieldElements()), createAnalyzeFormPollOperation(modelId), - (activationResponse, context) -> Mono.error(new RuntimeException("Cancellation is not supported")), + (activationResponse, pollingContext) -> + Mono.error(new RuntimeException("Cancellation is not supported")), fetchAnalyzeFormResultOperation(modelId, recognizeOptions.isIncludeFieldElements())); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -187,6 +195,12 @@ public final class FormRecognizerAsyncClient { public PollerFlux> beginRecognizeCustomForms(Flux form, long length, String modelId, RecognizeOptions recognizeOptions) { + return beginRecognizeCustomForms(form, length, modelId, recognizeOptions, Context.NONE); + } + + PollerFlux> + beginRecognizeCustomForms(Flux form, long length, String modelId, + RecognizeOptions recognizeOptions, Context context) { try { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux>( @@ -195,7 +209,8 @@ public final class FormRecognizerAsyncClient { recognizeOptions.getContentType(), recognizeOptions.isIncludeFieldElements()), createAnalyzeFormPollOperation(modelId), - (activationResponse, context) -> Mono.error(new RuntimeException("Cancellation is not supported")), + (activationResponse, pollingContext) -> + Mono.error(new RuntimeException("Cancellation is not supported")), fetchAnalyzeFormResultOperation(modelId, recognizeOptions.isIncludeFieldElements())); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -245,13 +260,18 @@ public PollerFlux> beginRecognizeContentFromUrl( @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> beginRecognizeContentFromUrl(String formUrl, RecognizeOptions recognizeOptions) { + return beginRecognizeContentFromUrl(formUrl, recognizeOptions, Context.NONE); + } + + PollerFlux> + beginRecognizeContentFromUrl(String formUrl, RecognizeOptions recognizeOptions, Context context) { try { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux>( recognizeOptions.getPollInterval(), contentAnalyzeActivationOperation(formUrl), extractContentPollOperation(), - (activationResponse, context) -> + (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), fetchExtractContentResult()); } catch (RuntimeException ex) { @@ -310,20 +330,24 @@ public PollerFlux> beginRecognizeContent( @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> beginRecognizeContent(Flux form, long length, RecognizeOptions recognizeOptions) { + return beginRecognizeContent(form, length, recognizeOptions, Context.NONE); + } + + PollerFlux> beginRecognizeContent(Flux form, long length, + RecognizeOptions recognizeOptions, Context context) { try { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux<>( recognizeOptions.getPollInterval(), contentStreamActivationOperation(form, length, recognizeOptions.getContentType()), extractContentPollOperation(), - (activationResponse, context) -> + (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), fetchExtractContentResult()); } catch (RuntimeException ex) { return PollerFlux.error(ex); } } - /** * Recognizes receipt data using optical character recognition (OCR) and a prebuilt receipt trained * model. @@ -370,13 +394,18 @@ public PollerFlux> beginRecognizeContent(Flux> beginRecognizeReceiptsFromUrl(String receiptUrl, RecognizeOptions recognizeOptions) { + return beginRecognizeReceiptsFromUrl(receiptUrl, recognizeOptions, Context.NONE); + } + + PollerFlux> + beginRecognizeReceiptsFromUrl(String receiptUrl, RecognizeOptions recognizeOptions, Context context) { try { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux>( recognizeOptions.getPollInterval(), receiptAnalyzeActivationOperation(receiptUrl, recognizeOptions.isIncludeFieldElements()), extractReceiptPollOperation(), - (activationResponse, context) -> monoError(logger, + (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), fetchExtractReceiptResult(recognizeOptions.isIncludeFieldElements())); } catch (RuntimeException ex) { @@ -439,6 +468,12 @@ public PollerFlux> beginRecognizeReceipts( @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> beginRecognizeReceipts(Flux receipt, long length, RecognizeOptions recognizeOptions) { + return beginRecognizeReceipts(receipt, length, recognizeOptions, Context.NONE); + } + + PollerFlux> + beginRecognizeReceipts(Flux receipt, long length, RecognizeOptions recognizeOptions, + Context context) { try { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux<>( @@ -446,7 +481,7 @@ public PollerFlux> beginRecognizeReceipts( receiptStreamActivationOperation(receipt, length, recognizeOptions.getContentType(), recognizeOptions.isIncludeFieldElements()), extractReceiptPollOperation(), - (activationResponse, context) -> monoError(logger, + (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), fetchExtractReceiptResult(recognizeOptions.isIncludeFieldElements())); } catch (RuntimeException ex) { diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java index be8c2332fc80e..f47b2a8aa0e09 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java @@ -14,6 +14,7 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; import com.azure.core.annotation.ServiceMethod; +import com.azure.core.util.Context; import com.azure.core.util.polling.SyncPoller; import reactor.core.publisher.Flux; @@ -66,7 +67,7 @@ public final class FormRecognizerClient { @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeCustomFormsFromUrl(String formUrl, String modelId) { - return beginRecognizeCustomFormsFromUrl(formUrl, modelId, null); + return beginRecognizeCustomFormsFromUrl(formUrl, modelId, null, Context.NONE); } /** @@ -76,12 +77,13 @@ public final class FormRecognizerClient { * error message indicating absence of cancellation support

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomFormsFromUrl#string-string-recognizeOptions} + * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomFormsFromUrl#string-string-recognizeOptions-Context} * * @param formUrl The source URL to the input form. * @param modelId The UUID string format custom trained model Id to be used. * @param recognizeOptions The additional configurable {@link RecognizeOptions options} that may be passed when * recognizing custom form. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} to poll the progress of the recognize custom form operation until it has completed, * has failed, or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. @@ -91,8 +93,9 @@ public final class FormRecognizerClient { */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> - beginRecognizeCustomFormsFromUrl(String formUrl, String modelId, RecognizeOptions recognizeOptions) { - return client.beginRecognizeCustomFormsFromUrl(formUrl, modelId, recognizeOptions).getSyncPoller(); + beginRecognizeCustomFormsFromUrl(String formUrl, String modelId, RecognizeOptions recognizeOptions, + Context context) { + return client.beginRecognizeCustomFormsFromUrl(formUrl, modelId, recognizeOptions, context).getSyncPoller(); } /** @@ -117,7 +120,7 @@ public final class FormRecognizerClient { @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeCustomForms(InputStream form, long length, String modelId) { - return beginRecognizeCustomForms(form, length, modelId, null); + return beginRecognizeCustomForms(form, length, modelId, null, Context.NONE); } /** @@ -127,13 +130,14 @@ public final class FormRecognizerClient { * error message indicating absence of cancellation support.

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomForms#InputStream-long-string-recognizeOptions} + * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomForms#InputStream-long-string-recognizeOptions-Context} * * @param form The data of the form to recognize form information from. * @param length The exact length of the data. * @param modelId The UUID string format custom trained model Id to be used. * @param recognizeOptions The additional configurable {@link RecognizeOptions options} that may be passed when * recognizing custom form. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} that polls the recognize custom form operation until it has completed, * has failed, or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. @@ -143,9 +147,10 @@ public final class FormRecognizerClient { */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> - beginRecognizeCustomForms(InputStream form, long length, String modelId, RecognizeOptions recognizeOptions) { + beginRecognizeCustomForms(InputStream form, long length, String modelId, RecognizeOptions recognizeOptions, + Context context) { Flux buffer = Utility.toFluxByteBuffer(form); - return client.beginRecognizeCustomForms(buffer, length, modelId, recognizeOptions).getSyncPoller(); + return client.beginRecognizeCustomForms(buffer, length, modelId, recognizeOptions, context).getSyncPoller(); } /** @@ -166,7 +171,7 @@ public final class FormRecognizerClient { */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeContentFromUrl(String formUrl) { - return beginRecognizeContentFromUrl(formUrl, null); + return beginRecognizeContentFromUrl(formUrl, null, Context.NONE); } /** @@ -175,11 +180,12 @@ public SyncPoller> beginRecognizeContentFromUrl( * error message indicating absence of cancellation support.

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContentFromUrl#string-recognizeOptions} + * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContentFromUrl#string-recognizeOptions-Context} * * @param formUrl The source URL to the input form. * @param recognizeOptions The additional configurable {@link RecognizeOptions options} that may be passed when * recognizing content/layout on a form. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} that polls the recognize layout operation until it has completed, has * failed, or has been cancelled. The completed operation returns a List of {@link FormPage}. @@ -189,8 +195,8 @@ public SyncPoller> beginRecognizeContentFromUrl( */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> - beginRecognizeContentFromUrl(String formUrl, RecognizeOptions recognizeOptions) { - return client.beginRecognizeContentFromUrl(formUrl, recognizeOptions).getSyncPoller(); + beginRecognizeContentFromUrl(String formUrl, RecognizeOptions recognizeOptions, Context context) { + return client.beginRecognizeContentFromUrl(formUrl, recognizeOptions, context).getSyncPoller(); } /** @@ -213,7 +219,7 @@ public SyncPoller> beginRecognizeContentFromUrl( @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeContent(InputStream form, long length) { - return beginRecognizeContent(form, length, null); + return beginRecognizeContent(form, length, null, Context.NONE); } /** @@ -222,13 +228,14 @@ public SyncPoller> beginRecognizeContentFromUrl( * error message indicating absence of cancellation support

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContent#InputStream-long-recognizeOptions} + * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContent#InputStream-long-recognizeOptions-Context} * * @param form The data of the form to recognize content information from. * @param length The exact length of the data. * @param recognizeOptions The additional configurable {@link RecognizeOptions options} that may be passed when * analyzing a receipt. The configurable {@code RecognizeOptions options} that may be passed when recognizing * content on a form. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} that polls the recognize content operation until it has completed, * has failed, or has been cancelled. The completed operation returns a List of {@link FormPage}. @@ -238,9 +245,9 @@ public SyncPoller> beginRecognizeContentFromUrl( */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeContent(InputStream form, long length, - RecognizeOptions recognizeOptions) { + RecognizeOptions recognizeOptions, Context context) { Flux buffer = Utility.toFluxByteBuffer(form); - return client.beginRecognizeContent(buffer, length, recognizeOptions).getSyncPoller(); + return client.beginRecognizeContent(buffer, length, recognizeOptions, context).getSyncPoller(); } /** @@ -263,7 +270,7 @@ public SyncPoller> beginRecognizeContent(InputSt */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeReceiptsFromUrl(String receiptUrl) { - return beginRecognizeReceiptsFromUrl(receiptUrl, null); + return beginRecognizeReceiptsFromUrl(receiptUrl, null, Context.NONE); } /** @@ -273,11 +280,12 @@ public SyncPoller> beginRecognizeReceiptsF * error message indicating absence of cancellation support

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceiptsFromUrl#string-recognizeOptions} + * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceiptsFromUrl#string-recognizeOptions-Context} * * @param receiptUrl The source URL to the input receipt. * @param recognizeOptions The additional configurable {@link RecognizeOptions options} that may be passed when * analyzing a receipt. Include text lines and element references in the result. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} to poll the progress of the recognize receipt operation until it has completed, * has failed, or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. @@ -287,8 +295,8 @@ public SyncPoller> beginRecognizeReceiptsF */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> - beginRecognizeReceiptsFromUrl(String receiptUrl, RecognizeOptions recognizeOptions) { - return client.beginRecognizeReceiptsFromUrl(receiptUrl, recognizeOptions).getSyncPoller(); + beginRecognizeReceiptsFromUrl(String receiptUrl, RecognizeOptions recognizeOptions, Context context) { + return client.beginRecognizeReceiptsFromUrl(receiptUrl, recognizeOptions, context).getSyncPoller(); } /** @@ -313,7 +321,7 @@ public SyncPoller> beginRecognizeReceiptsF @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeReceipts(InputStream receipt, long length) { - return beginRecognizeReceipts(receipt, length, null); + return beginRecognizeReceipts(receipt, length, null, Context.NONE); } /** @@ -324,12 +332,13 @@ public SyncPoller> beginRecognizeReceiptsF * See here for fields found on a receipt. * *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceipts#InputStream-long-recognizeOptions} + * {@codesnippet com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceipts#InputStream-long-recognizeOptions-Context} * * @param receipt The data of the receipt to recognize receipt information from. * @param length The exact length of the data. * @param recognizeOptions The additional configurable {@link RecognizeOptions options} that may be passed when * analyzing a receipt. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} that polls the recognize receipt operation until it has completed, has failed, * or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. @@ -339,8 +348,8 @@ public SyncPoller> beginRecognizeReceiptsF */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> - beginRecognizeReceipts(InputStream receipt, long length, RecognizeOptions recognizeOptions) { + beginRecognizeReceipts(InputStream receipt, long length, RecognizeOptions recognizeOptions, Context context) { Flux buffer = Utility.toFluxByteBuffer(receipt); - return client.beginRecognizeReceipts(buffer, length, recognizeOptions).getSyncPoller(); + return client.beginRecognizeReceipts(buffer, length, recognizeOptions, context).getSyncPoller(); } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java index 972394c3a2884..cd98e6575756d 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java @@ -7,6 +7,7 @@ import com.azure.ai.formrecognizer.models.RecognizeOptions; import com.azure.ai.formrecognizer.models.RecognizedForm; import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.Context; import java.io.File; import java.io.FileInputStream; @@ -53,7 +54,7 @@ public static void main(String[] args) throws IOException { new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF) .setIncludeFieldElements(true) - .setPollInterval(Duration.ofSeconds(5))) + .setPollInterval(Duration.ofSeconds(5)), Context.NONE) .getFinalResult(); List formsWithUnlabeledModel = @@ -62,7 +63,7 @@ public static void main(String[] args) throws IOException { new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF) .setIncludeFieldElements(true) - .setPollInterval(Duration.ofSeconds(5))) + .setPollInterval(Duration.ofSeconds(5)), Context.NONE) .getFinalResult(); System.out.println("--------Recognizing forms with labeled custom model--------"); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java index ff6c25bf2bf1f..0f3279e4f2def 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java @@ -12,6 +12,7 @@ import com.azure.core.credential.AzureKeyCredential; import com.azure.core.http.HttpPipeline; import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.util.Context; import java.io.ByteArrayInputStream; import java.io.File; @@ -82,19 +83,18 @@ public void beginRecognizeCustomFormsFromUrl() { } /** - * Code snippet for {@link FormRecognizerClient#beginRecognizeCustomFormsFromUrl(String, String, RecognizeOptions)} + * Code snippet for {@link FormRecognizerClient#beginRecognizeCustomFormsFromUrl(String, String, RecognizeOptions, Context)} */ public void beginRecognizeCustomFormsFromUrlWithOptions() { - // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomFormsFromUrl#string-string-recognizeOptions + // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomFormsFromUrl#string-string-recognizeOptions-Context String analyzeFilePath = "{file_source_url}"; String modelId = "{model_id}"; boolean includeFieldElements = true; formRecognizerClient.beginRecognizeCustomFormsFromUrl(analyzeFilePath, modelId, new RecognizeOptions() - .setContentType(FormContentType.IMAGE_JPEG) .setIncludeFieldElements(includeFieldElements) - .setPollInterval(Duration.ofSeconds(10))) + .setPollInterval(Duration.ofSeconds(10)), Context.NONE) .getFinalResult() .stream() .map(RecognizedForm::getFields) @@ -103,7 +103,7 @@ public void beginRecognizeCustomFormsFromUrlWithOptions() { System.out.printf("Field value: %s%n", formField.getValue()); System.out.printf("Confidence score: %.2f%n", formField.getConfidence()); })); - // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomFormsFromUrl#string-string-recognizeOptions + // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomFormsFromUrl#string-string-recognizeOptions-Context } /** @@ -134,12 +134,12 @@ public void beginRecognizeCustomForms() throws IOException { /** * Code snippet for - * {@link FormRecognizerClient#beginRecognizeCustomForms(InputStream, long, String, RecognizeOptions)} with options + * {@link FormRecognizerClient#beginRecognizeCustomForms(InputStream, long, String, RecognizeOptions, Context)} with options * * @throws IOException Exception thrown when there is an error in reading all the bytes from the File. */ public void beginRecognizeCustomFormsWithOptions() throws IOException { - // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomForms#InputStream-long-string-recognizeOptions + // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomForms#InputStream-long-string-recognizeOptions-Context File form = new File("{local/file_path/fileName.jpg}"); String modelId = "{custom_trained_model_id}"; boolean includeFieldElements = true; @@ -150,7 +150,7 @@ public void beginRecognizeCustomFormsWithOptions() throws IOException { new RecognizeOptions() .setContentType(FormContentType.IMAGE_JPEG) .setIncludeFieldElements(includeFieldElements) - .setPollInterval(Duration.ofSeconds(10))) + .setPollInterval(Duration.ofSeconds(10)), Context.NONE) .getFinalResult() .stream() .map(RecognizedForm::getFields) @@ -160,7 +160,7 @@ public void beginRecognizeCustomFormsWithOptions() throws IOException { System.out.printf("Confidence score: %.2f%n", formField.getConfidence()); })); } - // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomForms#InputStream-long-string-recognizeOptions + // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeCustomForms#InputStream-long-string-recognizeOptions-Context } // Recognize Content @@ -187,15 +187,16 @@ public void beginRecognizeContentFromUrl() { } /** - * Code snippet for {@link FormRecognizerClient#beginRecognizeContentFromUrl(String, RecognizeOptions)} with + * Code snippet for {@link FormRecognizerClient#beginRecognizeContentFromUrl(String, RecognizeOptions, Context)} with * options. */ public void beginRecognizeContentFromUrlWithOptions() { - // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContentFromUrl#string-recognizeOptions + // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContentFromUrl#string-recognizeOptions-Context String formPath = "{file_source_url}"; formRecognizerClient.beginRecognizeContentFromUrl(formPath, new RecognizeOptions() - .setPollInterval(Duration.ofSeconds(5))) + .setPollInterval(Duration.ofSeconds(5)) + .setIncludeFieldElements(true), Context.NONE) .getFinalResult() .forEach(formPage -> { System.out.printf("Page Angle: %s%n", formPage.getTextAngle()); @@ -207,7 +208,7 @@ public void beginRecognizeContentFromUrlWithOptions() { .flatMap(formTable -> formTable.getCells().stream()) .forEach(recognizedTableCell -> System.out.printf("%s ", recognizedTableCell.getText())); }); - // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContentFromUrl#string-recognizeOptions + // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContentFromUrl#string-recognizeOptions-Context } /** @@ -237,20 +238,21 @@ public void beginRecognizeContent() throws IOException { } /** - * Code snippet for {@link FormRecognizerClient#beginRecognizeContent(InputStream, long, RecognizeOptions)} with + * Code snippet for {@link FormRecognizerClient#beginRecognizeContent(InputStream, long, RecognizeOptions, Context)} with * options. * * @throws IOException Exception thrown when there is an error in reading all the bytes from the File. */ public void beginRecognizeContentWithOptions() throws IOException { - // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContent#InputStream-long-recognizeOptions + // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContent#InputStream-long-recognizeOptions-Context File form = new File("{file_source_url}"); byte[] fileContent = Files.readAllBytes(form.toPath()); try (InputStream targetStream = new ByteArrayInputStream(fileContent)) { for (FormPage formPage : formRecognizerClient.beginRecognizeContent(targetStream, form.length(), new RecognizeOptions() - .setPollInterval(Duration.ofSeconds(5))) + .setPollInterval(Duration.ofSeconds(5)) + .setIncludeFieldElements(true), Context.NONE) .getFinalResult()) { System.out.printf("Page Angle: %s%n", formPage.getTextAngle()); System.out.printf("Page Dimension unit: %s%n", formPage.getUnit()); @@ -262,7 +264,7 @@ public void beginRecognizeContentWithOptions() throws IOException { .forEach(recognizedTableCell -> System.out.printf("%s ", recognizedTableCell.getText())); } } - // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContent#InputStream-long-recognizeOptions + // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeContent#InputStream-long-recognizeOptions-Context } // Recognize Receipts @@ -330,12 +332,15 @@ public void beginRecognizeReceiptsFromUrl() { } /** - * Code snippet for {@link FormRecognizerClient#beginRecognizeReceiptsFromUrl(String, RecognizeOptions)} + * Code snippet for {@link FormRecognizerClient#beginRecognizeReceiptsFromUrl(String, RecognizeOptions, Context)} */ public void beginRecognizeReceiptsFromUrlWithOptions() { - // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceiptsFromUrl#string-recognizeOptions + // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceiptsFromUrl#string-recognizeOptions-Context String receiptUrl = "{receipt_url}"; - formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl).getFinalResult() + formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl, + new RecognizeOptions() + .setPollInterval(Duration.ofSeconds(5)) + .setIncludeFieldElements(true), Context.NONE).getFinalResult() .forEach(recognizedReceipt -> { Map> recognizedFields = recognizedReceipt.getFields(); FormField merchantNameField = recognizedFields.get("MerchantName"); @@ -385,7 +390,7 @@ public void beginRecognizeReceiptsFromUrlWithOptions() { } } }); - // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceiptsFromUrl#string-recognizeOptions + // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceiptsFromUrl#string-recognizeOptions-Context } /** @@ -454,14 +459,14 @@ public void beginRecognizeReceipts() throws IOException { } /** - * Code snippet for {@link FormRecognizerClient#beginRecognizeReceipts(InputStream, long, RecognizeOptions)} + * Code snippet for {@link FormRecognizerClient#beginRecognizeReceipts(InputStream, long, RecognizeOptions, Context)} * with options * * @throws IOException Exception thrown when there is an error in reading all the bytes from the File. */ public void beginRecognizeReceiptsWithOptions() throws IOException { - // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceipts#InputStream-long-recognizeOptions + // BEGIN: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceipts#InputStream-long-recognizeOptions-Context File receipt = new File("{local/file_path/fileName.jpg}"); boolean includeFieldElements = true; byte[] fileContent = Files.readAllBytes(receipt.toPath()); @@ -470,7 +475,7 @@ public void beginRecognizeReceiptsWithOptions() throws IOException { new RecognizeOptions() .setContentType(FormContentType.IMAGE_JPEG) .setIncludeFieldElements(includeFieldElements) - .setPollInterval(Duration.ofSeconds(5))) + .setPollInterval(Duration.ofSeconds(5)), Context.NONE) .getFinalResult()) { Map> recognizedFields = recognizedForm.getFields(); FormField merchantNameField = recognizedFields.get("MerchantName"); @@ -518,6 +523,6 @@ public void beginRecognizeReceiptsWithOptions() throws IOException { } } } - // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceipts#InputStream-long-recognizeOptions + // END: com.azure.ai.formrecognizer.FormRecognizerClient.beginRecognizeReceipts#InputStream-long-recognizeOptions-Context } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java index b4f881cd7aabc..4949eb1af09b2 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java @@ -10,6 +10,7 @@ import com.azure.ai.formrecognizer.models.RecognizeOptions; import com.azure.ai.formrecognizer.models.RecognizedForm; import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.Context; import com.azure.core.util.polling.SyncPoller; import java.util.List; @@ -36,7 +37,7 @@ public static void main(String[] args) { String formUrl = "{form_url}"; SyncPoller> recognizeFormPoller = client.beginRecognizeCustomFormsFromUrl(formUrl, modelId, new RecognizeOptions() - .setIncludeFieldElements(true)); + .setIncludeFieldElements(true), Context.NONE); List recognizedForms = recognizeFormPoller.getFinalResult(); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java index ca8741c86814d..9436818c53e7f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java @@ -14,6 +14,7 @@ import com.azure.ai.formrecognizer.training.FormTrainingClient; import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpClient; +import com.azure.core.util.Context; import com.azure.core.util.polling.SyncPoller; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -64,7 +65,7 @@ public void recognizeReceiptData(HttpClient httpClient, FormRecognizerServiceVer receiptDataRunner((data, dataLength) -> { SyncPoller> syncPoller = client.beginRecognizeReceipts(data, dataLength, new RecognizeOptions() - .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode)); + .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateReceiptResultData(syncPoller.getFinalResult(), false); }); @@ -92,7 +93,7 @@ public void recognizeReceiptDataWithContentTypeAutoDetection(HttpClient httpClie client = getFormRecognizerClient(httpClient, serviceVersion); SyncPoller> syncPoller = client.beginRecognizeReceipts( getContentDetectionFileData(RECEIPT_LOCAL_URL), RECEIPT_FILE_LENGTH, new RecognizeOptions() - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateReceiptResultData(syncPoller.getFinalResult(), false); } @@ -108,7 +109,7 @@ public void recognizeReceiptDataIncludeFieldElements(HttpClient httpClient, Form receiptDataRunnerFieldElements((data, includeFieldElements) -> { SyncPoller> syncPoller = client.beginRecognizeReceipts( data, RECEIPT_FILE_LENGTH, new RecognizeOptions().setContentType(FormContentType.IMAGE_JPEG) - .setIncludeFieldElements(includeFieldElements).setPollInterval(durationTestMode)); + .setIncludeFieldElements(includeFieldElements).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateReceiptResultData(syncPoller.getFinalResult(), includeFieldElements); }); @@ -126,7 +127,7 @@ public void recognizeReceiptDataWithPngFile(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeReceipts(data, RECEIPT_PNG_FILE_LENGTH, new RecognizeOptions().setContentType( FormContentType.IMAGE_PNG).setIncludeFieldElements(includeFieldElements) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateReceiptResultData(syncPoller.getFinalResult(), includeFieldElements); }); @@ -143,7 +144,7 @@ public void recognizeReceiptDataWithBlankPdf(HttpClient httpClient, blankPdfDataRunner((data, dataLength) -> { SyncPoller> syncPoller = client.beginRecognizeReceipts( data, dataLength, new RecognizeOptions().setContentType(FormContentType.APPLICATION_PDF) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateBlankPdfResultData(syncPoller.getFinalResult()); }); @@ -156,7 +157,7 @@ public void recognizeReceiptFromDataMultiPage(HttpClient httpClient, FormRecogni multipageFromDataRunner((data, dataLength) -> { SyncPoller> syncPoller = client.beginRecognizeReceipts( data, dataLength, new RecognizeOptions().setContentType(FormContentType.APPLICATION_PDF) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateMultipageReceiptData(syncPoller.getFinalResult()); }); @@ -188,7 +189,7 @@ public void recognizeReceiptInvalidSourceUrl(HttpClient httpClient, FormRecogniz client = getFormRecognizerClient(httpClient, serviceVersion); invalidSourceUrlRunner((sourceUrl) -> assertThrows(HttpResponseException.class, () -> client.beginRecognizeReceiptsFromUrl(sourceUrl, - new RecognizeOptions().setPollInterval(durationTestMode)))); + new RecognizeOptions().setPollInterval(durationTestMode), Context.NONE))); } /** @@ -203,7 +204,7 @@ public void recognizeReceiptFromUrlIncludeFieldElements(HttpClient httpClient, receiptSourceUrlRunnerFieldElements((sourceUrl, includeFieldElements) -> { SyncPoller> syncPoller = client.beginRecognizeReceiptsFromUrl( sourceUrl, new RecognizeOptions().setIncludeFieldElements(includeFieldElements) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateReceiptResultData(syncPoller.getFinalResult(), includeFieldElements); }); @@ -222,7 +223,7 @@ public void recognizeReceiptSourceUrlWithPngFile(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeReceiptsFromUrl( sourceUrl, new RecognizeOptions().setIncludeFieldElements(includeFieldElements) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateReceiptResultData(syncPoller.getFinalResult(), includeFieldElements); }); @@ -234,7 +235,7 @@ public void recognizeReceiptFromUrlMultiPage(HttpClient httpClient, FormRecogniz client = getFormRecognizerClient(httpClient, serviceVersion); multipageFromUrlRunner(receiptUrl -> { SyncPoller> syncPoller = client.beginRecognizeReceiptsFromUrl( - receiptUrl, new RecognizeOptions().setPollInterval(durationTestMode)); + receiptUrl, new RecognizeOptions().setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateMultipageReceiptData(syncPoller.getFinalResult()); }); @@ -254,7 +255,7 @@ public void recognizeContent(HttpClient httpClient, FormRecognizerServiceVersion contentFromDataRunner((data, dataLength) -> { SyncPoller> syncPoller = client.beginRecognizeContent(data, dataLength, new RecognizeOptions() - .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode)); + .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateContentResultData(syncPoller.getFinalResult(), false); }); @@ -269,7 +270,7 @@ public void recognizeContentResultWithNullData(HttpClient httpClient, FormRecogn client = getFormRecognizerClient(httpClient, serviceVersion); assertThrows(RuntimeException.class, () -> client.beginRecognizeContent(null, LAYOUT_FILE_LENGTH, new RecognizeOptions() - .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode))); + .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode), Context.NONE)); } /** @@ -282,7 +283,7 @@ public void recognizeContentResultWithContentTypeAutoDetection(HttpClient httpCl client = getFormRecognizerClient(httpClient, serviceVersion); SyncPoller> syncPoller = client.beginRecognizeContent( getContentDetectionFileData(LAYOUT_LOCAL_URL), LAYOUT_FILE_LENGTH, new RecognizeOptions() - .setContentType(null).setPollInterval(durationTestMode)); + .setContentType(null).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateContentResultData(syncPoller.getFinalResult(), false); @@ -299,7 +300,7 @@ public void recognizeContentResultWithBlankPdf(HttpClient httpClient, FormRecogn blankPdfDataRunner((data, dataLength) -> { SyncPoller> syncPoller = client.beginRecognizeContent(data, dataLength, new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateContentResultData(syncPoller.getFinalResult(), false); }); @@ -312,7 +313,7 @@ public void recognizeContentFromDataMultiPage(HttpClient httpClient, FormRecogni multipageFromDataRunner((data, dataLength) -> { SyncPoller> syncPoller = client.beginRecognizeContent(data, dataLength, new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateContentResultData(syncPoller.getFinalResult(), false); }); @@ -340,7 +341,7 @@ public void recognizeContentFromUrlWithPdf(HttpClient httpClient, FormRecognizer client = getFormRecognizerClient(httpClient, serviceVersion); pdfContentFromUrlRunner(sourceUrl -> { SyncPoller> syncPoller = client.beginRecognizeContentFromUrl(sourceUrl, - new RecognizeOptions().setPollInterval(durationTestMode)); + new RecognizeOptions().setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateContentResultData(syncPoller.getFinalResult(), false); }); @@ -356,7 +357,7 @@ public void recognizeContentInvalidSourceUrl(HttpClient httpClient, FormRecogniz invalidSourceUrlRunner((invalidSourceUrl) -> assertThrows( HttpResponseException.class, () -> client.beginRecognizeContentFromUrl(invalidSourceUrl, - new RecognizeOptions().setPollInterval(durationTestMode)))); + new RecognizeOptions().setPollInterval(durationTestMode), Context.NONE))); } @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) @@ -365,7 +366,8 @@ public void recognizeContentFromUrlMultiPage(HttpClient httpClient, FormRecogniz client = getFormRecognizerClient(httpClient, serviceVersion); multipageFromUrlRunner((formUrl) -> { SyncPoller> syncPoller = - client.beginRecognizeContentFromUrl(formUrl, new RecognizeOptions().setPollInterval(durationTestMode)); + client.beginRecognizeContentFromUrl(formUrl, new RecognizeOptions().setPollInterval(durationTestMode), + Context.NONE); syncPoller.waitForCompletion(); validateContentResultData(syncPoller.getFinalResult(), false); }); @@ -392,7 +394,7 @@ public void recognizeCustomFormLabeledData(HttpClient httpClient, FormRecognizer SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF).setIncludeFieldElements(true) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), true, true); })); @@ -415,7 +417,7 @@ public void recognizeCustomFormLabeledDataWithJpgContentType(HttpClient httpClie SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode)); + .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, true); })); @@ -437,7 +439,7 @@ public void recognizeCustomFormLabeledDataWithBlankPdfContentType(HttpClient htt SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, true); })); @@ -460,7 +462,7 @@ public void recognizeCustomFormLabeledDataExcludeFieldElements(HttpClient httpCl SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, true); })); @@ -484,7 +486,7 @@ public void recognizeCustomFormLabeledDataWithNullFormData(HttpClient httpClient assertThrows(RuntimeException.class, () -> client.beginRecognizeCustomForms( (InputStream) null, dataLength, syncPoller.getFinalResult().getModelId(), new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF).setIncludeFieldElements(true) - .setPollInterval(durationTestMode))); + .setPollInterval(durationTestMode), Context.NONE)); }) ); } @@ -501,7 +503,7 @@ public void recognizeCustomFormLabeledDataWithNullModelId(HttpClient httpClient, Exception ex = assertThrows(RuntimeException.class, () -> client.beginRecognizeCustomForms( data, dataLength, null, new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF).setIncludeFieldElements(true) - .setPollInterval(durationTestMode))); + .setPollInterval(durationTestMode), Context.NONE)); assertEquals(EXPECTED_MODEL_ID_IS_REQUIRED_EXCEPTION_MESSAGE, ex.getMessage()); }); } @@ -519,7 +521,7 @@ public void recognizeCustomFormLabeledDataWithEmptyModelId(HttpClient httpClient Exception ex = assertThrows(RuntimeException.class, () -> client.beginRecognizeCustomForms( data, dataLength, "", new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF).setIncludeFieldElements(true) - .setPollInterval(durationTestMode))); + .setPollInterval(durationTestMode), Context.NONE)); assertEquals(EXPECTED_INVALID_UUID_EXCEPTION_MESSAGE, ex.getMessage()); }); } @@ -537,7 +539,8 @@ public void recognizeCustomFormInvalidStatus(HttpClient httpClient, FormRecogniz CustomFormModel createdModel = syncPoller.getFinalResult(); FormRecognizerException formRecognizerException = assertThrows(FormRecognizerException.class, () -> client.beginRecognizeCustomFormsFromUrl(invalidSourceUrl, - createdModel.getModelId(), new RecognizeOptions().setPollInterval(durationTestMode)).getFinalResult()); + createdModel.getModelId(), new RecognizeOptions().setPollInterval(durationTestMode), + Context.NONE).getFinalResult()); ErrorInformation errorInformation = formRecognizerException.getErrorInformation().get(0); // TODO: Service bug https://github.com/Azure/azure-sdk-for-java/issues/12046 // assertEquals(EXPECTED_INVALID_URL_ERROR_CODE, errorInformation.getCode()); @@ -564,7 +567,7 @@ public void recognizeCustomFormLabeledDataWithContentTypeAutoDetection(HttpClien SyncPoller> syncPoller = client.beginRecognizeCustomForms( getContentDetectionFileData(FORM_LOCAL_URL), CUSTOM_FORM_FILE_LENGTH, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setIncludeFieldElements(true).setPollInterval(durationTestMode)); + .setIncludeFieldElements(true).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), true, true); }); @@ -583,7 +586,7 @@ public void recognizeCustomFormMultiPageLabeled(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateMultiPageDataLabeled(syncPoller.getFinalResult()); })); @@ -607,7 +610,7 @@ public void recognizeCustomFormUnlabeledData(HttpClient httpClient, FormRecogniz SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, false); })); @@ -631,7 +634,7 @@ public void recognizeCustomFormUnlabeledDataIncludeFieldElements(HttpClient http SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() .setContentType(FormContentType.APPLICATION_PDF).setIncludeFieldElements(true) - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), true, false); })); @@ -650,7 +653,7 @@ public void recognizeCustomFormMultiPageUnlabeled(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateMultiPageDataUnlabeled(syncPoller.getFinalResult()); })); @@ -673,7 +676,7 @@ public void recognizeCustomFormUnlabeledDataWithJpgContentType(HttpClient httpCl SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode)); + .setContentType(FormContentType.IMAGE_JPEG).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, false); })); @@ -695,7 +698,7 @@ public void recognizeCustomFormUnlabeledDataWithBlankPdfContentType(HttpClient h SyncPoller> syncPoller = client.beginRecognizeCustomForms( data, dataLength, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, false); })); @@ -719,7 +722,7 @@ public void recognizeCustomFormUrlUnlabeledData(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( fileUrl, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, false); }), FORM_JPG); @@ -741,7 +744,7 @@ public void recognizeCustomFormUrlUnlabeledDataIncludeFieldElements(HttpClient h SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( fileUrl, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setIncludeFieldElements(true).setPollInterval(durationTestMode)); + .setIncludeFieldElements(true).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), true, false); }), FORM_JPG); @@ -760,7 +763,7 @@ public void recognizeCustomFormUrlMultiPageUnlabeled(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( fileUrl, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateMultiPageDataUnlabeled(syncPoller.getFinalResult()); })); @@ -785,7 +788,7 @@ public void recognizeCustomFormInvalidSourceUrl(HttpClient httpClient, HttpResponseException httpResponseException = assertThrows( HttpResponseException.class, () -> client.beginRecognizeCustomFormsFromUrl( INVALID_URL, createdModel.getModelId(), new RecognizeOptions() - .setPollInterval(durationTestMode)).getFinalResult()); + .setPollInterval(durationTestMode), Context.NONE).getFinalResult()); assertEquals(httpResponseException.getMessage(), (INVALID_SOURCE_URL_ERROR)); }); } @@ -800,7 +803,7 @@ public void recognizeCustomFormFromUrlLabeledDataWithNullModelId(HttpClient http client = getFormRecognizerClient(httpClient, serviceVersion); multipageFromUrlRunner(fileUrl -> { Exception ex = assertThrows(RuntimeException.class, () -> client.beginRecognizeCustomFormsFromUrl( - fileUrl, null, new RecognizeOptions().setPollInterval(durationTestMode))); + fileUrl, null, new RecognizeOptions().setPollInterval(durationTestMode), Context.NONE)); assertEquals(EXPECTED_MODEL_ID_IS_REQUIRED_EXCEPTION_MESSAGE, ex.getMessage()); }); } @@ -815,7 +818,7 @@ public void recognizeCustomFormFromUrlLabeledDataWithEmptyModelId(HttpClient htt client = getFormRecognizerClient(httpClient, serviceVersion); multipageFromUrlRunner(fileUrl -> beginTrainingMultipageRunner((trainingFilesUrl) -> { Exception ex = assertThrows(RuntimeException.class, () -> client.beginRecognizeCustomFormsFromUrl( - fileUrl, "", new RecognizeOptions().setPollInterval(durationTestMode))); + fileUrl, "", new RecognizeOptions().setPollInterval(durationTestMode), Context.NONE)); assertEquals(EXPECTED_INVALID_UUID_EXCEPTION_MESSAGE, ex.getMessage()); })); } @@ -837,7 +840,7 @@ public void recognizeCustomFormUrlLabeledDataIncludeFieldElements(HttpClient htt SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( fileUrl, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setIncludeFieldElements(true).setPollInterval(durationTestMode)); + .setIncludeFieldElements(true).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), true, true); }), FORM_JPG); @@ -859,7 +862,7 @@ public void recognizeCustomFormUrlLabeledData(HttpClient httpClient, FormRecogni SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( fileUrl, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateRecognizedResult(syncPoller.getFinalResult(), false, true); }), FORM_JPG); @@ -881,7 +884,7 @@ public void recognizeCustomFormUrlMultiPageLabeled(HttpClient httpClient, SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( fileUrl, trainingPoller.getFinalResult().getModelId(), new RecognizeOptions() - .setPollInterval(durationTestMode)); + .setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateMultiPageDataLabeled(syncPoller.getFinalResult()); })); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java index 340889097b86c..3e16ca2d5fcd9 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java @@ -57,7 +57,7 @@ public void getFormRecognizerClientAndValidate(HttpClient httpClient, FormRecogn blankPdfDataRunner(data -> { SyncPoller> syncPoller = formRecognizerClient.beginRecognizeReceipts(data, BLANK_FORM_FILE_LENGTH, new RecognizeOptions() - .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode)); + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); syncPoller.waitForCompletion(); validateBlankPdfResultData(syncPoller.getFinalResult()); }); From 17b7cba8623d478029ddfc6bce6a9f9589b46790 Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Sun, 19 Jul 2020 22:52:58 -0700 Subject: [PATCH 2/4] update javdoc --- .../azure/ai/formrecognizer/FormRecognizerAsyncClient.java | 7 ++++--- .../com/azure/ai/formrecognizer/FormRecognizerClient.java | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java index f3cbb20d2f62b..d24ff73cd8e4c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java @@ -189,7 +189,7 @@ public final class FormRecognizerAsyncClient { * or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. * @throws FormRecognizerException If recognize operation fails and the {@link AnalyzeOperationResult} returned with * an {@link OperationStatus#FAILED}. - * @throws NullPointerException If {@code recognizeOptions} is {@code null}. + * @throws NullPointerException If {@code form}, {@code modelId} is {@code null}. */ @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> @@ -325,7 +325,7 @@ public PollerFlux> beginRecognizeContent( * been cancelled. The completed operation returns a List of {@link FormPage}. * @throws FormRecognizerException If recognize operation fails and the {@link AnalyzeOperationResult} returned with * an {@link OperationStatus#FAILED}. - * @throws NullPointerException If {@code recognizeOptions} is {@code null}. + * @throws NullPointerException If {@code form} is {@code null}. */ @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> beginRecognizeContent(Flux form, long length, @@ -348,6 +348,7 @@ PollerFlux> beginRecognizeContent(Flux> beginRecognizeReceipts( * or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. * @throws FormRecognizerException If recognize operation fails and the {@link AnalyzeOperationResult} returned with * an {@link OperationStatus#FAILED}. - * @throws NullPointerException If {@code recognizeOptions} is {@code null}. + * @throws NullPointerException If {@code receipt} is {@code null}. */ @ServiceMethod(returns = ReturnType.COLLECTION) public PollerFlux> diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java index f47b2a8aa0e09..e0b905fe39d6a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClient.java @@ -143,7 +143,7 @@ public final class FormRecognizerClient { * has failed, or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. * @throws FormRecognizerException If recognize operation fails and the {@link AnalyzeOperationResult} returned with * an {@link OperationStatus#FAILED}. - * @throws NullPointerException If {@code recognizeOptions} is {@code null}. + * @throws NullPointerException If {@code form}, {@code modelId} is {@code null}. */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> @@ -241,7 +241,7 @@ public SyncPoller> beginRecognizeContentFromUrl( * has failed, or has been cancelled. The completed operation returns a List of {@link FormPage}. * @throws FormRecognizerException If recognize operation fails and the {@link AnalyzeOperationResult} returned with * an {@link OperationStatus#FAILED}. - * @throws NullPointerException If {@code recognizeOptions} is {@code null}. + * @throws NullPointerException If {@code form} is {@code null}. */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> beginRecognizeContent(InputStream form, long length, @@ -344,7 +344,7 @@ public SyncPoller> beginRecognizeReceiptsF * or has been cancelled. The completed operation returns a List of {@link RecognizedForm}. * @throws FormRecognizerException If recognize operation fails and the {@link AnalyzeOperationResult} returned with * an {@link OperationStatus#FAILED}. - * @throws NullPointerException If {@code recognizeOptions} is {@code null}. + * @throws NullPointerException If {@code receipt} is {@code null}. */ @ServiceMethod(returns = ReturnType.COLLECTION) public SyncPoller> From d36862f6f3524bfe3fb1279c129f3ca59a874f3a Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Mon, 20 Jul 2020 13:13:33 -0700 Subject: [PATCH 3/4] call context impl equivalent methods --- .../FormRecognizerAsyncClient.java | 91 ++++++++++--------- .../training/FormTrainingAsyncClient.java | 52 +++++++---- .../training/FormTrainingClient.java | 18 ++-- ...FormTrainingClientJavaDocCodeSnippets.java | 17 ++-- .../FormRecognizerClientTest.java | 40 ++++---- .../FormTrainingClientTest.java | 30 +++--- 6 files changed, 132 insertions(+), 116 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java index d24ff73cd8e4c..78539d2df27e0 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java @@ -129,11 +129,11 @@ public final class FormRecognizerAsyncClient { recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux>( recognizeOptions.getPollInterval(), - analyzeFormActivationOperation(formUrl, modelId, recognizeOptions.isIncludeFieldElements()), - createAnalyzeFormPollOperation(modelId), + analyzeFormActivationOperation(formUrl, modelId, recognizeOptions.isIncludeFieldElements(), context), + createAnalyzeFormPollOperation(modelId, context), (activationResponse, pollingContext) -> Mono.error(new RuntimeException("Cancellation is not supported")), - fetchAnalyzeFormResultOperation(modelId, recognizeOptions.isIncludeFieldElements())); + fetchAnalyzeFormResultOperation(modelId, recognizeOptions.isIncludeFieldElements(), context)); } catch (RuntimeException ex) { return PollerFlux.error(ex); } @@ -207,11 +207,11 @@ public final class FormRecognizerAsyncClient { recognizeOptions.getPollInterval(), analyzeFormStreamActivationOperation(form, modelId, length, recognizeOptions.getContentType(), - recognizeOptions.isIncludeFieldElements()), - createAnalyzeFormPollOperation(modelId), + recognizeOptions.isIncludeFieldElements(), context), + createAnalyzeFormPollOperation(modelId, context), (activationResponse, pollingContext) -> Mono.error(new RuntimeException("Cancellation is not supported")), - fetchAnalyzeFormResultOperation(modelId, recognizeOptions.isIncludeFieldElements())); + fetchAnalyzeFormResultOperation(modelId, recognizeOptions.isIncludeFieldElements(), context)); } catch (RuntimeException ex) { return PollerFlux.error(ex); } @@ -269,11 +269,11 @@ public PollerFlux> beginRecognizeContentFromUrl( recognizeOptions = getRecognizeOptionsProperties(recognizeOptions); return new PollerFlux>( recognizeOptions.getPollInterval(), - contentAnalyzeActivationOperation(formUrl), - extractContentPollOperation(), + contentAnalyzeActivationOperation(formUrl, context), + extractContentPollOperation(context), (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), - fetchExtractContentResult()); + fetchExtractContentResult(context)); } catch (RuntimeException ex) { return PollerFlux.error(ex); } @@ -339,11 +339,11 @@ PollerFlux> beginRecognizeContent(Flux( recognizeOptions.getPollInterval(), - contentStreamActivationOperation(form, length, recognizeOptions.getContentType()), - extractContentPollOperation(), + contentStreamActivationOperation(form, length, recognizeOptions.getContentType(), context), + extractContentPollOperation(context), (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), - fetchExtractContentResult()); + fetchExtractContentResult(context)); } catch (RuntimeException ex) { return PollerFlux.error(ex); } @@ -404,11 +404,11 @@ PollerFlux> beginRecognizeContent(Flux>( recognizeOptions.getPollInterval(), - receiptAnalyzeActivationOperation(receiptUrl, recognizeOptions.isIncludeFieldElements()), - extractReceiptPollOperation(), + receiptAnalyzeActivationOperation(receiptUrl, recognizeOptions.isIncludeFieldElements(), context), + extractReceiptPollOperation(context), (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), - fetchExtractReceiptResult(recognizeOptions.isIncludeFieldElements())); + fetchExtractReceiptResult(recognizeOptions.isIncludeFieldElements(), context)); } catch (RuntimeException ex) { return PollerFlux.error(ex); } @@ -480,23 +480,23 @@ public PollerFlux> beginRecognizeReceipts( return new PollerFlux<>( recognizeOptions.getPollInterval(), receiptStreamActivationOperation(receipt, length, - recognizeOptions.getContentType(), recognizeOptions.isIncludeFieldElements()), - extractReceiptPollOperation(), + recognizeOptions.getContentType(), recognizeOptions.isIncludeFieldElements(), context), + extractReceiptPollOperation(context), (activationResponse, pollingContext) -> monoError(logger, new RuntimeException("Cancellation is not supported")), - fetchExtractReceiptResult(recognizeOptions.isIncludeFieldElements())); + fetchExtractReceiptResult(recognizeOptions.isIncludeFieldElements(), context)); } catch (RuntimeException ex) { return PollerFlux.error(ex); } } private Function, Mono> receiptAnalyzeActivationOperation( - String receiptUrl, boolean includeFieldElements) { + String receiptUrl, boolean includeFieldElements, Context context) { return (pollingContext) -> { try { Objects.requireNonNull(receiptUrl, "'receiptUrl' is required and cannot be null."); return service.analyzeReceiptAsyncWithResponseAsync(includeFieldElements, - new SourcePath().setSource(receiptUrl)) + new SourcePath().setSource(receiptUrl), context) .map(response -> new OperationResult(parseModelId(response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -507,13 +507,14 @@ private Function, Mono> receipt } private Function, Mono> receiptStreamActivationOperation( - Flux form, long length, FormContentType contentType, boolean includeFieldElements) { + Flux form, long length, FormContentType contentType, boolean includeFieldElements, + Context context) { return pollingContext -> { try { Objects.requireNonNull(form, "'form' is required and cannot be null."); if (contentType != null) { return service.analyzeReceiptAsyncWithResponseAsync( - ContentType.fromString(contentType.toString()), form, length, includeFieldElements) + ContentType.fromString(contentType.toString()), form, length, includeFieldElements, context) .map(response -> new OperationResult( parseModelId(response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(throwable -> throwable); @@ -521,7 +522,7 @@ private Function, Mono> receipt return detectContentType(form) .flatMap(detectedContentType -> service.analyzeReceiptAsyncWithResponseAsync(detectedContentType, form, length, - includeFieldElements) + includeFieldElements, context) .map(response -> new OperationResult( parseModelId(response.getDeserializedHeaders().getOperationLocation())))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -533,12 +534,12 @@ private Function, Mono> receipt } private Function, Mono>> - extractReceiptPollOperation() { + extractReceiptPollOperation(Context context) { return (pollingContext) -> { try { PollResponse operationResultPollResponse = pollingContext.getLatestResponse(); UUID resultUid = UUID.fromString(operationResultPollResponse.getValue().getResultId()); - return service.getAnalyzeReceiptResultWithResponseAsync(resultUid) + return service.getAnalyzeReceiptResultWithResponseAsync(resultUid, context) .flatMap(modelSimpleResponse -> processAnalyzeModelResponse(modelSimpleResponse, operationResultPollResponse)); } catch (HttpResponseException e) { @@ -549,11 +550,11 @@ private Function, Mono> receipt } private Function, Mono>> - fetchExtractReceiptResult(boolean includeFieldElements) { + fetchExtractReceiptResult(boolean includeFieldElements, Context context) { return (pollingContext) -> { try { final UUID resultUid = UUID.fromString(pollingContext.getLatestResponse().getValue().getResultId()); - return service.getAnalyzeReceiptResultWithResponseAsync(resultUid) + return service.getAnalyzeReceiptResultWithResponseAsync(resultUid, context) .map(modelSimpleResponse -> { throwIfAnalyzeStatusInvalid(modelSimpleResponse.getValue()); return toRecognizedForm(modelSimpleResponse.getValue().getAnalyzeResult(), @@ -567,11 +568,11 @@ private Function, Mono> receipt } private Function, Mono> contentAnalyzeActivationOperation( - String formUrl) { + String formUrl, Context context) { return (pollingContext) -> { try { Objects.requireNonNull(formUrl, "'formUrl' is required and cannot be null."); - return service.analyzeLayoutAsyncWithResponseAsync(new SourcePath().setSource(formUrl)) + return service.analyzeLayoutAsyncWithResponseAsync(new SourcePath().setSource(formUrl), context) .map(response -> new OperationResult(parseModelId(response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -582,20 +583,20 @@ private Function, Mono> content } private Function, Mono> contentStreamActivationOperation( - Flux form, long length, FormContentType contentType) { + Flux form, long length, FormContentType contentType, Context context) { return pollingContext -> { try { Objects.requireNonNull(form, "'form' is required and cannot be null."); if (contentType != null) { return service.analyzeLayoutAsyncWithResponseAsync( - ContentType.fromString(contentType.toString()), form, length) + ContentType.fromString(contentType.toString()), form, length, context) .map(response -> new OperationResult(parseModelId( response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); } else { return detectContentType(form) .flatMap(detectedContentType -> - service.analyzeLayoutAsyncWithResponseAsync(detectedContentType, form, length) + service.analyzeLayoutAsyncWithResponseAsync(detectedContentType, form, length, context) .map(response -> new OperationResult( parseModelId(response.getDeserializedHeaders().getOperationLocation())))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -607,12 +608,12 @@ private Function, Mono> content } private Function, Mono>> - extractContentPollOperation() { + extractContentPollOperation(Context context) { return (pollingContext) -> { try { PollResponse operationResultPollResponse = pollingContext.getLatestResponse(); UUID resultUid = UUID.fromString(operationResultPollResponse.getValue().getResultId()); - return service.getAnalyzeLayoutResultWithResponseAsync(resultUid) + return service.getAnalyzeLayoutResultWithResponseAsync(resultUid, context) .flatMap(modelSimpleResponse -> processAnalyzeModelResponse(modelSimpleResponse, operationResultPollResponse)); } catch (HttpResponseException e) { @@ -623,11 +624,11 @@ private Function, Mono> content } private Function, Mono>> - fetchExtractContentResult() { + fetchExtractContentResult(Context context) { return (pollingContext) -> { try { final UUID resultUid = UUID.fromString(pollingContext.getLatestResponse().getValue().getResultId()); - return service.getAnalyzeLayoutResultWithResponseAsync(resultUid) + return service.getAnalyzeLayoutResultWithResponseAsync(resultUid, context) .map(modelSimpleResponse -> { throwIfAnalyzeStatusInvalid(modelSimpleResponse.getValue()); return toRecognizedLayout(modelSimpleResponse.getValue().getAnalyzeResult(), true); @@ -640,13 +641,13 @@ private Function, Mono> content } private Function, Mono>> - fetchAnalyzeFormResultOperation(String modelId, boolean includeFieldElements) { + fetchAnalyzeFormResultOperation(String modelId, boolean includeFieldElements, Context context) { return (pollingContext) -> { try { Objects.requireNonNull(modelId, "'modelId' is required and cannot be null."); UUID resultUid = UUID.fromString(pollingContext.getLatestResponse().getValue().getResultId()); UUID modelUid = UUID.fromString(modelId); - return service.getAnalyzeFormResultWithResponseAsync(modelUid, resultUid) + return service.getAnalyzeFormResultWithResponseAsync(modelUid, resultUid, context) .map(modelSimpleResponse -> { throwIfAnalyzeStatusInvalid(modelSimpleResponse.getValue()); return toRecognizedForm(modelSimpleResponse.getValue().getAnalyzeResult(), @@ -676,14 +677,14 @@ private void throwIfAnalyzeStatusInvalid(AnalyzeOperationResult analyzeResponse) } private Function, Mono>> - createAnalyzeFormPollOperation(String modelId) { + createAnalyzeFormPollOperation(String modelId, Context context) { return (pollingContext) -> { try { PollResponse operationResultPollResponse = pollingContext.getLatestResponse(); Objects.requireNonNull(modelId, "'modelId' is required and cannot be null."); UUID resultUid = UUID.fromString(operationResultPollResponse.getValue().getResultId()); UUID modelUid = UUID.fromString(modelId); - return service.getAnalyzeFormResultWithResponseAsync(modelUid, resultUid) + return service.getAnalyzeFormResultWithResponseAsync(modelUid, resultUid, context) .flatMap(modelSimpleResponse -> processAnalyzeModelResponse(modelSimpleResponse, operationResultPollResponse)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -695,13 +696,13 @@ private void throwIfAnalyzeStatusInvalid(AnalyzeOperationResult analyzeResponse) } private Function, Mono> analyzeFormActivationOperation( - String formUrl, String modelId, boolean includeFieldElements) { + String formUrl, String modelId, boolean includeFieldElements, Context context) { return (pollingContext) -> { try { Objects.requireNonNull(formUrl, "'formUrl' is required and cannot be null."); Objects.requireNonNull(modelId, "'modelId' is required and cannot be null."); return service.analyzeWithCustomModelWithResponseAsync(UUID.fromString(modelId), includeFieldElements, - new SourcePath().setSource(formUrl)) + new SourcePath().setSource(formUrl), context) .map(response -> new OperationResult(parseModelId(response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -713,7 +714,7 @@ private Function, Mono> analyze private Function, Mono> analyzeFormStreamActivationOperation( Flux form, String modelId, long length, FormContentType contentType, - boolean includeFieldElements) { + boolean includeFieldElements, Context context) { return pollingContext -> { try { @@ -721,7 +722,7 @@ private Function, Mono> analyze Objects.requireNonNull(modelId, "'modelId' is required and cannot be null."); if (contentType != null) { return service.analyzeWithCustomModelWithResponseAsync(UUID.fromString(modelId), - ContentType.fromString(contentType.toString()), form, length, includeFieldElements) + ContentType.fromString(contentType.toString()), form, length, includeFieldElements, context) .map(response -> new OperationResult(parseModelId( response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -729,7 +730,7 @@ private Function, Mono> analyze return detectContentType(form) .flatMap(detectedContentType -> service.analyzeWithCustomModelWithResponseAsync(UUID.fromString(modelId), - detectedContentType, form, length, includeFieldElements) + detectedContentType, form, length, includeFieldElements, context) .map(response -> new OperationResult( parseModelId(response.getDeserializedHeaders().getOperationLocation())))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java index 11198cc9b78fc..1526894a70a9d 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java @@ -174,16 +174,21 @@ public PollerFlux beginTraining(String trainin @ServiceMethod(returns = ReturnType.SINGLE) public PollerFlux beginTraining(String trainingFilesUrl, boolean useTrainingLabels, TrainingFileFilter trainingFileFilter, Duration pollInterval) { + return beginTraining(trainingFilesUrl, useTrainingLabels, trainingFileFilter, pollInterval, Context.NONE); + } + + PollerFlux beginTraining(String trainingFilesUrl, + boolean useTrainingLabels, TrainingFileFilter trainingFileFilter, Duration pollInterval, Context context) { final Duration interval = pollInterval != null ? pollInterval : DEFAULT_DURATION; return new PollerFlux( interval, getTrainingActivationOperation(trainingFilesUrl, trainingFileFilter != null ? trainingFileFilter.isIncludeSubFolders() : false, trainingFileFilter != null ? trainingFileFilter.getPrefix() : null, - useTrainingLabels), - createTrainingPollOperation(), - (activationResponse, context) -> Mono.error(new RuntimeException("Cancellation is not supported")), - fetchTrainingModelResultOperation()); + useTrainingLabels, context), + createTrainingPollOperation(context), + (activationResponse, pollingContext) -> Mono.error(new RuntimeException("Cancellation is not supported")), + fetchTrainingModelResultOperation(context)); } /** @@ -405,13 +410,18 @@ public PollerFlux beginCopyModel(String mo @ServiceMethod(returns = ReturnType.SINGLE) public PollerFlux beginCopyModel(String modelId, CopyAuthorization target, Duration pollInterval) { + return beginCopyModel(modelId, target, pollInterval, Context.NONE); + } + + PollerFlux beginCopyModel(String modelId, + CopyAuthorization target, Duration pollInterval, Context context) { final Duration interval = pollInterval != null ? pollInterval : DEFAULT_DURATION; return new PollerFlux( interval, - getCopyActivationOperation(modelId, target), - createCopyPollOperation(modelId), - (activationResponse, context) -> Mono.error(new RuntimeException("Cancellation is not supported")), - fetchCopyModelResultOperation(modelId, target.getModelId())); + getCopyActivationOperation(modelId, target, context), + createCopyPollOperation(modelId, context), + (activationResponse, pollingContext) -> Mono.error(new RuntimeException("Cancellation is not supported")), + fetchCopyModelResultOperation(modelId, target.getModelId(), context)); } /** @@ -507,12 +517,12 @@ private Mono> listNextPageModelInfo(String ne } private Function, Mono> fetchCopyModelResultOperation( - String modelId, String copyModelId) { + String modelId, String copyModelId, Context context) { return (pollingContext) -> { try { final UUID resultUid = UUID.fromString(pollingContext.getLatestResponse().getValue().getResultId()); Objects.requireNonNull(modelId, "'modelId' cannot be null."); - return service.getCustomModelCopyResultWithResponseAsync(UUID.fromString(modelId), resultUid) + return service.getCustomModelCopyResultWithResponseAsync(UUID.fromString(modelId), resultUid, context) .map(modelSimpleResponse -> { CopyOperationResult copyOperationResult = modelSimpleResponse.getValue(); throwIfCopyOperationStatusInvalid(copyOperationResult); @@ -531,12 +541,12 @@ private Function, Mono> fet } private Function, Mono>> - createCopyPollOperation(String modelId) { + createCopyPollOperation(String modelId, Context context) { return (pollingContext) -> { try { PollResponse operationResultPollResponse = pollingContext.getLatestResponse(); UUID targetId = UUID.fromString(operationResultPollResponse.getValue().getResultId()); - return service.getCustomModelCopyResultWithResponseAsync(UUID.fromString(modelId), targetId) + return service.getCustomModelCopyResultWithResponseAsync(UUID.fromString(modelId), targetId, context) .flatMap(modelSimpleResponse -> processCopyModelResponse(modelSimpleResponse, operationResultPollResponse)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -547,7 +557,7 @@ private Function, Mono> fet } private Function, Mono> getCopyActivationOperation( - String modelId, CopyAuthorization target) { + String modelId, CopyAuthorization target, Context context) { return (pollingContext) -> { try { Objects.requireNonNull(modelId, "'modelId' cannot be null."); @@ -559,7 +569,7 @@ private Function, Mono> getCopy .setModelId(target.getModelId()) .setAccessToken(target.getAccessToken()) .setExpirationDateTimeTicks(target.getExpiresOn().toEpochSecond())); - return service.copyCustomModelWithResponseAsync(UUID.fromString(modelId), copyRequest) + return service.copyCustomModelWithResponseAsync(UUID.fromString(modelId), copyRequest, context) .map(response -> new OperationResult(parseModelId(response.getDeserializedHeaders().getOperationLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -591,11 +601,12 @@ private Mono> processCopyModelResponse( return Mono.just(new PollResponse<>(status, copyModelOperationResponse.getValue())); } - private Function, Mono> fetchTrainingModelResultOperation() { + private Function, Mono> + fetchTrainingModelResultOperation(Context context) { return (pollingContext) -> { try { final UUID modelUid = UUID.fromString(pollingContext.getLatestResponse().getValue().getResultId()); - return service.getCustomModelWithResponseAsync(modelUid, true) + return service.getCustomModelWithResponseAsync(modelUid, true, context) .map(modelSimpleResponse -> { throwIfModelStatusInvalid(modelSimpleResponse.getValue()); return toCustomFormModel(modelSimpleResponse.getValue()); @@ -608,12 +619,12 @@ private Function, Mono> fetchTr } private Function, Mono>> - createTrainingPollOperation() { + createTrainingPollOperation(Context context) { return (pollingContext) -> { try { PollResponse operationResultPollResponse = pollingContext.getLatestResponse(); UUID modelUid = UUID.fromString(operationResultPollResponse.getValue().getResultId()); - return service.getCustomModelWithResponseAsync(modelUid, true) + return service.getCustomModelWithResponseAsync(modelUid, true, context) .flatMap(modelSimpleResponse -> processTrainingModelResponse(modelSimpleResponse, operationResultPollResponse)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); @@ -625,7 +636,8 @@ private Function, Mono> fetchTr } private Function, Mono> getTrainingActivationOperation( - String trainingFilesUrl, boolean includeSubFolders, String filePrefix, boolean useTrainingLabels) { + String trainingFilesUrl, boolean includeSubFolders, String filePrefix, boolean useTrainingLabels, + Context context) { return (pollingContext) -> { try { Objects.requireNonNull(trainingFilesUrl, "'trainingFilesUrl' cannot be null."); @@ -633,7 +645,7 @@ private Function, Mono> getTrai .setPrefix(filePrefix); TrainRequest serviceTrainRequest = new TrainRequest().setSource(trainingFilesUrl). setSourceFilter(trainSourceFilter).setUseLabelFile(useTrainingLabels); - return service.trainCustomModelAsyncWithResponseAsync(serviceTrainRequest) + return service.trainCustomModelAsyncWithResponseAsync(serviceTrainRequest, context) .map(response -> new OperationResult(parseModelId(response.getDeserializedHeaders().getLocation()))) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingClient.java index dcab77ad6e210..3d87066da7764 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingClient.java @@ -87,7 +87,7 @@ public FormRecognizerClient getFormRecognizerClient() { @ServiceMethod(returns = ReturnType.SINGLE) public SyncPoller beginTraining(String trainingFilesUrl, boolean useTrainingLabels) { - return beginTraining(trainingFilesUrl, useTrainingLabels, null, null); + return beginTraining(trainingFilesUrl, useTrainingLabels, null, null, Context.NONE); } /** @@ -99,7 +99,7 @@ public SyncPoller beginTraining(String trainin * error message indicating absence of cancellation support.

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.training.FormTrainingClient.beginTraining#string-boolean-trainingFileFilter-Duration} + * {@codesnippet com.azure.ai.formrecognizer.training.FormTrainingClient.beginTraining#string-boolean-trainingFileFilter-Duration-Context} * * @param trainingFilesUrl an externally accessible Azure storage blob container Uri (preferably a * Shared Access Signature Uri). @@ -109,6 +109,7 @@ public SyncPoller beginTraining(String trainin * @param trainingFileFilter Filter to apply to the documents in the source path for training. * @param pollInterval Duration between each poll for the operation status. If none is specified, a default of * 5 seconds is used. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} that polls the training model operation until it has completed, has failed, or has * been cancelled. The completed operation returns the trained {@link CustomFormModel custom form model}. @@ -117,8 +118,8 @@ public SyncPoller beginTraining(String trainin */ @ServiceMethod(returns = ReturnType.SINGLE) public SyncPoller beginTraining(String trainingFilesUrl, - boolean useTrainingLabels, TrainingFileFilter trainingFileFilter, Duration pollInterval) { - return client.beginTraining(trainingFilesUrl, useTrainingLabels, trainingFileFilter, pollInterval) + boolean useTrainingLabels, TrainingFileFilter trainingFileFilter, Duration pollInterval, Context context) { + return client.beginTraining(trainingFilesUrl, useTrainingLabels, trainingFileFilter, pollInterval, context) .getSyncPoller(); } @@ -268,7 +269,7 @@ public PagedIterable listCustomModels(Context context) { @ServiceMethod(returns = ReturnType.SINGLE) public SyncPoller beginCopyModel(String modelId, CopyAuthorization target) { - return beginCopyModel(modelId, target, null); + return beginCopyModel(modelId, target, null, Context.NONE); } /** @@ -283,21 +284,22 @@ public SyncPoller beginCopyModel(String mo * error message indicating absence of cancellation support.

* *

Code sample

- * {@codesnippet com.azure.ai.formrecognizer.training.FormTrainingClient.beginCopyModel#string-copyAuthorization-Duration} + * {@codesnippet com.azure.ai.formrecognizer.training.FormTrainingClient.beginCopyModel#string-copyAuthorization-Duration-Context} * * @param modelId Model identifier of the model to copy to the target Form Recognizer resource * @param target the copy authorization to the target Form Recognizer resource. The copy authorization can be * generated from the target resource's call to {@link FormTrainingClient#getCopyAuthorization(String, String)} * @param pollInterval Duration between each poll for the operation status. If none is specified, a default of * 5 seconds is used. + * @param context Additional context that is passed through the HTTP pipeline during the service call. * * @return A {@link SyncPoller} that polls the copy model operation until it has completed, has failed, * or has been cancelled. */ @ServiceMethod(returns = ReturnType.SINGLE) public SyncPoller beginCopyModel(String modelId, - CopyAuthorization target, Duration pollInterval) { - return client.beginCopyModel(modelId, target, pollInterval).getSyncPoller(); + CopyAuthorization target, Duration pollInterval, Context context) { + return client.beginCopyModel(modelId, target, pollInterval, context).getSyncPoller(); } /** diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormTrainingClientJavaDocCodeSnippets.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormTrainingClientJavaDocCodeSnippets.java index 2137a636f1b89..66268b2eebef0 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormTrainingClientJavaDocCodeSnippets.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormTrainingClientJavaDocCodeSnippets.java @@ -50,17 +50,17 @@ public void beginTraining() { } /** - * Code snippet for {@link FormTrainingClient#beginTraining(String, boolean, TrainingFileFilter, Duration)} + * Code snippet for {@link FormTrainingClient#beginTraining(String, boolean, TrainingFileFilter, Duration, Context)} * with options */ public void beginTrainingWithOptions() { - // BEGIN: com.azure.ai.formrecognizer.training.FormTrainingClient.beginTraining#string-boolean-trainingFileFilter-Duration + // BEGIN: com.azure.ai.formrecognizer.training.FormTrainingClient.beginTraining#string-boolean-trainingFileFilter-Duration-Context String trainingFilesUrl = "{SAS-URL-of-your-container-in-blob-storage}"; TrainingFileFilter trainingFileFilter = new TrainingFileFilter().setIncludeSubFolders(false).setPrefix("Invoice"); boolean useTrainingLabels = true; CustomFormModel customFormModel = formTrainingClient.beginTraining(trainingFilesUrl, useTrainingLabels, - trainingFileFilter, Duration.ofSeconds(5)).getFinalResult(); + trainingFileFilter, Duration.ofSeconds(5), Context.NONE).getFinalResult(); System.out.printf("Model Id: %s%n", customFormModel.getModelId()); System.out.printf("Model Status: %s%n", customFormModel.getModelStatus()); @@ -69,7 +69,7 @@ public void beginTrainingWithOptions() { .forEach((key, customFormModelField) -> System.out.printf("Form Type: %s Field Text: %s Field Accuracy: %f%n", key, customFormModelField.getName(), customFormModelField.getAccuracy()))); - // END: com.azure.ai.formrecognizer.training.FormTrainingClient.beginTraining#string-boolean-trainingFileFilter-Duration + // END: com.azure.ai.formrecognizer.training.FormTrainingClient.beginTraining#string-boolean-trainingFileFilter-Duration-Context } /** @@ -214,10 +214,10 @@ public void beginCopy() { } /** - * Code snippet for {@link FormTrainingClient#beginCopyModel(String, CopyAuthorization, Duration)} + * Code snippet for {@link FormTrainingClient#beginCopyModel(String, CopyAuthorization, Duration, Context)} */ public void beginCopyOverload() { - // BEGIN: com.azure.ai.formrecognizer.training.FormTrainingClient.beginCopyModel#string-copyAuthorization-Duration + // BEGIN: com.azure.ai.formrecognizer.training.FormTrainingClient.beginCopyModel#string-copyAuthorization-Duration-Context // The resource to copy model to String resourceId = "target-resource-Id"; String resourceRegion = "target-resource-region"; @@ -226,7 +226,8 @@ public void beginCopyOverload() { CopyAuthorization copyAuthorization = targetFormTrainingClient.getCopyAuthorization(resourceId, resourceRegion); - formTrainingClient.beginCopyModel(copyModelId, copyAuthorization, Duration.ofSeconds(5)).waitForCompletion(); + formTrainingClient.beginCopyModel(copyModelId, copyAuthorization, Duration.ofSeconds(5), Context.NONE) + .waitForCompletion(); CustomFormModel modelCopy = targetFormTrainingClient.getCustomModel(copyAuthorization.getModelId()); System.out.printf("Copied model has model Id: %s, model status: %s, was requested on: %s," + " transfer completed on: %s.%n", @@ -234,7 +235,7 @@ public void beginCopyOverload() { modelCopy.getModelStatus(), modelCopy.getTrainingStartedOn(), modelCopy.getTrainingCompletedOn()); - // END: com.azure.ai.formrecognizer.training.FormTrainingClient.beginCopyModel#string-copyAuthorization-Duration + // END: com.azure.ai.formrecognizer.training.FormTrainingClient.beginCopyModel#string-copyAuthorization-Duration-Context } /** diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java index 9436818c53e7f..a03ec93afd0cd 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java @@ -388,7 +388,7 @@ public void recognizeCustomFormLabeledData(HttpClient httpClient, FormRecognizer beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -412,7 +412,7 @@ public void recognizeCustomFormLabeledDataWithJpgContentType(HttpClient httpClie beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -434,7 +434,7 @@ public void recognizeCustomFormLabeledDataWithBlankPdfContentType(HttpClient htt blankPdfDataRunner((data, dataLength) -> beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -457,7 +457,7 @@ public void recognizeCustomFormLabeledDataExcludeFieldElements(HttpClient httpCl customFormDataRunner((data, dataLength) -> beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -480,7 +480,7 @@ public void recognizeCustomFormLabeledDataWithNullFormData(HttpClient httpClient beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller syncPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); assertThrows(RuntimeException.class, () -> client.beginRecognizeCustomForms( @@ -534,7 +534,7 @@ public void recognizeCustomFormInvalidStatus(HttpClient httpClient, FormRecogniz beginTrainingLabeledRunner((training, useTrainingLabels) -> { SyncPoller syncPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(training, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); CustomFormModel createdModel = syncPoller.getFinalResult(); FormRecognizerException formRecognizerException = assertThrows(FormRecognizerException.class, @@ -561,7 +561,7 @@ public void recognizeCustomFormLabeledDataWithContentTypeAutoDetection(HttpClien beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -581,7 +581,7 @@ public void recognizeCustomFormMultiPageLabeled(HttpClient httpClient, multipageFromDataRunner((data, dataLength) -> beginTrainingMultipageRunner((trainingFilesUrl) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, true, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -605,7 +605,7 @@ public void recognizeCustomFormUnlabeledData(HttpClient httpClient, FormRecogniz beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -628,7 +628,7 @@ public void recognizeCustomFormUnlabeledDataIncludeFieldElements(HttpClient http customFormDataRunner((data, dataLength) -> beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -648,7 +648,7 @@ public void recognizeCustomFormMultiPageUnlabeled(HttpClient httpClient, multipageFromDataRunner((data, dataLength) -> beginTrainingMultipageRunner((trainingFilesUrl) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, false, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -671,7 +671,7 @@ public void recognizeCustomFormUnlabeledDataWithJpgContentType(HttpClient httpCl beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -693,7 +693,7 @@ public void recognizeCustomFormUnlabeledDataWithBlankPdfContentType(HttpClient h blankPdfDataRunner((data, dataLength) -> beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomForms( @@ -717,7 +717,7 @@ public void recognizeCustomFormUrlUnlabeledData(HttpClient httpClient, urlRunner(fileUrl -> beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( @@ -739,7 +739,7 @@ public void recognizeCustomFormUrlUnlabeledDataIncludeFieldElements(HttpClient h urlRunner(fileUrl -> beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( @@ -758,7 +758,7 @@ public void recognizeCustomFormUrlMultiPageUnlabeled(HttpClient httpClient, multipageFromUrlRunner(fileUrl -> beginTrainingMultipageRunner((trainingFilesUrl) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, false, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( @@ -782,7 +782,7 @@ public void recognizeCustomFormInvalidSourceUrl(HttpClient httpClient, beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller syncPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, useTrainingLabels, - null, durationTestMode); + null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); CustomFormModel createdModel = syncPoller.getFinalResult(); HttpResponseException httpResponseException = assertThrows( @@ -835,7 +835,7 @@ public void recognizeCustomFormUrlLabeledDataIncludeFieldElements(HttpClient htt urlRunner(fileUrl -> beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( @@ -857,7 +857,7 @@ public void recognizeCustomFormUrlLabeledData(HttpClient httpClient, FormRecogni SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( @@ -879,7 +879,7 @@ public void recognizeCustomFormUrlMultiPageLabeled(HttpClient httpClient, multipageFromUrlRunner(fileUrl -> beginTrainingMultipageRunner((trainingFilesUrl) -> { SyncPoller trainingPoller = getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, true, - null, durationTestMode); + null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); SyncPoller> syncPoller = client.beginRecognizeCustomFormsFromUrl( diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java index 3e16ca2d5fcd9..148fd3c6cd9f0 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java @@ -93,7 +93,7 @@ public void getCustomModelWithResponse(HttpClient httpClient, FormRecognizerServ client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingUnlabeledRunner((trainingDataSasUrl, useTrainingLabels) -> { CustomFormModel trainedUnlabeledModel = client.beginTraining(trainingDataSasUrl, useTrainingLabels, - null, durationTestMode).getFinalResult(); + null, durationTestMode, Context.NONE).getFinalResult(); Response customModelWithResponse = client.getCustomModelWithResponse(trainedUnlabeledModel.getModelId(), Context.NONE); @@ -111,7 +111,7 @@ public void getCustomModelUnlabeled(HttpClient httpClient, FormRecognizerService client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller syncPoller = client.beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); CustomFormModel trainedUnlabeledModel = syncPoller.getFinalResult(); validateCustomModelData(client.getCustomModel(trainedUnlabeledModel.getModelId()), false); @@ -127,7 +127,7 @@ public void getCustomModelLabeled(HttpClient httpClient, FormRecognizerServiceVe client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingLabeledRunner((trainingDataSASUrl, useTrainingLabels) -> { CustomFormModel customFormModel = client.beginTraining(trainingDataSASUrl, useTrainingLabels, - null, durationTestMode).getFinalResult(); + null, durationTestMode, Context.NONE).getFinalResult(); validateCustomModelData(client.getCustomModel(customFormModel.getModelId()), true); }); } @@ -172,7 +172,7 @@ public void deleteModelValidModelIdWithResponse(HttpClient httpClient, FormRecog client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingLabeledRunner((trainingDataSASUrl, useTrainingLabels) -> { SyncPoller syncPoller = client.beginTraining(trainingDataSASUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); CustomFormModel createdModel = syncPoller.getFinalResult(); @@ -233,7 +233,7 @@ public void beginCopy(HttpClient httpClient, FormRecognizerServiceVersion servic client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller syncPoller = - client.beginTraining(trainingFilesUrl, useTrainingLabels, null, durationTestMode); + client.beginTraining(trainingFilesUrl, useTrainingLabels, null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); CustomFormModel actualModel = syncPoller.getFinalResult(); @@ -260,7 +260,7 @@ public void beginCopyInvalidRegion(HttpClient httpClient, FormRecognizerServiceV client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller syncPoller = - client.beginTraining(trainingFilesUrl, useTrainingLabels, null, durationTestMode); + client.beginTraining(trainingFilesUrl, useTrainingLabels, null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); final CustomFormModel actualModel = syncPoller.getFinalResult(); @@ -283,7 +283,7 @@ public void beginCopyIncorrectRegion(HttpClient httpClient, FormRecognizerServic client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller syncPoller = - client.beginTraining(trainingFilesUrl, useTrainingLabels, null, durationTestMode); + client.beginTraining(trainingFilesUrl, useTrainingLabels, null, durationTestMode, Context.NONE); syncPoller.waitForCompletion(); CustomFormModel actualModel = syncPoller.getFinalResult(); @@ -337,7 +337,7 @@ public void beginTrainingWithTrainingLabelsForJPGTrainingSet(HttpClient httpClie client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = client.beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); validateCustomModelData(trainingPoller.getFinalResult(), true); }); @@ -353,7 +353,7 @@ public void beginTrainingWithoutTrainingLabelsForJPGTrainingSet(HttpClient httpC client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = client.beginTraining(trainingFilesUrl, - useTrainingLabels, null, durationTestMode); + useTrainingLabels, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); validateCustomModelData(trainingPoller.getFinalResult(), false); }); @@ -369,7 +369,7 @@ public void beginTrainingWithTrainingLabelsForMultiPagePDFTrainingSet(HttpClient client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingMultipageRunner(trainingFilesUrl -> { SyncPoller trainingPoller = client.beginTraining(trainingFilesUrl, - true, null, durationTestMode); + true, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); validateCustomModelData(trainingPoller.getFinalResult(), true); }); @@ -385,7 +385,7 @@ public void beginTrainingWithoutTrainingLabelsForMultiPagePDFTrainingSet(HttpCli client = getFormTrainingClient(httpClient, serviceVersion); beginTrainingMultipageRunner(trainingFilesUrl -> { SyncPoller trainingPoller = client.beginTraining(trainingFilesUrl, - false, null, durationTestMode); + false, null, durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); validateCustomModelData(trainingPoller.getFinalResult(), false); }); @@ -403,7 +403,7 @@ public void beginTrainingWithoutTrainingLabelsIncludeSubfolderWithPrefixName(Htt beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = client.beginTraining(trainingFilesUrl, useTrainingLabels, new TrainingFileFilter().setIncludeSubFolders(true).setPrefix(PREFIX_SUBFOLDER), - durationTestMode); + durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); validateCustomModelData(trainingPoller.getFinalResult(), false); }); @@ -421,7 +421,7 @@ public void beginTrainingWithoutTrainingLabelsExcludeSubfolderWithPrefixName(Htt beginTrainingUnlabeledRunner((trainingFilesUrl, useTrainingLabels) -> { SyncPoller trainingPoller = client.beginTraining(trainingFilesUrl, useTrainingLabels, new TrainingFileFilter().setPrefix(PREFIX_SUBFOLDER), - durationTestMode); + durationTestMode, Context.NONE); trainingPoller.waitForCompletion(); validateCustomModelData(trainingPoller.getFinalResult(), false); }); @@ -440,7 +440,7 @@ public void beginTrainingWithoutTrainingLabelsIncludeSubfolderWithNonExistPrefix FormRecognizerException thrown = assertThrows(FormRecognizerException.class, () -> client.beginTraining(trainingFilesUrl, false, new TrainingFileFilter().setIncludeSubFolders(true).setPrefix(INVALID_PREFIX_FILE_NAME), - durationTestMode).getFinalResult()); + durationTestMode, Context.NONE).getFinalResult()); assertEquals(NO_VALID_BLOB_FOUND, thrown.getErrorInformation().get(0).getMessage()); }); } @@ -457,7 +457,7 @@ public void beginTrainingWithoutTrainingLabelsExcludeSubfolderWithNonExistPrefix beginTrainingMultipageRunner(trainingFilesUrl -> { FormRecognizerException thrown = assertThrows(FormRecognizerException.class, () -> client.beginTraining(trainingFilesUrl, false, - new TrainingFileFilter().setPrefix(INVALID_PREFIX_FILE_NAME), durationTestMode) + new TrainingFileFilter().setPrefix(INVALID_PREFIX_FILE_NAME), durationTestMode, Context.NONE) .getFinalResult()); assertEquals(NO_VALID_BLOB_FOUND, thrown.getErrorInformation().get(0).getMessage()); }); From 6f9123ee6e4bcb0f4a61f45f1318479ddd66250c Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Mon, 20 Jul 2020 14:02:39 -0700 Subject: [PATCH 4/4] changelog update --- sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index e03f4a81fde6a..34564c309ed53 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -1,7 +1,7 @@ # Release History ## 1.0.0-beta.5 (Unreleased) -- Add support for context passing. +- Added support for context passing. ### Key Bug Fixes - Fixed `getFields()` to preserve service side ordering of fields.