THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||
---|---|---|---|---|
| ||||
@Public public class Configuration extends ExecutionConfig.GlobalJobParameters implements IOReadableWritable, java.io.Serializable, Cloneable, ReadableConfig, WritableConfig { ... /** * Returns the value associated with the given key as a string. We encourage users and * developers to always use ConfigOption for getting the configurations if possible, for its * rich description, type, default-value and other supports. The string-key-based getter should * only be used when ConfigOption is not applicable, e.g., the key is programmatically generated * in runtime. * * @param key the key pointing to the associated value * @param defaultValue the default value which is returned in case there is no value associated * with the given key * @return the (default) value associated with the given key */ public String getString(String key, String defaultValue) { ... } /** * Adds the given key/value pair to the configuration object. We encourage users and developers * to always use ConfigOption for setting the configurations if possible, for its rich * description, type, default-value and other supports. The string-key-based setter should only * be used when ConfigOption is not applicable, e.g., the key is programmatically generated in * runtime. * * @param key the key of the key/value pair to be added * @param value the value of the key/value pair to be added */ public void setString(String key, String value) { ... } ... } |
2.2.2 Introduce public <T> T get(ConfigOption<T> configOption, @Nonnull T overrideDefault)
Code Block |
---|
/**
* Returns the value associated with the given config option as a T. If no value is mapped
* under any key of the option, it returns the specified default instead of the option's default
* value.
*
* @param configOption The configuration option
* @param overrideDefault The value to return if no value was mapper for any key of the option
* @return the (default) value associated with the given config option
*/
@Nonnull
@PublicEvolving
public <T> T get(ConfigOption<T> configOption, @Nonnull T overrideDefault) {
return getOptional(configOption).orElse(overrideDefault);
} |
`public <T> T get(ConfigOption<T> option, T overrideDefault)` can replace all old `getXxx(ConfigOption<Xxx> configOption, Xxx overrideDefault)` methods.
2.2.3 Deprecate some unnecessary setXxx and getXxx methods in Configuration
Changes:
- Mark all
public Xxx getXxx(ConfigOption<Xxx> configOption)
methods as @Deprecated, and remove them in 2.0. Such as:- public int getInteger(ConfigOption<Integer> configOption)
- public String getString(ConfigOption<String> configOption)
- public long getLong(ConfigOption<Long> configOption)
- public long getFloat(ConfigOption<Float> configOption)
- public long getDouble(ConfigOption<Double> configOption)
- public boolean getBoolean(ConfigOption<Boolean> configOption)
- Mark all
public void setXxx(ConfigOption<Xxx> key, Xxx value)
methods as @Deprecated, and remove them in 2.0. Such as:- public void setInteger(ConfigOption<Integer> key, int value)
- public void setString(ConfigOption<String> key, String value)
- public void setLong(ConfigOption<Long> key, long value)
- public void setDouble(ConfigOption<Double> key, double value)
- public void setFloat(ConfigOption<Float> key, float value)
- public void setBoolean(ConfigOption<Boolean> key, boolean value)
- Mark all
public Xxx getXxx(ConfigOption<Xxx> configOption, Xxx overrideDefault)
methods as @Deprecated, and remove them in 2.0. Such as:- public String getString(ConfigOption<String> configOption, String overrideDefault)
- public long getLong(ConfigOption<Long> configOption, long overrideDefault)
- public int getInteger(ConfigOption<Integer> configOption, int overrideDefault)
- public double getDouble(ConfigOption<Double> configOption, double overrideDefault)
- public float getFloat(ConfigOption<Float> configOption, float overrideDefault)
- public boolean getBoolean(ConfigOption<Boolean> configOption, boolean overrideDefault)
Reason:
- Configuration has a
public <T> T get(ConfigOption<T> option)
andpublic <T> Configuration set(ConfigOption<T> option, T value)
method - These getXxx and setXxx methods can be replaced with get and set directly without any extra efforts.
- get and set methods are easier to use than getXxx and setXxx
- Callers can call get directly, and users or flink developers don't need to care about should they call getInteger or getString.
- Flink code is easier to maintain.
T get(ConfigOption<T> option)
is designed later thanXxx getXxx(ConfigOption<Xxx> configOption)
, I guess ifT get(ConfigOption<T> option)
is designed first, allXxx getXxx(ConfigOption<Xxx> configOption)
methods aren't needed.
...