FieldBuilderOptions.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
import com.azure.core.util.serializer.JsonSerializer;
import com.azure.core.util.serializer.MemberNameConverter;
import com.azure.core.util.serializer.MemberNameConverterProviders;
import com.azure.search.documents.indexes.SearchIndexAsyncClient;
import com.azure.search.documents.indexes.SearchIndexClient;
import java.util.Objects;
/**
* Additional parameters to build {@link SearchField}.
*/
@Fluent
public final class FieldBuilderOptions {
private JsonSerializer jsonSerializer;
/**
* Gets the serializer used to aid the construction of {@link SearchField SearchFields} in {@link
* SearchIndexClient#buildSearchFields(Class, FieldBuilderOptions)} buildSearchFields} or {@link
* SearchIndexAsyncClient#buildSearchFields(Class, FieldBuilderOptions) buildSearchFields}.
* <p>
* If {@link JsonSerializer} is {@code null} or doesn't implement the {@link MemberNameConverter} interface then
* {@link MemberNameConverterProviders#createInstance()} will be used to provide a converter from the classpath.
*
* @return The custom {@link JsonSerializer}.
*/
public JsonSerializer getJsonSerializer() {
return jsonSerializer;
}
/**
* Sets the serializer.
* <p>
* For building {@link SearchField SearchFields} it is expected that the {@link JsonSerializer} passed also
* implements the {@link MemberNameConverter} interface. If it doesn't {@link
* MemberNameConverterProviders#createInstance()} will be used to provide a converter from the classpath.
*
* @param jsonSerializer The custom serializer.
* @return The updated FieldBuilderOptions object.
*/
public FieldBuilderOptions setJsonSerializer(JsonSerializer jsonSerializer) {
this.jsonSerializer = Objects.requireNonNull(jsonSerializer, "'jsonSerializer' cannot be null");
return this;
}
}