All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.search.engine.cfg.impl.OptionalPropertyContextImpl Maven / Gradle / Ivy

/*
 * Hibernate Search, full-text search for your domain model
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.search.engine.cfg.impl;

import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.regex.Pattern;

import org.hibernate.search.engine.cfg.spi.ConvertUtils;
import org.hibernate.search.engine.cfg.spi.DefaultedPropertyContext;
import org.hibernate.search.engine.cfg.spi.OptionalConfigurationProperty;
import org.hibernate.search.engine.cfg.spi.OptionalPropertyContext;

final class OptionalPropertyContextImpl implements OptionalPropertyContext {

	private static final Pattern MULTI_VALUE_SEPARATOR_PATTERN = Pattern.compile( "," );

	private final String key;
	private final Function converter;

	OptionalPropertyContextImpl(String key, Function converter) {
		this.key = key;
		this.converter = converter;
	}

	@Override
	public OptionalPropertyContext> multivalued() {
		return new OptionalPropertyContextImpl<>(
				key,
				v -> ConvertUtils.convertMultiValue( MULTI_VALUE_SEPARATOR_PATTERN, converter, v )
		);
	}

	@Override
	public DefaultedPropertyContext withDefault(T defaultValue) {
		return new DefaultedPropertyContextImpl<>( key, converter, () -> defaultValue );
	}

	@Override
	public DefaultedPropertyContext withDefault(Supplier defaultValueSupplier) {
		return new DefaultedPropertyContextImpl<>( key, converter, defaultValueSupplier );
	}

	@Override
	public OptionalConfigurationProperty build() {
		return new OptionalConfigurationPropertyImpl<>( key, converter );
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy