Skip to content

Commit 795a3dc

Browse files
authored
[TA] Use Stream-Style Serialization in azure-ai-textanalytics (Azure#37238)
1 parent e1142ef commit 795a3dc

File tree

160 files changed

+6753
-729
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+6753
-729
lines changed

eng/code-quality-reports/src/main/resources/revapi/revapi.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,12 +195,6 @@
195195
"new": "class com.azure.ai.formrecognizer.documentanalysis.models.(DocumentField|DocumentLine)",
196196
"justification": "Skip customized getters on class when serialization and deserialization."
197197
},
198-
{
199-
"regex": true,
200-
"code": "java.annotation.added",
201-
"new": "class com.azure.ai.textanalytics.models.HealthcareEntityRelationType",
202-
"justification": "Skip JsonCreator annotation on the method fromString when serialization and deserialization."
203-
},
204198
{
205199
"code": "java.class.removed",
206200
"old": "enum com.azure.messaging.eventhubs.checkpointstore.blob.Messages",
@@ -265,6 +259,12 @@
265259
"description": ".*com.fasterxml.jackson.*",
266260
"justification": "Removing Jackson annotations from ACR, KeyVault, and Search in transition to stream-style."
267261
},
262+
{
263+
"regex": true,
264+
"code": "java\\.annotation\\.removed",
265+
"old": ".*? com\\.azure\\.ai\\.textanalytics\\.models.*",
266+
"justification": "Removing Jackson annotations from Text Analytics in transition to stream-style."
267+
},
268268
{
269269
"code": "java.field.removed",
270270
"old": "field com.azure.spring.cloud.core.properties.profile.AzureEnvironmentProperties.AZURE_GERMANY",

sdk/textanalytics/azure-ai-textanalytics/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "java",
44
"TagPrefix": "java/textanalytics/azure-ai-textanalytics",
5-
"Tag": "java/textanalytics/azure-ai-textanalytics_c9a531404c"
5+
"Tag": "java/textanalytics/azure-ai-textanalytics_759d95d1a2"
66
}

sdk/textanalytics/azure-ai-textanalytics/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@
5353
<artifactId>azure-core-http-netty</artifactId>
5454
<version>1.13.9</version> <!-- {x-version-update;com.azure:azure-core-http-netty;dependency} -->
5555
</dependency>
56+
<dependency>
57+
<groupId>com.azure</groupId>
58+
<artifactId>azure-json</artifactId>
59+
<version>1.1.0</version> <!-- {x-version-update;com.azure:azure-json;dependency} -->
60+
</dependency>
5661

5762
<!-- Added this dependency to include necessary annotations used by reactor core.
5863
Without this dependency, javadoc throws a warning as it cannot find enum When.MAYBE

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/MicrosoftCognitiveLanguageServiceTextAnalysisImpl.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.azure.core.annotation.UnexpectedResponseExceptionType;
2121
import com.azure.core.http.HttpPipeline;
2222
import com.azure.core.http.HttpPipelineBuilder;
23-
import com.azure.core.http.policy.CookiePolicy;
2423
import com.azure.core.http.policy.RetryPolicy;
2524
import com.azure.core.http.policy.UserAgentPolicy;
2625
import com.azure.core.http.rest.Response;
@@ -105,9 +104,7 @@ public AnalyzeTextsImpl getAnalyzeTexts() {
105104
*/
106105
MicrosoftCognitiveLanguageServiceTextAnalysisImpl(String endpoint, String apiVersion) {
107106
this(
108-
new HttpPipelineBuilder()
109-
.policies(new UserAgentPolicy(), new RetryPolicy(), new CookiePolicy())
110-
.build(),
107+
new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(),
111108
JacksonAdapter.createDefaultSerializerAdapter(),
112109
endpoint,
113110
apiVersion);

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/MicrosoftCognitiveLanguageServiceTextAnalysisImplBuilder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.azure.core.credential.AzureKeyCredential;
1515
import com.azure.core.credential.TokenCredential;
1616
import com.azure.core.http.HttpClient;
17+
import com.azure.core.http.HttpHeaderName;
1718
import com.azure.core.http.HttpHeaders;
1819
import com.azure.core.http.HttpPipeline;
1920
import com.azure.core.http.HttpPipelineBuilder;
@@ -23,7 +24,6 @@
2324
import com.azure.core.http.policy.AddHeadersPolicy;
2425
import com.azure.core.http.policy.AzureKeyCredentialPolicy;
2526
import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
26-
import com.azure.core.http.policy.CookiePolicy;
2727
import com.azure.core.http.policy.HttpLogOptions;
2828
import com.azure.core.http.policy.HttpLoggingPolicy;
2929
import com.azure.core.http.policy.HttpPipelinePolicy;
@@ -260,7 +260,7 @@ public MicrosoftCognitiveLanguageServiceTextAnalysisImpl buildClient() {
260260
(serializerAdapter != null) ? serializerAdapter : JacksonAdapter.createDefaultSerializerAdapter();
261261
MicrosoftCognitiveLanguageServiceTextAnalysisImpl client =
262262
new MicrosoftCognitiveLanguageServiceTextAnalysisImpl(
263-
localPipeline, localSerializerAdapter, endpoint, localApiVersion);
263+
localPipeline, localSerializerAdapter, this.endpoint, localApiVersion);
264264
return client;
265265
}
266266

@@ -278,7 +278,9 @@ private HttpPipeline createHttpPipeline() {
278278
policies.add(new RequestIdPolicy());
279279
policies.add(new AddHeadersFromContextPolicy());
280280
HttpHeaders headers = new HttpHeaders();
281-
localClientOptions.getHeaders().forEach(header -> headers.set(header.getName(), header.getValue()));
281+
localClientOptions
282+
.getHeaders()
283+
.forEach(header -> headers.set(HttpHeaderName.fromString(header.getName()), header.getValue()));
282284
if (headers.getSize() > 0) {
283285
policies.add(new AddHeadersPolicy(headers));
284286
}
@@ -288,7 +290,6 @@ private HttpPipeline createHttpPipeline() {
288290
HttpPolicyProviders.addBeforeRetryPolicies(policies);
289291
policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
290292
policies.add(new AddDatePolicy());
291-
policies.add(new CookiePolicy());
292293
if (azureKeyCredential != null) {
293294
policies.add(new AzureKeyCredentialPolicy("Ocp-Apim-Subscription-Key", azureKeyCredential));
294295
}

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/models/AbstractiveSummarizationLROResult.java

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@
55
package com.azure.ai.textanalytics.implementation.models;
66

77
import com.azure.core.annotation.Fluent;
8-
import com.fasterxml.jackson.annotation.JsonProperty;
9-
import com.fasterxml.jackson.annotation.JsonTypeInfo;
10-
import com.fasterxml.jackson.annotation.JsonTypeName;
8+
import com.azure.json.JsonReader;
9+
import com.azure.json.JsonToken;
10+
import com.azure.json.JsonWriter;
11+
import java.io.IOException;
1112
import java.time.OffsetDateTime;
13+
import java.util.Objects;
1214

1315
/** An object representing the results for an Abstractive Summarization task. */
14-
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
15-
@JsonTypeName("AbstractiveSummarizationLROResults")
1616
@Fluent
1717
public final class AbstractiveSummarizationLROResult extends AnalyzeTextLROResult {
1818
/*
1919
* An object representing the pre-build summarization results of each document.
2020
*/
21-
@JsonProperty(value = "results", required = true)
2221
private AbstractiveSummarizationResult results;
2322

2423
/** Creates an instance of AbstractiveSummarizationLROResult class. */
@@ -64,4 +63,64 @@ public AbstractiveSummarizationLROResult setStatus(State status) {
6463
super.setStatus(status);
6564
return this;
6665
}
66+
67+
@Override
68+
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
69+
jsonWriter.writeStartObject();
70+
jsonWriter.writeStringField(
71+
"kind", Objects.toString(AnalyzeTextLROResultsKind.ABSTRACTIVE_SUMMARIZATION_LRORESULTS, null));
72+
jsonWriter.writeStringField("lastUpdateDateTime", Objects.toString(getLastUpdateDateTime(), null));
73+
jsonWriter.writeStringField("status", Objects.toString(getStatus(), null));
74+
jsonWriter.writeStringField("taskName", getTaskName());
75+
jsonWriter.writeJsonField("results", this.results);
76+
return jsonWriter.writeEndObject();
77+
}
78+
79+
/**
80+
* Reads an instance of AbstractiveSummarizationLROResult from the JsonReader.
81+
*
82+
* @param jsonReader The JsonReader being read.
83+
* @return An instance of AbstractiveSummarizationLROResult if the JsonReader was pointing to an instance of it, or
84+
* null if it was pointing to JSON null.
85+
* @throws IllegalStateException If the deserialized JSON object was missing any required properties or the
86+
* polymorphic discriminator.
87+
* @throws IOException If an error occurs while reading the AbstractiveSummarizationLROResult.
88+
*/
89+
public static AbstractiveSummarizationLROResult fromJson(JsonReader jsonReader) throws IOException {
90+
return jsonReader.readObject(
91+
reader -> {
92+
AbstractiveSummarizationLROResult deserializedAbstractiveSummarizationLROResult =
93+
new AbstractiveSummarizationLROResult();
94+
while (reader.nextToken() != JsonToken.END_OBJECT) {
95+
String fieldName = reader.getFieldName();
96+
reader.nextToken();
97+
98+
if ("kind".equals(fieldName)) {
99+
String kind = reader.getString();
100+
if (!"AbstractiveSummarizationLROResults".equals(kind)) {
101+
throw new IllegalStateException(
102+
"'kind' was expected to be non-null and equal to 'AbstractiveSummarizationLROResults'. The found 'kind' was '"
103+
+ kind
104+
+ "'.");
105+
}
106+
} else if ("lastUpdateDateTime".equals(fieldName)) {
107+
deserializedAbstractiveSummarizationLROResult.setLastUpdateDateTime(
108+
reader.getNullable(
109+
nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
110+
} else if ("status".equals(fieldName)) {
111+
deserializedAbstractiveSummarizationLROResult.setStatus(
112+
State.fromString(reader.getString()));
113+
} else if ("taskName".equals(fieldName)) {
114+
deserializedAbstractiveSummarizationLROResult.setTaskName(reader.getString());
115+
} else if ("results".equals(fieldName)) {
116+
deserializedAbstractiveSummarizationLROResult.results =
117+
AbstractiveSummarizationResult.fromJson(reader);
118+
} else {
119+
reader.skipChildren();
120+
}
121+
}
122+
123+
return deserializedAbstractiveSummarizationLROResult;
124+
});
125+
}
67126
}

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/models/AbstractiveSummarizationLROTask.java

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
package com.azure.ai.textanalytics.implementation.models;
66

77
import com.azure.core.annotation.Fluent;
8-
import com.fasterxml.jackson.annotation.JsonProperty;
9-
import com.fasterxml.jackson.annotation.JsonTypeInfo;
10-
import com.fasterxml.jackson.annotation.JsonTypeName;
8+
import com.azure.json.JsonReader;
9+
import com.azure.json.JsonToken;
10+
import com.azure.json.JsonWriter;
11+
import java.io.IOException;
12+
import java.util.Objects;
1113

1214
/** An object representing the task definition for an Abstractive Summarization task. */
13-
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
14-
@JsonTypeName("AbstractiveSummarization")
1515
@Fluent
1616
public final class AbstractiveSummarizationLROTask extends AnalyzeTextLROTask {
1717
/*
1818
* Supported parameters for the pre-build Abstractive Summarization task.
1919
*/
20-
@JsonProperty(value = "parameters", required = true)
2120
private AbstractiveSummarizationTaskParameters parameters;
2221

2322
/** Creates an instance of AbstractiveSummarizationLROTask class. */
@@ -49,4 +48,54 @@ public AbstractiveSummarizationLROTask setTaskName(String taskName) {
4948
super.setTaskName(taskName);
5049
return this;
5150
}
51+
52+
@Override
53+
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
54+
jsonWriter.writeStartObject();
55+
jsonWriter.writeStringField("kind", Objects.toString(AnalyzeTextLROTaskKind.ABSTRACTIVE_SUMMARIZATION, null));
56+
jsonWriter.writeStringField("taskName", getTaskName());
57+
jsonWriter.writeJsonField("parameters", this.parameters);
58+
return jsonWriter.writeEndObject();
59+
}
60+
61+
/**
62+
* Reads an instance of AbstractiveSummarizationLROTask from the JsonReader.
63+
*
64+
* @param jsonReader The JsonReader being read.
65+
* @return An instance of AbstractiveSummarizationLROTask if the JsonReader was pointing to an instance of it, or
66+
* null if it was pointing to JSON null.
67+
* @throws IllegalStateException If the deserialized JSON object was missing any required properties or the
68+
* polymorphic discriminator.
69+
* @throws IOException If an error occurs while reading the AbstractiveSummarizationLROTask.
70+
*/
71+
public static AbstractiveSummarizationLROTask fromJson(JsonReader jsonReader) throws IOException {
72+
return jsonReader.readObject(
73+
reader -> {
74+
AbstractiveSummarizationLROTask deserializedAbstractiveSummarizationLROTask =
75+
new AbstractiveSummarizationLROTask();
76+
while (reader.nextToken() != JsonToken.END_OBJECT) {
77+
String fieldName = reader.getFieldName();
78+
reader.nextToken();
79+
80+
if ("kind".equals(fieldName)) {
81+
String kind = reader.getString();
82+
if (!"AbstractiveSummarization".equals(kind)) {
83+
throw new IllegalStateException(
84+
"'kind' was expected to be non-null and equal to 'AbstractiveSummarization'. The found 'kind' was '"
85+
+ kind
86+
+ "'.");
87+
}
88+
} else if ("taskName".equals(fieldName)) {
89+
deserializedAbstractiveSummarizationLROTask.setTaskName(reader.getString());
90+
} else if ("parameters".equals(fieldName)) {
91+
deserializedAbstractiveSummarizationLROTask.parameters =
92+
AbstractiveSummarizationTaskParameters.fromJson(reader);
93+
} else {
94+
reader.skipChildren();
95+
}
96+
}
97+
98+
return deserializedAbstractiveSummarizationLROTask;
99+
});
100+
}
52101
}

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/models/AbstractiveSummarizationResult.java

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
package com.azure.ai.textanalytics.implementation.models;
66

77
import com.azure.core.annotation.Fluent;
8-
import com.fasterxml.jackson.annotation.JsonProperty;
8+
import com.azure.json.JsonReader;
9+
import com.azure.json.JsonToken;
10+
import com.azure.json.JsonWriter;
11+
import java.io.IOException;
912
import java.util.List;
1013

1114
/** An object representing the pre-build summarization results of each document. */
@@ -14,19 +17,16 @@ public final class AbstractiveSummarizationResult extends AbstractiveSummarizati
1417
/*
1518
* Errors by document id.
1619
*/
17-
@JsonProperty(value = "errors", required = true)
1820
private List<DocumentError> errors;
1921

2022
/*
2123
* if showStats=true was specified in the request this field will contain information about the request payload.
2224
*/
23-
@JsonProperty(value = "statistics")
2425
private RequestStatistics statistics;
2526

2627
/*
2728
* This field indicates which model is used for scoring.
2829
*/
29-
@JsonProperty(value = "modelVersion", required = true)
3030
private String modelVersion;
3131

3232
/** Creates an instance of AbstractiveSummarizationResult class. */
@@ -100,4 +100,52 @@ public AbstractiveSummarizationResult setDocuments(List<AbstractiveSummaryDocume
100100
super.setDocuments(documents);
101101
return this;
102102
}
103+
104+
@Override
105+
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
106+
jsonWriter.writeStartObject();
107+
jsonWriter.writeArrayField("documents", getDocuments(), (writer, element) -> writer.writeJson(element));
108+
jsonWriter.writeArrayField("errors", this.errors, (writer, element) -> writer.writeJson(element));
109+
jsonWriter.writeStringField("modelVersion", this.modelVersion);
110+
jsonWriter.writeJsonField("statistics", this.statistics);
111+
return jsonWriter.writeEndObject();
112+
}
113+
114+
/**
115+
* Reads an instance of AbstractiveSummarizationResult from the JsonReader.
116+
*
117+
* @param jsonReader The JsonReader being read.
118+
* @return An instance of AbstractiveSummarizationResult if the JsonReader was pointing to an instance of it, or
119+
* null if it was pointing to JSON null.
120+
* @throws IllegalStateException If the deserialized JSON object was missing any required properties.
121+
* @throws IOException If an error occurs while reading the AbstractiveSummarizationResult.
122+
*/
123+
public static AbstractiveSummarizationResult fromJson(JsonReader jsonReader) throws IOException {
124+
return jsonReader.readObject(
125+
reader -> {
126+
AbstractiveSummarizationResult deserializedAbstractiveSummarizationResult =
127+
new AbstractiveSummarizationResult();
128+
while (reader.nextToken() != JsonToken.END_OBJECT) {
129+
String fieldName = reader.getFieldName();
130+
reader.nextToken();
131+
132+
if ("documents".equals(fieldName)) {
133+
List<AbstractiveSummaryDocumentResult> documents =
134+
reader.readArray(reader1 -> AbstractiveSummaryDocumentResult.fromJson(reader1));
135+
deserializedAbstractiveSummarizationResult.setDocuments(documents);
136+
} else if ("errors".equals(fieldName)) {
137+
List<DocumentError> errors = reader.readArray(reader1 -> DocumentError.fromJson(reader1));
138+
deserializedAbstractiveSummarizationResult.errors = errors;
139+
} else if ("modelVersion".equals(fieldName)) {
140+
deserializedAbstractiveSummarizationResult.modelVersion = reader.getString();
141+
} else if ("statistics".equals(fieldName)) {
142+
deserializedAbstractiveSummarizationResult.statistics = RequestStatistics.fromJson(reader);
143+
} else {
144+
reader.skipChildren();
145+
}
146+
}
147+
148+
return deserializedAbstractiveSummarizationResult;
149+
});
150+
}
103151
}

0 commit comments

Comments
 (0)