Skip to content

Commit 721b1d1

Browse files
committed
Added validation to the constructor creation
1 parent ef5f50f commit 721b1d1

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRetrieverBuilder.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,15 @@ public static PinnedRetrieverBuilder fromXContent(XContentParser parser, Retriev
7979
private final List<String> ids;
8080
private final List<SpecifiedDocument> docs;
8181

82+
private void validateIdsAndDocs(List<String> ids, List<SpecifiedDocument> docs) {
83+
if (ids != null && docs != null && ids.isEmpty() == false && docs.isEmpty() == false) {
84+
throw new IllegalArgumentException("Both 'ids' and 'docs' cannot be specified at the same time");
85+
}
86+
}
87+
8288
public PinnedRetrieverBuilder(List<String> ids, List<SpecifiedDocument> docs, RetrieverBuilder retrieverBuilder, int rankWindowSize) {
8389
super(new ArrayList<>(), rankWindowSize);
90+
validateIdsAndDocs(ids, docs);
8491
this.ids = ids != null ? ids : new ArrayList<>();
8592
this.docs = docs != null ? docs : new ArrayList<>();
8693
addChild(new PinnedRetrieverBuilderWrapper(retrieverBuilder));
@@ -95,6 +102,7 @@ public PinnedRetrieverBuilder(
95102
List<QueryBuilder> preFilterQueryBuilders
96103
) {
97104
super(retrieverSource, rankWindowSize);
105+
validateIdsAndDocs(ids, docs);
98106
this.ids = ids;
99107
this.docs = docs;
100108
this.retrieverName = retrieverName;

0 commit comments

Comments
 (0)