Skip to content

Commit 7ecc458

Browse files
authored
Document Intelligence updates (#43371)
1 parent 35ea603 commit 7ecc458

23 files changed

+417
-170
lines changed

sdk/documentintelligence/azure-ai-documentintelligence/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ BinaryData layoutDocumentData = BinaryData.fromFile(filePath, (int) layoutDocume
167167

168168
SyncPoller<AnalyzeOperation, AnalyzeResult> analyzeLayoutResultPoller =
169169
documentIntelligenceClient.beginAnalyzeDocument("prebuilt-layout",
170-
new AnalyzeDocumentOptions(Files.readAllBytes(layoutDocument.toPath())));
170+
new AnalyzeDocumentOptions(layoutDocumentData));
171171

172172
AnalyzeResult analyzeLayoutResult = analyzeLayoutResultPoller.getFinalResult();
173173

sdk/documentintelligence/azure-ai-documentintelligence/checkstyle-suppressions.xml

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<!-- This file is generated by the /eng/scripts/linting_suppression_generator.py script. -->
44

55
<suppressions>
6+
<suppress files="com.azure.ai.documentintelligence.implementation.AnalyzeOperationHelper.java" checks="MissingJavadocMethodCheck" />
67
<suppress files="com.azure.ai.documentintelligence.implementation.DocumentIntelligenceAdministrationClientImpl.java" checks="MissingJavadocMethodCheck" />
78
<suppress files="com.azure.ai.documentintelligence.implementation.DocumentIntelligenceClientImpl.java" checks="MissingJavadocMethodCheck" />
89
<suppress files="com.azure.ai.documentintelligence.implementation.PollingUtils.java" checks="com.azure.tools.checkstyle.checks.JavadocThrowsChecks" />

sdk/documentintelligence/azure-ai-documentintelligence/customization/src/main/java/DocumentIntelligenceCustomizations.java

+16-39
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,8 @@
44
import com.azure.autorest.customization.PackageCustomization;
55
import com.github.javaparser.StaticJavaParser;
66
import com.github.javaparser.ast.Modifier;
7-
import com.github.javaparser.ast.NodeList;
8-
import com.github.javaparser.ast.body.BodyDeclaration;
97
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
10-
import com.github.javaparser.ast.body.ConstructorDeclaration;
11-
import com.github.javaparser.ast.stmt.BlockStmt;
12-
import com.github.javaparser.ast.stmt.Statement;
138
import com.github.javaparser.javadoc.Javadoc;
14-
import com.github.javaparser.javadoc.JavadocBlockTag;
159
import com.github.javaparser.javadoc.description.JavadocDescription;
1610
import com.github.javaparser.javadoc.description.JavadocSnippet;
1711
import org.slf4j.Logger;
@@ -28,7 +22,6 @@ public class DocumentIntelligenceCustomizations extends Customization {
2822
@Override
2923
public void customize(LibraryCustomization customization, Logger logger) {
3024
customizeAnalyzeOperation(customization, logger);
31-
customizeAnalyzeBatchOperation(customization, logger);
3225
customizePollingStrategy(customization, logger);
3326
customizePollingUtils(customization, logger);
3427
customizeModifierForOverloadMethods(customization, logger);
@@ -37,6 +30,18 @@ public void customize(LibraryCustomization customization, Logger logger) {
3730
customizeAnalyzeBatchDocumentOptions(customization, logger);
3831
customizeClassifyDocumentOptions(customization, logger);
3932
customizeSamplesForOverload(customization, logger);
33+
addStaticAccessorForOperationId(customization, logger);
34+
}
35+
36+
private void addStaticAccessorForOperationId(LibraryCustomization customization, Logger logger) {
37+
logger.info("Customizing to add static operationnId accessor setter methods");
38+
ClassCustomization classCustomization = customization.getPackage(MODELS_PACKAGE).getClass("AnalyzeOperation");
39+
classCustomization.addStaticBlock("AnalyzeOperationHelper.setAccessor(new AnalyzeOperationHelper.AnalyzeOperationAccessor() {\n" +
40+
" @Override\n" +
41+
" public void setOperationId(AnalyzeOperation analyzeOperation, String operationId) {\n" +
42+
" analyzeOperation.setOperationId(operationId);\n" +
43+
" }\n" +
44+
" });");
4045
}
4146

4247
private void customizeSamplesForOverload(LibraryCustomization customization, Logger logger) {
@@ -140,7 +145,6 @@ private void customizeAnalyzeDocumentOptions(LibraryCustomization customization,
140145

141146
classCustomization.getMethod("setUrlSource").setModifier(0);
142147
classCustomization.getMethod("setBytesSource").setModifier(0);
143-
//addConstructors(classCustomization);
144148
}
145149

146150
private void customizeAnalyzeBatchDocumentOptions(LibraryCustomization customization, Logger logger) {
@@ -151,7 +155,6 @@ private void customizeAnalyzeBatchDocumentOptions(LibraryCustomization customiza
151155

152156
classCustomization.getMethod("setAzureBlobSource").setModifier(0);
153157
classCustomization.getMethod("setAzureBlobFileListSource").setModifier(0);
154-
//addConstructors(classCustomization);
155158
}
156159

157160
private void customizeClassifyDocumentOptions(LibraryCustomization customization, Logger logger) {
@@ -162,7 +165,6 @@ private void customizeClassifyDocumentOptions(LibraryCustomization customization
162165

163166
classCustomization.getMethod("setUrlSource").setModifier(0);
164167
classCustomization.getMethod("setBytesSource").setModifier(0);
165-
//addConstructors(classCustomization);
166168
}
167169

168170
private void customizeModifierForOverloadMethods(LibraryCustomization customization, Logger logger) {
@@ -225,21 +227,8 @@ private void customizeAnalyzeOperation(LibraryCustomization customization, Logge
225227
}));
226228
}
227229

228-
private void customizeAnalyzeBatchOperation(LibraryCustomization customization, Logger logger) {
229-
logger.info("Customizing the AnalyzeBatchOperation class");
230-
PackageCustomization packageCustomization = customization.getPackage("com.azure.ai.documentintelligence.models");
231-
packageCustomization.getClass("AnalyzeBatchOperation")
232-
.removeAnnotation("Immutable")
233-
.customizeAst(ast ->
234-
ast.getClassByName("AnalyzeBatchOperation").ifPresent(clazz -> {
235-
addOperationIdField(clazz);
236-
addOperationIdGetter(clazz);
237-
addOperationIdSetter(clazz);
238-
}));
239-
}
240-
241230
private void addOperationIdSetter(ClassOrInterfaceDeclaration clazz) {
242-
clazz.addMethod("setOperationId", Modifier.Keyword.PUBLIC)
231+
clazz.addMethod("setOperationId", Modifier.Keyword.PRIVATE)
243232
.setType("void")
244233
.addParameter("String", "operationId")
245234
.setJavadocComment(new Javadoc(new JavadocDescription(List.of(new JavadocSnippet("Sets the operationId property: Operation ID."))))
@@ -252,7 +241,7 @@ private void addOperationIdSetter(ClassOrInterfaceDeclaration clazz) {
252241
}
253242

254243
private void addOperationIdGetter(ClassOrInterfaceDeclaration clazz) {
255-
clazz.addMethod("getOperationId", Modifier.Keyword.PUBLIC)
244+
clazz.addMethod("getResultId", Modifier.Keyword.PUBLIC)
256245
.setType("String")
257246
.setJavadocComment(new Javadoc(new JavadocDescription(List.of(new JavadocSnippet("Gets the operationId property: Operation ID."))))
258247
.addBlockTag("return", "the operationId value.")
@@ -303,7 +292,6 @@ private void customizePollingStrategy(LibraryCustomization customization, Logger
303292
packageCustomization.getClass("SyncOperationLocationPollingStrategy").customizeAst(ast ->
304293
ast.getClassByName("SyncOperationLocationPollingStrategy").ifPresent(clazz -> {
305294
ast.addImport("com.azure.ai.documentintelligence.models.AnalyzeOperation");
306-
ast.addImport("com.azure.ai.documentintelligence.models.AnalyzeBatchOperation");
307295
ast.addImport("static com.azure.ai.documentintelligence.implementation.PollingUtils.parseOperationId");
308296
addSyncPollOverrideMethod(clazz);
309297
}));
@@ -312,7 +300,6 @@ private void customizePollingStrategy(LibraryCustomization customization, Logger
312300
packageCustomization.getClass("OperationLocationPollingStrategy").customizeAst(ast ->
313301
ast.getClassByName("OperationLocationPollingStrategy").ifPresent(clazz -> {
314302
ast.addImport("com.azure.ai.documentintelligence.models.AnalyzeOperation");
315-
ast.addImport("com.azure.ai.documentintelligence.models.AnalyzeBatchOperation");
316303
ast.addImport("static com.azure.ai.documentintelligence.implementation.PollingUtils.parseOperationId");
317304
addAsyncPollOverrideMethod(clazz);
318305
}));
@@ -336,11 +323,7 @@ private void addAsyncPollOverrideMethod(ClassOrInterfaceDeclaration clazz) {
336323
" }",
337324
" if (pollResponse.getValue() instanceof AnalyzeOperation) {",
338325
" AnalyzeOperation operation = (AnalyzeOperation) pollResponse.getValue();",
339-
" operation.setOperationId(operationId);",
340-
" }",
341-
" if (pollResponse.getValue() instanceof AnalyzeBatchOperation) {",
342-
" AnalyzeBatchOperation operation = (AnalyzeBatchOperation) pollResponse.getValue();",
343-
" operation.setOperationId(operationId);",
326+
" AnalyzeOperationHelper.setOperationId(operation, operationId);",
344327
" }",
345328
" return pollResponse;",
346329
" });",
@@ -363,15 +346,9 @@ private void addSyncPollOverrideMethod(ClassOrInterfaceDeclaration clazz) {
363346
"}",
364347
"if (pollResponse.getValue() instanceof AnalyzeOperation) {",
365348
" AnalyzeOperation operation = (AnalyzeOperation) pollResponse.getValue();",
366-
" operation.setOperationId(operationId);",
367-
"}",
368-
"if (pollResponse.getValue() instanceof AnalyzeBatchOperation) {",
369-
" AnalyzeBatchOperation operation = (AnalyzeBatchOperation) pollResponse.getValue();",
370-
" operation.setOperationId(operationId);",
349+
" AnalyzeOperationHelper.setOperationId(operation, operationId);",
371350
"}",
372351
"return pollResponse;",
373352
"}")));
374353
}
375-
376-
377354
}

sdk/documentintelligence/azure-ai-documentintelligence/spotbugs-exclude.xml

+7-13
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,7 @@
77
<Or>
88
<Class name="com.azure.ai.documentintelligence.models.AnalyzeBatchResult" />
99
<Class name="com.azure.ai.documentintelligence.models.AnalyzeResult" />
10-
<Class name="com.azure.ai.documentintelligence.models.AuthorizeClassifierCopyRequest" />
11-
<Class name="com.azure.ai.documentintelligence.models.AuthorizeCopyRequest" />
1210
<Class name="com.azure.ai.documentintelligence.models.BoundingRegion" />
13-
<Class name="com.azure.ai.documentintelligence.models.BuildDocumentClassifierRequest" />
14-
<Class name="com.azure.ai.documentintelligence.models.BuildDocumentModelRequest" />
15-
<Class name="com.azure.ai.documentintelligence.models.ComposeDocumentModelRequest" />
16-
<Class name="com.azure.ai.documentintelligence.models.Document" />
1711
<Class name="com.azure.ai.documentintelligence.models.DocumentBarcode" />
1812
<Class name="com.azure.ai.documentintelligence.models.DocumentCaption" />
1913
<Class name="com.azure.ai.documentintelligence.models.DocumentClassifierBuildOperationDetails" />
@@ -42,8 +36,6 @@
4236
<Class name="com.azure.ai.documentintelligence.models.DocumentTableCell" />
4337
<Class name="com.azure.ai.documentintelligence.models.DocumentTypeDetails" />
4438
<Class name="com.azure.ai.documentintelligence.models.DocumentWord" />
45-
<Class name="com.azure.ai.documentintelligence.models.Error" />
46-
<Class name="com.azure.ai.documentintelligence.models.OperationDetails" />
4739
<Class name="com.azure.ai.documentintelligence.models.AnalyzedDocument" />
4840
<Class name="com.azure.ai.documentintelligence.models.AuthorizeClassifierCopyOptions" />
4941
<Class name="com.azure.ai.documentintelligence.models.AuthorizeModelCopyOptions" />
@@ -58,18 +50,20 @@
5850
<Or>
5951
<Class name="com.azure.ai.documentintelligence.DocumentIntelligenceAdministrationClientBuilder" />
6052
<Class name="com.azure.ai.documentintelligence.DocumentIntelligenceClientBuilder" />
61-
<Class name="com.azure.ai.documentintelligence.models.AuthorizeClassifierCopyRequest" />
62-
<Class name="com.azure.ai.documentintelligence.models.AuthorizeCopyRequest" />
63-
<Class name="com.azure.ai.documentintelligence.models.BuildDocumentClassifierRequest" />
64-
<Class name="com.azure.ai.documentintelligence.models.BuildDocumentModelRequest" />
65-
<Class name="com.azure.ai.documentintelligence.models.ComposeDocumentModelRequest" />
6653
<Class name="com.azure.ai.documentintelligence.models.DocumentFieldSchema" />
6754
<Class name="com.azure.ai.documentintelligence.models.DocumentTypeDetails" />
6855
<Class name="com.azure.ai.documentintelligence.models.AuthorizeClassifierCopyOptions" />
6956
<Class name="com.azure.ai.documentintelligence.models.AuthorizeModelCopyOptions" />
7057
<Class name="com.azure.ai.documentintelligence.models.BuildDocumentClassifierOptions" />
7158
<Class name="com.azure.ai.documentintelligence.models.BuildDocumentModelOptions" />
7259
<Class name="com.azure.ai.documentintelligence.models.DocumentIntelligenceError" />
60+
<Class name="com.azure.ai.documentintelligence.implementation.AnalyzeOperationHelper" />
61+
</Or>
62+
</Match>
63+
<Match>
64+
<Bug pattern="EI_EXPOSE_STATIC_REP2" />
65+
<Or>
66+
<Class name="com.azure.ai.documentintelligence.implementation.AnalyzeOperationHelper" />
7367
</Or>
7468
</Match>
7569
</FindBugsFilter>

sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationAsyncClient.java

+22-22
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.azure.ai.documentintelligence.models.BuildDocumentClassifierOptions;
1010
import com.azure.ai.documentintelligence.models.BuildDocumentModelOptions;
1111
import com.azure.ai.documentintelligence.models.ClassifierCopyAuthorization;
12-
import com.azure.ai.documentintelligence.models.ComposeDocumentModelRequest;
12+
import com.azure.ai.documentintelligence.models.ComposeDocumentModelOptions;
1313
import com.azure.ai.documentintelligence.models.DocumentClassifierBuildOperationDetails;
1414
import com.azure.ai.documentintelligence.models.DocumentClassifierCopyToOperationDetails;
1515
import com.azure.ai.documentintelligence.models.DocumentClassifierDetails;
@@ -817,27 +817,6 @@ public Mono<Response<Void>> deleteClassifierWithResponse(String classifierId, Re
817817
return serviceClient.beginBuildDocumentModelWithModelAsync(BinaryData.fromObject(buildRequest), requestOptions);
818818
}
819819

820-
/**
821-
* Creates a new document model from document types of existing document models.
822-
*
823-
* @param composeRequest Compose request parameters.
824-
* @throws IllegalArgumentException thrown if parameters fail the validation.
825-
* @throws HttpResponseException thrown if the request is rejected by server.
826-
* @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
827-
* @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
828-
* @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
829-
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
830-
* @return the {@link PollerFlux} for polling of long-running operation.
831-
*/
832-
@Generated
833-
@ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
834-
public PollerFlux<DocumentModelComposeOperationDetails, DocumentModelDetails>
835-
beginComposeModel(ComposeDocumentModelRequest composeRequest) {
836-
// Generated convenience method for beginComposeModelWithModel
837-
RequestOptions requestOptions = new RequestOptions();
838-
return serviceClient.beginComposeModelWithModelAsync(BinaryData.fromObject(composeRequest), requestOptions);
839-
}
840-
841820
/**
842821
* Generates authorization to copy a document model to this location with
843822
* specified modelId and optional description.
@@ -1168,4 +1147,25 @@ public Mono<Void> deleteClassifier(String classifierId) {
11681147
RequestOptions requestOptions = new RequestOptions();
11691148
return deleteClassifierWithResponse(classifierId, requestOptions).flatMap(FluxUtil::toMono);
11701149
}
1150+
1151+
/**
1152+
* Creates a new document model from document types of existing document models.
1153+
*
1154+
* @param composeRequest Compose request parameters.
1155+
* @throws IllegalArgumentException thrown if parameters fail the validation.
1156+
* @throws HttpResponseException thrown if the request is rejected by server.
1157+
* @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
1158+
* @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
1159+
* @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
1160+
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
1161+
* @return the {@link PollerFlux} for polling of long-running operation.
1162+
*/
1163+
@Generated
1164+
@ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
1165+
public PollerFlux<DocumentModelComposeOperationDetails, DocumentModelDetails>
1166+
beginComposeModel(ComposeDocumentModelOptions composeRequest) {
1167+
// Generated convenience method for beginComposeModelWithModel
1168+
RequestOptions requestOptions = new RequestOptions();
1169+
return serviceClient.beginComposeModelWithModelAsync(BinaryData.fromObject(composeRequest), requestOptions);
1170+
}
11711171
}

0 commit comments

Comments
 (0)