From d82c62f4b591a3c94adfaabbabd54c09854b2265 Mon Sep 17 00:00:00 2001 From: shafang Date: Fri, 15 May 2020 18:07:11 -0700 Subject: [PATCH 1/6] make fromString package-private --- .../AnalyzeSentimentAsyncClient.java | 31 ++----------------- .../DetectLanguageAsyncClient.java | 8 ++--- .../ExtractKeyPhraseAsyncClient.java | 4 +-- .../RecognizeEntityAsyncClient.java | 9 ++---- .../RecognizeLinkedEntityAsyncClient.java | 9 ++---- .../azure/ai/textanalytics/Transforms.java | 9 +++--- .../models/CategorizedEntity.java | 4 +-- .../models/DocumentSentiment.java | 4 +-- .../textanalytics/models/EntityCategory.java | 2 +- .../models/SentenceSentiment.java | 4 +-- .../models/TextAnalyticsError.java | 4 +-- .../models/TextAnalyticsWarning.java | 4 +-- .../textanalytics/models/TextSentiment.java | 2 +- .../ai/textanalytics/models/WarningCode.java | 2 +- .../com/azure/ai/textanalytics/TestUtils.java | 20 ++++++------ .../TextAnalyticsAsyncClientTest.java | 12 +++---- .../TextAnalyticsClientTest.java | 14 ++++----- 17 files changed, 53 insertions(+), 89 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java index 728c5a73eb09..b505d60099ae 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java @@ -15,8 +15,6 @@ import com.azure.ai.textanalytics.models.TextAnalyticsRequestOptions; import com.azure.ai.textanalytics.models.TextAnalyticsWarning; import com.azure.ai.textanalytics.models.TextDocumentInput; -import com.azure.ai.textanalytics.models.TextSentiment; -import com.azure.ai.textanalytics.models.WarningCode; import com.azure.ai.textanalytics.util.TextAnalyticsPagedFlux; import com.azure.ai.textanalytics.util.TextAnalyticsPagedResponse; import com.azure.core.exception.HttpResponseException; @@ -28,7 +26,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; @@ -144,43 +141,21 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedR * @return The {@link AnalyzeSentimentResult} to be returned by the SDK. */ private AnalyzeSentimentResult convertToAnalyzeSentimentResult(DocumentSentiment documentSentiment) { - // Document text sentiment - final TextSentiment documentSentimentLabel = TextSentiment.fromString( - documentSentiment.getSentiment().toString()); - if (documentSentimentLabel == null) { - // Not throw exception for an invalid Sentiment type because we should not skip processing the - // other response. It is a service issue. - logger.logExceptionAsWarning( - new RuntimeException(String.format(Locale.ROOT, "'%s' is not valid text sentiment.", - documentSentiment.getSentiment()))); - } - final SentimentConfidenceScorePerLabel confidenceScorePerLabel = documentSentiment.getConfidenceScores(); - // Sentence text sentiment final List sentenceSentiments = documentSentiment.getSentences().stream() .map(sentenceSentiment -> { - final TextSentiment sentenceSentimentLabel = TextSentiment.fromString( - sentenceSentiment.getSentiment().toString()); - if (sentenceSentimentLabel == null) { - // Not throw exception for an invalid Sentiment type because we should not skip processing the - // other response. It is a service issue. - logger.logExceptionAsWarning( - new RuntimeException(String.format(Locale.ROOT, "'%s' is not valid text sentiment.", - sentenceSentiment.getSentiment()))); - } final SentimentConfidenceScorePerLabel confidenceScorePerSentence = sentenceSentiment.getConfidenceScores(); - return new SentenceSentiment(sentenceSentiment.getText(), - sentenceSentimentLabel, + sentenceSentiment.getSentiment().toString(), new SentimentConfidenceScores(confidenceScorePerSentence.getNegative(), confidenceScorePerSentence.getNeutral(), confidenceScorePerSentence.getPositive())); }).collect(Collectors.toList()); // Warnings final List warnings = documentSentiment.getWarnings().stream().map( - warning -> new TextAnalyticsWarning(WarningCode.fromString(warning.getCode().toString()), + warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())).collect(Collectors.toList()); return new AnalyzeSentimentResult( @@ -189,7 +164,7 @@ private AnalyzeSentimentResult convertToAnalyzeSentimentResult(DocumentSentiment ? null : toTextDocumentStatistics(documentSentiment.getStatistics()), null, new com.azure.ai.textanalytics.models.DocumentSentiment( - documentSentimentLabel, + documentSentiment.getSentiment().toString(), new SentimentConfidenceScores( confidenceScorePerLabel.getNegative(), confidenceScorePerLabel.getNeutral(), diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java index 112345eef2a0..957259af6f7e 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java @@ -13,7 +13,6 @@ import com.azure.ai.textanalytics.models.DetectedLanguage; import com.azure.ai.textanalytics.models.TextAnalyticsRequestOptions; import com.azure.ai.textanalytics.models.TextAnalyticsWarning; -import com.azure.ai.textanalytics.models.WarningCode; import com.azure.ai.textanalytics.util.TextAnalyticsPagedFlux; import com.azure.ai.textanalytics.util.TextAnalyticsPagedResponse; import com.azure.core.exception.HttpResponseException; @@ -113,10 +112,9 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedRes documentLanguage.getDetectedLanguage(); // warnings - final List warnings = documentLanguage.getWarnings().stream().map(warning -> - new TextAnalyticsWarning(WarningCode.fromString(warning.getCode().toString()), - warning.getMessage())).collect(Collectors.toList()); - + final List warnings = documentLanguage.getWarnings().stream() + .map(warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) + .collect(Collectors.toList()); detectLanguageResults.add(new DetectLanguageResult( documentLanguage.getId(), diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java index fd0c18cadd4b..737fbbcf6b94 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java @@ -14,7 +14,6 @@ import com.azure.ai.textanalytics.models.TextAnalyticsRequestOptions; import com.azure.ai.textanalytics.models.TextAnalyticsWarning; import com.azure.ai.textanalytics.models.TextDocumentInput; -import com.azure.ai.textanalytics.models.WarningCode; import com.azure.ai.textanalytics.util.TextAnalyticsPagedFlux; import com.azure.ai.textanalytics.util.TextAnalyticsPagedResponse; import com.azure.core.exception.HttpResponseException; @@ -151,8 +150,7 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedR new KeyPhrasesCollection( new IterableStream<>(documentKeyPhrases.getKeyPhrases()), new IterableStream<>(documentKeyPhrases.getWarnings().stream().map(warning -> - new TextAnalyticsWarning(WarningCode.fromString(warning.getCode().toString()), - warning.getMessage())) + new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) .collect(Collectors.toList()))))); } // Document errors diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java index 11ebb469ccb7..dc1a65747742 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java @@ -8,12 +8,10 @@ import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput; import com.azure.ai.textanalytics.models.CategorizedEntity; import com.azure.ai.textanalytics.models.CategorizedEntityCollection; -import com.azure.ai.textanalytics.models.EntityCategory; import com.azure.ai.textanalytics.models.RecognizeEntitiesResult; import com.azure.ai.textanalytics.models.TextAnalyticsRequestOptions; import com.azure.ai.textanalytics.models.TextAnalyticsWarning; import com.azure.ai.textanalytics.models.TextDocumentInput; -import com.azure.ai.textanalytics.models.WarningCode; import com.azure.ai.textanalytics.util.TextAnalyticsPagedFlux; import com.azure.ai.textanalytics.util.TextAnalyticsPagedResponse; import com.azure.core.exception.HttpResponseException; @@ -151,12 +149,11 @@ private TextAnalyticsPagedResponse toTextAnalyticsPaged null, new CategorizedEntityCollection( new IterableStream<>(documentEntities.getEntities().stream().map(entity -> - new CategorizedEntity(entity.getText(), EntityCategory.fromString(entity.getCategory()), + new CategorizedEntity(entity.getText(), entity.getCategory(), entity.getSubcategory(), entity.getConfidenceScore())) .collect(Collectors.toList())), - new IterableStream<>(documentEntities.getWarnings().stream().map(warning -> - new TextAnalyticsWarning(WarningCode.fromString(warning.getCode().toString()), - warning.getMessage())) + new IterableStream<>(documentEntities.getWarnings().stream() + .map(warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) .collect(Collectors.toList()))) ))); // Document errors diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java index 4f4b44ba0028..139bf0519574 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java @@ -13,7 +13,6 @@ import com.azure.ai.textanalytics.models.TextAnalyticsRequestOptions; import com.azure.ai.textanalytics.models.TextAnalyticsWarning; import com.azure.ai.textanalytics.models.TextDocumentInput; -import com.azure.ai.textanalytics.models.WarningCode; import com.azure.ai.textanalytics.util.TextAnalyticsPagedFlux; import com.azure.ai.textanalytics.util.TextAnalyticsPagedResponse; import com.azure.core.exception.HttpResponseException; @@ -101,8 +100,7 @@ TextAnalyticsPagedFlux recognizeLinkedEntitiesBat return new TextAnalyticsPagedFlux<>(() -> (continuationToken, pageSize) -> withContext(context -> getRecognizedLinkedEntitiesResponseInPage(documents, options, context)).flux()); } catch (RuntimeException ex) { - return new TextAnalyticsPagedFlux<>(() -> - (continuationToken, pageSize) -> fluxError(logger, ex)); + return new TextAnalyticsPagedFlux<>(() -> (continuationToken, pageSize) -> fluxError(logger, ex)); } } @@ -149,9 +147,8 @@ private TextAnalyticsPagedResponse toTextAnalytic null, new LinkedEntityCollection( mapLinkedEntity(documentLinkedEntities.getEntities()), - new IterableStream<>(documentLinkedEntities.getWarnings().stream().map(warning -> - new TextAnalyticsWarning(WarningCode.fromString(warning.getCode().toString()), - warning.getMessage())) + new IterableStream<>(documentLinkedEntities.getWarnings().stream() + .map(warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) .collect(Collectors.toList()))) ))); // Document errors diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java index b611df351982..8e3ee8e80277 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java @@ -8,12 +8,11 @@ import com.azure.ai.textanalytics.implementation.models.MultiLanguageInput; import com.azure.ai.textanalytics.implementation.models.RequestStatistics; import com.azure.ai.textanalytics.implementation.models.TextAnalyticsError; -import com.azure.ai.textanalytics.models.TextDocumentBatchStatistics; -import com.azure.ai.textanalytics.models.TextDocumentStatistics; import com.azure.ai.textanalytics.models.DetectLanguageInput; -import com.azure.ai.textanalytics.models.TextAnalyticsErrorCode; import com.azure.ai.textanalytics.models.TextAnalyticsException; +import com.azure.ai.textanalytics.models.TextDocumentBatchStatistics; import com.azure.ai.textanalytics.models.TextDocumentInput; +import com.azure.ai.textanalytics.models.TextDocumentStatistics; import java.util.ArrayList; import java.util.List; @@ -79,12 +78,12 @@ static com.azure.ai.textanalytics.models.TextAnalyticsError toTextAnalyticsError TextAnalyticsError textAnalyticsError) { if (textAnalyticsError.getInnererror() == null) { return new com.azure.ai.textanalytics.models.TextAnalyticsError( - TextAnalyticsErrorCode.fromString(textAnalyticsError.getCode().toString()), + textAnalyticsError.getCode().toString(), textAnalyticsError.getMessage(), textAnalyticsError.getTarget()); } return new com.azure.ai.textanalytics.models.TextAnalyticsError( - TextAnalyticsErrorCode.fromString(textAnalyticsError.getInnererror().getCode().toString()), + textAnalyticsError.getInnererror().getCode().toString(), textAnalyticsError.getInnererror().getMessage(), textAnalyticsError.getInnererror().getTarget()); } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/CategorizedEntity.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/CategorizedEntity.java index fd666be4127f..1198931b93fa 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/CategorizedEntity.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/CategorizedEntity.java @@ -38,9 +38,9 @@ public final class CategorizedEntity { * @param subcategory The entity subcategory, such as Age/Year/TimeRange etc. * @param confidenceScore A confidence score between 0 and 1 of the extracted entity. */ - public CategorizedEntity(String text, EntityCategory category, String subcategory, double confidenceScore) { + public CategorizedEntity(String text, String category, String subcategory, double confidenceScore) { this.text = text; - this.category = category; + this.category = EntityCategory.fromString(category); this.subcategory = subcategory; this.confidenceScore = confidenceScore; } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/DocumentSentiment.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/DocumentSentiment.java index 39db850edbe8..1d33cb04bda3 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/DocumentSentiment.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/DocumentSentiment.java @@ -26,9 +26,9 @@ public final class DocumentSentiment { * @param sentences An {@link IterableStream} of sentence sentiments. * @param warnings An {@link IterableStream} of {@link TextAnalyticsWarning}. */ - public DocumentSentiment(TextSentiment sentiment, SentimentConfidenceScores confidenceScores, + public DocumentSentiment(String sentiment, SentimentConfidenceScores confidenceScores, IterableStream sentences, IterableStream warnings) { - this.sentiment = sentiment; + this.sentiment = TextSentiment.fromString(sentiment); this.confidenceScores = confidenceScores; this.sentences = sentences; this.warnings = warnings; diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/EntityCategory.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/EntityCategory.java index 5d412ae6b1af..4e17276052d5 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/EntityCategory.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/EntityCategory.java @@ -91,7 +91,7 @@ public final class EntityCategory extends ExpandableStringEnum { * @return The corresponding {@link EntityCategory}. */ @JsonCreator - public static EntityCategory fromString(String name) { + static EntityCategory fromString(String name) { return fromString(name, EntityCategory.class); } } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/SentenceSentiment.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/SentenceSentiment.java index 636739209fe9..b14092e5c585 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/SentenceSentiment.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/SentenceSentiment.java @@ -23,9 +23,9 @@ public final class SentenceSentiment { * @param confidenceScores The sentiment confidence score (Softmax score) between 0 and 1, for each sentiment label. * Higher values signify higher confidence. */ - public SentenceSentiment(String text, TextSentiment sentiment, SentimentConfidenceScores confidenceScores) { + public SentenceSentiment(String text, String sentiment, SentimentConfidenceScores confidenceScores) { this.text = text; - this.sentiment = sentiment; + this.sentiment = TextSentiment.fromString(sentiment); this.confidenceScores = confidenceScores; } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java index 0e805491b510..19eab46446e3 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java @@ -34,8 +34,8 @@ public final class TextAnalyticsError { * @param message The error message. * @param target The error target. */ - public TextAnalyticsError(TextAnalyticsErrorCode code, String message, String target) { - this.code = code; + public TextAnalyticsError(String code, String message, String target) { + this.code = TextAnalyticsErrorCode.fromString(code); this.message = message; this.target = target; } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java index 317e89434165..f32aca30589d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java @@ -26,8 +26,8 @@ public final class TextAnalyticsWarning { * @param code The warning code value * @param message The warning message. */ - public TextAnalyticsWarning(WarningCode code, String message) { - this.code = code; + public TextAnalyticsWarning(String code, String message) { + this.code = WarningCode.fromString(code); this.message = message; } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextSentiment.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextSentiment.java index 4a187e5018f7..d6ef33623e6b 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextSentiment.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextSentiment.java @@ -39,7 +39,7 @@ public final class TextSentiment extends ExpandableStringEnum { * @return The corresponding {@link TextSentiment}. */ @JsonCreator - public static TextSentiment fromString(String name) { + static TextSentiment fromString(String name) { return fromString(name, TextSentiment.class); } } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/WarningCode.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/WarningCode.java index ce3e3e17d26e..1bc7b5ea56d7 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/WarningCode.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/WarningCode.java @@ -30,7 +30,7 @@ public final class WarningCode extends ExpandableStringEnum { * @return The corresponding {@link WarningCode}. */ @JsonCreator - public static WarningCode fromString(String name) { + static WarningCode fromString(String name) { return fromString(name, WarningCode.class); } } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java index 70701be0504b..9f9babba652e 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java @@ -181,9 +181,9 @@ static TextAnalyticsPagedResponse getExpectedCategorizedEntit * Helper method to get the expected Categorized Entities List 1 */ static List getCategorizedEntitiesList1() { - CategorizedEntity categorizedEntity1 = new CategorizedEntity("trip", EntityCategory.EVENT, null, 0.0); - CategorizedEntity categorizedEntity2 = new CategorizedEntity("Seattle", EntityCategory.LOCATION, "GPE", 0.0); - CategorizedEntity categorizedEntity3 = new CategorizedEntity("last week", EntityCategory.DATE_TIME, "DateRange", 0.0); + CategorizedEntity categorizedEntity1 = new CategorizedEntity("trip", EntityCategory.EVENT.toString(), null, 0.0); + CategorizedEntity categorizedEntity2 = new CategorizedEntity("Seattle", EntityCategory.LOCATION.toString(), "GPE", 0.0); + CategorizedEntity categorizedEntity3 = new CategorizedEntity("last week", EntityCategory.DATE_TIME.toString(), "DateRange", 0.0); return Arrays.asList(categorizedEntity1, categorizedEntity2, categorizedEntity3); } @@ -191,7 +191,7 @@ static List getCategorizedEntitiesList1() { * Helper method to get the expected Categorized Entities List 2 */ static List getCategorizedEntitiesList2() { - CategorizedEntity categorizedEntity3 = new CategorizedEntity("Microsoft", EntityCategory.ORGANIZATION, null, 0.0); + CategorizedEntity categorizedEntity3 = new CategorizedEntity("Microsoft", EntityCategory.ORGANIZATION.toString(), null, 0.0); return Arrays.asList(categorizedEntity3); } @@ -270,18 +270,18 @@ static TextAnalyticsPagedResponse getExpectedBatchKeyPhr static TextAnalyticsPagedResponse getExpectedBatchTextSentiment() { final TextDocumentStatistics textDocumentStatistics = new TextDocumentStatistics(67, 1); - final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment(TextSentiment.MIXED, + final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment(TextSentiment.MIXED.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0), new IterableStream<>(Arrays.asList( - new SentenceSentiment("", TextSentiment.NEGATIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)), - new SentenceSentiment("", TextSentiment.POSITIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)) + new SentenceSentiment("", TextSentiment.NEGATIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)), + new SentenceSentiment("", TextSentiment.POSITIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)) )), null); - final DocumentSentiment expectedDocumentSentiment2 = new DocumentSentiment(TextSentiment.MIXED, + final DocumentSentiment expectedDocumentSentiment2 = new DocumentSentiment(TextSentiment.MIXED.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0), new IterableStream<>(Arrays.asList( - new SentenceSentiment("", TextSentiment.POSITIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)), - new SentenceSentiment("", TextSentiment.NEGATIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)) + new SentenceSentiment("", TextSentiment.POSITIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)), + new SentenceSentiment("", TextSentiment.NEGATIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)) )), null); final AnalyzeSentimentResult analyzeSentimentResult1 = new AnalyzeSentimentResult("0", diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClientTest.java b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClientTest.java index a11972b8712a..fd144a94de57 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClientTest.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClientTest.java @@ -558,11 +558,11 @@ public void extractKeyPhrasesBatchWarning(HttpClient httpClient, TextAnalyticsSe @MethodSource("com.azure.ai.textanalytics.TestUtils#getTestParameters") public void analyseSentimentForTextInput(HttpClient httpClient, TextAnalyticsServiceVersion serviceVersion) { client = getTextAnalyticsAsyncClient(httpClient, serviceVersion); - final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment(TextSentiment.MIXED, + final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment(TextSentiment.MIXED.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0), new IterableStream<>(Arrays.asList( - new SentenceSentiment("", TextSentiment.NEGATIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)), - new SentenceSentiment("", TextSentiment.POSITIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)) + new SentenceSentiment("", TextSentiment.NEGATIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)), + new SentenceSentiment("", TextSentiment.POSITIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)) )), null); StepVerifier @@ -590,11 +590,11 @@ public void analyseSentimentForEmptyText(HttpClient httpClient, TextAnalyticsSer public void analyseSentimentForFaultyText(HttpClient httpClient, TextAnalyticsServiceVersion serviceVersion) { client = getTextAnalyticsAsyncClient(httpClient, serviceVersion); final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment( - TextSentiment.NEUTRAL, + TextSentiment.NEUTRAL.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0), new IterableStream<>(Arrays.asList( - new SentenceSentiment("", TextSentiment.NEUTRAL, new SentimentConfidenceScores(0.0, 0.0, 0.0)), - new SentenceSentiment("", TextSentiment.NEUTRAL, new SentimentConfidenceScores(0.0, 0.0, 0.0)) + new SentenceSentiment("", TextSentiment.NEUTRAL.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)), + new SentenceSentiment("", TextSentiment.NEUTRAL.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)) )), null); StepVerifier.create(client.analyzeSentiment("!@#%%")) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsClientTest.java b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsClientTest.java index 918b5f59595f..08146c07cbf0 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsClientTest.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TextAnalyticsClientTest.java @@ -317,7 +317,7 @@ public void recognizeLinkedEntitiesForTextInput(HttpClient httpClient, TextAnaly @MethodSource("com.azure.ai.textanalytics.TestUtils#getTestParameters") public void recognizeLinkedEntitiesForEmptyText(HttpClient httpClient, TextAnalyticsServiceVersion serviceVersion) { client = getTextAnalyticsClient(httpClient, serviceVersion); - Exception exception = assertThrows(TextAnalyticsException.class, () -> client.recognizeLinkedEntities("").iterator().hasNext()); + TextAnalyticsException exception = assertThrows(TextAnalyticsException.class, () -> client.recognizeLinkedEntities("").iterator().hasNext()); assertTrue(exception.getMessage().equals(INVALID_DOCUMENT_EXPECTED_EXCEPTION_MESSAGE)); } @@ -510,11 +510,11 @@ public void extractKeyPhrasesBatchWarning(HttpClient httpClient, TextAnalyticsSe public void analyseSentimentForTextInput(HttpClient httpClient, TextAnalyticsServiceVersion serviceVersion) { client = getTextAnalyticsClient(httpClient, serviceVersion); final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment( - TextSentiment.MIXED, + TextSentiment.MIXED.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0), new IterableStream<>(Arrays.asList( - new SentenceSentiment("", TextSentiment.NEGATIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)), - new SentenceSentiment("", TextSentiment.POSITIVE, new SentimentConfidenceScores(0.0, 0.0, 0.0)) + new SentenceSentiment("", TextSentiment.NEGATIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)), + new SentenceSentiment("", TextSentiment.POSITIVE.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)) )), null); DocumentSentiment analyzeSentimentResult = client.analyzeSentiment("The hotel was dark and unclean. The restaurant had amazing gnocchi."); @@ -540,11 +540,11 @@ public void analyseSentimentForEmptyText(HttpClient httpClient, TextAnalyticsSer @MethodSource("com.azure.ai.textanalytics.TestUtils#getTestParameters") public void analyseSentimentForFaultyText(HttpClient httpClient, TextAnalyticsServiceVersion serviceVersion) { client = getTextAnalyticsClient(httpClient, serviceVersion); - final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment(TextSentiment.NEUTRAL, + final DocumentSentiment expectedDocumentSentiment = new DocumentSentiment(TextSentiment.NEUTRAL.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0), new IterableStream<>(Arrays.asList( - new SentenceSentiment("", TextSentiment.NEUTRAL, new SentimentConfidenceScores(0.0, 0.0, 0.0)), - new SentenceSentiment("", TextSentiment.NEUTRAL, new SentimentConfidenceScores(0.0, 0.0, 0.0)) + new SentenceSentiment("", TextSentiment.NEUTRAL.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)), + new SentenceSentiment("", TextSentiment.NEUTRAL.toString(), new SentimentConfidenceScores(0.0, 0.0, 0.0)) )), null); DocumentSentiment analyzeSentimentResult = client.analyzeSentiment("!@#%%"); From c22acec4615badd248e370adc0241c627c0082c8 Mon Sep 17 00:00:00 2001 From: shafang Date: Fri, 15 May 2020 18:15:50 -0700 Subject: [PATCH 2/6] remove public modifiler in fromString() --- .../azure/ai/textanalytics/models/TextAnalyticsErrorCode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsErrorCode.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsErrorCode.java index 6603e8cf34aa..12d47c384163 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsErrorCode.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsErrorCode.java @@ -84,7 +84,7 @@ public final class TextAnalyticsErrorCode extends ExpandableStringEnum Date: Fri, 15 May 2020 19:05:45 -0700 Subject: [PATCH 3/6] rename parameter name --- .../ai/textanalytics/models/TextAnalyticsError.java | 11 +++++------ .../models/TextAnalyticsException.java | 13 ++++++------- .../textanalytics/models/TextAnalyticsWarning.java | 10 +++++----- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java index 19eab46446e3..1e41e50e4edc 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsError.java @@ -15,7 +15,7 @@ public final class TextAnalyticsError { * Error code. Possible values include: 'invalidRequest', * 'invalidArgument', 'internalServerError', 'serviceUnavailable' */ - private final TextAnalyticsErrorCode code; + private final TextAnalyticsErrorCode errorCode; /* * Error message. @@ -29,13 +29,12 @@ public final class TextAnalyticsError { /** * Creates a {@code TextAnalyticsError} model that describes text analytics error. - * - * @param code The error code. + * @param errorCode The error code. * @param message The error message. * @param target The error target. */ - public TextAnalyticsError(String code, String message, String target) { - this.code = TextAnalyticsErrorCode.fromString(code); + public TextAnalyticsError(String errorCode, String message, String target) { + this.errorCode = TextAnalyticsErrorCode.fromString(errorCode); this.message = message; this.target = target; } @@ -48,7 +47,7 @@ public TextAnalyticsError(String code, String message, String target) { * @return The code value. */ public TextAnalyticsErrorCode getErrorCode() { - return this.code; + return this.errorCode; } /** diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsException.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsException.java index 1ac570432dab..e83da61f4cb1 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsException.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsException.java @@ -13,26 +13,25 @@ public class TextAnalyticsException extends AzureException { private static final String ERROR_CODE = "ErrorCodeValue"; private static final String TARGET = "target"; - private final String code; + private final String errorCode; private final String target; /** * Initializes a new instance of the {@link TextAnalyticsException} class. - * * @param message Text contains any additional details of the exception. - * @param code The service returned error code value. + * @param errorCode The service returned error code value. * @param target The target for this exception. */ - public TextAnalyticsException(String message, String code, String target) { + public TextAnalyticsException(String message, String errorCode, String target) { super(message); - this.code = code; + this.errorCode = errorCode; this.target = target; } @Override public String getMessage() { StringBuilder baseMessage = new StringBuilder().append(super.getMessage()).append(" ").append(ERROR_CODE) - .append(": {").append(code).append("}"); + .append(": {").append(errorCode).append("}"); if (this.target == null) { return baseMessage.toString(); @@ -56,6 +55,6 @@ public String getTarget() { * @return The {@link TextAnalyticsErrorCode} for this exception. */ public TextAnalyticsErrorCode getErrorCode() { - return TextAnalyticsErrorCode.fromString(code); + return TextAnalyticsErrorCode.fromString(errorCode); } } diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java index f32aca30589d..eedb849eae13 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/models/TextAnalyticsWarning.java @@ -13,7 +13,7 @@ public final class TextAnalyticsWarning { /* * Warning error code. */ - private final WarningCode code; + private final WarningCode warningCode; /* * Warning message. @@ -23,11 +23,11 @@ public final class TextAnalyticsWarning { /** * Creates a {@link TextAnalyticsWarning} model that describes text analytics warning. * - * @param code The warning code value + * @param warningCode The warning code value * @param message The warning message. */ - public TextAnalyticsWarning(String code, String message) { - this.code = WarningCode.fromString(code); + public TextAnalyticsWarning(String warningCode, String message) { + this.warningCode = WarningCode.fromString(warningCode); this.message = message; } @@ -37,7 +37,7 @@ public TextAnalyticsWarning(String code, String message) { * @return the warning code value. */ public WarningCode getWarningCode() { - return this.code; + return this.warningCode; } /** From e521c53467a64b97443928f4c61915b7c92b239e Mon Sep 17 00:00:00 2001 From: shafang Date: Tue, 19 May 2020 19:51:57 -0700 Subject: [PATCH 4/6] have null check back --- .../AnalyzeSentimentAsyncClient.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java index b505d60099ae..93cf01b4581c 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java @@ -7,6 +7,7 @@ import com.azure.ai.textanalytics.implementation.models.DocumentError; import com.azure.ai.textanalytics.implementation.models.DocumentSentiment; import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput; +import com.azure.ai.textanalytics.implementation.models.SentenceSentimentValue; import com.azure.ai.textanalytics.implementation.models.SentimentConfidenceScorePerLabel; import com.azure.ai.textanalytics.implementation.models.SentimentResponse; import com.azure.ai.textanalytics.models.AnalyzeSentimentResult; @@ -26,6 +27,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; @@ -141,10 +143,28 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedR * @return The {@link AnalyzeSentimentResult} to be returned by the SDK. */ private AnalyzeSentimentResult convertToAnalyzeSentimentResult(DocumentSentiment documentSentiment) { + // Document text sentiment + if (documentSentiment.getSentiment() == null) { + // Not throw exception for an invalid Sentiment type because we should not skip processing the + // other response. It is a service issue. + logger.logExceptionAsWarning( + new RuntimeException(String.format(Locale.ROOT, "'%s' is not valid text sentiment.", + documentSentiment.getSentiment()))); + } + final SentimentConfidenceScorePerLabel confidenceScorePerLabel = documentSentiment.getConfidenceScores(); // Sentence text sentiment final List sentenceSentiments = documentSentiment.getSentences().stream() .map(sentenceSentiment -> { + final SentenceSentimentValue sentenceSentimentValue = sentenceSentiment.getSentiment(); + if (sentenceSentimentValue == null) { + // Not throw exception for an invalid Sentiment type because we should not skip processing the + // other response. It is a service issue. + logger.logExceptionAsWarning( + new RuntimeException(String.format(Locale.ROOT, "'%s' is not valid text sentiment.", + sentenceSentiment.getSentiment()))); + } + final SentimentConfidenceScorePerLabel confidenceScorePerSentence = sentenceSentiment.getConfidenceScores(); return new SentenceSentiment(sentenceSentiment.getText(), From 5848b1d8561ef819f1841171968f6edb6f1afc33 Mon Sep 17 00:00:00 2001 From: shafang Date: Tue, 19 May 2020 20:48:31 -0700 Subject: [PATCH 5/6] hide fromString9) --- .../com/azure/ai/textanalytics/implementation/Utility.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java index a4784c9f8b35..03e7ccf8b485 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java @@ -13,7 +13,6 @@ import com.azure.ai.textanalytics.implementation.models.TextAnalyticsError; import com.azure.ai.textanalytics.implementation.models.TextAnalyticsErrorException; import com.azure.ai.textanalytics.models.DetectLanguageInput; -import com.azure.ai.textanalytics.models.TextAnalyticsErrorCode; import com.azure.ai.textanalytics.models.TextAnalyticsException; import com.azure.ai.textanalytics.models.TextDocumentBatchStatistics; import com.azure.ai.textanalytics.models.TextDocumentInput; @@ -174,14 +173,14 @@ public static com.azure.ai.textanalytics.models.TextAnalyticsError toTextAnalyti if (innerError == null) { final ErrorCodeValue errorCodeValue = textAnalyticsError.getCode(); return new com.azure.ai.textanalytics.models.TextAnalyticsError( - TextAnalyticsErrorCode.fromString(errorCodeValue == null ? null : errorCodeValue.toString()), + errorCodeValue == null ? null : errorCodeValue.toString(), textAnalyticsError.getMessage(), textAnalyticsError.getTarget()); } final InnerErrorCodeValue innerErrorCodeValue = innerError.getCode(); return new com.azure.ai.textanalytics.models.TextAnalyticsError( - TextAnalyticsErrorCode.fromString(innerErrorCodeValue == null ? null : innerErrorCodeValue.toString()), + innerErrorCodeValue == null ? null : innerErrorCodeValue.toString(), innerError.getMessage(), innerError.getTarget()); } From 7fc12f696fa02c0cc73e4bf1c63b1e2aaaca15cd Mon Sep 17 00:00:00 2001 From: shafang Date: Tue, 19 May 2020 23:10:09 -0700 Subject: [PATCH 6/6] null check --- .../AnalyzeSentimentAsyncClient.java | 33 +++++++------------ .../DetectLanguageAsyncClient.java | 8 +++-- .../ExtractKeyPhraseAsyncClient.java | 9 +++-- .../RecognizeEntityAsyncClient.java | 8 +++-- .../RecognizeLinkedEntityAsyncClient.java | 8 +++-- 5 files changed, 35 insertions(+), 31 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java index 5813ab78fd2d..ab8e384c532d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java @@ -6,10 +6,12 @@ import com.azure.ai.textanalytics.implementation.TextAnalyticsClientImpl; import com.azure.ai.textanalytics.implementation.models.DocumentError; import com.azure.ai.textanalytics.implementation.models.DocumentSentiment; +import com.azure.ai.textanalytics.implementation.models.DocumentSentimentValue; import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput; import com.azure.ai.textanalytics.implementation.models.SentenceSentimentValue; import com.azure.ai.textanalytics.implementation.models.SentimentConfidenceScorePerLabel; import com.azure.ai.textanalytics.implementation.models.SentimentResponse; +import com.azure.ai.textanalytics.implementation.models.WarningCodeValue; import com.azure.ai.textanalytics.models.AnalyzeSentimentResult; import com.azure.ai.textanalytics.models.SentenceSentiment; import com.azure.ai.textanalytics.models.SentimentConfidenceScores; @@ -27,7 +29,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; @@ -145,47 +146,35 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedR */ private AnalyzeSentimentResult convertToAnalyzeSentimentResult(DocumentSentiment documentSentiment) { // Document text sentiment - if (documentSentiment.getSentiment() == null) { - // Not throw exception for an invalid Sentiment type because we should not skip processing the - // other response. It is a service issue. - logger.logExceptionAsWarning( - new RuntimeException(String.format(Locale.ROOT, "'%s' is not valid text sentiment.", - documentSentiment.getSentiment()))); - } - final SentimentConfidenceScorePerLabel confidenceScorePerLabel = documentSentiment.getConfidenceScores(); // Sentence text sentiment final List sentenceSentiments = documentSentiment.getSentences().stream() .map(sentenceSentiment -> { - final SentenceSentimentValue sentenceSentimentValue = sentenceSentiment.getSentiment(); - if (sentenceSentimentValue == null) { - // Not throw exception for an invalid Sentiment type because we should not skip processing the - // other response. It is a service issue. - logger.logExceptionAsWarning( - new RuntimeException(String.format(Locale.ROOT, "'%s' is not valid text sentiment.", - sentenceSentiment.getSentiment()))); - } - final SentimentConfidenceScorePerLabel confidenceScorePerSentence = sentenceSentiment.getConfidenceScores(); + final SentenceSentimentValue sentenceSentimentValue = sentenceSentiment.getSentiment(); return new SentenceSentiment(sentenceSentiment.getText(), - sentenceSentiment.getSentiment().toString(), + sentenceSentimentValue == null ? null : sentenceSentimentValue.toString(), new SentimentConfidenceScores(confidenceScorePerSentence.getNegative(), confidenceScorePerSentence.getNeutral(), confidenceScorePerSentence.getPositive())); }).collect(Collectors.toList()); // Warnings final List warnings = documentSentiment.getWarnings().stream().map( - warning -> new TextAnalyticsWarning(warning.getCode().toString(), - warning.getMessage())).collect(Collectors.toList()); + warning -> { + final WarningCodeValue warningCodeValue = warning.getCode(); + return new TextAnalyticsWarning(warningCodeValue == null ? null : warningCodeValue.toString(), + warning.getMessage()); + }).collect(Collectors.toList()); + final DocumentSentimentValue documentSentimentValue = documentSentiment.getSentiment(); return new AnalyzeSentimentResult( documentSentiment.getId(), documentSentiment.getStatistics() == null ? null : toTextDocumentStatistics(documentSentiment.getStatistics()), null, new com.azure.ai.textanalytics.models.DocumentSentiment( - documentSentiment.getSentiment().toString(), + documentSentimentValue == null ? null : documentSentimentValue.toString(), new SentimentConfidenceScores( confidenceScorePerLabel.getNegative(), confidenceScorePerLabel.getNeutral(), diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java index 7dea218dcee8..97b6a21cb165 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java @@ -8,6 +8,7 @@ import com.azure.ai.textanalytics.implementation.models.DocumentLanguage; import com.azure.ai.textanalytics.implementation.models.LanguageBatchInput; import com.azure.ai.textanalytics.implementation.models.LanguageResult; +import com.azure.ai.textanalytics.implementation.models.WarningCodeValue; import com.azure.ai.textanalytics.models.DetectLanguageInput; import com.azure.ai.textanalytics.models.DetectLanguageResult; import com.azure.ai.textanalytics.models.DetectedLanguage; @@ -114,8 +115,11 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedRes // warnings final List warnings = documentLanguage.getWarnings().stream() - .map(warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) - .collect(Collectors.toList()); + .map(warning -> { + final WarningCodeValue warningCodeValue = warning.getCode(); + return new TextAnalyticsWarning(warningCodeValue == null ? null : warningCodeValue.toString(), + warning.getMessage()); + }).collect(Collectors.toList()); detectLanguageResults.add(new DetectLanguageResult( documentLanguage.getId(), diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java index 3cbc50922198..0b95a130db97 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java @@ -8,6 +8,7 @@ import com.azure.ai.textanalytics.implementation.models.DocumentKeyPhrases; import com.azure.ai.textanalytics.implementation.models.KeyPhraseResult; import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput; +import com.azure.ai.textanalytics.implementation.models.WarningCodeValue; import com.azure.ai.textanalytics.models.ExtractKeyPhraseResult; import com.azure.ai.textanalytics.models.KeyPhrasesCollection; import com.azure.ai.textanalytics.models.TextAnalyticsError; @@ -149,9 +150,11 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedR : toTextDocumentStatistics(documentKeyPhrases.getStatistics()), null, new KeyPhrasesCollection( new IterableStream<>(documentKeyPhrases.getKeyPhrases()), - new IterableStream<>(documentKeyPhrases.getWarnings().stream().map(warning -> - new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) - .collect(Collectors.toList()))))); + new IterableStream<>(documentKeyPhrases.getWarnings().stream().map(warning -> { + final WarningCodeValue warningCodeValue = warning.getCode(); + return new TextAnalyticsWarning(warningCodeValue == null ? null : warningCodeValue.toString(), + warning.getMessage()); + }).collect(Collectors.toList()))))); } // Document errors for (DocumentError documentError : keyPhraseResult.getErrors()) { diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java index 820a1252991e..249f17ff28c5 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java @@ -6,6 +6,7 @@ import com.azure.ai.textanalytics.implementation.TextAnalyticsClientImpl; import com.azure.ai.textanalytics.implementation.models.EntitiesResult; import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput; +import com.azure.ai.textanalytics.implementation.models.WarningCodeValue; import com.azure.ai.textanalytics.models.CategorizedEntity; import com.azure.ai.textanalytics.models.CategorizedEntityCollection; import com.azure.ai.textanalytics.models.RecognizeEntitiesResult; @@ -153,8 +154,11 @@ private TextAnalyticsPagedResponse toTextAnalyticsPaged entity.getSubcategory(), entity.getConfidenceScore())) .collect(Collectors.toList())), new IterableStream<>(documentEntities.getWarnings().stream() - .map(warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) - .collect(Collectors.toList()))) + .map(warning -> { + final WarningCodeValue warningCodeValue = warning.getCode(); + return new TextAnalyticsWarning( + warningCodeValue == null ? null : warningCodeValue.toString(), warning.getMessage()); + }).collect(Collectors.toList()))) ))); // Document errors entitiesResult.getErrors().forEach(documentError -> { diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java index f86987690de4..508c7406490b 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java @@ -6,6 +6,7 @@ import com.azure.ai.textanalytics.implementation.TextAnalyticsClientImpl; import com.azure.ai.textanalytics.implementation.models.EntityLinkingResult; import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput; +import com.azure.ai.textanalytics.implementation.models.WarningCodeValue; import com.azure.ai.textanalytics.models.LinkedEntity; import com.azure.ai.textanalytics.models.LinkedEntityCollection; import com.azure.ai.textanalytics.models.LinkedEntityMatch; @@ -149,8 +150,11 @@ private TextAnalyticsPagedResponse toTextAnalytic new LinkedEntityCollection( mapLinkedEntity(documentLinkedEntities.getEntities()), new IterableStream<>(documentLinkedEntities.getWarnings().stream() - .map(warning -> new TextAnalyticsWarning(warning.getCode().toString(), warning.getMessage())) - .collect(Collectors.toList()))) + .map(warning -> { + final WarningCodeValue warningCodeValue = warning.getCode(); + return new TextAnalyticsWarning( + warningCodeValue == null ? null : warningCodeValue.toString(), warning.getMessage()); + }).collect(Collectors.toList()))) ))); // Document errors entityLinkingResult.getErrors().forEach(documentError -> {