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

org.apache.flink.configuration.ConfigOptions Maven / Gradle / Ivy

There is a newer version: 1.5.1
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.flink.configuration;

import org.apache.flink.annotation.PublicEvolving;

import static org.apache.flink.util.Preconditions.checkNotNull;

/**
 * {@code ConfigOptions} are used to build a {@link ConfigOption}.
 * The option is typically built in one of the following pattern:
 *
 * 
{@code
 * // simple string-valued option with a default value
 * ConfigOption tempDirs = ConfigOptions
 *     .key("tmp.dir")
 *     .defaultValue("/tmp");
 *
 * // simple integer-valued option with a default value
 * ConfigOption parallelism = ConfigOptions
 *     .key("application.parallelism")
 *     .defaultValue(100);
 *
 * // option with no default value
 * ConfigOption userName = ConfigOptions
 *     .key("user.name")
 *     .noDefaultValue();
 *
 * // option with deprecated keys to check
 * ConfigOption threshold = ConfigOptions
 *     .key("cpu.utilization.threshold")
 *     .defaultValue(0.9).
 *     .withDeprecatedKeys("cpu.threshold");
 * }
*/ @PublicEvolving public class ConfigOptions { /** * Starts building a new {@link ConfigOption}. * * @param key The key for the config option. * @return The builder for the config option with the given key. */ public static OptionBuilder key(String key) { checkNotNull(key); return new OptionBuilder(key); } // ------------------------------------------------------------------------ /** * The option builder is used to create a {@link ConfigOption}. * It is instantiated via {@link ConfigOptions#key(String)}. */ public static final class OptionBuilder { /** The key for the config option. */ private final String key; /** * Creates a new OptionBuilder. * @param key The key for the config option */ OptionBuilder(String key) { this.key = key; } /** * Creates a ConfigOption with the given default value. * *

This method does not accept "null". For options with no default value, choose * one of the {@code noDefaultValue} methods. * * @param value The default value for the config option * @param The type of the default value. * @return The config option with the default value. */ public ConfigOption defaultValue(T value) { checkNotNull(value); return new ConfigOption<>(key, value); } /** * Creates a string-valued option with no default value. * String-valued options are the only ones that can have no * default value. * * @return The created ConfigOption. */ public ConfigOption noDefaultValue() { return new ConfigOption<>(key, null); } } // ------------------------------------------------------------------------ /** Not intended to be instantiated. */ private ConfigOptions() {} }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy