diff --git a/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexASyncClient.java b/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexASyncClient.java index 65baf6f7e5b8..e9e29559c569 100644 --- a/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexASyncClient.java +++ b/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexASyncClient.java @@ -5,6 +5,7 @@ import reactor.core.publisher.Mono; import java.util.List; +import java.util.Map; /** * The public (Customer facing) interface for SearchIndexASyncClient. @@ -80,7 +81,7 @@ PagedFlux search(String searchText, * @param key the name of the document * @return */ - Mono getDocument(String key); + Mono> getDocument(String key); /** * Retrieves a document from the Azure Search index. @@ -90,7 +91,7 @@ PagedFlux search(String searchText, * @param searchRequestOptions * @return */ - Mono getDocument(String key, List selectedFields, SearchRequestOptions searchRequestOptions); + Mono> getDocument(String key, List selectedFields, SearchRequestOptions searchRequestOptions); /** * Suggests documents in the Azure Search index that match the given partial query text. diff --git a/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexClient.java b/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexClient.java index 3ff2873934bf..6581369941a8 100644 --- a/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexClient.java +++ b/search/data-plane/data/src/main/java/com/azure/search/data/SearchIndexClient.java @@ -3,6 +3,7 @@ import com.azure.search.data.generated.models.*; import java.util.List; +import java.util.Map; /** * The public (Customer facing) interface for SearchIndexClient. @@ -77,7 +78,7 @@ DocumentSearchResult search(String searchText, * @param key the name of the document * @return */ - Object getDocument(String key); + Map getDocument(String key); /** * Retrieves a document from the Azure Search index. @@ -87,7 +88,7 @@ DocumentSearchResult search(String searchText, * @param searchRequestOptions * @return */ - Object getDocument(String key, List selectedFields, SearchRequestOptions searchRequestOptions); + Map getDocument(String key, List selectedFields, SearchRequestOptions searchRequestOptions); /** * Suggests documents in the Azure Search index that match the given partial query text. diff --git a/search/data-plane/data/src/main/java/com/azure/search/data/common/DocumentResponseConversions.java b/search/data-plane/data/src/main/java/com/azure/search/data/common/DocumentResponseConversions.java new file mode 100644 index 000000000000..c2dbbc7fb1d7 --- /dev/null +++ b/search/data-plane/data/src/main/java/com/azure/search/data/common/DocumentResponseConversions.java @@ -0,0 +1,23 @@ +package com.azure.search.data.common; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +public class DocumentResponseConversions { + + public static Map convertLinkedHashMapToMap(Object linkedMapObject) { + LinkedHashMap linkedMap = (LinkedHashMap) linkedMapObject; + Set> entries = linkedMap.entrySet(); + + Map convertedMap = new HashMap<>(); + + for (Map.Entry entry : entries) { + convertedMap.put(entry.getKey(), entry.getValue()); + } + + return convertedMap; + + } +} diff --git a/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexASyncClientImpl.java b/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexASyncClientImpl.java index 9cadfc935b3f..f814e50a19c1 100644 --- a/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexASyncClientImpl.java +++ b/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexASyncClientImpl.java @@ -1,5 +1,6 @@ package com.azure.search.data.customization; +import com.azure.search.data.common.DocumentResponseConversions; import com.azure.search.data.common.SearchPipelinePolicy; import com.azure.core.http.rest.PagedFlux; import com.azure.search.data.SearchIndexASyncClient; @@ -7,6 +8,7 @@ import reactor.core.publisher.Mono; import java.util.List; +import java.util.Map; public class SearchIndexASyncClientImpl extends SearchIndexBaseClientImpl implements SearchIndexASyncClient { @@ -40,16 +42,21 @@ public PagedFlux search(String searchText, } @Override - public Mono getDocument(String key) { - return restClient.documents().getAsync(key); + public Mono> getDocument(String key) { + return restClient.documents().getAsync(key).map(DocumentResponseConversions::convertLinkedHashMapToMap); } @Override - public Mono getDocument(String key, List selectedFields, - SearchRequestOptions searchRequestOptions) { - return restClient.documents().getAsync(key, selectedFields, searchRequestOptions); + public Mono> getDocument(String key, List selectedFields, + SearchRequestOptions searchRequestOptions) { + return restClient + .documents() + .getAsync(key, selectedFields, searchRequestOptions) + .map(DocumentResponseConversions::convertLinkedHashMapToMap); } + + @Override public PagedFlux suggest(String searchText, String suggesterName) { return null; @@ -79,8 +86,8 @@ public Mono autocomplete(String searchText, SearchRequestOptions searchRequestOptions, AutocompleteParameters autocompleteParameters) { return restClient.documents().autocompleteGetAsync(searchText, - suggesterName, - searchRequestOptions, - autocompleteParameters); + suggesterName, + searchRequestOptions, + autocompleteParameters); } } diff --git a/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexClientImpl.java b/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexClientImpl.java index 79fcf0664b49..add4ccc74eca 100644 --- a/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexClientImpl.java +++ b/search/data-plane/data/src/main/java/com/azure/search/data/customization/SearchIndexClientImpl.java @@ -1,10 +1,12 @@ package com.azure.search.data.customization; +import com.azure.search.data.common.DocumentResponseConversions; import com.azure.search.data.common.SearchPipelinePolicy; import com.azure.search.data.SearchIndexClient; import com.azure.search.data.generated.models.*; import java.util.List; +import java.util.Map; public class SearchIndexClientImpl extends SearchIndexBaseClientImpl implements SearchIndexClient { @@ -42,13 +44,15 @@ public DocumentSearchResult search(String searchText, SearchParameters searchPar } @Override - public Object getDocument(String key) { - return null; + public Map getDocument(String key) { + return restClient.documents().getAsync(key) + .map(DocumentResponseConversions::convertLinkedHashMapToMap).block(); } @Override - public Object getDocument(String key, List selectedFields, SearchRequestOptions searchRequestOptions) { - return null; + public Map getDocument(String key, List selectedFields, SearchRequestOptions searchRequestOptions) { + return restClient.documents().getAsync(key, selectedFields, searchRequestOptions) + .map(DocumentResponseConversions::convertLinkedHashMapToMap).block(); } @Override