Skip to content

Commit a702f6a

Browse files
authored
Fix PluginInfo bwc for opensearch_version field (#12543)
* Fix PluginInfo bwc for opensearch_version field Signed-off-by: Abhilasha Seth <abseth@amazon.com> * Update how empty range list is handled Signed-off-by: Abhilasha Seth <abseth@amazon.com> --------- Signed-off-by: Abhilasha Seth <abseth@amazon.com>
1 parent 07e79e3 commit a702f6a

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

server/src/main/java/org/opensearch/plugins/PluginInfo.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ public List<SemverRange> getOpenSearchVersionRanges() {
445445
*/
446446
public String getOpenSearchVersionRangesString() {
447447
if (opensearchVersionRanges == null || opensearchVersionRanges.isEmpty()) {
448-
return "";
448+
throw new IllegalStateException("Opensearch version ranges list cannot be empty");
449449
}
450450
if (opensearchVersionRanges.size() == 1) {
451451
return opensearchVersionRanges.get(0).toString();
@@ -486,7 +486,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
486486
{
487487
builder.field("name", name);
488488
builder.field("version", version);
489-
builder.field("opensearch_version", opensearchVersionRanges);
489+
builder.field("opensearch_version", getOpenSearchVersionRangesString());
490490
builder.field("java_version", javaVersion);
491491
builder.field("description", description);
492492
builder.field("classname", classname);

server/src/test/java/org/opensearch/plugins/PluginInfoTests.java

+28
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@
3737
import org.opensearch.Version;
3838
import org.opensearch.action.admin.cluster.node.info.PluginsAndModules;
3939
import org.opensearch.common.io.stream.BytesStreamOutput;
40+
import org.opensearch.common.xcontent.json.JsonXContent;
4041
import org.opensearch.core.common.io.stream.ByteBufferStreamInput;
42+
import org.opensearch.core.xcontent.ToXContent;
43+
import org.opensearch.core.xcontent.XContentBuilder;
4144
import org.opensearch.semver.SemverRange;
4245
import org.opensearch.test.OpenSearchTestCase;
4346

@@ -367,6 +370,31 @@ public void testSerialize() throws Exception {
367370
assertThat(info2.toString(), equalTo(info.toString()));
368371
}
369372

373+
public void testToXContent() throws Exception {
374+
PluginInfo info = new PluginInfo(
375+
"fake",
376+
"foo",
377+
"dummy",
378+
Version.CURRENT,
379+
"1.8",
380+
"dummyClass",
381+
"folder",
382+
Collections.emptyList(),
383+
false
384+
);
385+
XContentBuilder builder = JsonXContent.contentBuilder().prettyPrint();
386+
String prettyPrint = info.toXContent(builder, ToXContent.EMPTY_PARAMS).prettyPrint().toString();
387+
assertTrue(prettyPrint.contains("\"name\" : \"fake\""));
388+
assertTrue(prettyPrint.contains("\"version\" : \"dummy\""));
389+
assertTrue(prettyPrint.contains("\"opensearch_version\" : \"" + Version.CURRENT));
390+
assertTrue(prettyPrint.contains("\"java_version\" : \"1.8\""));
391+
assertTrue(prettyPrint.contains("\"description\" : \"foo\""));
392+
assertTrue(prettyPrint.contains("\"classname\" : \"dummyClass\""));
393+
assertTrue(prettyPrint.contains("\"custom_foldername\" : \"folder\""));
394+
assertTrue(prettyPrint.contains("\"extended_plugins\" : [ ]"));
395+
assertTrue(prettyPrint.contains("\"has_native_controller\" : false"));
396+
}
397+
370398
public void testPluginListSorted() {
371399
List<PluginInfo> plugins = new ArrayList<>();
372400
plugins.add(new PluginInfo("c", "foo", "dummy", Version.CURRENT, "1.8", "dummyclass", Collections.emptyList(), randomBoolean()));

0 commit comments

Comments
 (0)