Skip to content

Commit

Permalink
Require MediaType in Strings.toString API
Browse files Browse the repository at this point in the history
String.toString is tightly coupled to XContentType.JSON which blocks
modularizing foundation classes from the server module to the core library. This
change refactors the String.toString API to accept a generic MediaType such that
the toString implementation detail is encapsulated to the :server module.

Signed-off-by: Nicholas Walter Knize <nknize@apache.org>
  • Loading branch information
nknize committed Jan 25, 2023
1 parent 715ff72 commit 9a48c7d
Show file tree
Hide file tree
Showing 156 changed files with 425 additions and 243 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;

import java.io.IOException;
import java.util.Map;
Expand Down Expand Up @@ -168,6 +169,6 @@ public boolean equals(Object obj) {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.snapshots.SnapshotId;

import java.io.IOException;
Expand Down Expand Up @@ -288,7 +289,7 @@ public boolean equals(Object obj) {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;

import java.io.IOException;
import java.util.Collections;
Expand Down Expand Up @@ -187,7 +188,7 @@ public boolean equals(Object obj) {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}

public static class SnapshotPolicyStats implements ToXContentFragment {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;

import java.io.IOException;
import java.util.Objects;
Expand Down Expand Up @@ -150,6 +151,6 @@ public boolean equals(Object obj) {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.opensearch.client.Response;
import org.opensearch.client.ResponseException;
import org.opensearch.common.Strings;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.search.aggregations.AggregationBuilders;
import org.opensearch.search.builder.SearchSourceBuilder;

Expand Down Expand Up @@ -171,8 +172,8 @@ public void testAggregationUsage() throws IOException {
.aggregation(AggregationBuilders.terms("str_terms").field("str.keyword"))
.aggregation(AggregationBuilders.terms("num_terms").field("num"))
.aggregation(AggregationBuilders.avg("num_avg").field("num"));
searchRequest.setJsonEntity(Strings.toString(searchSource));
searchRequest.setJsonEntity(Strings.toString(searchSource));
searchRequest.setJsonEntity(Strings.toString(XContentType.JSON, searchSource));
searchRequest.setJsonEntity(Strings.toString(XContentType.JSON, searchSource));
client().performRequest(searchRequest);

searchRequest = new Request("GET", "/test/_search");
Expand All @@ -181,8 +182,8 @@ public void testAggregationUsage() throws IOException {
.aggregation(AggregationBuilders.avg("num1").field("num"))
.aggregation(AggregationBuilders.avg("num2").field("num"))
.aggregation(AggregationBuilders.terms("foo").field("foo.keyword"));
String r = Strings.toString(searchSource);
searchRequest.setJsonEntity(Strings.toString(searchSource));
String r = Strings.toString(XContentType.JSON, searchSource);
searchRequest.setJsonEntity(Strings.toString(XContentType.JSON, searchSource));
client().performRequest(searchRequest);

Response response = client().performRequest(new Request("GET", "_nodes/usage"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@

package org.opensearch.common.xcontent;

import java.io.IOException;

/**
* Abstracts a <a href="http://en.wikipedia.org/wiki/Internet_media_type">Media Type</a> and a format parameter.
* Media types are used as values on Content-Type and Accept headers
Expand Down Expand Up @@ -62,4 +64,6 @@ public interface MediaType {
default String typeWithSubtype() {
return type() + "/" + subtype();
}

XContentBuilder contentBuilder() throws IOException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.opensearch.common.xcontent.smile.SmileXContent;
import org.opensearch.common.xcontent.yaml.YamlXContent;

import java.io.IOException;
import java.util.Locale;
import java.util.Map;

Expand Down Expand Up @@ -68,6 +69,11 @@ public String subtype() {
public XContent xContent() {
return JsonXContent.jsonXContent;
}

@Override
public XContentBuilder contentBuilder() throws IOException {
return JsonXContent.contentBuilder();
}
},
/**
* The jackson based smile binary format. Fast and compact binary format.
Expand All @@ -87,6 +93,11 @@ public String subtype() {
public XContent xContent() {
return SmileXContent.smileXContent;
}

@Override
public XContentBuilder contentBuilder() throws IOException {
return SmileXContent.contentBuilder();
}
},
/**
* A YAML based content type.
Expand All @@ -106,6 +117,11 @@ public String subtype() {
public XContent xContent() {
return YamlXContent.yamlXContent;
}

@Override
public XContentBuilder contentBuilder() throws IOException {
return YamlXContent.contentBuilder();
}
},
/**
* A CBOR based content type.
Expand All @@ -125,6 +141,11 @@ public String subtype() {
public XContent xContent() {
return CborXContent.cborXContent;
}

@Override
public XContentBuilder contentBuilder() throws IOException {
return CborXContent.contentBuilder();
}
};

/** a parser of media types */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,6 @@ public int hashCode() {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;

import java.io.IOException;
import java.util.Arrays;
Expand Down Expand Up @@ -199,6 +200,6 @@ public static MultiSearchTemplateResponse fromXContext(XContentParser parser) {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import org.opensearch.common.Strings;
import org.opensearch.common.lucene.search.MultiPhrasePrefixQuery;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.IndexSettings;
import org.opensearch.index.analysis.AnalyzerScope;
import org.opensearch.index.analysis.IndexAnalyzers;
Expand Down Expand Up @@ -609,15 +610,15 @@ public void testAnalyzerSerialization() throws IOException {
b.field("type", "search_as_you_type");
b.field("analyzer", "simple");
}));
String serialized = Strings.toString(ms.documentMapper());
String serialized = Strings.toString(XContentType.JSON, ms.documentMapper());
assertEquals(
serialized,
"{\"_doc\":{\"properties\":{\"field\":"
+ "{\"type\":\"search_as_you_type\",\"doc_values\":false,\"max_shingle_size\":3,\"analyzer\":\"simple\"}}}}"
);

merge(ms, mapping(b -> {}));
assertEquals(serialized, Strings.toString(ms.documentMapper()));
assertEquals(serialized, Strings.toString(XContentType.JSON, ms.documentMapper()));
}

private void documentParsingTestCase(Collection<String> values) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentParserUtils;
import org.opensearch.common.xcontent.XContentType;

import java.io.IOException;
import java.util.Collections;
Expand Down Expand Up @@ -105,7 +106,7 @@ public Map<String, Exception> getFailures() {

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentParserUtils;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.script.Script;

import java.io.IOException;
Expand Down Expand Up @@ -249,7 +250,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;

import java.io.IOException;
import java.util.Objects;
Expand Down Expand Up @@ -128,7 +129,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.rankeval.RatedDocument.DocumentKey;
import org.opensearch.search.builder.SearchSourceBuilder;

Expand Down Expand Up @@ -340,7 +341,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws

@Override
public String toString() {
return Strings.toString(this);
return Strings.toString(XContentType.JSON, this);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,10 +323,13 @@ public void testMetricDetails() {
+ ",\"unrated_docs\":"
+ unratedDocs
+ "}}",
Strings.toString(detail)
Strings.toString(XContentType.JSON, detail)
);
} else {
assertEquals("{\"dcg\":{\"dcg\":" + dcg + ",\"unrated_docs\":" + unratedDocs + "}}", Strings.toString(detail));
assertEquals(
"{\"dcg\":{\"dcg\":" + dcg + ",\"unrated_docs\":" + unratedDocs + "}}",
Strings.toString(XContentType.JSON, detail)
);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.opensearch.common.Strings;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.common.xcontent.json.JsonXContent;
import org.opensearch.common.xcontent.support.XContentMapValues;
import org.opensearch.index.IndexSettings;
Expand Down Expand Up @@ -1364,7 +1365,7 @@ public void testResize() throws Exception {
if (randomBoolean()) {
settings.put(IndexSettings.INDEX_SOFT_DELETES_SETTING.getKey(), true);
}
shrinkRequest.setJsonEntity("{\"settings\":" + Strings.toString(settings.build()) + "}");
shrinkRequest.setJsonEntity("{\"settings\":" + Strings.toString(XContentType.JSON, settings.build()) + "}");
client().performRequest(shrinkRequest);
ensureGreenLongWait(target);
assertNumHits(target, numDocs + moreDocs, 1);
Expand All @@ -1376,7 +1377,7 @@ public void testResize() throws Exception {
settings.put(IndexSettings.INDEX_SOFT_DELETES_SETTING.getKey(), true);
}
Request splitRequest = new Request("PUT", "/" + index + "/_split/" + target);
splitRequest.setJsonEntity("{\"settings\":" + Strings.toString(settings.build()) + "}");
splitRequest.setJsonEntity("{\"settings\":" + Strings.toString(XContentType.JSON, settings.build()) + "}");
client().performRequest(splitRequest);
ensureGreenLongWait(target);
assertNumHits(target, numDocs + moreDocs, 6);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,7 @@ public void testCompletionSuggester() throws Exception {
sourceBuilder.suggest(suggestBuilder);
duelSearch(searchRequest, response -> {
assertMultiClusterSearchResponse(response);
assertEquals(Strings.toString(response, true, true), 3, response.getSuggest().size());
assertEquals(Strings.toString(XContentType.JSON, response, true, true), 3, response.getSuggest().size());
assertThat(response.getSuggest().getSuggestion("python").getEntries().size(), greaterThan(0));
assertThat(response.getSuggest().getSuggestion("java").getEntries().size(), greaterThan(0));
assertThat(response.getSuggest().getSuggestion("ruby").getEntries().size(), greaterThan(0));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@

package org.opensearch.upgrades;

import org.opensearch.LegacyESVersion;
import org.opensearch.Version;
import org.opensearch.action.support.PlainActionFuture;
import org.opensearch.client.Request;
Expand All @@ -44,13 +43,13 @@
import org.opensearch.common.Strings;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.util.concurrent.AbstractRunnable;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.common.xcontent.support.XContentMapValues;
import org.opensearch.index.IndexSettings;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.rest.RestStatus;
import org.opensearch.test.rest.yaml.ObjectPath;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.hamcrest.Matcher;
import org.hamcrest.Matchers;

import java.io.IOException;
Expand Down Expand Up @@ -734,7 +733,7 @@ public void testSoftDeletesDisabledWarning() throws Exception {
settings.put(IndexSettings.INDEX_SOFT_DELETES_SETTING.getKey(), softDeletesEnabled);
}
Request request = new Request("PUT", "/" + indexName);
request.setJsonEntity("{\"settings\": " + Strings.toString(settings.build()) + "}");
request.setJsonEntity("{\"settings\": " + Strings.toString(XContentType.JSON, settings.build()) + "}");
if (softDeletesEnabled == false) {
expectSoftDeletesWarning(request, indexName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public void testAutomaticCancellationDuringQueryPhase() throws Exception {
Request searchRequest = new Request("GET", "/test/_search");
SearchSourceBuilder searchSource = new SearchSourceBuilder().query(scriptQuery(
new Script(ScriptType.INLINE, "mockscript", ScriptedBlockPlugin.SCRIPT_NAME, Collections.emptyMap())));
searchRequest.setJsonEntity(Strings.toString(searchSource));
searchRequest.setJsonEntity(Strings.toString(XContentType.JSON, searchSource));
verifyCancellationDuringQueryPhase(SearchAction.NAME, searchRequest);
}

Expand Down Expand Up @@ -147,7 +147,7 @@ public void testAutomaticCancellationDuringFetchPhase() throws Exception {
Request searchRequest = new Request("GET", "/test/_search");
SearchSourceBuilder searchSource = new SearchSourceBuilder().scriptField("test_field",
new Script(ScriptType.INLINE, "mockscript", ScriptedBlockPlugin.SCRIPT_NAME, Collections.emptyMap()));
searchRequest.setJsonEntity(Strings.toString(searchSource));
searchRequest.setJsonEntity(Strings.toString(XContentType.JSON, searchSource));
verifyCancellationDuringFetchPhase(SearchAction.NAME, searchRequest);
}

Expand Down
Loading

0 comments on commit 9a48c7d

Please sign in to comment.